]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/variant.tex
handle VT_ARRAY/VT_BYREF VARIANTs in wxConvertOleToVariant() (patch 1845897)
[wxWidgets.git] / docs / latex / wx / variant.tex
index 0c728a14eba9212e501ad4a8069207011094da19..5ede86d94052371f172fc756e6807d7ee66396df 100644 (file)
@@ -44,15 +44,15 @@ cannot be declared outside the class, the shift left operators are used like thi
 \begin{verbatim}
     // in the header file
     DECLARE_VARIANT_OBJECT(MyClass)
 \begin{verbatim}
     // in the header file
     DECLARE_VARIANT_OBJECT(MyClass)
-    
+
     // in the implementation file
     // in the implementation file
-    IMPLMENT_VARIANT_OBJECT(MyClass)
-    
+    IMPLEMENT_VARIANT_OBJECT(MyClass)
+
     // in the user code
     wxVariant variant;
     MyClass value;
     variant << value;
     // in the user code
     wxVariant variant;
     MyClass value;
     variant << value;
-    
+
     // or
     value << variant;
 \end{verbatim}
     // or
     value << variant;
 \end{verbatim}
@@ -65,10 +65,6 @@ can be most easily implemented using the reference counting support offered by
 \helpref{wxObject}{wxobject} itself. By default, wxWidgets already implements
 the shift operator conversion for a few of its drawing related classes:
 
 \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)
 \begin{verbatim}
 IMPLEMENT_VARIANT_OBJECT(wxColour)
 IMPLEMENT_VARIANT_OBJECT(wxImage)
@@ -76,6 +72,17 @@ IMPLEMENT_VARIANT_OBJECT(wxIcon)
 IMPLEMENT_VARIANT_OBJECT(wxBitmap)
 \end{verbatim}
 
 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}
 \wxheading{Derived from}
 
 \helpref{wxObject}{wxobject}
@@ -155,15 +162,15 @@ Construction from an array of strings.  This constructor copies {\it value} and
 
 \func{}{wxVariant}{\param{DATE\_STRUCT*}{ val}, \param{const wxString\& }{name = ``"}}
 
 
 \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 = ``"}}
 
 
 \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 = ``"}}
 
 
 \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}
 
 
 \membersection{wxVariant::\destruct{wxVariant}}\label{wxvariantdtor}
 
@@ -364,6 +371,15 @@ is of type list, but the number of elements in the list is zero.
 
 Sets the internal variant data, deleting the existing data if there is any.
 
 
 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}}
 \membersection{wxVariant::operator $=$}\label{wxvariantassignment}
 
 \func{void}{operator $=$}{\param{const wxVariant\& }{value}}
@@ -524,6 +540,10 @@ when the reference count reaches zero.
 
 <wx/variant.h>
 
 
 <wx/variant.h>
 
+\wxheading{Derived from}
+
+No base class
+
 \wxheading{Library}
 
 \helpref{wxBase}{librarieslist}
 \wxheading{Library}
 
 \helpref{wxBase}{librarieslist}
@@ -540,6 +560,14 @@ when the reference count reaches zero.
 
 Default constructor.
 
 
 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}
 \membersection{wxVariantData::DecRef}\label{wxvariantdatadecref}
 
 \func{void}{DecRef}{\void}
@@ -551,7 +579,6 @@ Note that destructor of wxVariantData is protected, so delete
 cannot be used as normal. Instead, \helpref{DecRef}{wxvariantdatadecref} should be called.
 
 
 cannot be used as normal. Instead, \helpref{DecRef}{wxvariantdatadecref} should be called.
 
 
-
 \membersection{wxVariantData::Eq}\label{wxvariantdataeq}
 
 \constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}
 \membersection{wxVariantData::Eq}\label{wxvariantdataeq}
 
 \constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}