]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/xtitypes.h
Test using wxString::ToCDouble() in wxAny.
[wxWidgets.git] / include / wx / xtitypes.h
index 212fba1951992766df07fe72ad1637a8313b8202..d3fd1432f8bfa41cec5729274d685b31cb75d6c8 100644 (file)
@@ -88,13 +88,13 @@ private:
     wxEnumData s_enumData##e( s_enumDataMembers##e );                   \
     wxEnumData *wxGetEnumData(e) { return &s_enumData##e; }             \
     template<> void wxStringReadValue(const wxString& s, e &data )     \
     wxEnumData s_enumData##e( s_enumDataMembers##e );                   \
     wxEnumData *wxGetEnumData(e) { return &s_enumData##e; }             \
     template<> void wxStringReadValue(const wxString& s, e &data )     \
-        { data = (e) s_enumData##e.GetEnumMemberValue(s); }             \
+        { data = (e) s_enumData##e.GetEnumMemberValue(s.c_str()); }     \
     template<> void wxStringWriteValue(wxString &s, const e &data )    \
         { s = s_enumData##e.GetEnumMemberName((int)data); }             \
     template<> void wxStringWriteValue(wxString &s, const e &data )    \
         { s = s_enumData##e.GetEnumMemberName((int)data); }             \
-    void FromLong##e( long data, wxVariantBase& result )                  \
-        { result = wxVariantBase((e)data); }                               \
-    void ToLong##e( const wxVariantBase& data, long &result )             \
-        { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, e); }      \
+    void FromLong##e( long data, wxAny& result )                  \
+        { result = wxAny((e)data); }                               \
+    void ToLong##e( const wxAny& data, long &result )             \
+        { result = (long) (data).As(static_cast<e*>(NULL)); }      \
                                                                         \
     wxTO_STRING_IMP( e )                                                \
     wxFROM_STRING_IMP( e )                                              \
                                                                         \
     wxTO_STRING_IMP( e )                                                \
     wxFROM_STRING_IMP( e )                                              \
@@ -132,7 +132,6 @@ private:
 //
 // ----------------------------------------------------------------------------
 
 //
 // ----------------------------------------------------------------------------
 
-// in order to remove dependancy on string tokenizer
 void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array );
 
 template<typename e>
 void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array );
 
 template<typename e>
@@ -148,7 +147,7 @@ void wxSetFromString(const wxString &s, wxBitset<e> &data )
     {
         flag = array[i];
         int ivalue;
     {
         flag = array[i];
         int ivalue;
-        if ( edata->HasEnumMemberValue( flag, &ivalue ) )
+        if ( edata->HasEnumMemberValue( flag.c_str(), &ivalue ) )
         {
             data.set( (e) ivalue );
         }
         {
             data.set( (e) ivalue );
         }
@@ -180,10 +179,10 @@ void wxSetToString( wxString &s, const wxBitset<e> &data )
         { wxSetFromString( s, data ); }                                        \
     template<> void wxStringWriteValue( wxString &s, const wxBitset<e> &data ) \
         { wxSetToString( s, data ); }                                          \
         { wxSetFromString( s, data ); }                                        \
     template<> void wxStringWriteValue( wxString &s, const wxBitset<e> &data ) \
         { wxSetToString( s, data ); }                                          \
-    void FromLong##SetName( long data, wxVariantBase& result )                    \
-        { result = wxVariantBase(SetName((unsigned long)data)); }                  \
-    void ToLong##SetName( const wxVariantBase& data, long &result )               \
-        { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, SetName).to_ulong(); } \
+    void FromLong##SetName( long data, wxAny& result )                    \
+        { result = wxAny(SetName((unsigned long)data)); }                  \
+    void ToLong##SetName( const wxAny& data, long &result )               \
+        { result = (long) (data).As(static_cast<SetName*>(NULL)).to_ulong(); } \
     wxTO_STRING_IMP( SetName )                                                  \
     wxFROM_STRING_IMP( SetName )                                                \
     wxEnumTypeInfo s_typeInfo##SetName(wxT_SET, &s_enumData##e,               \
     wxTO_STRING_IMP( SetName )                                                  \
     wxFROM_STRING_IMP( SetName )                                                \
     wxEnumTypeInfo s_typeInfo##SetName(wxT_SET, &s_enumData##e,               \
@@ -203,7 +202,7 @@ void wxFlagsFromString(const wxString &s, e &data )
     {
         flag = array[i];
         int ivalue;
     {
         flag = array[i];
         int ivalue;
-        if ( edata->HasEnumMemberValue( flag, &ivalue ) )
+        if ( edata->HasEnumMemberValue( flag.c_str(), &ivalue ) )
         {
             data.m_data |= ivalue;
         }
         {
             data.m_data |= ivalue;
         }
@@ -237,7 +236,7 @@ void wxFlagsToString( wxString &s, const e& data )
 #define wxBEGIN_FLAGS( e ) \
     wxEnumMemberData s_enumDataMembers##e[] = {
 
 #define wxBEGIN_FLAGS( e ) \
     wxEnumMemberData s_enumDataMembers##e[] = {
 
-#define wxFLAGS_MEMBER( v ) { wxT(#v), v },
+#define wxFLAGS_MEMBER( v ) { wxT(#v), static_cast<int>(v) },
 
 #define wxEND_FLAGS( e )                                                \
         { NULL, 0 } };                                                 \
 
 #define wxEND_FLAGS( e )                                                \
         { NULL, 0 } };                                                 \
@@ -247,10 +246,10 @@ void wxFlagsToString( wxString &s, const e& data )
         { wxFlagsFromString<e>( s, data ); }                           \
     template<>  void wxStringWriteValue( wxString &s, const e& data )  \
         { wxFlagsToString<e>( s, data ); }                             \
         { wxFlagsFromString<e>( s, data ); }                           \
     template<>  void wxStringWriteValue( wxString &s, const e& data )  \
         { wxFlagsToString<e>( s, data ); }                             \
-    void FromLong##e( long data, wxVariantBase& result )                  \
-        { result = wxVariantBase(e(data)); }                               \
-    void ToLong##e( const wxVariantBase& data, long &result )             \
-        { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, e).m_data; } \
+    void FromLong##e( long data, wxAny& result )                  \
+        { result = wxAny(e(data)); }                               \
+    void ToLong##e( const wxAny& data, long &result )             \
+        { result = (long) (data).As(static_cast<e*>(NULL)).m_data; } \
     wxTO_STRING_IMP( e )                                                \
     wxFROM_STRING_IMP( e )                                              \
     wxEnumTypeInfo s_typeInfo##e(wxT_SET, &s_enumData##e,             \
     wxTO_STRING_IMP( e )                                                \
     wxFROM_STRING_IMP( e )                                              \
     wxEnumTypeInfo s_typeInfo##e(wxT_SET, &s_enumData##e,             \
@@ -278,6 +277,8 @@ enum wxTypeKind
     wxT_UINT,
     wxT_LONG,
     wxT_ULONG,
     wxT_UINT,
     wxT_LONG,
     wxT_ULONG,
+    wxT_LONGLONG,
+    wxT_ULONGLONG,
     wxT_FLOAT,
     wxT_DOUBLE,
     wxT_STRING,     // must be wxString
     wxT_FLOAT,
     wxT_DOUBLE,
     wxT_STRING,     // must be wxString
@@ -296,7 +297,7 @@ enum wxTypeKind
     wxT_LAST_TYPE_KIND = wxT_DELEGATE // sentinel for bad data, asserts, debugging
 };
 
     wxT_LAST_TYPE_KIND = wxT_DELEGATE // sentinel for bad data, asserts, debugging
 };
 
-class WXDLLIMPEXP_BASE wxVariantBase;
+class WXDLLIMPEXP_BASE wxAny;
 class WXDLLIMPEXP_BASE wxTypeInfo;
 
 WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxTypeInfo*, wxTypeInfoMap, class WXDLLIMPEXP_BASE );
 class WXDLLIMPEXP_BASE wxTypeInfo;
 
 WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxTypeInfo*, wxTypeInfoMap, class WXDLLIMPEXP_BASE );
