]>
Commit | Line | Data |
---|---|---|
864753e9 VZ |
1 | \section{\class{wxCustomDataObject}}\label{wxcustomdataobject} |
2 | ||
fa482912 | 3 | wxCustomDataObject is a specialization of |
864753e9 VZ |
4 | \helpref{wxDataObjectSimple}{wxdataobjectsimple} for some |
5 | application-specific data in arbitrary (either custom or one of the standard | |
6 | ones). The only restriction is that it is supposed that this data can be | |
7 | copied bitwise (i.e. with {\tt memcpy()}), so it would be a bad idea to make | |
8 | it contain a C++ object (though C struct is fine). | |
9 | ||
11c7d5b6 | 10 | By default, wxCustomDataObject stores the data inside in a buffer. To put the |
fa482912 JS |
11 | data into the buffer you may use either |
12 | \helpref{SetData}{wxcustomdataobjectsetdata} or | |
11c7d5b6 VZ |
13 | \helpref{TakeData}{wxcustomdataobjecttakedata} depending on whether you want |
14 | the object to make a copy of data or not. | |
15 | ||
16 | If you already store the data in another place, it may be more convenient and | |
17 | efficient to provide the data on-demand which is possible too if you override | |
18 | the virtual functions mentioned below. | |
19 | ||
20 | \wxheading{Virtual functions to override} | |
21 | ||
22 | This class may be used as is, but if you don't want store the data inside the | |
fa482912 JS |
23 | object but provide it on demand instead, you should override |
24 | \helpref{GetSize}{wxcustomdataobjectgetsize}, | |
25 | \helpref{GetData}{wxcustomdataobjectgetdata} and | |
11c7d5b6 VZ |
26 | \helpref{SetData}{wxcustomdataobjectsetdata} (or may be only the first two or |
27 | only the last one if you only allow reading/writing the data) | |
28 | ||
864753e9 VZ |
29 | \wxheading{Derived from} |
30 | ||
0a2017e0 | 31 | \helpref{wxDataObjectSimple}{wxdataobjectsimple}\\ |
864753e9 VZ |
32 | \helpref{wxDataObject}{wxdataobject} |
33 | ||
34 | \wxheading{Include files} | |
35 | ||
36 | <wx/dataobj.h> | |
37 | ||
a7af285d VZ |
38 | \wxheading{Library} |
39 | ||
40 | \helpref{wxCore}{librarieslist} | |
41 | ||
864753e9 VZ |
42 | \wxheading{See also} |
43 | ||
44 | \helpref{wxDataObject}{wxdataobject} | |
45 | ||
46 | \latexignore{\rtfignore{\wxheading{Members}}} | |
47 | ||
48 | \membersection{wxCustomDataObject::wxCustomDataObject}\label{wxcustomdataobjectwxcustomdataobject} | |
49 | ||
50 | \func{}{wxCustomDataObject}{\param{const wxDataFormat\& }{format = wxFormatInvalid}} | |
51 | ||
52 | The constructor accepts a {\it format} argument which specifies the (single) | |
fa482912 | 53 | format supported by this object. If it isn't set here, |
864753e9 VZ |
54 | \helpref{SetFormat}{wxdataobjectsimplesetformat} should be used. |
55 | ||
56 | \membersection{wxCustomDataObject::\destruct{wxCustomDataObject}}\label{wxcustomdataobjectdtor} | |
57 | ||
58 | \func{}{\destruct{wxCustomDataObject}}{\void} | |
59 | ||
60 | The destructor will free the data hold by the object. Notice that although it | |
61 | calls a virtual \helpref{Free()}{wxcustomdataobjectfree} function, the base | |
62 | class version will always be called (C++ doesn't allow calling virtual | |
63 | functions from constructors or destructors), so if you override {\tt Free()}, you | |
64 | should override the destructor in your class as well (which would probably | |
65 | just call the derived class' version of {\tt Free()}). | |
66 | ||
11c7d5b6 | 67 | \membersection{wxCustomDataObject::Alloc}\label{wxcustomdataobjectalloc} |
864753e9 | 68 | |
11c7d5b6 | 69 | \func{virtual void *}{Alloc}{\param{size\_t }{size}} |
864753e9 | 70 | |
11c7d5b6 VZ |
71 | This function is called to allocate {\it size} bytes of memory from SetData(). |
72 | The default version just uses the operator new. | |
864753e9 | 73 | |
11c7d5b6 VZ |
74 | \membersection{wxCustomDataObject::Free}\label{wxcustomdataobjectfree} |
75 | ||
76 | \func{virtual void}{Free}{\void} | |
77 | ||
78 | This function is called when the data is freed, you may override it to anything | |
79 | you want (or may be nothing at all). The default version calls operator | |
0a2017e0 | 80 | delete$[]$ on the data. |
864753e9 VZ |
81 | |
82 | \membersection{wxCustomDataObject::GetSize}\label{wxcustomdataobjectgetsize} | |
83 | ||
11c7d5b6 | 84 | \constfunc{virtual size\_t}{GetSize}{\void} |
864753e9 | 85 | |
11c7d5b6 | 86 | Returns the data size in bytes. |
864753e9 VZ |
87 | |
88 | \membersection{wxCustomDataObject::GetData}\label{wxcustomdataobjectgetdata} | |
89 | ||
11c7d5b6 | 90 | \constfunc{virtual void *}{GetData}{\void} |
864753e9 VZ |
91 | |
92 | Returns a pointer to the data. | |
93 | ||
11c7d5b6 VZ |
94 | \membersection{wxCustomDataObject::SetData}\label{wxcustomdataobjectsetdata} |
95 | ||
96 | \func{virtual void}{SetData}{ | |
0a2017e0 | 97 | \param{size\_t }{size}, \param{const void }{*data}} |
11c7d5b6 VZ |
98 | |
99 | Set the data. The data object will make an internal copy. | |
100 | ||
0eedee04 RD |
101 | \pythonnote{This method expects a string in wxPython. You can pass |
102 | nearly any object by pickling it first.} | |
103 | ||
11c7d5b6 VZ |
104 | \membersection{wxCustomDataObject::TakeData}\label{wxcustomdataobjecttakedata} |
105 | ||
106 | \func{virtual void}{TakeData}{ | |
0a2017e0 | 107 | \param{size\_t }{size}, \param{const void }{*data}} |
11c7d5b6 VZ |
108 | |
109 | Like \helpref{SetData}{wxcustomdataobjectsetdata}, but doesn't copy the data - | |
110 | instead the object takes ownership of the pointer. | |
0a2017e0 | 111 | |
0eedee04 RD |
112 | \pythonnote{This method expects a string in wxPython. You can pass |
113 | nearly any object by pickling it first.} | |
114 |