Version: 3.1.0
wxCustomDataObject Class Reference

#include <wx/dataobj.h>

+ Inheritance diagram for wxCustomDataObject:

Detailed Description

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).

Library:  wxCore
Category:  Clipboard and Drag & Drop
See Also
wxDataObject

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.
 
- Public Member Functions inherited from wxDataObjectSimple
 wxDataObjectSimple (const wxDataFormat &format=wxFormatInvalid)
 Constructor accepts the supported format (none by default) which may also be set later with SetFormat().
 
virtual bool GetDataHere (void *buf) const
 Copy the data to the buffer, return true on success.
 
virtual size_t GetDataSize () const
 Gets the size of our data.
 
const wxDataFormatGetFormat () const
 Returns the (one and only one) format supported by this object.
 
void SetFormat (const wxDataFormat &format)
 Sets the supported format.
 
- Public Member Functions inherited from wxDataObject
 wxDataObject ()
 Constructor.
 
virtual ~wxDataObject ()
 Destructor.
 
virtual void GetAllFormats (wxDataFormat *formats, Direction dir=Get) const =0
 Copies all formats supported in the given direction dir to the array pointed to by formats.
 
virtual bool GetDataHere (const wxDataFormat &format, void *buf) const =0
 The method will write the data of the format format to the buffer buf.
 
virtual size_t GetDataSize (const wxDataFormat &format) const =0
 Returns the data size of the given format format.
 
virtual size_t GetFormatCount (Direction dir=Get) const =0
 Returns the number of available formats for rendering or setting the data.
 
virtual wxDataFormat GetPreferredFormat (Direction dir=Get) const =0
 Returns the preferred format for either rendering the data (if dir is Get, its default value) or for setting it.
 
virtual bool SetData (const wxDataFormat &format, size_t len, const void *buf)
 Set the data in the format format of the length len provided in the buffer buf.
 
bool IsSupported (const wxDataFormat &format, Direction dir=Get) const
 Returns true if this format is supported.
 

Additional Inherited Members

- Public Types inherited from wxDataObject
enum  Direction {
  Get = 0x01,
  Set = 0x02,
  Both = 0x03
}
 

Constructor & Destructor Documentation

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()).

Member Function Documentation

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

Set the data.

The data object will make an internal copy.

Reimplemented from wxDataObjectSimple.

void wxCustomDataObject::TakeData ( size_t  size,
void *  data 
)

Like SetData(), but doesn't copy the data - instead the object takes ownership of the pointer.