@@ -304,8 +305,8 @@ WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxTypeInfo*, wxTypeInfoMap, class WXDLLIMP
 class WXDLLIMPEXP_BASE wxTypeInfo
 {
 public:
 class WXDLLIMPEXP_BASE wxTypeInfo
 {
 public:
-    typedef void (*wxVariant2StringFnc)( const wxVariantBase& data, wxString &result );
-    typedef void (*wxString2VariantFnc)( const wxString& data, wxVariantBase &result );
+    typedef void (*wxVariant2StringFnc)( const wxAny& data, wxString &result );
+    typedef void (*wxString2VariantFnc)( const wxString& data, wxAny &result );
 
     wxTypeInfo(wxTypeKind kind,
                wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,
 
     wxTypeInfo(wxTypeKind kind,
                wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,
@@ -314,7 +315,7 @@ public:
     {
         Register();
     }
     {
         Register();
     }
-#if wxUSE_UNICODE
+#if 0 // wxUSE_UNICODE
     wxTypeInfo(wxTypeKind kind,
                wxVariant2StringFnc to, wxString2VariantFnc from,
                const char *name):
     wxTypeInfo(wxTypeKind kind,
                wxVariant2StringFnc to, wxString2VariantFnc from,
                const char *name):
@@ -348,40 +349,28 @@ public:
     // can the content of this type be converted to and from strings ?
     bool HasStringConverters() const { return m_toString != NULL && m_fromString != NULL; }
 
     // can the content of this type be converted to and from strings ?
     bool HasStringConverters() const { return m_toString != NULL && m_fromString != NULL; }
 
-    // convert a wxVariantBase holding data of this type into a string
-    void ConvertToString( const wxVariantBase& data, wxString &result ) const
+    // convert a wxAny holding data of this type into a string
+    void ConvertToString( const wxAny& data, wxString &result ) const
     { 
         if ( m_toString ) 
             (*m_toString)( data, result ); 
         else 
     { 
         if ( m_toString ) 
             (*m_toString)( data, result ); 
         else 
-            wxLogError( wxGetTranslation(_T("String conversions not supported")) ); 
+            wxLogError( wxGetTranslation(wxT("String conversions not supported")) ); 
     }
 
     }
 
-    // convert a string into a wxVariantBase holding the corresponding data in this type
-    void ConvertFromString( const wxString& data, wxVariantBase &result ) const
+    // convert a string into a wxAny holding the corresponding data in this type
+    void ConvertFromString( const wxString& data, wxAny &result ) const
     { 
         if( m_fromString ) 
             (*m_fromString)( data, result ); 
         else 
     { 
         if( m_fromString ) 
             (*m_fromString)( data, result ); 
         else 
-            wxLogError( wxGetTranslation(_T("String conversions not supported")) ); 
+            wxLogError( wxGetTranslation(wxT("String conversions not supported")) ); 
     }
 
     // statics:
 
     }
 
     // statics:
 
-#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
-        }
-
+    // looks for the corresponding type, will return NULL if not found
+    static wxTypeInfo *FindType( const wxString& typeName );
 private:
     void Register();
     void Unregister();
 private:
     void Register();
     void Unregister();
@@ -404,13 +393,6 @@ public:
                        const wxString &name = wxEmptyString ) :
             wxTypeInfo( kind, to, from, name )
        { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
                        const wxString &name = wxEmptyString ) :
             wxTypeInfo( kind, to, from, name )
        { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
-
-#if wxUSE_UNICODE
-    wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to, 
-                       wxString2VariantFnc from , const char *name  ) :
-            wxTypeInfo( kind, to, from, name )
-       { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
-#endif
 };
 
 class WXDLLIMPEXP_BASE wxCustomTypeInfo : public wxTypeInfo
 };
 
 class WXDLLIMPEXP_BASE wxCustomTypeInfo : public wxTypeInfo
@@ -420,20 +402,13 @@ public:
                       wxString2VariantFnc from ) :
             wxTypeInfo( wxT_CUSTOM, to, from, name )
        {}
                       wxString2VariantFnc from ) :
             wxTypeInfo( wxT_CUSTOM, to, from, name )
        {}
