rearranging xti code

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor 2011-01-08 08:03:42 +00:00
parent 4608b3f837
commit f06d69376d
4 changed files with 63 additions and 83 deletions

View File

@ -1440,7 +1440,7 @@ typedef double wxDouble;
#endif #endif
/* ---------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------------- */
/* XTI workarounds for dummy compilers */ /* template workarounds for buggy compilers */
/* ---------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------------- */
#if defined(__GNUC__) && !wxCHECK_GCC_VERSION( 3, 4 ) #if defined(__GNUC__) && !wxCHECK_GCC_VERSION( 3, 4 )
@ -1478,56 +1478,6 @@ typedef double wxDouble;
# define wxINFUNC_CLASS_TYPE_FIX( type ) # define wxINFUNC_CLASS_TYPE_FIX( type )
#endif #endif
#if wxUSE_FUNC_TEMPLATE_POINTER
# define wxTO_STRING(type) wxToStringConverter<type>
# define wxTO_STRING_IMP(type)
# define wxFROM_STRING(type) wxFromStringConverter<type>
# 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<type>(data, result); }
# define wxFROM_STRING(type) FromString##type
# define wxFROM_STRING_IMP(type) \
inline void FromString##type( const wxString& data, wxAny &result ) \
{ wxFromStringConverter<type>(data, result); }
#endif
// XTI helper macro. This one is used both by xti.h and rtti.h and
// thus needs to go in a common header to avoid redundancy.
#define wxDECLARE_CLASS_INFO_ITERATORS() \
class WXDLLIMPEXP_BASE const_iterator \
{ \
typedef wxHashTable_Node Node; \
public: \
typedef const wxClassInfo* value_type; \
typedef const value_type& const_reference; \
typedef const_iterator itor; \
typedef value_type* ptr_type; \
\
Node* m_node; \
wxHashTable* m_table; \
public: \
typedef const_reference reference_type; \
typedef ptr_type pointer_type; \
\
const_iterator(Node* node, wxHashTable* table) \
: m_node(node), m_table(table) { } \
const_iterator() : m_node(NULL), m_table(NULL) { } \
value_type operator*() const; \
itor& operator++(); \
const itor operator++(int); \
bool operator!=(const itor& it) const \
{ return it.m_node != m_node; } \
bool operator==(const itor& it) const \
{ return it.m_node == m_node; } \
}; \
\
static const_iterator begin_classinfo(); \
static const_iterator end_classinfo()
/* ---------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------------- */
/* Geometric flags */ /* Geometric flags */
/* ---------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------------- */

View File

@ -19,6 +19,37 @@
#include "wx/memory.h" #include "wx/memory.h"
#define wxDECLARE_CLASS_INFO_ITERATORS() \
class WXDLLIMPEXP_BASE const_iterator \
{ \
typedef wxHashTable_Node Node; \
public: \
typedef const wxClassInfo* value_type; \
typedef const value_type& const_reference; \
typedef const_iterator itor; \
typedef value_type* ptr_type; \
\
Node* m_node; \
wxHashTable* m_table; \
public: \
typedef const_reference reference_type; \
typedef ptr_type pointer_type; \
\
const_iterator(Node* node, wxHashTable* table) \
: m_node(node), m_table(table) { } \
const_iterator() : m_node(NULL), m_table(NULL) { } \
value_type operator*() const; \
itor& operator++(); \
const itor operator++(int); \
bool operator!=(const itor& it) const \
{ return it.m_node != m_node; } \
bool operator==(const itor& it) const \
{ return it.m_node == m_node; } \
}; \
\
static const_iterator begin_classinfo(); \
static const_iterator end_classinfo()
// based on the value of wxUSE_EXTENDED_RTTI symbol, // based on the value of wxUSE_EXTENDED_RTTI symbol,
// only one of the RTTI system will be compiled: // only one of the RTTI system will be compiled:
// - the "old" one (defined by rtti.h) or // - the "old" one (defined by rtti.h) or

View File

@ -18,6 +18,10 @@
#if wxUSE_EXTENDED_RTTI #if wxUSE_EXTENDED_RTTI
// ----------------------------------------------------------------------------
// wxDynamicObject class, its instances connect to a 'super class instance'
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_BASE wxDynamicObject : public wxObject class WXDLLIMPEXP_BASE wxDynamicObject : public wxObject
{ {
friend class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo ; friend class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo ;
@ -57,6 +61,27 @@ private :
wxDynamicObjectInternal *m_data; wxDynamicObjectInternal *m_data;
}; };
// ----------------------------------------------------------------------------
// String conversion templates supporting older compilers
// ----------------------------------------------------------------------------
#if wxUSE_FUNC_TEMPLATE_POINTER
# define wxTO_STRING(type) wxToStringConverter<type>
# define wxTO_STRING_IMP(type)
# define wxFROM_STRING(type) wxFromStringConverter<type>
# 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<type>(data, result); }
# define wxFROM_STRING(type) FromString##type
# define wxFROM_STRING_IMP(type) \
inline void FromString##type( const wxString& data, wxAny &result ) \
{ wxFromStringConverter<type>(data, result); }
#endif
#include "wx/xtiprop.h" #include "wx/xtiprop.h"
#include "wx/xtictor.h" #include "wx/xtictor.h"

