\begin{verbatim}
// in the header file
DECLARE_VARIANT_OBJECT(MyClass)
-
+
// in the implementation file
- IMPLMENT_VARIANT_OBJECT(MyClass)
-
+ IMPLEMENT_VARIANT_OBJECT(MyClass)
+
// in the user code
wxVariant variant;
MyClass value;
variant << value;
-
+
// or
value << variant;
\end{verbatim}
\helpref{wxObject}{wxobject} itself. By default, wxWidgets already implements
the shift operator conversion for a few of its drawing related classes:
-Note that as of wxWidgets 2.9.0, wxVariantData no longer inherits from wxObject
-and wxVariant no longer uses the type-unsafe wxList class for list
-operations but the type-safe wxVariantList class.
-
\begin{verbatim}
IMPLEMENT_VARIANT_OBJECT(wxColour)
IMPLEMENT_VARIANT_OBJECT(wxImage)
IMPLEMENT_VARIANT_OBJECT(wxBitmap)
\end{verbatim}
+Note that as of wxWidgets 2.9.0, wxVariantData no longer inherits from wxObject
+and wxVariant no longer uses the type-unsafe wxList class for list
+operations but the type-safe wxVariantList class. Also, wxVariantData now
+supports the Clone function for implementing the \helpref{wxVariant::Unshare}{wxvariantunshare} function.
+Clone is implemented automatically by IMPLEMENT\_VARIANT\_OBJECT.
+
+Since wxVariantData no longer derives from wxObject, any code that tests the type
+of the data using wxDynamicCast will require adjustment. You can use the macro
+wxDynamicCastVariantData with the same arguments as wxDynamicCast, to use C++ RTTI
+type information instead of wxWidgets RTTI.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\func{}{wxVariant}{\param{DATE\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
-Construction from a odbc date value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
+Construction from a ODBC date value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
\func{}{wxVariant}{\param{TIME\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
-Construction from a odbc time value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
+Construction from a ODBC time value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
\func{}{wxVariant}{\param{TIMESTAMP\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
-Construction from a odbc timestamp value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
+Construction from a ODBC timestamp value. Represented internally by a \helpref{wxDateTime}{wxdatetime} value.
\membersection{wxVariant::\destruct{wxVariant}}\label{wxvariantdtor}
\constfunc{wxString}{GetType}{\void}
-Returns the value type as a string. The built-in types are: bool, char, date, double, list, long, string, stringlist, time, void*.
+Returns the value type as a string. The built-in types are: bool, char, datetime, double, list, long, string, arrstring, void*.
If the variant is null, the value type returned is the string ``null" (not the empty string).
Sets the internal variant data, deleting the existing data if there is any.
+\membersection{wxVariant::Unshare}\label{wxvariantunshare}
+
+\func{bool}{Unshare}{\void}
+
+Makes sure that any data associated with this variant is not shared with other
+variants. For this to work, \helpref{wxVariantData::Clone}{wxvariantdataclone} must
+be implemented for the data types you are working with. Clone is implemented
+for all the default data types.
+
\membersection{wxVariant::operator $=$}\label{wxvariantassignment}
\func{void}{operator $=$}{\param{const wxVariant\& }{value}}
<wx/variant.h>
+\wxheading{Derived from}
+
+No base class
+
\wxheading{Library}
\helpref{wxBase}{librarieslist}
Default constructor.
+\membersection{wxVariantData::Clone}\label{wxvariantdataclone}
+
+\constfunc{wxVariantData*}{Clone}{\void}
+
+This function can be overridden to clone the data.
+Implement Clone if you wish \helpref{wxVariant::Unshare}{wxvariantunshare} to work
+for your data. This function is implemented for all built-in data types.
+
\membersection{wxVariantData::DecRef}\label{wxvariantdatadecref}
\func{void}{DecRef}{\void}
cannot be used as normal. Instead, \helpref{DecRef}{wxvariantdatadecref} should be called.
-
\membersection{wxVariantData::Eq}\label{wxvariantdataeq}
\constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}