X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aa3fcb2f830f50218a6003710b959eb33d3b7088..ab67e8874db324fab5223cc8d5dff8a8de3e2b77:/include/wx/xti2.h diff --git a/include/wx/xti2.h b/include/wx/xti2.h index 24d5cb3203..eeb31067ea 100644 --- a/include/wx/xti2.h +++ b/include/wx/xti2.h @@ -18,6 +18,10 @@ #if wxUSE_EXTENDED_RTTI +// ---------------------------------------------------------------------------- +// wxDynamicObject class, its instances connect to a 'super class instance' +// ---------------------------------------------------------------------------- + class WXDLLIMPEXP_BASE wxDynamicObject : public wxObject { friend class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo ; @@ -57,7 +61,29 @@ private : wxDynamicObjectInternal *m_data; }; +// ---------------------------------------------------------------------------- +// String conversion templates supporting older compilers +// ---------------------------------------------------------------------------- + +#if wxUSE_FUNC_TEMPLATE_POINTER +# define wxTO_STRING(type) wxToStringConverter +# define wxTO_STRING_IMP(type) +# define wxFROM_STRING(type) wxFromStringConverter +# define wxFROM_STRING_IMP(type) +#else +# define wxTO_STRING(type) ToString##type +# define wxTO_STRING_IMP(type) \ + inline void ToString##type( const wxAny& data, wxString &result ) \ +{ wxToStringConverter(data, result); } + +# define wxFROM_STRING(type) FromString##type +# define wxFROM_STRING_IMP(type) \ + inline void FromString##type( const wxString& data, wxAny &result ) \ +{ wxFromStringConverter(data, result); } +#endif + #include "wx/xtiprop.h" +#include "wx/xtictor.h" // ---------------------------------------------------------------------------- // wxIMPLEMENT class macros for concrete classes @@ -98,7 +124,7 @@ wxObject* wxVariantOfPtrToObjectConverter##name ( const wxAny &data ) \ _DEFAULT_CONSTRUCTOR(name) \ _DEFAULT_CONVERTERS(name) \ void wxVariantToObjectConverter##name ( const wxAny &data, wxObjectFunctor* fn ) \ -{ (*fn)( &wxANY_AS(data, name) ); } \ + { name o = wxANY_AS(data, name); (*fn)( &o ); } \ \ const wxClassInfo* name::ms_classParents[] = { &basename::ms_classInfo,NULL }; \ wxClassInfo name::ms_classInfo(name::ms_classParents, wxT(unit), \ @@ -223,7 +249,8 @@ wxObject* wxVariantOfPtrToObjectConverter##name ( const wxAny &data ) \ wxT(#basename2), (int) sizeof(name), \ (wxObjectConstructorFn) 0); -// templated streaming, every type must have their specialization for these methods +// templated streaming, every type that can be converted to wxString +// must have their specialization for these methods template void wxStringReadValue( const wxString &s, T &data ); @@ -239,6 +266,29 @@ template void wxFromStringConverter( const wxString &s, wxAny &v) { T d; wxStringReadValue(s, d); v = wxAny(d); } +// -------------------------------------------------------------------------- +// Collection Support +// -------------------------------------------------------------------------- + +template void wxListCollectionToAnyList( + const collection_t& coll, wxAnyList &value ) +{ + for ( iter current = coll.GetFirst(); current; + current = current->GetNext() ) + { + value.Append( new wxAny(current->GetData()) ); + } +} + +template void wxArrayCollectionToVariantArray( + const collection_t& coll, wxAnyList &value ) +{ + for( size_t i = 0; i < coll.GetCount(); i++ ) + { + value.Append( new wxAny(coll[i]) ); + } +} + #endif #endif // _WX_XTIH2__