wxRuby Documentation Home

# Wx::CustomDataObject

CustomDataObject is a specialization of
DataObjectSimple 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, CustomDataObject stores the data inside in a buffer. To put the
data into the buffer you may use either
set_data or
take_data depending on whether you want
the object to make a copy of data or not.

If you already store the data in another place, it may be more convenient and
efficient to provide the data on-demand which is possible too if you override
the virtual functions mentioned below.

## Virtual functions to override

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
get_size,
get_data and
set_data (or may be only the first two or
only the last one if you only allow reading/writing the data)

## Derived from

DataObjectSimple

DataObject

## See also

DataObject

## Methods

- CustomDataObject.new
- CustomDataObject#alloc
- CustomDataObject#free
- CustomDataObject#get_size
- CustomDataObject#get_data
- CustomDataObject#set_data
- CustomDataObject#take_data

### CustomDataObject.new

CustomDataObject.new(%(arg-type)DataFormat% format = FormatInvalid)

The constructor accepts a format argument which specifies the (single)
format supported by this object. If it isn’t set here,
set_format should be used.

destructor()

The destructor will free the data hold by the object. Notice that although it
calls a 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()`).

### CustomDataObject#alloc

alloc(%(arg-type)Integer% size)

This function is called to allocate size bytes of memory from SetData().
The default version just uses the operator new.

### CustomDataObject#free

free()

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.

### CustomDataObject#get_size

Integer get_size()

Returns the data size in bytes.

### CustomDataObject#get_data

get_data()

Returns a pointer to the data.

### CustomDataObject#set_data

set_data( Integer size, (arg-type) data)

Set the data. The data object will make an internal copy.

### CustomDataObject#take_data

take_data( Integer size, (arg-type) data)

Like set_data, but doesn’t copy the data -
instead the object takes ownership of the pointer.

[This page automatically generated from the Textile source at 2023-06-09 00:45:31 +0000]