Added wxVariantData::Clone and wxVariant::Unshare

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2007-10-19 15:01:54 +00:00
parent b0d7707bc4
commit c8058a09e5
4 changed files with 82 additions and 11 deletions

View File

@@ -111,6 +111,10 @@ Changes in behaviour which may result in compilation errors
- Removed global GetLine() function from wx/protocol/protocol.h, use
wxProtocol::ReadLine() instead.
- wxVariant no longer derives from wxObject. wxVariantData also no longer
derives from wxObject; instead of using wxDynamicCast with wxVariantData you
can use the macro wxDynamicCastVariantData with the same arguments.
Deprecated methods and their replacements
@@ -156,6 +160,8 @@ All:
- Documentation now includes the wx library in which each class is defined.
- wxrc --gettext now generates references to source .xrc files (Heikki
Linnakangas).
- wxVariant::Unshare allows exclusive allocation of data that must be shared,
if the wxVariantData::Clone function is implemented.
All (Unix):

View File

@@ -74,7 +74,14 @@ IMPLEMENT_VARIANT_OBJECT(wxBitmap)
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.
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}
@@ -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.
\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}}
@@ -544,6 +560,14 @@ No base class
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}
@@ -555,7 +579,6 @@ Note that destructor of wxVariantData is protected, so delete
cannot be used as normal. Instead, \helpref{DecRef}{wxvariantdatadecref} should be called.
\membersection{wxVariantData::Eq}\label{wxvariantdataeq}
\constfunc{bool}{Eq}{\param{wxVariantData\&}{ data}}