From afc89ff455aeff7b156273726e62c3c90f197687 Mon Sep 17 00:00:00 2001 From: Mattia Barbon Date: Wed, 11 Apr 2007 10:32:01 +0000 Subject: [PATCH] Added --enable-extended_rtti configure switch (defaults to disabled). Fix compilation when WXINTL_NO_GETTEXT_MACRO is defined. Added wx/flags.h to installed files. Fix XTI compilation after wxString changes. Fix 'virtual functions but non-virtual destructor' GCC warnings. Minimal XTI definition for wxOwnerDrawnComboBox (cut'n'paste from wxComboBox, will need to be completed). Requires rerunning bakefile and autoconf. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- build/bakefiles/files.bkl | 1 + configure.in | 7 +++++++ include/wx/xti.h | 35 ++++++++++++++++++++++------------- include/wx/xtistrm.h | 4 ++++ src/common/xtistrm.cpp | 2 +- src/common/xtixml.cpp | 4 ++-- src/generic/odcombo.cpp | 12 ++++++++++++ 7 files changed, 49 insertions(+), 16 deletions(-) diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 4e2ba30fbd..b38075c69d 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -399,6 +399,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/event.h wx/except.h wx/features.h + wx/flags.h wx/ffile.h wx/file.h wx/fileconf.h diff --git a/configure.in b/configure.in index f8ce2d75ec..06a9b8a144 100644 --- a/configure.in +++ b/configure.in @@ -369,6 +369,7 @@ DEBUG_CONFIGURE=0 if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_UNIVERSAL=no DEFAULT_wxUSE_STL=no + DEFAULT_wxUSE_EXTENDED_RTTI=no DEFAULT_wxUSE_NANOX=no @@ -594,6 +595,7 @@ if test $DEBUG_CONFIGURE = 1; then else DEFAULT_wxUSE_UNIVERSAL=no DEFAULT_wxUSE_STL=no + DEFAULT_wxUSE_EXTENDED_RTTI=no DEFAULT_wxUSE_NANOX=no @@ -909,6 +911,7 @@ WX_ARG_ENABLE(shared, [ --enable-shared create shared library code WX_ARG_ENABLE(optimise, [ --enable-optimise create optimised code], wxUSE_OPTIMISE) WX_ARG_ENABLE(debug, [ --enable-debug same as debug_flag and debug_info], wxUSE_DEBUG) WX_ARG_ENABLE(stl, [ --enable-stl use STL for containers], wxUSE_STL) +WX_ARG_ENABLE(extended_rtti, [ --enable-extended_rtti use extended RTTI (XTI)], wxUSE_EXTENDED_RTTI) if test "$USE_OS2" = "1"; then DEFAULT_wxUSE_OMF=no WX_ARG_ENABLE(omf, [ --enable-omf use OMF object format], wxUSE_OMF) @@ -5703,6 +5706,10 @@ if test "$wxUSE_STL" = "yes"; then AC_DEFINE(wxUSE_STL) fi +if test "$wxUSE_EXTENDED_RTTI" = "yes"; then + AC_DEFINE(wxUSE_EXTENDED_RTTI) +fi + if test "$wxUSE_APPLE_IEEE" = "yes"; then AC_DEFINE(wxUSE_APPLE_IEEE) fi diff --git a/include/wx/xti.h b/include/wx/xti.h index 7b2be4c003..f603574c32 100644 --- a/include/wx/xti.h +++ b/include/wx/xti.h @@ -421,16 +421,24 @@ public : // convert a wxxVariant holding data of this type into a string void ConvertToString( const wxxVariant& data , wxString &result ) const - { if ( m_toString ) (*m_toString)( data , result ) ; else wxLogError( _("String conversions not supported") ) ; } + { if ( m_toString ) (*m_toString)( data , result ) ; else wxLogError( wxGetTranslation(_T("String conversions not supported")) ) ; } // convert a string into a wxxVariant holding the corresponding data in this type void ConvertFromString( const wxString& data , wxxVariant &result ) const - { if( m_fromString ) (*m_fromString)( data , result ) ; else wxLogError( _("String conversions not supported") ) ; } + { if( m_fromString ) (*m_fromString)( data , result ) ; else wxLogError( wxGetTranslation(_T("String conversions not supported")) ) ; } #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 + } private : @@ -494,11 +502,11 @@ public : // convert a wxxVariant holding data of this type into a long void ConvertToLong( const wxxVariant& data , long &result ) const - { if( m_toLong ) (*m_toLong)( data , result ) ; else wxLogError( _("Long Conversions not supported") ) ; } + { if( m_toLong ) (*m_toLong)( data , result ) ; else wxLogError( wxGetTranslation(_T("Long Conversions not supported")) ) ; } // convert a long into a wxxVariant holding the corresponding data in this type void ConvertFromLong( long data , wxxVariant &result ) const - { if( m_fromLong ) (*m_fromLong)( data , result ) ; else wxLogError( _("Long Conversions not supported") ) ;} + { if( m_fromLong ) (*m_fromLong)( data , result ) ; else wxLogError( wxGetTranslation(_T("Long Conversions not supported")) ) ;} private : converterToLong_t m_toLong ; @@ -834,19 +842,19 @@ public : // Setting a simple property (non-collection) virtual void SetProperty(wxObject *object, const wxxVariant &value) const - { if ( m_setter ) m_setter->Set( object , value ) ; else wxLogError( _("SetProperty called w/o valid setter") ) ;} + { if ( m_setter ) m_setter->Set( object , value ) ; else wxLogError( wxGetTranslation(_T("SetProperty called w/o valid setter")) ) ;} // Getting a simple property (non-collection) virtual void GetProperty(const wxObject *object, wxxVariant &result) const - { if ( m_getter ) m_getter->Get( object , result ) ; else wxLogError( _("GetProperty called w/o valid getter") ) ;} + { if ( m_getter ) m_getter->Get( object , result ) ; else wxLogError( wxGetTranslation(_T("GetProperty called w/o valid getter")) ) ;} // Adding an element to a collection property virtual void AddToPropertyCollection(wxObject *object, const wxxVariant &value) const - { if ( m_adder ) m_adder->Add( object , value ) ; else wxLogError( _("AddToPropertyCollection called w/o valid adder") ) ;} + { if ( m_adder ) m_adder->Add( object , value ) ; else wxLogError( wxGetTranslation(_T("AddToPropertyCollection called w/o valid adder")) ) ;} // Getting a collection property virtual void GetPropertyCollection( const wxObject *obj, wxxVariantArray &result) const - { if ( m_collectionGetter ) m_collectionGetter->Get( obj , result) ; else wxLogError( _("GetPropertyCollection called w/o valid collection getter") ) ;} + { if ( m_collectionGetter ) m_collectionGetter->Get( obj , result) ; else wxLogError( wxGetTranslation(_T("GetPropertyCollection called w/o valid collection getter")) ) ;} virtual bool HasSetter() const { return m_setter != NULL ; } virtual bool HasCollectionGetter() const { return m_collectionGetter != NULL ; } @@ -895,11 +903,11 @@ public : // Adding an element to a collection property virtual void AddToPropertyCollection(wxObject *WXUNUSED(object), const wxxVariant &WXUNUSED(value)) const - { wxLogError( _("AddToPropertyCollection called on a generic accessor") ) ;} + { wxLogError( wxGetTranslation(_T("AddToPropertyCollection called on a generic accessor")) ) ;} // Getting a collection property virtual void GetPropertyCollection( const wxObject *WXUNUSED(obj), wxxVariantArray &WXUNUSED(result)) const - { wxLogError ( _("GetPropertyCollection called on a generic accessor") ) ;} + { wxLogError ( wxGetTranslation(_T("GetPropertyCollection called on a generic accessor")) ) ;} private : struct wxGenericPropertyAccessorInternal ; wxGenericPropertyAccessorInternal* m_data ; @@ -1267,6 +1275,7 @@ private : class WXDLLIMPEXP_BASE wxConstructorBridge { public : + virtual ~wxConstructorBridge() {}; virtual void Create(wxObject * &o, wxxVariant *args) = 0; }; @@ -1665,7 +1674,7 @@ public: { if ( ParamCount != m_constructorPropertiesCount ) { - wxLogError( _("Illegal Parameter Count for ConstructObject Method") ) ; + wxLogError( wxGetTranslation(_T("Illegal Parameter Count for ConstructObject Method")) ) ; return NULL ; } wxObject *object = NULL ; @@ -1733,7 +1742,7 @@ public: { if ( ParamCount != m_constructorPropertiesCount ) { - wxLogError( _("Illegal Parameter Count for Create Method") ) ; + wxLogError( wxGetTranslation(_T("Illegal Parameter Count for Create Method")) ) ; return ; } m_constructor->Create( object , Params ) ; @@ -2016,7 +2025,7 @@ private : (int) sizeof(name), \ (wxObjectConstructorFn) wxConstructorFor##name , \ name::GetPropertiesStatic(),name::GetHandlersStatic(),name::ms_constructor , name::ms_constructorProperties , \ - name::ms_constructorPropertiesCount , wxVariantToObjectConverter##name , wxObjectToVariantConverter##name); \ + name::ms_constructorPropertiesCount , wxVariantToObjectConverter##name , NULL, wxObjectToVariantConverter##name); \ #define IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2) \ _IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2 , "") \ diff --git a/include/wx/xtistrm.h b/include/wx/xtistrm.h index 1af026cfe9..023675a6f5 100644 --- a/include/wx/xtistrm.h +++ b/include/wx/xtistrm.h @@ -45,6 +45,8 @@ class WXDLLIMPEXP_BASE wxReader ; class WXDLLIMPEXP_BASE wxPersister { public : + virtual ~wxPersister() {} + // will be called before an object is written, may veto by returning false virtual bool BeforeWriteObject( wxWriter *WXUNUSED(writer) , const wxObject *WXUNUSED(object) , const wxClassInfo *WXUNUSED(classInfo) , wxxVariantArray &WXUNUSED(metadata)) { return true ; } @@ -186,6 +188,8 @@ private : class WXDLLIMPEXP_BASE wxDepersister { public : + virtual ~wxDepersister() {} + // allocate the new object on the heap, that object will have the passed in ID virtual void AllocateObject(int objectID, wxClassInfo *classInfo, wxxVariantArray &metadata) = 0; diff --git a/src/common/xtistrm.cpp b/src/common/xtistrm.cpp index e304fd3fc2..20d21f6f5b 100644 --- a/src/common/xtistrm.cpp +++ b/src/common/xtistrm.cpp @@ -389,7 +389,7 @@ bool wxReader::HasObjectClassInfo( int objectID ) if ( objectID == wxNullObjectID || objectID == wxInvalidObjectID ) { wxLogError( _("Invalid or Null Object ID passed to HasObjectClassInfo" ) ) ; - return NULL ; + return false ; } return m_data->m_classInfos.find(objectID) != m_data->m_classInfos.end() ; } diff --git a/src/common/xtixml.cpp b/src/common/xtixml.cpp index 91b094d6eb..ed5039461b 100644 --- a/src/common/xtixml.cpp +++ b/src/common/xtixml.cpp @@ -306,8 +306,8 @@ int wxXmlReader::ReadComponent(wxXmlNode *node, wxDepersister *callbacks) { wxString name ; children->GetPropVal( wxT("name") , &name ) ; - propertyNames.push_back( name.c_str() ) ; - propertyNodes[name.c_str()] = children->GetChildren() ; + propertyNames.push_back( (const wxChar*)name.c_str() ) ; + propertyNodes[(const wxChar*)name.c_str()] = children->GetChildren() ; children = children->GetNext() ; } diff --git a/src/generic/odcombo.cpp b/src/generic/odcombo.cpp index 1aef60c99c..34940a6427 100644 --- a/src/generic/odcombo.cpp +++ b/src/generic/odcombo.cpp @@ -797,7 +797,19 @@ BEGIN_EVENT_TABLE(wxOwnerDrawnComboBox, wxComboCtrl) END_EVENT_TABLE() +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS2_XTI(wxOwnerDrawnComboBox, wxComboCtrl, wxControlWithItems, "wx/odcombo.h") + +wxBEGIN_PROPERTIES_TABLE(wxOwnerDrawnComboBox) +wxEND_PROPERTIES_TABLE() + +wxBEGIN_HANDLERS_TABLE(wxOwnerDrawnComboBox) +wxEND_HANDLERS_TABLE() + +wxCONSTRUCTOR_5( wxOwnerDrawnComboBox , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size ) +#else IMPLEMENT_DYNAMIC_CLASS2(wxOwnerDrawnComboBox, wxComboCtrl, wxControlWithItems) +#endif void wxOwnerDrawnComboBox::Init() { -- 2.45.2