]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/variant.tex
document that Remove(index) doesn't delete the window neither (replaces patch 1470834)
[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
17As standard, wxVariant can store values of type bool, char, double, long, string,
8715d2d3 18string list, time, date, void pointer, list of strings, and list of variants. However, an application can extend wxVariant's capabilities by deriving from the class \helpref{wxVariantData}{wxvariantdata} and using the wxVariantData form of the wxVariant constructor or assignment operator to assign this data to a variant. Actual values for user-defined types will need to be accessed via the wxVariantData object, unlike the case for basic data types where convenience functions such as GetLong can be used.
a974387a
JS
19
20This class is useful for reducing the programming for certain tasks, such as an editor
21for different data types, or a remote procedure call protocol.
22
23An optional name member is associated with a wxVariant. This might be used, for example, in CORBA
24or OLE automation classes, where named parameters are required.
25
a974387a
JS
26\wxheading{Derived from}
27
28\helpref{wxObject}{wxobject}
29
954b8ae6
JS
30\wxheading{Include files}
31
32<wx/variant.h>
33
a974387a
JS
34\wxheading{See also}
35
36\helpref{wxVariantData}{wxvariantdata}
37
38\latexignore{\rtfignore{\wxheading{Members}}}
39
40\membersection{wxVariant::wxVariant}\label{wxvariantctor}
41
42\func{}{wxVariant}{\void}
43
44Default constructor.
45
46\func{}{wxVariant}{\param{const wxVariant\& }{variant}}
47
48Copy constructor.
49
f6bcfd97
BP
50\func{}{wxVariant}{\param{const char*}{ value}, \param{const wxString\& }{name = ``"}}
51
a974387a
JS
52\func{}{wxVariant}{\param{const wxString\&}{ value}, \param{const wxString\& }{name = ``"}}
53
54Construction from a string value.
55
56\func{}{wxVariant}{\param{char}{ value}, \param{const wxString\& }{name = ``"}}
57
58Construction from a character value.
59
60\func{}{wxVariant}{\param{long}{ value}, \param{const wxString\& }{name = ``"}}
61
62Construction from an integer value. You may need to cast to (long) to
63avoid confusion with other constructors (such as the bool constructor).
64
65\func{}{wxVariant}{\param{bool}{ value}, \param{const wxString\& }{name = ``"}}
66
67Construction from a boolean value.
68
69\func{}{wxVariant}{\param{double}{ value}, \param{const wxString\& }{name = ``"}}
70
71Construction from a double-precision floating point value.
72
73\func{}{wxVariant}{\param{const wxList\&}{ value}, \param{const wxString\& }{name = ``"}}
74
75Construction from a list of wxVariant objects. This constructor
76copies {\it value}, the application is still responsible for
77deleting {\it value} and its contents.
78
a974387a
JS
79\func{}{wxVariant}{\param{void*}{ value}, \param{const wxString\& }{name = ``"}}
80
81Construction from a void pointer.
82
cf6ae290
RG
83\func{}{wxVariant}{\param{wxObject*}{ value}, \param{const wxString\& }{name = ``"}}
84
85Construction from a wxObject pointer.
86
a974387a
JS
87\func{}{wxVariant}{\param{wxVariantData*}{ data}, \param{const wxString\& }{name = ``"}}
88
8715d2d3
RN
89Construction from user-defined data. The variant holds onto the {\it data} pointer.
90
91\func{}{wxVariant}{\param{wxDateTime\&}{ val}, \param{const wxString\& }{name = ``"}}
92
43f06cfd 93Construction from a \helpref{wxDateTime}{wxdatetime}.
8715d2d3
RN
94
95\func{}{wxVariant}{\param{wxArrayString\&}{ val}, \param{const wxString\& }{name = ``"}}
96
97Construction from an array of strings. This constructor copies {\it value} and its contents.
98
99\func{}{wxVariant}{\param{DATE\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
100
101Construction from a odbc date value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
102
103\func{}{wxVariant}{\param{TIME\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
104
105Construction from a odbc time value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
106
107\func{}{wxVariant}{\param{TIMESTAMP\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
108
109Construction from a odbc timestamp value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
a974387a
JS
110
111\membersection{wxVariant::\destruct{wxVariant}}\label{wxvariantdtor}
112
113\func{}{\destruct{wxVariant}}{\void}
114
115Destructor.
116
8715d2d3 117
a974387a
JS
118\membersection{wxVariant::Append}\label{wxvariantappend}
119
120\func{void}{Append}{\param{const wxVariant\&}{ value}}
121
122Appends a value to the list.
123
124\membersection{wxVariant::ClearList}\label{wxvariantclearlist}
125
126\func{void}{ClearList}{\void}
127
128Deletes the contents of the list.
129
8715d2d3
RN
130
131\membersection{wxVariant::Convert}\label{wxvariantconvert}
132
0f353563 133\constfunc{bool}{Convert}{\param{long*}{ value}}
8715d2d3 134
0f353563 135\constfunc{bool}{Convert}{\param{bool*}{ value}}
8715d2d3 136
0f353563 137\constfunc{bool}{Convert}{\param{double*}{ value}}
8715d2d3 138
0f353563 139\constfunc{bool}{Convert}{\param{wxString*}{ value}}
8715d2d3 140
0f353563 141\constfunc{bool}{Convert}{\param{char*}{ value}}
8715d2d3 142
0f353563 143\constfunc{bool}{Convert}{\param{wxDateTime*}{ value}}
8715d2d3
RN
144
145Retrieves and converts the value of this variant to the type that {\it value} is.
146
147
a974387a
JS
148\membersection{wxVariant::GetCount}\label{wxvariantgetcount}
149
0902898a 150\constfunc{size\_t}{GetCount}{\void}
a974387a
JS
151
152Returns the number of elements in the list.
153
154\membersection{wxVariant::Delete}\label{wxvariantdelete}
155
0902898a 156\func{bool}{Delete}{\param{size\_t }{item}}
a974387a
JS
157
158Deletes the zero-based {\it item} from the list.
159
8715d2d3
RN
160\membersection{wxVariant::GetArrayString}\label{wxvariantgetarraystring}
161
162\constfunc{wxArrayString}{GetArrayString}{\void}
163
164Returns the string array value.
165
a974387a
JS
166\membersection{wxVariant::GetBool}\label{wxvariantgetbool}
167
168\constfunc{bool}{GetBool}{\void}
169
170Returns the boolean value.
171
172\membersection{wxVariant::GetChar}\label{wxvariantgetchar}
173
174\constfunc{char}{GetChar}{\void}
175
176Returns the character value.
177
178\membersection{wxVariant::GetData}\label{wxvariantgetdata}
179
180\constfunc{wxVariantData*}{GetData}{\void}
181
182Returns a pointer to the internal variant data.
183
8715d2d3
RN
184\membersection{wxVariant::GetDateTime}\label{wxvariantgetdatetime}
185
186\constfunc{wxDateTime}{GetDateTime}{\void}
187
188Returns the date value.
189
a974387a
JS
190\membersection{wxVariant::GetDouble}\label{wxvariantgetdouble}
191
192\constfunc{double}{GetDouble}{\void}
193
194Returns the floating point value.
195
196\membersection{wxVariant::GetLong}\label{wxvariantgetlong}
197
198\constfunc{long}{GetLong}{\void}
199
200Returns the integer value.
201
202\membersection{wxVariant::GetName}\label{wxvariantgetname}
203
204\constfunc{const wxString\&}{GetName}{\void}
205
206Returns a constant reference to the variant name.
207
208\membersection{wxVariant::GetString}\label{wxvariantgetstring}
209
210\constfunc{wxString}{GetString}{\void}
211
212Gets the string value.
213
a974387a
JS
214\membersection{wxVariant::GetType}\label{wxvariantgettype}
215
216\constfunc{wxString}{GetType}{\void}
217
218Returns the value type as a string. The built-in types are: bool, char, date, double, list, long, string, stringlist, time, void*.
219
220If the variant is null, the value type returned is the string ``null" (not the empty string).
221
222\membersection{wxVariant::GetVoidPtr}\label{wxvariantgetvoidptr}
223
224\constfunc{void*}{GetVoidPtr}{\void}
225
226Gets the void pointer value.
227
cf6ae290
RG
228\membersection{wxVariant::GetWxObjectPtr}\label{wxvariantgetwxobjectptr}
229
230\constfunc{void*}{GetWxObjectPtr}{\void}
231
232Gets the wxObject pointer value.
233
a974387a
JS
234\membersection{wxVariant::Insert}\label{wxvariantinsert}
235
236\func{void}{Insert}{\param{const wxVariant\&}{ value}}
237
238Inserts a value at the front of the list.
239
240\membersection{wxVariant::IsNull}\label{wxvariantisnull}
241
242\constfunc{bool}{IsNull}{\void}
243
cc81d32f 244Returns true if there is no data associated with this variant, false if there is data.
a974387a
JS
245
246\membersection{wxVariant::IsType}\label{wxvariantistype}
247
248\constfunc{bool}{IsType}{\param{const wxString\&}{ type}}
249
cc81d32f 250Returns true if {\it type} matches the type of the variant, false otherwise.
a974387a 251
cf6ae290
RG
252\membersection{wxVariant::IsValueKindOf}\label{wxvariantisvaluekindof}
253
254\constfunc{bool}{IsValueKindOf}{\param{const wxClassInfo* type}{ type}}
255
256Returns true if the data is derived from the class described by {\it type}, false otherwise.
257
a974387a
JS
258\membersection{wxVariant::MakeNull}\label{wxvariantmakenull}
259
260\func{void}{MakeNull}{\void}
261
262Makes the variant null by deleting the internal data.
263
264\membersection{wxVariant::MakeString}\label{wxvariantmakestring}
265
266\constfunc{wxString}{MakeString}{\void}
267
268Makes a string representation of the variant value (for any type).
269
270\membersection{wxVariant::Member}\label{wxvariantmember}
271
272\constfunc{bool}{Member}{\param{const wxVariant\&}{ value}}
273
cc81d32f 274Returns true if {\it value} matches an element in the list.
a974387a
JS
275
276\membersection{wxVariant::NullList}\label{wxvariantnulllist}
277
278\func{void}{NullList}{\void}
279
280Makes an empty list. This differs from a null variant which has no data; a null list
281is of type list, but the number of elements in the list is zero.
282
283\membersection{wxVariant::SetData}\label{wxvariantsetdata}
284
285\func{void}{SetData}{\param{wxVariantData*}{ data}}
286
287Sets the internal variant data, deleting the existing data if there is any.
288
289\membersection{wxVariant::operator $=$}\label{wxvariantassignment}
290
291\func{void}{operator $=$}{\param{const wxVariant\& }{value}}
292
293\func{void}{operator $=$}{\param{wxVariantData* }{value}}
294
295\func{void}{operator $=$}{\param{const wxString\& }{value}}
296
297\func{void}{operator $=$}{\param{const char* }{value}}
298
299\func{void}{operator $=$}{\param{char }{value}}
300
301\func{void}{operator $=$}{\param{const long }{value}}
302
303\func{void}{operator $=$}{\param{const bool }{value}}
304
305\func{void}{operator $=$}{\param{const double }{value}}
306
a974387a
JS
307\func{void}{operator $=$}{\param{void* }{value}}
308
309\func{void}{operator $=$}{\param{const wxList\& }{value}}
310
8715d2d3
RN
311\func{void}{operator $=$}{\param{const wxDateTime\& }{value}}
312
313\func{void}{operator $=$}{\param{const wxArrayString\& }{value}}
314
315\func{void}{operator $=$}{\param{const DATE\_STRUCT* }{value}}
316
317\func{void}{operator $=$}{\param{const TIME\_STRUCT* }{value}}
318
319\func{void}{operator $=$}{\param{const TIMESTAMP\_STRUCT* }{value}}
320
a974387a
JS
321Assignment operators.
322
323\membersection{wxVariant::operator $==$}\label{wxvarianteq}
324
8715d2d3
RN
325\constfunc{bool}{operator $==$}{\param{const wxVariant\& }{value}}
326
327\constfunc{bool}{operator $==$}{\param{const wxString\& }{value}}
a974387a 328
8715d2d3 329\constfunc{bool}{operator $==$}{\param{const char* }{value}}
a974387a 330
8715d2d3 331\constfunc{bool}{operator $==$}{\param{char }{value}}
a974387a 332
8715d2d3 333\constfunc{bool}{operator $==$}{\param{const long }{value}}
a974387a 334
8715d2d3 335\constfunc{bool}{operator $==$}{\param{const bool }{value}}
a974387a 336
8715d2d3 337\constfunc{bool}{operator $==$}{\param{const double }{value}}
a974387a 338
8715d2d3 339\constfunc{bool}{operator $==$}{\param{void* }{value}}
a974387a 340
8715d2d3 341\constfunc{bool}{operator $==$}{\param{const wxList\& }{value}}
a974387a 342
8715d2d3
RN
343\constfunc{bool}{operator $==$}{\param{const wxArrayString\& }{value}}
344
345\constfunc{bool}{operator $==$}{\param{const wxDateTime\& }{value}}
a974387a
JS
346
347Equality test operators.
348
349\membersection{wxVariant::operator $!=$}\label{wxvariantneq}
350
8715d2d3
RN
351\constfunc{bool}{operator $!=$}{\param{const wxVariant\& }{value}}
352
353\constfunc{bool}{operator $!=$}{\param{const wxString\& }{value}}
a974387a 354
8715d2d3 355\constfunc{bool}{operator $!=$}{\param{const char* }{value}}
a974387a 356
8715d2d3 357\constfunc{bool}{operator $!=$}{\param{char }{value}}
a974387a 358
8715d2d3 359\constfunc{bool}{operator $!=$}{\param{const long }{value}}
a974387a 360
8715d2d3 361\constfunc{bool}{operator $!=$}{\param{const bool }{value}}
a974387a 362
8715d2d3 363\constfunc{bool}{operator $!=$}{\param{const double }{value}}
a974387a 364
8715d2d3 365\constfunc{bool}{operator $!=$}{\param{void* }{value}}
a974387a 366
8715d2d3 367\constfunc{bool}{operator $!=$}{\param{const wxList\& }{value}}
a974387a 368
8715d2d3
RN
369\constfunc{bool}{operator $!=$}{\param{const wxArrayString\& }{value}}
370
371\constfunc{bool}{operator $!=$}{\param{const wxDateTime\& }{value}}
a974387a
JS
372
373Inequality test operators.
374
375\membersection{wxVariant::operator $[]$}\label{wxvariantarray}
376
377\constfunc{wxVariant}{operator $[]$}{\param{size\_t }{idx}}
378
379Returns the value at {\it idx} (zero-based).
380
381\func{wxVariant\&}{operator $[]$}{\param{size\_t }{idx}}
382
383Returns a reference to the value at {\it idx} (zero-based). This can be used
384to change the value at this index.
385
386\membersection{wxVariant::operator char}\label{wxvariantchar}
387
388\constfunc{char}{operator char}{\void}
389
390Operator for implicit conversion to a char, using \helpref{wxVariant::GetChar}{wxvariantgetchar}.
391
392\membersection{wxVariant::operator double}\label{wxvariantdouble}
393
394\constfunc{double}{operator double}{\void}
395
396Operator for implicit conversion to a double, using \helpref{wxVariant::GetDouble}{wxvariantgetdouble}.
397
398\constfunc{long}{operator long}{\void}
399
400Operator for implicit conversion to a long, using \helpref{wxVariant::GetLong}{wxvariantgetlong}.
401
a974387a
JS
402\membersection{wxVariant::operator wxString}\label{wxvariantwxstring}
403
404\constfunc{wxString}{operator wxString}{\void}
405
406Operator for implicit conversion to a string, using \helpref{wxVariant::MakeString}{wxvariantmakestring}.
407
a974387a
JS
408\membersection{wxVariant::operator void*}\label{wxvariantvoid}
409
410\constfunc{void*}{operator void*}{\void}
411
412Operator for implicit conversion to a pointer to a void, using \helpref{wxVariant::GetVoidPtr}{wxvariantgetvoidptr}.
413
8715d2d3
RN
414\membersection{wxVariant::operator wxDateTime}\label{wxvariantdatetime}
415
416\constfunc{void*}{operator wxDateTime}{\void}
417
418Operator for implicit conversion to a pointer to a \helpref{wxDateTime}{wxdatetime}, using \helpref{wxVariant::GetDateTime}{wxvariantgetdatetime}.
419
a974387a
JS
420\section{\class{wxVariantData}}\label{wxvariantdata}
421
422The {\bf wxVariantData} is used to implement a new type for wxVariant. Derive from wxVariantData,
423and override the pure virtual functions.
424
425\wxheading{Derived from}
426
427\helpref{wxObject}{wxobject}
428
954b8ae6
JS
429\wxheading{Include files}
430
431<wx/variant.h>
432
a974387a
JS
433\wxheading{See also}
434
435\helpref{wxVariant}{wxvariant}
436
437\latexignore{\rtfignore{\wxheading{Members}}}
438
439\membersection{wxVariantData::wxVariantData}\label{wxvariantdatactor}
440
441\func{}{wxVariantData}{\void}
442
443Default constructor.
444
445\membersection{wxVariantData::Copy}\label{wxvariantdatacopy}
446
447\func{void}{Copy}{\param{wxVariantData\&}{ data}}
448
449Copy the data from `this' object to {\it data}.
450
451\membersection{wxVariantData::Eq}\label{wxvariantdataeq}
452
453\constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}
454
cc81d32f 455Returns true if this object is equal to {\it data}.
a974387a
JS
456
457\membersection{wxVariantData::GetType}\label{wxvariantdatagettype}
458
459\constfunc{wxString}{GetType}{\void}
460
461Returns the string type of the data.
462
cf6ae290
RG
463\membersection{wxVariantData::GetValueClassInfo}\label{wxvariantdatagetvalueclassinfo}
464
465\constfunc{wxClassInfo*}{GetValueClassInfo}{\void}
466
467If the data is a wxObject returns a pointer to the objects wxClassInfo structure, if
468the data isn't a wxObject the method returns NULL.
469
a974387a
JS
470\membersection{wxVariantData::Read}\label{wxvariantdataread}
471
472\func{bool}{Read}{\param{ostream\&}{ stream}}
473
474\func{bool}{Read}{\param{wxString\&}{ string}}
475
476Reads the data from {\it stream} or {\it string}.
477
478\membersection{wxVariantData::Write}\label{wxvariantdatawrite}
479
480\constfunc{bool}{Write}{\param{ostream\&}{ stream}}
481
482\constfunc{bool}{Write}{\param{wxString\&}{ string}}
483
484Writes the data to {\it stream} or {\it string}.
485
486
cf6ae290
RG
487\membersection{wxGetVariantCast}\label{wxgetvariantcast}
488
489\func{classname *}{wxGetVariantCast}{wxVariant\&, classname}
490
491This macro returns the data stored in {\it variant} cast to the type {\it classname *} if
492the data is of this type (the check is done during the run-time) or
43f06cfd 493{\tt NULL} otherwise.
cf6ae290
RG
494
495
496\wxheading{See also}
a974387a 497
cf6ae290 498\helpref{RTTI overview}{runtimeclassoverview}\\
0497e172 499\helpref{wxDynamicCast}{wxdynamiccast}