-
-#if wxUSE_UNICODE
-    wxCustomTypeInfo( const char *name , wxVariant2StringFnc to, 
-                      wxString2VariantFnc from ) :
-            wxTypeInfo( wxT_CUSTOM, to, from, name )
-       {}
-#endif
 };
 
 class WXDLLIMPEXP_BASE wxEnumTypeInfo : public wxTypeInfo
 {
 public:
 };
 
 class WXDLLIMPEXP_BASE wxEnumTypeInfo : public wxTypeInfo
 {
 public:
-    typedef void (*converterToLong_t)( const wxVariantBase& data, long &result );
-    typedef void (*converterFromLong_t)( long data, wxVariantBase &result );
+    typedef void (*converterToLong_t)( const wxAny& data, long &result );
+    typedef void (*converterFromLong_t)( long data, wxAny &result );
 
     wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
                     wxString2VariantFnc from, converterToLong_t toLong,
 
     wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
                     wxString2VariantFnc from, converterToLong_t toLong,
@@ -445,35 +420,24 @@ public:
         m_enumInfo = enumInfo; 
     }
 
         m_enumInfo = enumInfo; 
     }
 
-#if wxUSE_UNICODE
-    wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
-                    wxString2VariantFnc from, converterToLong_t toLong,
-                    converterFromLong_t fromLong, const char * name ) :
-        wxTypeInfo( kind, to, from, name ), m_toLong( toLong ), m_fromLong( fromLong )
-    {
-        wxASSERT_MSG( kind == wxT_ENUM || kind == wxT_SET, 
-                      wxT("Illegal Kind for Enum Type")); 
-        m_enumInfo = enumInfo; 
-    }
-#endif
     const wxEnumData* GetEnumData() const { return m_enumInfo; }
 
     const wxEnumData* GetEnumData() const { return m_enumInfo; }
 
