#endif
/* ---------------------------------------------------------------------------- */
-/* XTI workarounds for dummy compilers */
+/* template workarounds for buggy compilers */
/* ---------------------------------------------------------------------------- */
#if defined(__GNUC__) && !wxCHECK_GCC_VERSION( 3, 4 )
# define wxINFUNC_CLASS_TYPE_FIX( type )
#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 */
/* ---------------------------------------------------------------------------- */
#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,
// only one of the RTTI system will be compiled:
// - the "old" one (defined by rtti.h) or
#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 ;
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/xtictor.h"
#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 ) \
{ NULL, 0 } }; \
wxEnumData s_enumData##e( s_enumDataMembers##e ); \
//
// ----------------------------------------------------------------------------
-// in order to remove dependancy on string tokenizer
void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array );
template<typename e>
#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 ) \
{ NULL, 0 } }; \
wxEnumData s_enumData##e( s_enumDataMembers##e ); \
{
Register();
}
-#if wxUSE_UNICODE
+#if 0 // wxUSE_UNICODE
wxTypeInfo(wxTypeKind kind,
wxVariant2StringFnc to, wxString2VariantFnc from,
const char *name):
// statics:
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:
void Register();
void Unregister();
wxTypeInfo( kind, to, from, name )
{ wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
-#if wxUSE_UNICODE
+#if 0 // wxUSE_UNICODE
wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to,
wxString2VariantFnc from , const char *name ) :
wxTypeInfo( kind, to, from, name )
wxTypeInfo( wxT_CUSTOM, to, from, name )
{}
-#if wxUSE_UNICODE
+#if 0 // wxUSE_UNICODE
wxCustomTypeInfo( const char *name , wxVariant2StringFnc to,
wxString2VariantFnc from ) :
wxTypeInfo( wxT_CUSTOM, to, from, name )
m_enumInfo = enumInfo;
}
-#if wxUSE_UNICODE
+#if 0 //wxUSE_UNICODE
wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
wxString2VariantFnc from, converterToLong_t toLong,
converterFromLong_t fromLong, const char * name ) :
wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,
const wxString &name = wxEmptyString);
-#if wxUSE_UNICODE
+#if 0 // wxUSE_UNICODE
wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, wxVariant2StringFnc to,
wxString2VariantFnc from , const char *name );
#endif
wxTypeInfo( wxT_COLLECTION, to, from, name )
{ m_elementTypeName = elementName; m_elementType = NULL; }
-#if wxUSE_UNICODE
+#if 0 // wxUSE_UNICODE
wxCollectionTypeInfo( const char *elementName, wxVariant2StringFnc to,
wxString2VariantFnc from , const char *name ) :
wxTypeInfo( wxT_COLLECTION, to, from, name )