]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/custdobj.tex
added and documented wxDEFINE_SCOPED_PTR_TYPE; improved docs a bit
[wxWidgets.git] / docs / latex / wx / custdobj.tex
1 \section{\class{wxCustomDataObject}}\label{wxcustomdataobject}
2
3 wxCustomDataObject is a specialization of
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
10 By default, wxCustomDataObject stores the data inside in a buffer. To put the
11 data into the buffer you may use either
12 \helpref{SetData}{wxcustomdataobjectsetdata} or
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
23 object but provide it on demand instead, you should override
24 \helpref{GetSize}{wxcustomdataobjectgetsize},
25 \helpref{GetData}{wxcustomdataobjectgetdata} and
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
29 \wxheading{Derived from}
30
31 \helpref{wxDataObjectSimple}{wxdataobjectsimple}\\
32 \helpref{wxDataObject}{wxdataobject}
33
34 \wxheading{Include files}
35
36 <wx/dataobj.h>
37
38 \wxheading{See also}
39
40 \helpref{wxDataObject}{wxdataobject}
41
42 \latexignore{\rtfignore{\wxheading{Members}}}
43
44 \membersection{wxCustomDataObject::wxCustomDataObject}\label{wxcustomdataobjectwxcustomdataobject}
45
46 \func{}{wxCustomDataObject}{\param{const wxDataFormat\& }{format = wxFormatInvalid}}
47
48 The constructor accepts a {\it format} argument which specifies the (single)
49 format supported by this object. If it isn't set here,
50 \helpref{SetFormat}{wxdataobjectsimplesetformat} should be used.
51
52 \membersection{wxCustomDataObject::\destruct{wxCustomDataObject}}\label{wxcustomdataobjectdtor}
53
54 \func{}{\destruct{wxCustomDataObject}}{\void}
55
56 The destructor will free the data hold by the object. Notice that although it
57 calls a virtual \helpref{Free()}{wxcustomdataobjectfree} function, the base
58 class version will always be called (C++ doesn't allow calling virtual
59 functions from constructors or destructors), so if you override {\tt Free()}, you
60 should override the destructor in your class as well (which would probably
61 just call the derived class' version of {\tt Free()}).
62
63 \membersection{wxCustomDataObject::Alloc}\label{wxcustomdataobjectalloc}
64
65 \func{virtual void *}{Alloc}{\param{size\_t }{size}}
66
67 This function is called to allocate {\it size} bytes of memory from SetData().
68 The default version just uses the operator new.
69
70 \membersection{wxCustomDataObject::Free}\label{wxcustomdataobjectfree}
71
72 \pythonnote{This method expects a string in wxPython. You can pass
73 nearly any object by pickling it first.}
74
75 \func{virtual void}{Free}{\void}
76
77 This function is called when the data is freed, you may override it to anything
78 you want (or may be nothing at all). The default version calls operator
79 delete$[]$ on the data.
80
81 \membersection{wxCustomDataObject::GetSize}\label{wxcustomdataobjectgetsize}
82
83 \constfunc{virtual size\_t}{GetSize}{\void}
84
85 Returns the data size in bytes.
86
87 \membersection{wxCustomDataObject::GetData}\label{wxcustomdataobjectgetdata}
88
89 \constfunc{virtual void *}{GetData}{\void}
90
91 Returns a pointer to the data.
92
93 \membersection{wxCustomDataObject::SetData}\label{wxcustomdataobjectsetdata}
94
95 \func{virtual void}{SetData}{
96 \param{size\_t }{size}, \param{const void }{*data}}
97
98 Set the data. The data object will make an internal copy.
99
100 \membersection{wxCustomDataObject::TakeData}\label{wxcustomdataobjecttakedata}
101
102 \func{virtual void}{TakeData}{
103 \param{size\_t }{size}, \param{const void }{*data}}
104
105 Like \helpref{SetData}{wxcustomdataobjectsetdata}, but doesn't copy the data -
106 instead the object takes ownership of the pointer.
107