-    // convert a wxVariantBase holding data of this type into a long
-    void ConvertToLong( const wxVariantBase& data, long &result ) const
+    // convert a wxAny holding data of this type into a long
+    void ConvertToLong( const wxAny& data, long &result ) const
     { 
         if( m_toLong ) 
             (*m_toLong)( data, result ); 
         else 
     { 
         if( m_toLong ) 
             (*m_toLong)( data, result ); 
         else 
-            wxLogError( wxGetTranslation(_T("Long Conversions not supported")) ); 
+            wxLogError( wxGetTranslation(wxT("Long Conversions not supported")) ); 
     }
 
     }
 
-    // convert a long into a wxVariantBase holding the corresponding data in this type
-    void ConvertFromLong( long data, wxVariantBase &result ) const
+    // convert a long into a wxAny holding the corresponding data in this type
+    void ConvertFromLong( long data, wxAny &result ) const
     { 
         if( m_fromLong ) 
             (*m_fromLong)( data, result ); 
         else 
     { 
         if( m_fromLong ) 
             (*m_fromLong)( data, result ); 
         else 
-            wxLogError( wxGetTranslation(_T("Long Conversions not supported")) ); 
+            wxLogError( wxGetTranslation(wxT("Long Conversions not supported")) ); 
     }
 
 private:
     }
 
 private:
@@ -490,11 +454,6 @@ public:
                      wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL, 
                      const wxString &name = wxEmptyString);
 
                      wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL, 
                      const wxString &name = wxEmptyString);
 
-#if wxUSE_UNICODE
-    wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, wxVariant2StringFnc to,
-                     wxString2VariantFnc from , const char *name );
-#endif
-
     const wxClassInfo *GetClassInfo() const { return m_classInfo; }
 
 private:
     const wxClassInfo *GetClassInfo() const { return m_classInfo; }
 
 private:
@@ -509,13 +468,6 @@ public:
             wxTypeInfo( wxT_COLLECTION, to, from, name )
        { m_elementTypeName = elementName; m_elementType = NULL; }
 
             wxTypeInfo( wxT_COLLECTION, to, from, name )
        { m_elementTypeName = elementName; m_elementType = NULL; }
 
-#if wxUSE_UNICODE
-    wxCollectionTypeInfo( const char *elementName, wxVariant2StringFnc to, 
-                          wxString2VariantFnc from , const char *name ) :
-            wxTypeInfo( wxT_COLLECTION, to, from, name )
-       { m_elementTypeName = wxString::FromAscii( elementName ); m_elementType = NULL; }
-#endif
-
     const wxTypeInfo* GetElementType() const
     {
         if ( m_elementType == NULL )
     const wxTypeInfo* GetElementType() const
     {
         if ( m_elementType == NULL )
@@ -547,7 +499,7 @@ private:
     int m_lastEventType;
 };
 
     int m_lastEventType;
 };
 
-template<typename T> const wxTypeInfo* wxGetTypeInfo( T * ) \
+template<typename T> const wxTypeInfo* wxGetTypeInfo( T * ) 
     { return wxTypeInfo::FindType(typeid(T).name()); }
 
 // this macro is for usage with custom, non-object derived classes and structs, 
     { return wxTypeInfo::FindType(typeid(T).name()); }
 
 // this macro is for usage with custom, non-object derived classes and structs, 
@@ -558,9 +510,9 @@ template<typename T> const wxTypeInfo* wxGetTypeInfo( T * ) \
         wxCustomTypeInfo s_typeInfo##e(typeid(e).name(), &toString, &fromString);
 #else
     #define wxCUSTOM_TYPE_INFO( e, toString, fromString )             \
         wxCustomTypeInfo s_typeInfo##e(typeid(e).name(), &toString, &fromString);
 #else
     #define wxCUSTOM_TYPE_INFO( e, toString, fromString )             \
-        void ToString##e( const wxVariantBase& data, wxString &result )   \
+        void ToString##e( const wxAny& data, wxString &result )   \
             { toString(data, result); }                                 \
             { toString(data, result); }                                 \
-        void FromString##e( const wxString& data, wxVariantBase &result ) \
+        void FromString##e( const wxString& data, wxAny &result ) \
             { fromString(data, result); }                               \
         wxCustomTypeInfo s_typeInfo##e(typeid(e).name(),               \
                                        &ToString##e, &FromString##e);
             { fromString(data, result); }                               \
         wxCustomTypeInfo s_typeInfo##e(typeid(e).name(),               \
                                        &ToString##e, &FromString##e);