]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/variant.tex
remove C++ comment
[wxWidgets.git] / docs / latex / wx / variant.tex
CommitLineData
43f06cfd
WS
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: variant.tex
3%% Purpose: wxVariant docs
4%% Author: wxWidgets Team
5%% Modified by:
6%% Created: 01/30/2005
7%% RCS-ID: $Id$
8%% Copyright: (c) wxWidgets Team
9%% License: wxWindows license
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
a974387a
JS
12\section{\class{wxVariant}}\label{wxvariant}
13
14The {\bf wxVariant} class represents a container for any type.
15A variant's value can be changed at run time, possibly to a different type of value.
16
38f82bf6 17As standard, wxVariant can store values of type bool, wxChar, double, long, string,
2562c823
RR
18string list, time, date, void pointer, list of strings, and list of variants.
19However, an application can extend wxVariant's capabilities by deriving from the
20class \helpref{wxVariantData}{wxvariantdata} and using the wxVariantData form of
21the wxVariant constructor or assignment operator to assign this data to a variant.
22Actual values for user-defined types will need to be accessed via the wxVariantData
23object, unlike the case for basic data types where convenience functions such as
24\helpref{GetLong}{wxvariantgetlong} can be used.
25
eb753b56 26Pointers to any \helpref{wxObject}{wxobject} derived class can also easily be stored
2562c823
RR
27in a wxVariant. wxVariant will then use wxWidgets' built-in RTTI system to set the
28type name (returned by \helpref{GetType}{wxvariantgettype}) and to perform
29type-safety checks at runtime.
a974387a
JS
30
31This class is useful for reducing the programming for certain tasks, such as an editor
32for different data types, or a remote procedure call protocol.
33
3f90a399
RR
34An optional name member is associated with a wxVariant. This might be used, for example,
35in CORBA or OLE automation classes, where named parameters are required.
a974387a 36
631787c4
VZ
37Note that as of wxWidgets 2.7.1, wxVariant is \helpref{reference counted}{trefcount}.
38Additionally, the convenience macros {\bf DECLARE\_VARIANT\_OBJECT} and
39{\bf IMPLEMENT\_VARIANT\_OBJECT} were added so that adding (limited) support
40for conversion to and from wxVariant can be very easily implemented without modifying
41either wxVariant or the class to be stored by wxVariant. Since assignment operators
42cannot be declared outside the class, the shift left operators are used like this:
3f90a399
RR
43
44\begin{verbatim}
45 // in the header file
46 DECLARE_VARIANT_OBJECT(MyClass)
47
48 // in the implementation file
49 IMPLMENT_VARIANT_OBJECT(MyClass)
50
51 // in the user code
52 wxVariant variant;
53 MyClass value;
54 variant << value;
55
56 // or
57 value << variant;
58\end{verbatim}
59
60For this to work, MyClass must derive from \helpref{wxObject}{wxobject}, implement
61the \helpref{wxWidgets RTTI system}{runtimeclassoverview}
62and support the assignment operator and equality operator for itself. Ideally, it
63should also be reference counted to make copying operations cheap and fast. This
64can be most easily implemented using the reference counting support offered by
65\helpref{wxObject}{wxobject} itself. By default, wxWidgets already implements
66the shift operator conversion for a few of its drawing related classes:
67
68\begin{verbatim}
69IMPLEMENT_VARIANT_OBJECT(wxColour)
3f90a399
RR
70IMPLEMENT_VARIANT_OBJECT(wxImage)
71IMPLEMENT_VARIANT_OBJECT(wxIcon)
72IMPLEMENT_VARIANT_OBJECT(wxBitmap)
73\end{verbatim}
2562c823 74
e3c35a0d
RR
75Note that as of wxWidgets 2.9.0, wxVariantData no longer inherits from wxObject
76and wxVariant no longer uses the type-unsafe wxList class for list
77operations but the type-safe wxVariantList class.
78
a974387a
JS
79\wxheading{Derived from}
80
81\helpref{wxObject}{wxobject}
82
954b8ae6
JS
83\wxheading{Include files}
84
85<wx/variant.h>
86
a7af285d
VZ
87\wxheading{Library}
88
89\helpref{wxBase}{librarieslist}
90
a974387a
JS
91\wxheading{See also}
92
93\helpref{wxVariantData}{wxvariantdata}
94
95\latexignore{\rtfignore{\wxheading{Members}}}
96
97\membersection{wxVariant::wxVariant}\label{wxvariantctor}
98
99\func{}{wxVariant}{\void}
100
101Default constructor.
102
103\func{}{wxVariant}{\param{const wxVariant\& }{variant}}
104
631787c4 105Copy constructor, uses \helpref{reference counting}{trefcount}.
a974387a 106
38f82bf6 107\func{}{wxVariant}{\param{const wxChar*}{ value}, \param{const wxString\& }{name = ``"}}
f6bcfd97 108
a974387a
JS
109\func{}{wxVariant}{\param{const wxString\&}{ value}, \param{const wxString\& }{name = ``"}}
110
111Construction from a string value.
112
38f82bf6 113\func{}{wxVariant}{\param{wxChar}{ value}, \param{const wxString\& }{name = ``"}}
a974387a
JS
114
115Construction from a character value.
116
117\func{}{wxVariant}{\param{long}{ value}, \param{const wxString\& }{name = ``"}}
118
119Construction from an integer value. You may need to cast to (long) to
120avoid confusion with other constructors (such as the bool constructor).
121
122\func{}{wxVariant}{\param{bool}{ value}, \param{const wxString\& }{name = ``"}}
123
124Construction from a boolean value.
125
126\func{}{wxVariant}{\param{double}{ value}, \param{const wxString\& }{name = ``"}}
127
128Construction from a double-precision floating point value.
129
9a0a58f5 130\func{}{wxVariant}{\param{const wxVariantList\&}{ value}, \param{const wxString\& }{name = ``"}}
a974387a
JS
131
132Construction from a list of wxVariant objects. This constructor
133copies {\it value}, the application is still responsible for
134deleting {\it value} and its contents.
135
a974387a
JS
136\func{}{wxVariant}{\param{void*}{ value}, \param{const wxString\& }{name = ``"}}
137
138Construction from a void pointer.
139
cf6ae290
RG
140\func{}{wxVariant}{\param{wxObject*}{ value}, \param{const wxString\& }{name = ``"}}
141
142Construction from a wxObject pointer.
143
a974387a
JS
144\func{}{wxVariant}{\param{wxVariantData*}{ data}, \param{const wxString\& }{name = ``"}}
145
8715d2d3
RN
146Construction from user-defined data. The variant holds onto the {\it data} pointer.
147
148\func{}{wxVariant}{\param{wxDateTime\&}{ val}, \param{const wxString\& }{name = ``"}}
149
43f06cfd 150Construction from a \helpref{wxDateTime}{wxdatetime}.
8715d2d3
RN
151
152\func{}{wxVariant}{\param{wxArrayString\&}{ val}, \param{const wxString\& }{name = ``"}}
153
154Construction from an array of strings. This constructor copies {\it value} and its contents.
155
156\func{}{wxVariant}{\param{DATE\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
157
158Construction from a odbc date value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
159
160\func{}{wxVariant}{\param{TIME\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
161
162Construction from a odbc time value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
163
164\func{}{wxVariant}{\param{TIMESTAMP\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
165
166Construction from a odbc timestamp value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
a974387a
JS
167
168\membersection{wxVariant::\destruct{wxVariant}}\label{wxvariantdtor}
169
170\func{}{\destruct{wxVariant}}{\void}
171
172Destructor.
173
2562c823
RR
174Note that destructor is protected, so wxVariantData cannot usually
175be deleted. Instead, \helpref{DecRef}{wxvariantdatadecref} should be called.
631787c4 176See \helpref{reference-counted object destruction}{refcountdestruct} for more info.
2562c823 177
8715d2d3 178
a974387a
JS
179\membersection{wxVariant::Append}\label{wxvariantappend}
180
181\func{void}{Append}{\param{const wxVariant\&}{ value}}
182
183Appends a value to the list.
184
2562c823
RR
185\membersection{wxVariant::Clear}\label{wxvariantclear}
186
187\func{void}{Clear}{\void}
188
189Makes the variant null by deleting the internal data and
190set the name to {\it wxEmptyString}.
191
a974387a
JS
192\membersection{wxVariant::ClearList}\label{wxvariantclearlist}
193
194\func{void}{ClearList}{\void}
195
196Deletes the contents of the list.
197
8715d2d3
RN
198
199\membersection{wxVariant::Convert}\label{wxvariantconvert}
200
0f353563 201\constfunc{bool}{Convert}{\param{long*}{ value}}
8715d2d3 202
0f353563 203\constfunc{bool}{Convert}{\param{bool*}{ value}}
8715d2d3 204
0f353563 205\constfunc{bool}{Convert}{\param{double*}{ value}}
8715d2d3 206
0f353563 207\constfunc{bool}{Convert}{\param{wxString*}{ value}}
8715d2d3 208
38f82bf6 209\constfunc{bool}{Convert}{\param{wxChar*}{ value}}
8715d2d3 210
0f353563 211\constfunc{bool}{Convert}{\param{wxDateTime*}{ value}}
8715d2d3
RN
212
213Retrieves and converts the value of this variant to the type that {\it value} is.
214
215
a974387a
JS
216\membersection{wxVariant::GetCount}\label{wxvariantgetcount}
217
0902898a 218\constfunc{size\_t}{GetCount}{\void}
a974387a
JS
219
220Returns the number of elements in the list.
221
222\membersection{wxVariant::Delete}\label{wxvariantdelete}
223
0902898a 224\func{bool}{Delete}{\param{size\_t }{item}}
a974387a
JS
225
226Deletes the zero-based {\it item} from the list.
227
8715d2d3
RN
228\membersection{wxVariant::GetArrayString}\label{wxvariantgetarraystring}
229
230\constfunc{wxArrayString}{GetArrayString}{\void}
231
232Returns the string array value.
233
a974387a
JS
234\membersection{wxVariant::GetBool}\label{wxvariantgetbool}
235
236\constfunc{bool}{GetBool}{\void}
237
238Returns the boolean value.
239
240\membersection{wxVariant::GetChar}\label{wxvariantgetchar}
241
38f82bf6 242\constfunc{wxChar}{GetChar}{\void}
a974387a
JS
243
244Returns the character value.
245
246\membersection{wxVariant::GetData}\label{wxvariantgetdata}
247
248\constfunc{wxVariantData*}{GetData}{\void}
249
2562c823
RR
250Returns a pointer to the internal variant data. To take ownership
251of this data, you must call its \helpref{IncRef}{wxvariantdataincref}
252method. When you stop using it, \helpref{DecRef}{wxvariantdatadecref}
253must be likewise called.
a974387a 254
8715d2d3
RN
255\membersection{wxVariant::GetDateTime}\label{wxvariantgetdatetime}
256
257\constfunc{wxDateTime}{GetDateTime}{\void}
258
259Returns the date value.
260
a974387a
JS
261\membersection{wxVariant::GetDouble}\label{wxvariantgetdouble}
262
263\constfunc{double}{GetDouble}{\void}
264
265Returns the floating point value.
266
9a0a58f5
RR
267\membersection{wxVariant::GetList}\label{wxvariantgetlist}
268
269\constfunc{wxVariantList &}{GetList}{\void}
270
271Returns a reference to the wxVariantList class used by
272wxVariant if this wxVariant is currently a list of variants.
273
a974387a
JS
274\membersection{wxVariant::GetLong}\label{wxvariantgetlong}
275
276\constfunc{long}{GetLong}{\void}
277
278Returns the integer value.
279
280\membersection{wxVariant::GetName}\label{wxvariantgetname}
281
282\constfunc{const wxString\&}{GetName}{\void}
283
284Returns a constant reference to the variant name.
285
286\membersection{wxVariant::GetString}\label{wxvariantgetstring}
287
288\constfunc{wxString}{GetString}{\void}
289
290Gets the string value.
291
a974387a
JS
292\membersection{wxVariant::GetType}\label{wxvariantgettype}
293
294\constfunc{wxString}{GetType}{\void}
295
7909f748 296Returns the value type as a string. The built-in types are: bool, char, datetime, double, list, long, string, arrstring, void*.
a974387a
JS
297
298If the variant is null, the value type returned is the string ``null" (not the empty string).
299
300\membersection{wxVariant::GetVoidPtr}\label{wxvariantgetvoidptr}
301
302\constfunc{void*}{GetVoidPtr}{\void}
303
304Gets the void pointer value.
305
cf6ae290
RG
306\membersection{wxVariant::GetWxObjectPtr}\label{wxvariantgetwxobjectptr}
307
cfd5930d 308\constfunc{wxObject*}{GetWxObjectPtr}{\void}
cf6ae290
RG
309
310Gets the wxObject pointer value.
311
a974387a
JS
312\membersection{wxVariant::Insert}\label{wxvariantinsert}
313
314\func{void}{Insert}{\param{const wxVariant\&}{ value}}
315
316Inserts a value at the front of the list.
317
318\membersection{wxVariant::IsNull}\label{wxvariantisnull}
319
320\constfunc{bool}{IsNull}{\void}
321
cc81d32f 322Returns true if there is no data associated with this variant, false if there is data.
a974387a
JS
323
324\membersection{wxVariant::IsType}\label{wxvariantistype}
325
326\constfunc{bool}{IsType}{\param{const wxString\&}{ type}}
327
cc81d32f 328Returns true if {\it type} matches the type of the variant, false otherwise.
a974387a 329
cf6ae290
RG
330\membersection{wxVariant::IsValueKindOf}\label{wxvariantisvaluekindof}
331
332\constfunc{bool}{IsValueKindOf}{\param{const wxClassInfo* type}{ type}}
333
334Returns true if the data is derived from the class described by {\it type}, false otherwise.
335
a974387a
JS
336\membersection{wxVariant::MakeNull}\label{wxvariantmakenull}
337
338\func{void}{MakeNull}{\void}
339
340Makes the variant null by deleting the internal data.
341
342\membersection{wxVariant::MakeString}\label{wxvariantmakestring}
343
344\constfunc{wxString}{MakeString}{\void}
345
346Makes a string representation of the variant value (for any type).
347
348\membersection{wxVariant::Member}\label{wxvariantmember}
349
350\constfunc{bool}{Member}{\param{const wxVariant\&}{ value}}
351
cc81d32f 352Returns true if {\it value} matches an element in the list.
a974387a
JS
353
354\membersection{wxVariant::NullList}\label{wxvariantnulllist}
355
356\func{void}{NullList}{\void}
357
358Makes an empty list. This differs from a null variant which has no data; a null list
359is of type list, but the number of elements in the list is zero.
360
361\membersection{wxVariant::SetData}\label{wxvariantsetdata}
362
363\func{void}{SetData}{\param{wxVariantData*}{ data}}
364
365Sets the internal variant data, deleting the existing data if there is any.
366
367\membersection{wxVariant::operator $=$}\label{wxvariantassignment}
368
369\func{void}{operator $=$}{\param{const wxVariant\& }{value}}
370
371\func{void}{operator $=$}{\param{wxVariantData* }{value}}
372
373\func{void}{operator $=$}{\param{const wxString\& }{value}}
374
38f82bf6 375\func{void}{operator $=$}{\param{const wxChar* }{value}}
a974387a 376
38f82bf6 377\func{void}{operator $=$}{\param{wxChar }{value}}
a974387a
JS
378
379\func{void}{operator $=$}{\param{const long }{value}}
380
381\func{void}{operator $=$}{\param{const bool }{value}}
382
383\func{void}{operator $=$}{\param{const double }{value}}
384
a974387a
JS
385\func{void}{operator $=$}{\param{void* }{value}}
386
2f620946
RR
387\func{void}{operator $=$}{\param{wxObject* }{value}}
388
9a0a58f5 389\func{void}{operator $=$}{\param{const wxVariantList\& }{value}}
a974387a 390
8715d2d3
RN
391\func{void}{operator $=$}{\param{const wxDateTime\& }{value}}
392
393\func{void}{operator $=$}{\param{const wxArrayString\& }{value}}
394
395\func{void}{operator $=$}{\param{const DATE\_STRUCT* }{value}}
396
397\func{void}{operator $=$}{\param{const TIME\_STRUCT* }{value}}
398
399\func{void}{operator $=$}{\param{const TIMESTAMP\_STRUCT* }{value}}
400
631787c4 401Assignment operators, using \helpref{reference counting}{trefcount} when possible.
a974387a
JS
402
403\membersection{wxVariant::operator $==$}\label{wxvarianteq}
404
8715d2d3
RN
405\constfunc{bool}{operator $==$}{\param{const wxVariant\& }{value}}
406
407\constfunc{bool}{operator $==$}{\param{const wxString\& }{value}}
a974387a 408
38f82bf6 409\constfunc{bool}{operator $==$}{\param{const wxChar* }{value}}
a974387a 410
38f82bf6 411\constfunc{bool}{operator $==$}{\param{wxChar }{value}}
a974387a 412
8715d2d3 413\constfunc{bool}{operator $==$}{\param{const long }{value}}
a974387a 414
8715d2d3 415\constfunc{bool}{operator $==$}{\param{const bool }{value}}
a974387a 416
8715d2d3 417\constfunc{bool}{operator $==$}{\param{const double }{value}}
a974387a 418
8715d2d3 419\constfunc{bool}{operator $==$}{\param{void* }{value}}
a974387a 420
2f620946
RR
421\constfunc{bool}{operator $==$}{\param{wxObject* }{value}}
422
9a0a58f5 423\constfunc{bool}{operator $==$}{\param{const wxVariantList\& }{value}}
a974387a 424
8715d2d3
RN
425\constfunc{bool}{operator $==$}{\param{const wxArrayString\& }{value}}
426
427\constfunc{bool}{operator $==$}{\param{const wxDateTime\& }{value}}
a974387a
JS
428
429Equality test operators.
430
431\membersection{wxVariant::operator $!=$}\label{wxvariantneq}
432
8715d2d3
RN
433\constfunc{bool}{operator $!=$}{\param{const wxVariant\& }{value}}
434
435\constfunc{bool}{operator $!=$}{\param{const wxString\& }{value}}
a974387a 436
38f82bf6 437\constfunc{bool}{operator $!=$}{\param{const wxChar* }{value}}
a974387a 438
38f82bf6 439\constfunc{bool}{operator $!=$}{\param{wxChar }{value}}
a974387a 440
8715d2d3 441\constfunc{bool}{operator $!=$}{\param{const long }{value}}
a974387a 442
8715d2d3 443\constfunc{bool}{operator $!=$}{\param{const bool }{value}}
a974387a 444
8715d2d3 445\constfunc{bool}{operator $!=$}{\param{const double }{value}}
a974387a 446
8715d2d3 447\constfunc{bool}{operator $!=$}{\param{void* }{value}}
a974387a 448
2f620946
RR
449\constfunc{bool}{operator $!=$}{\param{wxObject* }{value}}
450
9a0a58f5 451\constfunc{bool}{operator $!=$}{\param{const wxVariantList\& }{value}}
a974387a 452
8715d2d3
RN
453\constfunc{bool}{operator $!=$}{\param{const wxArrayString\& }{value}}
454
455\constfunc{bool}{operator $!=$}{\param{const wxDateTime\& }{value}}
a974387a
JS
456
457Inequality test operators.
458
459\membersection{wxVariant::operator $[]$}\label{wxvariantarray}
460
461\constfunc{wxVariant}{operator $[]$}{\param{size\_t }{idx}}
462
463Returns the value at {\it idx} (zero-based).
464
465\func{wxVariant\&}{operator $[]$}{\param{size\_t }{idx}}
466
467Returns a reference to the value at {\it idx} (zero-based). This can be used
468to change the value at this index.
469
38f82bf6 470\membersection{wxVariant::operator wxChar}\label{wxvariantchar}
a974387a 471
38f82bf6 472\constfunc{char}{operator wxChar}{\void}
a974387a 473
38f82bf6 474Operator for implicit conversion to a wxChar, using \helpref{wxVariant::GetChar}{wxvariantgetchar}.
a974387a
JS
475
476\membersection{wxVariant::operator double}\label{wxvariantdouble}
477
478\constfunc{double}{operator double}{\void}
479
480Operator for implicit conversion to a double, using \helpref{wxVariant::GetDouble}{wxvariantgetdouble}.
481
482\constfunc{long}{operator long}{\void}
483
484Operator for implicit conversion to a long, using \helpref{wxVariant::GetLong}{wxvariantgetlong}.
485
a974387a
JS
486\membersection{wxVariant::operator wxString}\label{wxvariantwxstring}
487
488\constfunc{wxString}{operator wxString}{\void}
489
490Operator for implicit conversion to a string, using \helpref{wxVariant::MakeString}{wxvariantmakestring}.
491
a974387a
JS
492\membersection{wxVariant::operator void*}\label{wxvariantvoid}
493
494\constfunc{void*}{operator void*}{\void}
495
496Operator for implicit conversion to a pointer to a void, using \helpref{wxVariant::GetVoidPtr}{wxvariantgetvoidptr}.
497
8715d2d3
RN
498\membersection{wxVariant::operator wxDateTime}\label{wxvariantdatetime}
499
500\constfunc{void*}{operator wxDateTime}{\void}
501
502Operator for implicit conversion to a pointer to a \helpref{wxDateTime}{wxdatetime}, using \helpref{wxVariant::GetDateTime}{wxvariantgetdatetime}.
503
631787c4
VZ
504
505
506%% wxVariantData
507
508
a974387a
JS
509\section{\class{wxVariantData}}\label{wxvariantdata}
510
631787c4
VZ
511The {\bf wxVariantData} class is used to implement a new type for \helpref{wxVariant}{wxvariant}.
512Derive from wxVariantData, and override the pure virtual functions.
a974387a 513
631787c4
VZ
514wxVariantData is \helpref{reference counted}{refcount}, but you don't normally have to care about this,
515as wxVariant manages the count automatically. However, in case your application needs to take
2562c823
RR
516ownership of wxVariantData, be aware that the object is created with reference count of 1,
517and passing it to wxVariant will not increase this. In other words, \helpref{IncRef}{wxvariantdataincref}
518needs to be called only if you both take ownership of wxVariantData and pass it to a wxVariant.
519Also note that the destructor is protected, so you can never explicitly delete a wxVariantData
520instance. Instead, \helpref{DecRef}{wxvariantdatadecref} will delete the object automatically
521when the reference count reaches zero.
522
954b8ae6
JS
523\wxheading{Include files}
524
525<wx/variant.h>
526
a7af285d
VZ
527\wxheading{Library}
528
529\helpref{wxBase}{librarieslist}
530
a974387a
JS
531\wxheading{See also}
532
533\helpref{wxVariant}{wxvariant}
534
535\latexignore{\rtfignore{\wxheading{Members}}}
536
537\membersection{wxVariantData::wxVariantData}\label{wxvariantdatactor}
538
539\func{}{wxVariantData}{\void}
540
541Default constructor.
542
2562c823
RR
543\membersection{wxVariantData::DecRef}\label{wxvariantdatadecref}
544
545\func{void}{DecRef}{\void}
a974387a 546
2562c823
RR
547Decreases reference count. If the count reaches zero, the object is
548automatically deleted.
a974387a 549
2562c823 550Note that destructor of wxVariantData is protected, so delete
631787c4
VZ
551cannot be used as normal. Instead, \helpref{DecRef}{wxvariantdatadecref} should be called.
552
553
a974387a
JS
554
555\membersection{wxVariantData::Eq}\label{wxvariantdataeq}
556
557\constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}
558
cc81d32f 559Returns true if this object is equal to {\it data}.
a974387a
JS
560
561\membersection{wxVariantData::GetType}\label{wxvariantdatagettype}
562
563\constfunc{wxString}{GetType}{\void}
564
565Returns the string type of the data.
566
cf6ae290
RG
567\membersection{wxVariantData::GetValueClassInfo}\label{wxvariantdatagetvalueclassinfo}
568
569\constfunc{wxClassInfo*}{GetValueClassInfo}{\void}
570
571If the data is a wxObject returns a pointer to the objects wxClassInfo structure, if
572the data isn't a wxObject the method returns NULL.
573
2562c823
RR
574\membersection{wxVariantData::IncRef}\label{wxvariantdataincref}
575
576\func{void}{IncRef}{\void}
577
578Increases reference count. Note that initially wxVariantData has reference count of 1.
579
a974387a
JS
580\membersection{wxVariantData::Read}\label{wxvariantdataread}
581
582\func{bool}{Read}{\param{ostream\&}{ stream}}
583
584\func{bool}{Read}{\param{wxString\&}{ string}}
585
586Reads the data from {\it stream} or {\it string}.
587
588\membersection{wxVariantData::Write}\label{wxvariantdatawrite}
589
590\constfunc{bool}{Write}{\param{ostream\&}{ stream}}
591
592\constfunc{bool}{Write}{\param{wxString\&}{ string}}
593
594Writes the data to {\it stream} or {\it string}.
595
596
cf6ae290
RG
597\membersection{wxGetVariantCast}\label{wxgetvariantcast}
598
599\func{classname *}{wxGetVariantCast}{wxVariant\&, classname}
600
601This macro returns the data stored in {\it variant} cast to the type {\it classname *} if
602the data is of this type (the check is done during the run-time) or
43f06cfd 603{\tt NULL} otherwise.
cf6ae290
RG
604
605
606\wxheading{See also}
a974387a 607
cf6ae290 608\helpref{RTTI overview}{runtimeclassoverview}\\
0497e172 609\helpref{wxDynamicCast}{wxdynamiccast}
b67a86d5 610