wxVariantData no longer inherits from wxObject

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-10-13 11:45:34 +00:00
parent 05725592b9
commit 3586d10f72
3 changed files with 16 additions and 65 deletions

View File

@@ -509,10 +509,6 @@ Also note that the destructor is protected, so you can never explicitly delete a
instance. Instead, \helpref{DecRef}{wxvariantdatadecref} will delete the object automatically instance. Instead, \helpref{DecRef}{wxvariantdatadecref} will delete the object automatically
when the reference count reaches zero. when the reference count reaches zero.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files} \wxheading{Include files}
<wx/variant.h> <wx/variant.h>

View File

@@ -59,13 +59,11 @@
* overloading wxVariant with unnecessary functionality. * overloading wxVariant with unnecessary functionality.
*/ */
class WXDLLIMPEXP_BASE wxVariantData: public wxObject class WXDLLIMPEXP_BASE wxVariantData
{ {
friend class wxVariant; friend class wxVariant;
public: public:
wxVariantData() wxVariantData() : m_count(1) { }
: wxObject(), m_count(1)
{ }
// Override these to provide common functionality // Override these to provide common functionality
virtual bool Eq(wxVariantData& data) const = 0; virtual bool Eq(wxVariantData& data) const = 0;
@@ -100,9 +98,6 @@ protected:
private: private:
int m_count; int m_count;
private:
DECLARE_ABSTRACT_CLASS(wxVariantData)
}; };
/* /*
@@ -369,13 +364,8 @@ public:\
\ \
protected:\ protected:\
classname m_value; \ classname m_value; \
\
private: \
DECLARE_CLASS(classname##VariantData) \
};\ };\
\ \
IMPLEMENT_CLASS(classname##VariantData, wxVariantData)\
\
wxString classname##VariantData::GetType() const\ wxString classname##VariantData::GetType() const\
{\ {\
return m_value.GetClassInfo()->GetClassName();\ return m_value.GetClassInfo()->GetClassName();\
@@ -388,7 +378,7 @@ wxClassInfo* classname##VariantData::GetValueClassInfo()\
\ \
expdecl classname& operator << ( classname &value, const wxVariant &variant )\ expdecl classname& operator << ( classname &value, const wxVariant &variant )\
{\ {\
wxASSERT( wxIsKindOf( variant.GetData(), classname##VariantData ) );\ wxASSERT( variant.GetType() == #classname );\
\ \
classname##VariantData *data = (classname##VariantData*) variant.GetData();\ classname##VariantData *data = (classname##VariantData*) variant.GetData();\
value = data->GetValue();\ value = data->GetValue();\
@@ -409,7 +399,7 @@ IMPLEMENT_VARIANT_OBJECT_EXPORTED_NO_EQ(classname,wxEMPTY_PARAMETER_VALUE expdec
\ \
bool classname##VariantData::Eq(wxVariantData& data) const \ bool classname##VariantData::Eq(wxVariantData& data) const \
{\ {\
wxASSERT( wxIsKindOf((&data), classname##VariantData) );\ wxASSERT( GetType() == data.GetType() );\
\ \
classname##VariantData & otherData = (classname##VariantData &) data;\ classname##VariantData & otherData = (classname##VariantData &) data;\
\ \
@@ -426,7 +416,7 @@ IMPLEMENT_VARIANT_OBJECT_EXPORTED_NO_EQ(classname,wxEMPTY_PARAMETER_VALUE expdec
\ \
bool classname##VariantData::Eq(wxVariantData& data) const \ bool classname##VariantData::Eq(wxVariantData& data) const \
{\ {\
wxASSERT( wxIsKindOf((&data), classname##VariantData) );\ wxASSERT( GetType() == data.GetType() );\
\ \
classname##VariantData & otherData = (classname##VariantData &) data;\ classname##VariantData & otherData = (classname##VariantData &) data;\
\ \

View File

@@ -49,8 +49,6 @@ using namespace std ;
#include "wx/string.h" #include "wx/string.h"
#include "wx/tokenzr.h" #include "wx/tokenzr.h"
IMPLEMENT_ABSTRACT_CLASS(wxVariantData, wxObject)
wxVariant WXDLLIMPEXP_BASE wxNullVariant; wxVariant WXDLLIMPEXP_BASE wxNullVariant;
@@ -206,7 +204,6 @@ bool wxVariant::IsValueKindOf(const wxClassInfo* type) const
class WXDLLIMPEXP_BASE wxVariantDataLong: public wxVariantData class WXDLLIMPEXP_BASE wxVariantDataLong: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataLong)
public: public:
wxVariantDataLong() { m_value = 0; } wxVariantDataLong() { m_value = 0; }
wxVariantDataLong(long value) { m_value = value; } wxVariantDataLong(long value) { m_value = value; }
@@ -233,8 +230,6 @@ protected:
long m_value; long m_value;
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataLong, wxVariantData)
bool wxVariantDataLong::Eq(wxVariantData& data) const bool wxVariantDataLong::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( (data.GetType() == wxT("long")), wxT("wxVariantDataLong::Eq: argument mismatch") ); wxASSERT_MSG( (data.GetType() == wxT("long")), wxT("wxVariantDataLong::Eq: argument mismatch") );
@@ -357,7 +352,6 @@ long wxVariant::GetLong() const
class WXDLLIMPEXP_BASE wxVariantDoubleData: public wxVariantData class WXDLLIMPEXP_BASE wxVariantDoubleData: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDoubleData)
public: public:
wxVariantDoubleData() { m_value = 0.0; } wxVariantDoubleData() { m_value = 0.0; }
wxVariantDoubleData(double value) { m_value = value; } wxVariantDoubleData(double value) { m_value = value; }
@@ -384,8 +378,6 @@ protected:
double m_value; double m_value;
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDoubleData, wxVariantData)
bool wxVariantDoubleData::Eq(wxVariantData& data) const bool wxVariantDoubleData::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( (data.GetType() == wxT("double")), wxT("wxVariantDoubleData::Eq: argument mismatch") ); wxASSERT_MSG( (data.GetType() == wxT("double")), wxT("wxVariantDoubleData::Eq: argument mismatch") );
@@ -497,7 +489,6 @@ double wxVariant::GetDouble() const
class WXDLLIMPEXP_BASE wxVariantDataBool: public wxVariantData class WXDLLIMPEXP_BASE wxVariantDataBool: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataBool)
public: public:
wxVariantDataBool() { m_value = 0; } wxVariantDataBool() { m_value = 0; }
wxVariantDataBool(bool value) { m_value = value; } wxVariantDataBool(bool value) { m_value = value; }
@@ -524,8 +515,6 @@ protected:
bool m_value; bool m_value;
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataBool, wxVariantData)
bool wxVariantDataBool::Eq(wxVariantData& data) const bool wxVariantDataBool::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( (data.GetType() == wxT("bool")), wxT("wxVariantDataBool::Eq: argument mismatch") ); wxASSERT_MSG( (data.GetType() == wxT("bool")), wxT("wxVariantDataBool::Eq: argument mismatch") );
@@ -640,7 +629,6 @@ bool wxVariant::GetBool() const
class WXDLLIMPEXP_BASE wxVariantDataChar: public wxVariantData class WXDLLIMPEXP_BASE wxVariantDataChar: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataChar)
public: public:
wxVariantDataChar() { m_value = 0; } wxVariantDataChar() { m_value = 0; }
wxVariantDataChar(const wxUniChar& value) { m_value = value; } wxVariantDataChar(const wxUniChar& value) { m_value = value; }
@@ -665,8 +653,6 @@ protected:
wxUniChar m_value; wxUniChar m_value;
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataChar, wxVariantData)
bool wxVariantDataChar::Eq(wxVariantData& data) const bool wxVariantDataChar::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( (data.GetType() == wxT("char")), wxT("wxVariantDataChar::Eq: argument mismatch") ); wxASSERT_MSG( (data.GetType() == wxT("char")), wxT("wxVariantDataChar::Eq: argument mismatch") );
@@ -792,7 +778,6 @@ wxUniChar wxVariant::GetChar() const
class WXDLLIMPEXP_BASE wxVariantDataString: public wxVariantData class WXDLLIMPEXP_BASE wxVariantDataString: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataString)
public: public:
wxVariantDataString() { } wxVariantDataString() { }
wxVariantDataString(const wxString& value) { m_value = value; } wxVariantDataString(const wxString& value) { m_value = value; }
@@ -866,8 +851,6 @@ bool wxVariantDataString::Read(wxString& str)
return true; return true;
} }
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataString, wxVariantData)
// wxVariant **** // wxVariant ****
wxVariant::wxVariant(const wxString& val, const wxString& name) wxVariant::wxVariant(const wxString& val, const wxString& name)
@@ -952,7 +935,6 @@ wxString wxVariant::GetString() const
class wxVariantDataWxObjectPtr: public wxVariantData class wxVariantDataWxObjectPtr: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataWxObjectPtr)
public: public:
wxVariantDataWxObjectPtr() { } wxVariantDataWxObjectPtr() { }
wxVariantDataWxObjectPtr(wxObject* value) { m_value = value; } wxVariantDataWxObjectPtr(wxObject* value) { m_value = value; }
@@ -972,18 +954,15 @@ public:
virtual wxString GetType() const ; virtual wxString GetType() const ;
virtual wxVariantData* Clone() { return new wxVariantDataWxObjectPtr; } virtual wxVariantData* Clone() { return new wxVariantDataWxObjectPtr; }
virtual wxClassInfo* GetValueClassInfo() ; virtual wxClassInfo* GetValueClassInfo();
protected: protected:
wxObject* m_value; wxObject* m_value;
DECLARE_NO_COPY_CLASS(wxVariantDataWxObjectPtr)
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataWxObjectPtr, wxVariantData)
bool wxVariantDataWxObjectPtr::Eq(wxVariantData& data) const bool wxVariantDataWxObjectPtr::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( wxIsKindOf((&data), wxVariantDataWxObjectPtr), wxT("wxVariantDataWxObjectPtr::Eq: argument mismatch") ); wxASSERT_MSG( data.GetType() == GetType(), wxT("wxVariantDataWxObjectPtr::Eq: argument mismatch") );
wxVariantDataWxObjectPtr& otherData = (wxVariantDataWxObjectPtr&) data; wxVariantDataWxObjectPtr& otherData = (wxVariantDataWxObjectPtr&) data;
@@ -992,10 +971,14 @@ bool wxVariantDataWxObjectPtr::Eq(wxVariantData& data) const
wxString wxVariantDataWxObjectPtr::GetType() const wxString wxVariantDataWxObjectPtr::GetType() const
{ {
wxString returnVal(wxT("wxObject")); wxString returnVal(wxT("wxObject*"));
if (m_value) {
if (m_value)
{
returnVal = m_value->GetClassInfo()->GetClassName(); returnVal = m_value->GetClassInfo()->GetClassName();
returnVal += wxT("*");
} }
return returnVal; return returnVal;
} }
@@ -1064,7 +1047,6 @@ void wxVariant::operator= (wxObject* value)
wxObject* wxVariant::GetWxObjectPtr() const wxObject* wxVariant::GetWxObjectPtr() const
{ {
wxASSERT(wxIsKindOf(GetData(), wxVariantDataWxObjectPtr));
return (wxObject*) ((wxVariantDataWxObjectPtr*) m_data)->GetValue(); return (wxObject*) ((wxVariantDataWxObjectPtr*) m_data)->GetValue();
} }
@@ -1074,7 +1056,6 @@ wxObject* wxVariant::GetWxObjectPtr() const
class wxVariantDataVoidPtr: public wxVariantData class wxVariantDataVoidPtr: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataVoidPtr)
public: public:
wxVariantDataVoidPtr() { } wxVariantDataVoidPtr() { }
wxVariantDataVoidPtr(void* value) { m_value = value; } wxVariantDataVoidPtr(void* value) { m_value = value; }
@@ -1096,15 +1077,11 @@ public:
protected: protected:
void* m_value; void* m_value;
DECLARE_NO_COPY_CLASS(wxVariantDataVoidPtr)
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataVoidPtr, wxVariantData)
bool wxVariantDataVoidPtr::Eq(wxVariantData& data) const bool wxVariantDataVoidPtr::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( (data.GetType() == wxT("void*")), wxT("wxVariantDataVoidPtr::Eq: argument mismatch") ); wxASSERT_MSG( data.GetType() == wxT("void*"), wxT("wxVariantDataVoidPtr::Eq: argument mismatch") );
wxVariantDataVoidPtr& otherData = (wxVariantDataVoidPtr&) data; wxVariantDataVoidPtr& otherData = (wxVariantDataVoidPtr&) data;
@@ -1161,8 +1138,7 @@ bool wxVariant::operator!= (void* value) const
void wxVariant::operator= (void* value) void wxVariant::operator= (void* value)
{ {
if (GetType() == wxT("void*") && if (GetType() == wxT("void*") && (m_data->GetRefCount() == 1))
m_data->GetRefCount() == 1)
{ {
((wxVariantDataVoidPtr*)GetData())->SetValue(value); ((wxVariantDataVoidPtr*)GetData())->SetValue(value);
} }
@@ -1188,8 +1164,6 @@ void* wxVariant::GetVoidPtr() const
class wxVariantDataDateTime: public wxVariantData class wxVariantDataDateTime: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataDateTime)
public: public:
wxVariantDataDateTime() { } wxVariantDataDateTime() { }
wxVariantDataDateTime(const wxDateTime& value) { m_value = value; } wxVariantDataDateTime(const wxDateTime& value) { m_value = value; }
@@ -1223,8 +1197,6 @@ protected:
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataDateTime, wxVariantData)
bool wxVariantDataDateTime::Eq(wxVariantData& data) const bool wxVariantDataDateTime::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( (data.GetType() == wxT("datetime")), wxT("wxVariantDataDateTime::Eq: argument mismatch") ); wxASSERT_MSG( (data.GetType() == wxT("datetime")), wxT("wxVariantDataDateTime::Eq: argument mismatch") );
@@ -1386,12 +1358,8 @@ public:
protected: protected:
wxArrayString m_value; wxArrayString m_value;
DECLARE_DYNAMIC_CLASS(wxVariantDataArrayString)
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataArrayString, wxVariantData)
bool wxVariantDataArrayString::Eq(wxVariantData& data) const bool wxVariantDataArrayString::Eq(wxVariantData& data) const
{ {
wxASSERT_MSG( data.GetType() == GetType(), wxT("wxVariantDataArrayString::Eq: argument mismatch") ); wxASSERT_MSG( data.GetType() == GetType(), wxT("wxVariantDataArrayString::Eq: argument mismatch") );
@@ -1492,7 +1460,6 @@ wxArrayString wxVariant::GetArrayString() const
class WXDLLIMPEXP_BASE wxVariantDataList: public wxVariantData class WXDLLIMPEXP_BASE wxVariantDataList: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataList)
public: public:
wxVariantDataList() {} wxVariantDataList() {}
wxVariantDataList(const wxList& list); wxVariantDataList(const wxList& list);
@@ -1518,8 +1485,6 @@ protected:
wxList m_value; wxList m_value;
}; };
IMPLEMENT_DYNAMIC_CLASS(wxVariantDataList, wxVariantData)
wxVariantDataList::wxVariantDataList(const wxList& list) wxVariantDataList::wxVariantDataList(const wxList& list)
{ {
SetValue(list); SetValue(list);