X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0c03c79e01e061ae958c952e16b4ace994f09af8..04857cb707be4de8083e599fc2e1967c77eb7f5e:/src/common/xti.cpp diff --git a/src/common/xti.cpp b/src/common/xti.cpp index 52eb0a7715..992dc46bef 100644 --- a/src/common/xti.cpp +++ b/src/common/xti.cpp @@ -10,7 +10,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "xti.h" #endif @@ -166,81 +166,87 @@ template<> const wxTypeInfo* wxGetTypeInfo( wxString * ) // this are compiler induced specialization which are never used anywhere -// char const * +WX_ILLEGAL_TYPE_SPECIALIZATION( char const * ) +WX_ILLEGAL_TYPE_SPECIALIZATION( char * ) +WX_ILLEGAL_TYPE_SPECIALIZATION( unsigned char * ) +WX_ILLEGAL_TYPE_SPECIALIZATION( int * ) +WX_ILLEGAL_TYPE_SPECIALIZATION( bool * ) +WX_ILLEGAL_TYPE_SPECIALIZATION( long * ) +WX_ILLEGAL_TYPE_SPECIALIZATION( wxString * ) -template<> const wxTypeInfo* wxGetTypeInfo( char const ** ) +// ---------------------------------------------------------------------------- +// value streaming +// ---------------------------------------------------------------------------- + +// streamer specializations +// for all built-in types + +// bool + +template<> void wxStringReadValue(const wxString &s , bool &data ) { - assert(0) ; - static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ; - return &s_typeInfo ; + int intdata ; + wxSscanf(s, _T("%d"), &intdata ) ; + data = bool(intdata) ; } -template<> void wxStringReadValue(const wxString & , const char* & ) +template<> void wxStringWriteValue(wxString &s , const bool &data ) { - assert(0) ; + s = wxString::Format("%d", data ) ; } -template<> void wxStringWriteValue(wxString & , char const * const & ) +// char + +template<> void wxStringReadValue(const wxString &s , char &data ) { - assert(0) ; + int intdata ; + wxSscanf(s, _T("%d"), &intdata ) ; + data = char(intdata) ; } -// char * - -template<> const wxTypeInfo* wxGetTypeInfo( char ** ) +template<> void wxStringWriteValue(wxString &s , const char &data ) { - assert(0) ; - static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ; - return &s_typeInfo ; + s = wxString::Format("%d", data ) ; } -template<> void wxStringReadValue(const wxString & , char* & ) +// unsigned char + +template<> void wxStringReadValue(const wxString &s , unsigned char &data ) { - assert(0) ; + int intdata ; + wxSscanf(s, _T("%d"), &intdata ) ; + data = (unsigned char)(intdata) ; } -template<> void wxStringWriteValue(wxString & , char * const & ) +template<> void wxStringWriteValue(wxString &s , const unsigned char &data ) { - assert(0) ; + s = wxString::Format("%d", data ) ; } -// const wxPoint -/* -template<> const wxTypeInfo* wxGetTypeInfo( const wxPoint * ) +// int + +template<> void wxStringReadValue(const wxString &s , int &data ) { - assert(0) ; - static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ; - return &s_typeInfo ; + wxSscanf(s, _T("%d"), &data ) ; } -template<> void wxStringReadValue(const wxString & , const wxPoint & ) +template<> void wxStringWriteValue(wxString &s , const int &data ) { - assert(0) ; + s = wxString::Format("%d", data ) ; } -*/ -// ---------------------------------------------------------------------------- -// value streaming -// ---------------------------------------------------------------------------- -// convenience function (avoids including xml headers in users code) +// unsigned int -void wxXmlAddContentToNode( wxXmlNode* node , const wxString& data ) +template<> void wxStringReadValue(const wxString &s , unsigned int &data ) { - node->AddChild(new wxXmlNode(wxXML_TEXT_NODE, "value", data ) ); + wxSscanf(s, _T("%d"), &data ) ; } -wxString wxXmlGetContentFromNode( wxXmlNode *node ) +template<> void wxStringWriteValue(wxString &s , const unsigned int &data ) { - if ( node->GetChildren() ) - return node->GetChildren()->GetContent() ; - else - return wxEmptyString ; + s = wxString::Format("%d", data ) ; } -// streamer specializations - -// TODO for all built-in types - // long template<> void wxStringReadValue(const wxString &s , long &data ) @@ -253,16 +259,40 @@ template<> void wxStringWriteValue(wxString &s , const long &data ) s = wxString::Format("%ld", data ) ; } -// int +// unsigned long -template<> void wxStringReadValue(const wxString &s , int &data ) +template<> void wxStringReadValue(const wxString &s , unsigned long &data ) { - wxSscanf(s, _T("%d"), &data ) ; + wxSscanf(s, _T("%ld"), &data ) ; } -template<> void wxStringWriteValue(wxString &s , const int &data ) +template<> void wxStringWriteValue(wxString &s , const unsigned long &data ) { - s = wxString::Format("%d", data ) ; + s = wxString::Format("%ld", data ) ; +} + +// float + +template<> void wxStringReadValue(const wxString &s , float &data ) +{ + wxSscanf(s, _T("%f"), &data ) ; +} + +template<> void wxStringWriteValue(wxString &s , const float &data ) +{ + s = wxString::Format("%f", data ) ; +} + +// double + +template<> void wxStringReadValue(const wxString &s , double &data ) +{ + wxSscanf(s, _T("%lf"), &data ) ; +} + +template<> void wxStringWriteValue(wxString &s , const double &data ) +{ + s = wxString::Format("%lf", data ) ; } // wxString @@ -295,6 +325,16 @@ template<> void wxStringWriteValue(wxString &s , const wxPoint &data ) s = wxString::Format("%d,%d", data.x , data.y ) ; } +template<> void wxStringReadValue(const wxString & , wxPoint* & ) +{ + assert(0) ; +} + +template<> void wxStringWriteValue(wxString & , wxPoint* const & ) +{ + assert(0) ; +} + WX_CUSTOM_TYPE_INFO(wxPoint) template<> void wxStringReadValue(const wxString &s , wxSize &data ) @@ -307,8 +347,49 @@ template<> void wxStringWriteValue(wxString &s , const wxSize &data ) s = wxString::Format("%d,%d", data.x , data.y ) ; } +template<> void wxStringReadValue(const wxString & , wxSize* & ) +{ + assert(0) ; +} + +template<> void wxStringWriteValue(wxString & , wxSize * const & ) +{ + assert(0) ; +} + WX_CUSTOM_TYPE_INFO(wxSize) +/* + +template<> void wxStringReadValue(const wxString &s , wxColour &data ) +{ + // copied from VS xrc + unsigned long tmp = 0; + + if (s.Length() != 7 || s[0u] != wxT('#') || + wxSscanf(s.c_str(), wxT("#%lX"), &tmp) != 1) + { + wxLogError(_("String To Colour : Incorrect colour specification : %s"), + s.c_str() ); + data = wxNullColour; + } + else + { + data = wxColour((unsigned char) ((tmp & 0xFF0000) >> 16) , + (unsigned char) ((tmp & 0x00FF00) >> 8), + (unsigned char) ((tmp & 0x0000FF))); + } +} + +template<> void wxStringWriteValue(wxString &s , const wxColour &data ) +{ + s = wxString::Format("#%2X%2X%2X", data.Red() , data.Green() , data.Blue() ) ; +} + +WX_CUSTOM_TYPE_INFO(wxColour) + +*/ + // removing header dependancy on string tokenizer void wxSetStringToArray( const wxString &s , wxArrayString &array ) @@ -326,24 +407,6 @@ void wxSetStringToArray( const wxString &s , wxArrayString &array ) // wxClassInfo // ---------------------------------------------------------------------------- - -void wxClassInfo::Register(const char *WXUNUSED(name), wxClassInfo *WXUNUSED(info)) -{ - /* - if (!ExtendedTypeMap) - ExtendedTypeMap = new ClassMap; - (*ExtendedTypeMap)[string(Name)] = Info; - */ -} - -void wxClassInfo::Unregister(const char *WXUNUSED(name)) -{ - /* - assert(ExtendedTypeMap); - ExtendedTypeMap->erase(Name); - */ -} - const wxPropertyAccessor *wxClassInfo::FindAccessor(const char *PropertyName) { const wxPropertyInfo* info = FindPropertyInfo( PropertyName ) ; @@ -419,7 +482,7 @@ wxxVariant wxClassInfo::GetProperty(wxObject *object, const char *propertyName) VARIANT TO OBJECT */ -wxObject* wxxVariant::GetAsObject() const +wxObject* wxxVariant::GetAsObject() { const wxClassTypeInfo *ti = dynamic_cast( m_data->GetTypeInfo() ) ; if ( ti )