#include </home/zeitlin/src/wx/github/interface/wx/dataobj.h>
wxCustomDataObject is a specialization of wxDataObjectSimple for some application-specific data in arbitrary (either custom or one of the standard ones).
The only restriction is that it is supposed that this data can be copied bitwise (i.e. with memcpy()
), so it would be a bad idea to make it contain a C++ object (though C struct is fine).
By default, wxCustomDataObject stores the data inside in a buffer. To put the data into the buffer you may use either SetData() or TakeData() depending on whether you want the object to make a copy of data or not.
This class may be used as is, but if you don't want store the data inside the object but provide it on demand instead, you should override GetSize(), GetData() and SetData() (or may be only the first two or only the last one if you only allow reading/writing the data).
Public Member Functions | |
wxCustomDataObject (const wxDataFormat &format=wxFormatInvalid) | |
The constructor accepts a format argument which specifies the (single) format supported by this object. | |
virtual | ~wxCustomDataObject () |
The destructor will free the data held by the object. | |
virtual void * | Alloc (size_t size) |
This function is called to allocate size bytes of memory from SetData(). | |
virtual void | Free () |
This function is called when the data is freed, you may override it to anything you want (or may be nothing at all). | |
virtual void * | GetData () const |
Returns a pointer to the data. | |
virtual size_t | GetSize () const |
Returns the data size in bytes. | |
virtual bool | SetData (size_t size, const void *data) |
Set the data. | |
void | TakeData (size_t size, void *data) |
Like SetData(), but doesn't copy the data - instead the object takes ownership of the pointer. |
wxCustomDataObject::wxCustomDataObject | ( | const wxDataFormat & | format = wxFormatInvalid | ) |
The constructor accepts a format argument which specifies the (single) format supported by this object.
If it isn't set here, wxDataObjectSimple::SetFormat() should be used.
virtual wxCustomDataObject::~wxCustomDataObject | ( | ) | [virtual] |
The destructor will free the data held by the object.
Notice that although it calls the virtual Free() function, the base class version will always be called (C++ doesn't allow calling virtual functions from constructors or destructors), so if you override Free(), you should override the destructor in your class as well (which would probably just call the derived class' version of Free()).
virtual void* wxCustomDataObject::Alloc | ( | size_t | size | ) | [virtual] |
This function is called to allocate size bytes of memory from SetData().
The default version just uses the operator new.
virtual void wxCustomDataObject::Free | ( | ) | [virtual] |
This function is called when the data is freed, you may override it to anything you want (or may be nothing at all).
The default version calls operator delete[] on the data.
virtual void* wxCustomDataObject::GetData | ( | ) | const [virtual] |
Returns a pointer to the data.
virtual size_t wxCustomDataObject::GetSize | ( | ) | const [virtual] |
Returns the data size in bytes.
virtual bool wxCustomDataObject::SetData | ( | size_t | size, |
const void * | data | ||
) | [virtual] |
void wxCustomDataObject::TakeData | ( | size_t | size, |
void * | data | ||
) |
Like SetData(), but doesn't copy the data - instead the object takes ownership of the pointer.