Implement wx-prefixed macros versions of DECLARE/IMPLEMENT*CLASS macros.
Implement compatibility aliases for non-prefixed macro names. Require a final semicolon where possible. Correct a recurring error in the docs: IMPLEMENT/DECLARE_CLASS are alias to the DYNAMIC macros, not to the ABSTRACT macros. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -43,13 +43,13 @@ public:
|
||||
A name that should be unique for a given view.
|
||||
@param docClassInfo
|
||||
A pointer to the run-time document class information as returned by
|
||||
the CLASSINFO() macro, e.g. CLASSINFO(MyDocumentClass). If this is
|
||||
the wxCLASSINFO() macro, e.g. wxCLASSINFO(MyDocumentClass). If this is
|
||||
not supplied, you will need to derive a new wxDocTemplate class and
|
||||
override the CreateDocument() member to return a new document
|
||||
instance on demand.
|
||||
@param viewClassInfo
|
||||
A pointer to the run-time view class information as returned by the
|
||||
CLASSINFO() macro, e.g. CLASSINFO(MyViewClass). If this is not
|
||||
wxCLASSINFO() macro, e.g. wxCLASSINFO(MyViewClass). If this is not
|
||||
supplied, you will need to derive a new wxDocTemplate class and
|
||||
override the CreateView() member to return a new view instance on
|
||||
demand.
|
||||
|
@@ -245,7 +245,7 @@ public:
|
||||
will be sent which can be vetoed as well.
|
||||
*/
|
||||
wxTextCtrl* EditLabel(long item,
|
||||
wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl));
|
||||
wxClassInfo* textControlClass = wxCLASSINFO(wxTextCtrl));
|
||||
|
||||
/**
|
||||
Finish editing the label.
|
||||
|
@@ -15,7 +15,7 @@
|
||||
|
||||
To define a new kind of module, derive a class from wxModule, override the
|
||||
wxModule::OnInit and wxModule::OnExit functions, and add the
|
||||
DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS to header and implementation
|
||||
wxDECLARE_DYNAMIC_CLASS and wxIMPLEMENT_DYNAMIC_CLASS to header and implementation
|
||||
files (which can be the same file).
|
||||
On initialization, wxWidgets will find all classes derived from wxModule, create
|
||||
an instance of each, and call each wxModule::OnInit function. On exit, wxWidgets
|
||||
@@ -37,24 +37,24 @@
|
||||
virtual void OnExit() { wxDDECleanUp(); };
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxDDEModule)
|
||||
wxDECLARE_DYNAMIC_CLASS(wxDDEModule);
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule)
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule);
|
||||
|
||||
// Another module which uses DDE in its OnInit()
|
||||
class MyModule: public wxModule
|
||||
{
|
||||
public:
|
||||
MyModule() { AddDependency(CLASSINFO(wxDDEModule)); }
|
||||
MyModule() { AddDependency(wxCLASSINFO(wxDDEModule)); }
|
||||
virtual bool OnInit() { ... code using DDE ... }
|
||||
virtual void OnExit() { ... }
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(MyModule)
|
||||
wxDECLARE_DYNAMIC_CLASS(MyModule);
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(MyModule, wxModule)
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(MyModule, wxModule);
|
||||
|
||||
// Another module which uses DDE in its OnInit()
|
||||
// but uses a named dependency
|
||||
@@ -66,10 +66,10 @@
|
||||
virtual void OnExit() { ... }
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(MyModule2)
|
||||
wxDECLARE_DYNAMIC_CLASS(MyModule2)
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(MyModule2, wxModule)
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(MyModule2, wxModule)
|
||||
@endcode
|
||||
|
||||
@library{wxbase}
|
||||
@@ -104,7 +104,7 @@ protected:
|
||||
/**
|
||||
Call this function from the constructor of the derived class.
|
||||
|
||||
@a dep must be the CLASSINFO() of a wxModule-derived class and the
|
||||
@a dep must be the wxCLASSINFO() of a wxModule-derived class and the
|
||||
corresponding module will be loaded before and unloaded after this module.
|
||||
|
||||
@param dep
|
||||
@@ -119,7 +119,7 @@ protected:
|
||||
the class info.
|
||||
|
||||
This is useful when a module is declared entirely in a source file and
|
||||
there is no header for the declaration of the module needed by CLASSINFO(),
|
||||
there is no header for the declaration of the module needed by wxCLASSINFO(),
|
||||
however errors are not detected until run-time, instead of compile-time, then.
|
||||
Note that circular dependencies are detected and result in a fatal error.
|
||||
|
||||
|
@@ -263,16 +263,16 @@ public:
|
||||
wxActiveXContainer* m_pAX;
|
||||
wxAutomationObject m_PDF;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxPDFMediaBackend)
|
||||
wxDECLARE_DYNAMIC_CLASS(wxPDFMediaBackend)
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxPDFMediaBackend, wxMediaBackend);
|
||||
Put this in one of your existant source files and then create a wxMediaCtrl with
|
||||
|
||||
//[this] is the parent window, "myfile.pdf" is the PDF file to open
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxPDFMediaBackend, wxMediaBackend);
|
||||
|
||||
// Put this in one of your existant source files and then create a wxMediaCtrl with
|
||||
wxMediaCtrl* mymediactrl = new wxMediaCtrl(this, "myfile.pdf", wxID_ANY,
|
||||
wxDefaultPosition, wxSize(300,300),
|
||||
0, "wxPDFMediaBackend");
|
||||
// [this] is the parent window, "myfile.pdf" is the PDF file to open
|
||||
@endcode
|
||||
|
||||
|
||||
|
@@ -42,7 +42,7 @@
|
||||
virtual wxObjectRefData *CreateRefData() const;
|
||||
virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(MyCar)
|
||||
wxDECLARE_DYNAMIC_CLASS(MyCar)
|
||||
};
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
|
||||
#define M_CARDATA ((MyCarRefData *)m_refData)
|
||||
IMPLEMENT_DYNAMIC_CLASS(MyCar,wxObject)
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(MyCar, wxObject);
|
||||
|
||||
MyCar::MyCar( int price )
|
||||
{
|
||||
@@ -275,12 +275,12 @@ public:
|
||||
Example:
|
||||
|
||||
@code
|
||||
bool tmp = obj->IsKindOf(CLASSINFO(wxFrame));
|
||||
bool tmp = obj->IsKindOf(wxCLASSINFO(wxFrame));
|
||||
@endcode
|
||||
|
||||
@param info
|
||||
A pointer to a class information object, which may be obtained
|
||||
by using the ::CLASSINFO macro.
|
||||
by using the ::wxCLASSINFO macro.
|
||||
|
||||
@return @true if the class represented by info is the same class as this
|
||||
one or is derived from it.
|
||||
@@ -412,8 +412,8 @@ protected:
|
||||
This class stores meta-information about classes.
|
||||
|
||||
Instances of this class are not generally defined directly by an application,
|
||||
but indirectly through use of macros such as ::DECLARE_DYNAMIC_CLASS and
|
||||
::IMPLEMENT_DYNAMIC_CLASS.
|
||||
but indirectly through use of macros such as ::wxDECLARE_DYNAMIC_CLASS and
|
||||
::wxIMPLEMENT_DYNAMIC_CLASS.
|
||||
|
||||
@library{wxbase}
|
||||
@category{rtti}
|
||||
@@ -655,21 +655,12 @@ public:
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define CLASSINFO( className )
|
||||
|
||||
/**
|
||||
Used inside a class declaration to declare that the class should be made
|
||||
known to the class hierarchy, but objects of this class cannot be created
|
||||
dynamically. The same as DECLARE_ABSTRACT_CLASS().
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define DECLARE_CLASS( className )
|
||||
#define wxCLASSINFO( className )
|
||||
|
||||
/**
|
||||
Used inside a class declaration to declare that the class should be
|
||||
made known to the class hierarchy, but objects of this class cannot be created
|
||||
dynamically. The same as DECLARE_CLASS().
|
||||
dynamically.
|
||||
|
||||
@header{wx/object.h}
|
||||
|
||||
@@ -678,7 +669,7 @@ public:
|
||||
@code
|
||||
class wxCommand: public wxObject
|
||||
{
|
||||
DECLARE_ABSTRACT_CLASS(wxCommand)
|
||||
wxDECLARE_ABSTRACT_CLASS(wxCommand);
|
||||
|
||||
private:
|
||||
...
|
||||
@@ -687,14 +678,14 @@ public:
|
||||
};
|
||||
@endcode
|
||||
*/
|
||||
#define DECLARE_ABSTRACT_CLASS( className )
|
||||
#define wxDECLARE_ABSTRACT_CLASS( className )
|
||||
|
||||
/**
|
||||
Used inside a class declaration to make the class known to wxWidgets RTTI
|
||||
system and also declare that the objects of this class should be
|
||||
dynamically creatable from run-time type information. Notice that this
|
||||
implies that the class should have a default constructor, if this is not
|
||||
the case consider using DECLARE_CLASS().
|
||||
the case consider using wxDECLARE_ABSTRACT_CLASS().
|
||||
|
||||
@header{wx/object.h}
|
||||
|
||||
@@ -703,7 +694,7 @@ public:
|
||||
@code
|
||||
class wxFrame: public wxWindow
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxFrame)
|
||||
wxDECLARE_DYNAMIC_CLASS(wxFrame);
|
||||
|
||||
private:
|
||||
const wxString& frameTitle;
|
||||
@@ -712,35 +703,27 @@ public:
|
||||
};
|
||||
@endcode
|
||||
*/
|
||||
#define DECLARE_DYNAMIC_CLASS( className )
|
||||
#define wxDECLARE_DYNAMIC_CLASS( className )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
that has run-time type information. The same as IMPLEMENT_ABSTRACT_CLASS().
|
||||
Used inside a class declaration to declare that the class should be made
|
||||
known to the class hierarchy, but objects of this class cannot be created
|
||||
dynamically. The same as wxDECLARE_DYNAMIC_CLASS().
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define IMPLEMENT_CLASS( className, baseClassName )
|
||||
#define wxDECLARE_CLASS( className )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
that has run-time type information and two base classes. The same as
|
||||
IMPLEMENT_ABSTRACT_CLASS2().
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define IMPLEMENT_CLASS2( className, baseClassName1, baseClassName2 )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
that has run-time type information. The same as IMPLEMENT_CLASS().
|
||||
|
||||
that has run-time type information.
|
||||
|
||||
@header{wx/object.h}
|
||||
|
||||
Example:
|
||||
|
||||
@code
|
||||
IMPLEMENT_ABSTRACT_CLASS(wxCommand, wxObject)
|
||||
wxIMPLEMENT_ABSTRACT_CLASS(wxCommand, wxObject);
|
||||
|
||||
wxCommand::wxCommand(void)
|
||||
{
|
||||
@@ -748,16 +731,15 @@ public:
|
||||
}
|
||||
@endcode
|
||||
*/
|
||||
#define IMPLEMENT_ABSTRACT_CLASS( className, baseClassName )
|
||||
#define wxIMPLEMENT_ABSTRACT_CLASS( className, baseClassName )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
that has run-time type information and two base classes. The same as
|
||||
IMPLEMENT_CLASS2().
|
||||
that has run-time type information and two base classes.
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define IMPLEMENT_ABSTRACT_CLASS2( className, baseClassName1, baseClassName2 )
|
||||
#define wxIMPLEMENT_ABSTRACT_CLASS2( className, baseClassName1, baseClassName2 )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
@@ -769,7 +751,7 @@ public:
|
||||
Example:
|
||||
|
||||
@code
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow);
|
||||
|
||||
wxFrame::wxFrame(void)
|
||||
{
|
||||
@@ -777,7 +759,7 @@ public:
|
||||
}
|
||||
@endcode
|
||||
*/
|
||||
#define IMPLEMENT_DYNAMIC_CLASS( className, baseClassName )
|
||||
#define wxIMPLEMENT_DYNAMIC_CLASS( className, baseClassName )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
@@ -786,7 +768,25 @@ public:
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define IMPLEMENT_DYNAMIC_CLASS2( className, baseClassName1, baseClassName2 )
|
||||
#define wxIMPLEMENT_DYNAMIC_CLASS2( className, baseClassName1, baseClassName2 )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
that has run-time type information, and whose instances can be created
|
||||
dynamically. The same as wxIMPLEMENT_DYNAMIC_CLASS().
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define wxIMPLEMENT_CLASS( className, baseClassName )
|
||||
|
||||
/**
|
||||
Used in a C++ implementation file to complete the declaration of a class
|
||||
that has run-time type information and two base classes, and whose instances
|
||||
can be created dynamically. The same as wxIMPLEMENT_DYNAMIC_CLASS2().
|
||||
|
||||
@header{wx/object.h}
|
||||
*/
|
||||
#define wxIMPLEMENT_CLASS2( className, baseClassName1, baseClassName2 )
|
||||
|
||||
/**
|
||||
Same as @c const_cast<T>(x) if the compiler supports const cast or @c (T)x for
|
||||
|
@@ -184,7 +184,8 @@ public:
|
||||
|
||||
class wxSampleMultiButtonEditor : public wxPGTextCtrlEditor
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxSampleMultiButtonEditor)
|
||||
wxDECLARE_DYNAMIC_CLASS(wxSampleMultiButtonEditor);
|
||||
|
||||
public:
|
||||
wxSampleMultiButtonEditor() {}
|
||||
virtual ~wxSampleMultiButtonEditor() {}
|
||||
@@ -201,7 +202,7 @@ public:
|
||||
wxEvent& event ) const;
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxSampleMultiButtonEditor, wxPGTextCtrlEditor)
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxSampleMultiButtonEditor, wxPGTextCtrlEditor);
|
||||
|
||||
wxPGWindowList wxSampleMultiButtonEditor::CreateControls( wxPropertyGrid* propGrid,
|
||||
wxPGProperty* property,
|
||||
|
@@ -621,7 +621,7 @@ wxPG_PROP_BEING_DELETED = 0x00200000
|
||||
@endcode
|
||||
|
||||
Since wxPGProperty derives from wxObject, you can use standard
|
||||
DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS macros. From the
|
||||
wxDECLARE_DYNAMIC_CLASS and wxIMPLEMENT_DYNAMIC_CLASS macros. From the
|
||||
above example they were omitted for sake of simplicity, and besides,
|
||||
they are only really needed if you need to use wxRTTI with your
|
||||
property class.
|
||||
|
@@ -307,7 +307,7 @@ public:
|
||||
@see EndEditLabel(), wxTreeEvent
|
||||
*/
|
||||
virtual wxTextCtrl *EditLabel(const wxTreeItemId& item,
|
||||
wxClassInfo* textCtrlClass = CLASSINFO(wxTextCtrl));
|
||||
wxClassInfo* textCtrlClass = wxCLASSINFO(wxTextCtrl));
|
||||
|
||||
/**
|
||||
Ends label editing. If @a cancelEdit is @true, the edit will be
|
||||
@@ -751,8 +751,8 @@ public:
|
||||
zero or positive value if the first item is less than, equal to or
|
||||
greater than the second one.
|
||||
|
||||
Please note that you @b must use wxRTTI macros DECLARE_DYNAMIC_CLASS()
|
||||
and IMPLEMENT_DYNAMIC_CLASS() if you override this function because
|
||||
Please note that you @b must use wxRTTI macros wxDECLARE_DYNAMIC_CLASS()
|
||||
and wxIMPLEMENT_DYNAMIC_CLASS() if you override this function because
|
||||
otherwise the base class considers that it is not overridden and uses
|
||||
the default comparison, i.e. sorts the items alphabetically, which
|
||||
allows it optimize away the calls to the virtual function completely.
|
||||
|
Reference in New Issue
Block a user