X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=c%2B%2B%2Fcursesm.h;h=383c7e12507e7981d6d1eefa49e815615506164c;hp=d9c2273e6f6f9dbdab28afc88ddcf1213f15639f;hb=1f7a36fe16b11bb4aab51be89bbc1b0f75936b78;hpb=55ccd2b959766810cf7db8d1c4462f338ce0afc8 diff --git a/c++/cursesm.h b/c++/cursesm.h index d9c2273e..383c7e12 100644 --- a/c++/cursesm.h +++ b/c++/cursesm.h @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -31,7 +32,7 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: cursesm.h,v 1.25 2005/08/13 18:10:36 tom Exp $ +// $Id: cursesm.h,v 1.34 2020/05/24 01:40:20 anonymous.maarten Exp $ #ifndef NCURSES_CURSESM_H_incl #define NCURSES_CURSESM_H_incl 1 @@ -46,14 +47,14 @@ extern "C" { // This wraps the ITEM type of // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesMenuItem +class NCURSES_CXX_IMPEXP NCursesMenuItem { friend class NCursesMenu; protected: ITEM *item; - inline void OnError (int err) const THROWS(NCursesMenuException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) { if (err != E_OK) THROW(new NCursesMenuException (err)); } @@ -82,9 +83,10 @@ public: NCursesMenuItem(const NCursesMenuItem& rhs) : item(0) { + (void) rhs; } - virtual ~NCursesMenuItem (); + virtual ~NCursesMenuItem () THROWS(NCursesException); // Release the items memory inline const char* name () const { @@ -151,7 +153,7 @@ typedef bool ITEMCALLBACK(NCursesMenuItem&); // If you don't like to create a child class for individual items to // overload action(), you may use this class and provide a callback // function pointer for items. -class NCURSES_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem +class NCURSES_CXX_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem { private: ITEMCALLBACK* p_fct; @@ -178,7 +180,7 @@ public: { } - virtual ~NCursesMenuCallbackItem(); + virtual ~NCursesMenuCallbackItem() THROWS(NCursesException); bool action(); }; @@ -198,7 +200,7 @@ extern "C" { // This wraps the MENU type of // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesMenu : public NCursesPanel +class NCURSES_CXX_IMPEXP NCursesMenu : public NCursesPanel { protected: MENU *menu; @@ -252,7 +254,7 @@ protected: bool with_frame, bool autoDeleteItems); - inline void OnError (int err) const THROWS(NCursesMenuException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) { if (err != E_OK) THROW(new NCursesMenuException (this, err)); } @@ -331,7 +333,7 @@ public: { } - virtual ~NCursesMenu (); + virtual ~NCursesMenu () THROWS(NCursesException); // Retrieve the menus subwindow inline NCursesWindow& subWindow() const { @@ -357,7 +359,7 @@ public: flag ? OnError (::post_menu(menu)) : OnError (::unpost_menu (menu)); } - // Get the numer of rows and columns for this menu + // Get the number of rows and columns for this menu inline void scale (int& mrows, int& mcols) const { OnError (::scale_menu (menu, &mrows, &mcols)); } @@ -594,7 +596,7 @@ public: // to create a UserItem. // ------------------------------------------------------------------------- // -template class NCURSES_IMPEXP NCursesUserItem : public NCursesMenuItem +template class NCURSES_CXX_IMPEXP NCursesUserItem : public NCursesMenuItem { public: NCursesUserItem (const char* p_name, @@ -605,7 +607,7 @@ public: OnError (::set_item_userptr (item, const_cast(reinterpret_cast(p_UserData)))); } - virtual ~NCursesUserItem() {} + virtual ~NCursesUserItem() THROWS(NCursesException) {} inline const T* UserData (void) const { return reinterpret_cast(::item_userptr (item)); @@ -621,7 +623,7 @@ public: // The same mechanism is used to attach user data to a menu // ------------------------------------------------------------------------- // -template class NCURSES_IMPEXP NCursesUserMenu : public NCursesMenu +template class NCURSES_CXX_IMPEXP NCursesUserMenu : public NCursesMenu { protected: NCursesUserMenu( int nlines, @@ -631,20 +633,20 @@ protected: const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesMenu(nlines,ncols,begin_y,begin_x) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } public: - NCursesUserMenu (NCursesMenuItem Items[], + NCursesUserMenu (NCursesMenuItem* Items[], const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE, bool autoDelete_Items=FALSE) : NCursesMenu (Items, with_frame, autoDelete_Items) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); }; - NCursesUserMenu (NCursesMenuItem Items[], + NCursesUserMenu (NCursesMenuItem* Items[], int nlines, int ncols, int begin_y = 0, @@ -653,19 +655,19 @@ public: bool with_frame=FALSE) : NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); }; - virtual ~NCursesUserMenu() { + virtual ~NCursesUserMenu() THROWS(NCursesException) { }; - inline T* UserData (void) const { + inline T* UserData (void) { return reinterpret_cast(get_user ()); }; inline virtual void setUserData (const T* p_UserData) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } };