X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=c%2B%2B%2Fcursesf.h;h=c7000948e16e6684bb99dc82dac4987e8b41cfd8;hp=23bc0f5b0f5c3ff34a4161988b25558d80af44a8;hb=a28e782d7794ddeec23e7cb212dc455f0d93dc22;hpb=1d7867d33e6954be7c7121b1028ad6768f487752;ds=sidebyside diff --git a/c++/cursesf.h b/c++/cursesf.h index 23bc0f5b..c7000948 100644 --- a/c++/cursesf.h +++ b/c++/cursesf.h @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2011,2012 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: cursesf.h,v 1.30 2012/06/08 17:43:56 Richard.Yao Exp $ +// $Id: cursesf.h,v 1.37 2020/07/18 19:57:11 anonymous.maarten Exp $ #ifndef NCURSES_CURSESF_H_incl #define NCURSES_CURSESF_H_incl 1 @@ -47,21 +48,21 @@ extern "C" { } // // ------------------------------------------------------------------------- -// The abstract base class for buitin and user defined Fieldtypes. +// The abstract base class for builtin and user defined Fieldtypes. // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesFormField; // forward declaration +class NCURSES_CXX_IMPEXP NCursesFormField; // forward declaration // Class to represent builtin field types as well as C++ written new // fieldtypes (see classes UserDefineFieldType... -class NCURSES_IMPEXP NCursesFieldType +class NCURSES_CXX_IMPEXP NCursesFieldType { friend class NCursesFormField; protected: FIELDTYPE* fieldtype; - inline void OnError(int err) const THROWS(NCursesFormException) { + inline void OnError(int err) const THROW2(NCursesException const, NCursesFormException) { if (err!=E_OK) THROW(new NCursesFormException (err)); } @@ -100,7 +101,7 @@ public: // The class representing a forms field, wrapping the lowlevel FIELD struct // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesFormField +class NCURSES_CXX_IMPEXP NCursesFormField { friend class NCursesForm; @@ -109,7 +110,7 @@ protected: NCursesFieldType* ftype; // Associated field type // Error handler - inline void OnError (int err) const THROWS(NCursesFormException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) { if (err != E_OK) THROW(new NCursesFormException (err)); } @@ -151,7 +152,7 @@ public: { } - virtual ~NCursesFormField (); + virtual ~NCursesFormField () THROWS(NCursesException); // Duplicate the field at a new position inline NCursesFormField* dup(int first_row, int first_col) @@ -337,7 +338,7 @@ extern "C" { // The class representing a form, wrapping the lowlevel FORM struct // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesForm : public NCursesPanel +class NCURSES_CXX_IMPEXP NCursesForm : public NCursesPanel { protected: FORM* form; // the lowlevel structure @@ -391,7 +392,7 @@ protected: bool with_frame, bool autoDeleteFields); - inline void OnError (int err) const THROWS(NCursesFormException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) { if (err != E_OK) THROW(new NCursesFormException (err)); } @@ -470,7 +471,7 @@ public: { } - virtual ~NCursesForm(); + virtual ~NCursesForm() THROWS(NCursesException); // Set the default attributes for the form virtual void setDefaultAttributes(); @@ -628,7 +629,7 @@ public: // data belongs to some class T. Use T as template argument // to create a UserField. // ------------------------------------------------------------------------- -template class NCURSES_IMPEXP NCursesUserField : public NCursesFormField +template class NCURSES_CXX_IMPEXP NCursesUserField : public NCursesFormField { public: NCursesUserField (int rows, @@ -645,7 +646,7 @@ public: OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData))); } - virtual ~NCursesUserField() {}; + virtual ~NCursesUserField() THROWS(NCursesException) {}; inline const T* UserData (void) const { return reinterpret_cast(::field_userptr (field)); @@ -661,7 +662,7 @@ public: // The same mechanism is used to attach user data to a form // ------------------------------------------------------------------------- // -template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm +template class NCURSES_CXX_IMPEXP NCursesUserForm : public NCursesForm { protected: // 'Internal' constructor, builds an object without association to a @@ -673,7 +674,8 @@ protected: const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesForm(nlines,ncols,begin_y,begin_x) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast + (p_UserData))); } public: @@ -683,7 +685,7 @@ public: bool autoDelete_Fields=FALSE) : NCursesForm (Fields, with_frame, autoDelete_Fields) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); }; NCursesUserForm (NCursesFormField* Fields[], @@ -697,19 +699,20 @@ public: : NCursesForm (Fields, nlines, ncols, begin_y, begin_x, with_frame, autoDelete_Fields) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast + (p_UserData))); }; - virtual ~NCursesUserForm() { + virtual ~NCursesUserForm() 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 (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } }; @@ -718,7 +721,7 @@ public: // Builtin Fieldtypes // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP Alpha_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Alpha_Field : public NCursesFieldType { private: int min_field_width; @@ -734,7 +737,7 @@ public: } }; -class NCURSES_IMPEXP Alphanumeric_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Alphanumeric_Field : public NCursesFieldType { private: int min_field_width; @@ -750,7 +753,7 @@ public: } }; -class NCURSES_IMPEXP Integer_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Integer_Field : public NCursesFieldType { private: int precision; @@ -768,7 +771,7 @@ public: } }; -class NCURSES_IMPEXP Numeric_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Numeric_Field : public NCursesFieldType { private: int precision; @@ -786,7 +789,7 @@ public: } }; -class NCURSES_IMPEXP Regular_Expression_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Regular_Expression_Field : public NCursesFieldType { private: char* regex; @@ -831,7 +834,7 @@ public: } }; -class NCURSES_IMPEXP Enumeration_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Enumeration_Field : public NCursesFieldType { private: const char** list; @@ -870,7 +873,7 @@ public: } }; -class NCURSES_IMPEXP IPV4_Address_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP IPV4_Address_Field : public NCursesFieldType { private: void set(NCursesFormField& f) { @@ -893,7 +896,7 @@ extern "C" { // Abstract base class for User-Defined Fieldtypes // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP UserDefinedFieldType : public NCursesFieldType +class NCURSES_CXX_IMPEXP UserDefinedFieldType : public NCursesFieldType { friend class UDF_Init; // Internal helper to set up statics private: @@ -922,8 +925,7 @@ protected: virtual bool char_check (int c) = 0; public: - UserDefinedFieldType() : NCursesFieldType(generic_fieldtype) { - } + UserDefinedFieldType(); }; extern "C" { @@ -936,7 +938,7 @@ extern "C" { // Abstract base class for User-Defined Fieldtypes with Choice functions // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType +class NCURSES_CXX_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType { friend class UDF_Init; // Internal helper to set up statics private: @@ -959,9 +961,7 @@ protected: virtual bool previous(NCursesFormField& f) = 0; public: - UserDefinedFieldType_With_Choice() { - fieldtype = generic_fieldtype_with_choice; - } + UserDefinedFieldType_With_Choice(); }; #endif /* NCURSES_CURSESF_H_incl */