View File

@ -83,11 +83,6 @@ private:
#define wxENUM_MEMBER( v ) { wxT(#v), v }, #define wxENUM_MEMBER( v ) { wxT(#v), v },
/*
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<e>) \
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<e*>) \
*/
#define wxEND_ENUM( e ) \ #define wxEND_ENUM( e ) \
{ NULL, 0 } }; \ { NULL, 0 } }; \
wxEnumData s_enumData##e( s_enumDataMembers##e ); \ wxEnumData s_enumData##e( s_enumDataMembers##e ); \
@ -137,7 +132,6 @@ WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<e*>) \
// //
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// in order to remove dependancy on string tokenizer
void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array ); void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array );
template<typename e> template<typename e>
@ -244,11 +238,6 @@ void wxFlagsToString( wxString &s, const e& data )
#define wxFLAGS_MEMBER( v ) { wxT(#v), v }, #define wxFLAGS_MEMBER( v ) { wxT(#v), v },
/*
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<e>) \
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<e*>) \
*/
#define wxEND_FLAGS( e ) \ #define wxEND_FLAGS( e ) \
{ NULL, 0 } }; \ { NULL, 0 } }; \
wxEnumData s_enumData##e( s_enumDataMembers##e ); \ wxEnumData s_enumData##e( s_enumDataMembers##e ); \
@ -326,7 +315,7 @@ public:
{ {
Register(); Register();
} }
#if wxUSE_UNICODE #if 0 // wxUSE_UNICODE
wxTypeInfo(wxTypeKind kind, wxTypeInfo(wxTypeKind kind,
wxVariant2StringFnc to, wxString2VariantFnc from, wxVariant2StringFnc to, wxString2VariantFnc from,
const char *name): const char *name):
@ -381,21 +370,6 @@ public:
// statics: // statics:
static wxTypeInfo *FindType( const wxString& typeName ); static wxTypeInfo *FindType( const wxString& typeName );
#if 0 // TODO
#if wxUSE_UNICODE
static wxTypeInfo *FindType(const char *typeName)
{ return FindType( wxString::FromAscii(typeName) ); }
#endif
static wxTypeInfo *FindType(const wxChar *typeName);
static wxTypeInfo *FindType(const wxString& typeName)
{
#if wxUSE_UNICODE
return FindType( typeName.wchar_str() );
#else
return FindType( typeName.char_str() );
#endif
}
#endif
private: private:
void Register(); void Register();
void Unregister(); void Unregister();
@ -419,7 +393,7 @@ public:
wxTypeInfo( kind, to, from, name ) wxTypeInfo( kind, to, from, name )
{ wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); } { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
#if wxUSE_UNICODE #if 0 // wxUSE_UNICODE
wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to, wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to,
wxString2VariantFnc from , const char *name ) : wxString2VariantFnc from , const char *name ) :
wxTypeInfo( kind, to, from, name ) wxTypeInfo( kind, to, from, name )
@ -435,7 +409,7 @@ public:
wxTypeInfo( wxT_CUSTOM, to, from, name ) wxTypeInfo( wxT_CUSTOM, to, from, name )
{} {}
#if wxUSE_UNICODE #if 0 // wxUSE_UNICODE
wxCustomTypeInfo( const char *name , wxVariant2StringFnc to, wxCustomTypeInfo( const char *name , wxVariant2StringFnc to,
wxString2VariantFnc from ) : wxString2VariantFnc from ) :
wxTypeInfo( wxT_CUSTOM, to, from, name ) wxTypeInfo( wxT_CUSTOM, to, from, name )
@ -459,7 +433,7 @@ public:
m_enumInfo = enumInfo; m_enumInfo = enumInfo;
} }
#if wxUSE_UNICODE #if 0 //wxUSE_UNICODE
wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to, wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
wxString2VariantFnc from, converterToLong_t toLong, wxString2VariantFnc from, converterToLong_t toLong,
converterFromLong_t fromLong, const char * name ) : converterFromLong_t fromLong, const char * name ) :
@ -504,7 +478,7 @@ public:
wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL, wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,
const wxString &name = wxEmptyString); const wxString &name = wxEmptyString);
#if wxUSE_UNICODE #if 0 // wxUSE_UNICODE
wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, wxVariant2StringFnc to, wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, wxVariant2StringFnc to,
wxString2VariantFnc from , const char *name ); wxString2VariantFnc from , const char *name );
#endif #endif
@ -523,7 +497,7 @@ public:
wxTypeInfo( wxT_COLLECTION, to, from, name ) wxTypeInfo( wxT_COLLECTION, to, from, name )
{ m_elementTypeName = elementName; m_elementType = NULL; } { m_elementTypeName = elementName; m_elementType = NULL; }
#if wxUSE_UNICODE #if 0 // wxUSE_UNICODE
wxCollectionTypeInfo( const char *elementName, wxVariant2StringFnc to, wxCollectionTypeInfo( const char *elementName, wxVariant2StringFnc to,
wxString2VariantFnc from , const char *name ) : wxString2VariantFnc from , const char *name ) :
wxTypeInfo( wxT_COLLECTION, to, from, name ) wxTypeInfo( wxT_COLLECTION, to, from, name )