#include <wx/object.h>
This is the root class of many of the wxWidgets classes.
It declares a virtual destructor which ensures that destructors get called for all derived class objects where necessary.
wxObject is the hub of a dynamic object creation scheme, enabling a program to create instances of a class only knowing its string class name, and to query the class hierarchy.
The class contains optional debugging versions of new and delete, which can help trace memory allocation and deallocation problems.
wxObject can be used to implement reference counted objects, such as wxPen, wxBitmap and others (see this list). See wxRefCounter and Reference Counting for more info about reference counting.
Public Member Functions | |
wxObject () | |
Default ctor; initializes to nullptr the internal reference data. More... | |
wxObject (const wxObject &other) | |
Copy ctor. More... | |
virtual | ~wxObject () |
Destructor. More... | |
virtual wxClassInfo * | GetClassInfo () const |
This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar). More... | |
wxObjectRefData * | GetRefData () const |
Returns the wxObject::m_refData pointer, i.e. the data referenced by this object. More... | |
bool | IsKindOf (const wxClassInfo *info) const |
Determines whether this class is a subclass of (or the same class as) the given class. More... | |
bool | IsSameAs (const wxObject &obj) const |
Returns true if this object has the same data pointer as obj. More... | |
void | Ref (const wxObject &clone) |
Makes this object refer to the data in clone. More... | |
void | SetRefData (wxObjectRefData *data) |
Sets the wxObject::m_refData pointer. More... | |
void | UnRef () |
Decrements the reference count in the associated data, and if it is zero, deletes the data. More... | |
void | UnShare () |
This is the same of AllocExclusive() but this method is public. More... | |
void | operator delete (void *buf) |
The delete operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__ is defined. More... | |
void * | operator new (size_t size, const wxString &filename=nullptr, int lineNum=0) |
The new operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__ is defined. More... | |
Protected Member Functions | |
void | AllocExclusive () |
Ensure that this object's data is not shared with any other object. More... | |
virtual wxObjectRefData * | CreateRefData () const |
Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it. More... | |
virtual wxObjectRefData * | CloneRefData (const wxObjectRefData *data) const |
Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data. More... | |
Protected Attributes | |
wxObjectRefData * | m_refData |
Pointer to an object which is the object's reference-counted data. More... | |
wxObject::wxObject | ( | ) |
Default ctor; initializes to nullptr the internal reference data.
wxObject::wxObject | ( | const wxObject & | other | ) |
Copy ctor.
Sets the internal wxObject::m_refData pointer to point to the same instance of the wxObjectRefData-derived class pointed by other
and increments the refcount of wxObject::m_refData.
|
virtual |
Destructor.
Performs dereferencing, for those objects that use reference counting.
|
protected |
Ensure that this object's data is not shared with any other object.
If we have no data, it is created using CreateRefData(); if we have shared data (i.e. data with a reference count greater than 1), it is copied using CloneRefData(); otherwise nothing is done (the data is already present and is not shared by other object instances).
If you use this function you should make sure that you override the CreateRefData() and CloneRefData() functions in your class otherwise an assertion will fail at runtime.
|
protectedvirtual |
Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data.
This is usually implemented as a one-line call:
|
protectedvirtual |
Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it.
This is usually implemented as a one-line call:
|
virtual |
This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar).
wxObjectRefData* wxObject::GetRefData | ( | ) | const |
Returns the wxObject::m_refData pointer, i.e. the data referenced by this object.
bool wxObject::IsKindOf | ( | const wxClassInfo * | info | ) | const |
Determines whether this class is a subclass of (or the same class as) the given class.
Example:
info | A pointer to a class information object, which may be obtained by using the wxCLASSINFO macro. |
bool wxObject::IsSameAs | ( | const wxObject & | obj | ) | const |
Returns true if this object has the same data pointer as obj.
Notice that true is returned if the data pointers are nullptr in both objects.
This function only does a shallow comparison, i.e. it doesn't compare the objects pointed to by the data pointers of these objects.
void wxObject::operator delete | ( | void * | buf | ) |
The delete operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__
is defined.
It takes over memory deallocation, allowing wxDebugContext operations.
void* wxObject::operator new | ( | size_t | size, |
const wxString & | filename = nullptr , |
||
int | lineNum = 0 |
||
) |
The new operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__
is defined.
It takes over memory allocation, allowing wxDebugContext operations.
void wxObject::Ref | ( | const wxObject & | clone | ) |
Makes this object refer to the data in clone.
clone | The object to 'clone'. |
void wxObject::SetRefData | ( | wxObjectRefData * | data | ) |
Sets the wxObject::m_refData pointer.
void wxObject::UnRef | ( | ) |
Decrements the reference count in the associated data, and if it is zero, deletes the data.
The wxObject::m_refData member is set to nullptr.
void wxObject::UnShare | ( | ) |
This is the same of AllocExclusive() but this method is public.
|
protected |
Pointer to an object which is the object's reference-counted data.