]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/variant.tex
image update
[wxWidgets.git] / docs / latex / wx / variant.tex
CommitLineData
a974387a
JS
1\section{\class{wxVariant}}\label{wxvariant}
2
3The {\bf wxVariant} class represents a container for any type.
4A variant's value can be changed at run time, possibly to a different type of value.
5
6As standard, wxVariant can store values of type bool, char, double, long, string,
7string list, time, date, void pointer, list of strings, and list of variants. However, an application can extend
8wxVariant's capabilities by deriving from the class \helpref{wxVariantData}{wxvariantdata} and
9using the wxVariantData form of the wxVariant constructor or assignment operator
10to assign this data to a variant. Actual values for user-defined types will need to be accessed
11via the wxVariantData object, unlike the case for basic data types where convenience
12functions such as GetLong can be used.
13
14This class is useful for reducing the programming for certain tasks, such as an editor
15for different data types, or a remote procedure call protocol.
16
17An optional name member is associated with a wxVariant. This might be used, for example, in CORBA
18or OLE automation classes, where named parameters are required.
19
20wxVariant is similar to wxExpr and also to wxPropertyValue. However, wxExpr is efficiency-optimized for
21a restricted range of data types, whereas wxVariant is less efficient but more extensible.
22wxPropertyValue may be replaced by wxVariant eventually.
23
24\wxheading{Derived from}
25
26\helpref{wxObject}{wxobject}
27
28\wxheading{See also}
29
30\helpref{wxVariantData}{wxvariantdata}
31
32\latexignore{\rtfignore{\wxheading{Members}}}
33
34\membersection{wxVariant::wxVariant}\label{wxvariantctor}
35
36\func{}{wxVariant}{\void}
37
38Default constructor.
39
40\func{}{wxVariant}{\param{const wxVariant\& }{variant}}
41
42Copy constructor.
43
44\func{}{wxVariant}{\param{const char*}{ value}, \param{const wxString\& }{name = ``"}}\\
45\func{}{wxVariant}{\param{const wxString\&}{ value}, \param{const wxString\& }{name = ``"}}
46
47Construction from a string value.
48
49\func{}{wxVariant}{\param{char}{ value}, \param{const wxString\& }{name = ``"}}
50
51Construction from a character value.
52
53\func{}{wxVariant}{\param{long}{ value}, \param{const wxString\& }{name = ``"}}
54
55Construction from an integer value. You may need to cast to (long) to
56avoid confusion with other constructors (such as the bool constructor).
57
58\func{}{wxVariant}{\param{bool}{ value}, \param{const wxString\& }{name = ``"}}
59
60Construction from a boolean value.
61
62\func{}{wxVariant}{\param{double}{ value}, \param{const wxString\& }{name = ``"}}
63
64Construction from a double-precision floating point value.
65
66\func{}{wxVariant}{\param{const wxList\&}{ value}, \param{const wxString\& }{name = ``"}}
67
68Construction from a list of wxVariant objects. This constructor
69copies {\it value}, the application is still responsible for
70deleting {\it value} and its contents.
71
72\func{}{wxVariant}{\param{const wxStringList\&}{ value}, \param{const wxString\& }{name = ``"}}
73
74Construction from a list of strings. This constructor
75copies {\it value}, the application is still responsible for
76deleting {\it value} and its contents.
77
78%Note: this constructor is currently disabled because it causes a C++ ambiguity.
79
80\func{}{wxVariant}{\param{const wxTime\&}{ value}, \param{const wxString\& }{name = ``"}}
81
82Construction from a time.
83
84\func{}{wxVariant}{\param{const wxDate\&}{ value}, \param{const wxString\& }{name = ``"}}
85
86Construction from a date.
87
88\func{}{wxVariant}{\param{void*}{ value}, \param{const wxString\& }{name = ``"}}
89
90Construction from a void pointer.
91
92\func{}{wxVariant}{\param{wxVariantData*}{ data}, \param{const wxString\& }{name = ``"}}
93
94Construction from user-defined data. The variant holds on to the {\it data} pointer.
95
96\membersection{wxVariant::\destruct{wxVariant}}\label{wxvariantdtor}
97
98\func{}{\destruct{wxVariant}}{\void}
99
100Destructor.
101
102\membersection{wxVariant::Append}\label{wxvariantappend}
103
104\func{void}{Append}{\param{const wxVariant\&}{ value}}
105
106Appends a value to the list.
107
108\membersection{wxVariant::ClearList}\label{wxvariantclearlist}
109
110\func{void}{ClearList}{\void}
111
112Deletes the contents of the list.
113
114\membersection{wxVariant::GetCount}\label{wxvariantgetcount}
115
116\constfunc{int}{GetCount}{\void}
117
118Returns the number of elements in the list.
119
120\membersection{wxVariant::Delete}\label{wxvariantdelete}
121
122\func{bool}{Delete}{\param{int }{item}}
123
124Deletes the zero-based {\it item} from the list.
125
126\membersection{wxVariant::GetBool}\label{wxvariantgetbool}
127
128\constfunc{bool}{GetBool}{\void}
129
130Returns the boolean value.
131
132\membersection{wxVariant::GetChar}\label{wxvariantgetchar}
133
134\constfunc{char}{GetChar}{\void}
135
136Returns the character value.
137
138\membersection{wxVariant::GetData}\label{wxvariantgetdata}
139
140\constfunc{wxVariantData*}{GetData}{\void}
141
142Returns a pointer to the internal variant data.
143
144\membersection{wxVariant::GetDate}\label{wxvariantgetdate}
145
146\constfunc{wxDate}{GetDate}{\void}
147
148Gets the date value.
149
150\membersection{wxVariant::GetDouble}\label{wxvariantgetdouble}
151
152\constfunc{double}{GetDouble}{\void}
153
154Returns the floating point value.
155
156\membersection{wxVariant::GetLong}\label{wxvariantgetlong}
157
158\constfunc{long}{GetLong}{\void}
159
160Returns the integer value.
161
162\membersection{wxVariant::GetName}\label{wxvariantgetname}
163
164\constfunc{const wxString\&}{GetName}{\void}
165
166Returns a constant reference to the variant name.
167
168\membersection{wxVariant::GetString}\label{wxvariantgetstring}
169
170\constfunc{wxString}{GetString}{\void}
171
172Gets the string value.
173
174\membersection{wxVariant::GetTime}\label{wxvariantgettime}
175
176\constfunc{wxTime}{GetTime}{\void}
177
178Gets the time value.
179
180\membersection{wxVariant::GetType}\label{wxvariantgettype}
181
182\constfunc{wxString}{GetType}{\void}
183
184Returns the value type as a string. The built-in types are: bool, char, date, double, list, long, string, stringlist, time, void*.
185
186If the variant is null, the value type returned is the string ``null" (not the empty string).
187
188\membersection{wxVariant::GetVoidPtr}\label{wxvariantgetvoidptr}
189
190\constfunc{void*}{GetVoidPtr}{\void}
191
192Gets the void pointer value.
193
194\membersection{wxVariant::Insert}\label{wxvariantinsert}
195
196\func{void}{Insert}{\param{const wxVariant\&}{ value}}
197
198Inserts a value at the front of the list.
199
200\membersection{wxVariant::IsNull}\label{wxvariantisnull}
201
202\constfunc{bool}{IsNull}{\void}
203
204Returns TRUE if there is no data associated with this variant, FALSE if there is data.
205
206\membersection{wxVariant::IsType}\label{wxvariantistype}
207
208\constfunc{bool}{IsType}{\param{const wxString\&}{ type}}
209
210Returns TRUE if {\it type} matches the type of the variant, FALSE otherwise.
211
212\membersection{wxVariant::MakeNull}\label{wxvariantmakenull}
213
214\func{void}{MakeNull}{\void}
215
216Makes the variant null by deleting the internal data.
217
218\membersection{wxVariant::MakeString}\label{wxvariantmakestring}
219
220\constfunc{wxString}{MakeString}{\void}
221
222Makes a string representation of the variant value (for any type).
223
224\membersection{wxVariant::Member}\label{wxvariantmember}
225
226\constfunc{bool}{Member}{\param{const wxVariant\&}{ value}}
227
228Returns TRUE if {\it value} matches an element in the list.
229
230\membersection{wxVariant::NullList}\label{wxvariantnulllist}
231
232\func{void}{NullList}{\void}
233
234Makes an empty list. This differs from a null variant which has no data; a null list
235is of type list, but the number of elements in the list is zero.
236
237\membersection{wxVariant::SetData}\label{wxvariantsetdata}
238
239\func{void}{SetData}{\param{wxVariantData*}{ data}}
240
241Sets the internal variant data, deleting the existing data if there is any.
242
243\membersection{wxVariant::operator $=$}\label{wxvariantassignment}
244
245\func{void}{operator $=$}{\param{const wxVariant\& }{value}}
246
247\func{void}{operator $=$}{\param{wxVariantData* }{value}}
248
249\func{void}{operator $=$}{\param{const wxString\& }{value}}
250
251\func{void}{operator $=$}{\param{const char* }{value}}
252
253\func{void}{operator $=$}{\param{char }{value}}
254
255\func{void}{operator $=$}{\param{const long }{value}}
256
257\func{void}{operator $=$}{\param{const bool }{value}}
258
259\func{void}{operator $=$}{\param{const double }{value}}
260
261\func{void}{operator $=$}{\param{const wxDate\& }{value}}
262
263\func{void}{operator $=$}{\param{const wxTime\& }{value}}
264
265\func{void}{operator $=$}{\param{void* }{value}}
266
267\func{void}{operator $=$}{\param{const wxList\& }{value}}
268
269\func{void}{operator $=$}{\param{const wxStringList\& }{value}}
270
271Assignment operators.
272
273\membersection{wxVariant::operator $==$}\label{wxvarianteq}
274
275\func{bool}{operator $==$}{\param{const wxVariant\& }{value}}
276
277\func{bool}{operator $==$}{\param{const wxString\& }{value}}
278
279\func{bool}{operator $==$}{\param{const char* }{value}}
280
281\func{bool}{operator $==$}{\param{char }{value}}
282
283\func{bool}{operator $==$}{\param{const long }{value}}
284
285\func{bool}{operator $==$}{\param{const bool }{value}}
286
287\func{bool}{operator $==$}{\param{const double }{value}}
288
289\func{bool}{operator $==$}{\param{const wxDate\& }{value}}
290
291\func{bool}{operator $==$}{\param{const wxTime\& }{value}}
292
293\func{bool}{operator $==$}{\param{void* }{value}}
294
295\func{bool}{operator $==$}{\param{const wxList\& }{value}}
296
297\func{bool}{operator $==$}{\param{const wxStringList\& }{value}}
298
299Equality test operators.
300
301\membersection{wxVariant::operator $!=$}\label{wxvariantneq}
302
303\func{bool}{operator $!=$}{\param{const wxVariant\& }{value}}
304
305\func{bool}{operator $!=$}{\param{const wxString\& }{value}}
306
307\func{bool}{operator $!=$}{\param{const char* }{value}}
308
309\func{bool}{operator $!=$}{\param{char }{value}}
310
311\func{bool}{operator $!=$}{\param{const long }{value}}
312
313\func{bool}{operator $!=$}{\param{const bool }{value}}
314
315\func{bool}{operator $!=$}{\param{const double }{value}}
316
317\func{bool}{operator $!=$}{\param{const wxDate\& }{value}}
318
319\func{bool}{operator $!=$}{\param{const wxTime\& }{value}}
320
321\func{bool}{operator $!=$}{\param{void* }{value}}
322
323\func{bool}{operator $!=$}{\param{const wxList\& }{value}}
324
325\func{bool}{operator $!=$}{\param{const wxStringList\& }{value}}
326
327Inequality test operators.
328
329\membersection{wxVariant::operator $[]$}\label{wxvariantarray}
330
331\constfunc{wxVariant}{operator $[]$}{\param{size\_t }{idx}}
332
333Returns the value at {\it idx} (zero-based).
334
335\func{wxVariant\&}{operator $[]$}{\param{size\_t }{idx}}
336
337Returns a reference to the value at {\it idx} (zero-based). This can be used
338to change the value at this index.
339
340\membersection{wxVariant::operator char}\label{wxvariantchar}
341
342\constfunc{char}{operator char}{\void}
343
344Operator for implicit conversion to a char, using \helpref{wxVariant::GetChar}{wxvariantgetchar}.
345
346\membersection{wxVariant::operator double}\label{wxvariantdouble}
347
348\constfunc{double}{operator double}{\void}
349
350Operator for implicit conversion to a double, using \helpref{wxVariant::GetDouble}{wxvariantgetdouble}.
351
352\constfunc{long}{operator long}{\void}
353
354Operator for implicit conversion to a long, using \helpref{wxVariant::GetLong}{wxvariantgetlong}.
355
356\membersection{wxVariant::operator wxDate}\label{wxvariantwxdate}
357
358\constfunc{wxDate}{operator wxDate}{\void}
359
360Operator for implicit conversion to a wxDate, using \helpref{wxVariant::GetDate}{wxvariantgetdate}.
361
362\membersection{wxVariant::operator wxString}\label{wxvariantwxstring}
363
364\constfunc{wxString}{operator wxString}{\void}
365
366Operator for implicit conversion to a string, using \helpref{wxVariant::MakeString}{wxvariantmakestring}.
367
368\membersection{wxVariant::operator wxTime}\label{wxvariantwxtime}
369
370\constfunc{wxTime}{operator wxTime}{\void}
371
372Operator for implicit conversion to a wxTime, using \helpref{wxVariant::GetTime}{wxvariantgettime}.
373
374\membersection{wxVariant::operator void*}\label{wxvariantvoid}
375
376\constfunc{void*}{operator void*}{\void}
377
378Operator for implicit conversion to a pointer to a void, using \helpref{wxVariant::GetVoidPtr}{wxvariantgetvoidptr}.
379
380\section{\class{wxVariantData}}\label{wxvariantdata}
381
382The {\bf wxVariantData} is used to implement a new type for wxVariant. Derive from wxVariantData,
383and override the pure virtual functions.
384
385\wxheading{Derived from}
386
387\helpref{wxObject}{wxobject}
388
389\wxheading{See also}
390
391\helpref{wxVariant}{wxvariant}
392
393\latexignore{\rtfignore{\wxheading{Members}}}
394
395\membersection{wxVariantData::wxVariantData}\label{wxvariantdatactor}
396
397\func{}{wxVariantData}{\void}
398
399Default constructor.
400
401\membersection{wxVariantData::Copy}\label{wxvariantdatacopy}
402
403\func{void}{Copy}{\param{wxVariantData\&}{ data}}
404
405Copy the data from `this' object to {\it data}.
406
407\membersection{wxVariantData::Eq}\label{wxvariantdataeq}
408
409\constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}
410
411Returns TRUE if this object is equal to {\it data}.
412
413\membersection{wxVariantData::GetType}\label{wxvariantdatagettype}
414
415\constfunc{wxString}{GetType}{\void}
416
417Returns the string type of the data.
418
419\membersection{wxVariantData::Read}\label{wxvariantdataread}
420
421\func{bool}{Read}{\param{ostream\&}{ stream}}
422
423\func{bool}{Read}{\param{wxString\&}{ string}}
424
425Reads the data from {\it stream} or {\it string}.
426
427\membersection{wxVariantData::Write}\label{wxvariantdatawrite}
428
429\constfunc{bool}{Write}{\param{ostream\&}{ stream}}
430
431\constfunc{bool}{Write}{\param{wxString\&}{ string}}
432
433Writes the data to {\it stream} or {\it string}.
434
435
436