X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/59afc60f15de66fa617275eb1ce04b6b68bde1fd..8e1b8897f851b37992af5211e7f0a2db6b3e6eb5:/include/wx/clntdata.h diff --git a/include/wx/clntdata.h b/include/wx/clntdata.h index b2b8cfa1b6..c0f33dbb38 100644 --- a/include/wx/clntdata.h +++ b/include/wx/clntdata.h @@ -12,16 +12,10 @@ #ifndef _WX_CLNTDATAH__ #define _WX_CLNTDATAH__ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "clntdata.h" -#endif - #include "wx/defs.h" #include "wx/string.h" #include "wx/hashmap.h" -#if wxABI_VERSION >= 20602 - typedef int (*wxShadowObjectMethod)(void*, void*); WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxShadowObjectMethod, @@ -38,18 +32,18 @@ class WXDLLIMPEXP_BASE wxShadowObject { public: wxShadowObject() { } - + void AddMethod( const wxString &name, wxShadowObjectMethod method ) - { + { wxShadowObjectMethods::iterator it = m_methods.find( name ); if (it == m_methods.end()) m_methods[ name ] = method; else it->second = method; } - + bool InvokeMethod( const wxString &name, void* window, void* param, int* returnValue ) - { + { wxShadowObjectMethods::iterator it = m_methods.find( name ); if (it == m_methods.end()) return false; @@ -59,7 +53,7 @@ public: *returnValue = ret; return true; } - + void AddField( const wxString &name, void* initialValue = NULL ) { wxShadowObjectFields::iterator it = m_fields.find( name ); @@ -68,7 +62,7 @@ public: else it->second = initialValue; } - + void SetField( const wxString &name, void* value ) { wxShadowObjectFields::iterator it = m_fields.find( name ); @@ -76,7 +70,7 @@ public: return; it->second = value; } - + void* GetField( const wxString &name, void *defaultValue = NULL ) { wxShadowObjectFields::iterator it = m_fields.find( name ); @@ -84,13 +78,12 @@ public: return defaultValue; return it->second; } - + private: wxShadowObjectMethods m_methods; wxShadowObjectFields m_fields; }; -#endif // wxABI_VERSION // ---------------------------------------------------------------------------- @@ -166,122 +159,5 @@ protected: }; -// not Motif-specific, but currently used only under Motif, -// compiled to make wxMotif and wxGTK base libraries compatible -#if defined(__WXMOTIF__) || wxABI_VERSION >= 20602 - -#include "wx/vector.h" - -struct WXDLLIMPEXP_BASE wxClientDataDictionaryPair -{ - wxClientDataDictionaryPair( size_t idx ) : index( idx ), data( 0 ) { } - - size_t index; - wxClientData* data; -}; - -_WX_DECLARE_VECTOR( - wxClientDataDictionaryPair, - wxClientDataDictionaryPairVector, - WXDLLIMPEXP_BASE -); - -// this class is used internally to maintain the association between items -// of (some subclasses of) wxControlWithItems and their client data -// NOTE: this class does not keep track of whether it contains -// wxClientData or void*. The client must ensure that -// it does not contain a mix of the two, and that -// DestroyData is called if it contains wxClientData -class WXDLLIMPEXP_BASE wxClientDataDictionary -{ -public: - wxClientDataDictionary() {} - - // deletes all the data - void DestroyData() - { - for( size_t i = 0, end = m_vec.size(); i != end; ++i ) - delete m_vec[i].data; - m_vec.clear(); - } - - // if data for the given index is not present, add it, - // if it is present, delete the old data and replace it with - // the new one - void Set( size_t index, wxClientData* data, bool doDelete ) - { - size_t ptr = Find( index ); - - if( !data ) - { - if( ptr == m_vec.size() ) return; - if( doDelete ) - delete m_vec[ptr].data; - m_vec.erase( ptr ); - } - else - { - if( ptr == m_vec.size() ) - { - m_vec.push_back( wxClientDataDictionaryPair( index ) ); - ptr = m_vec.size() - 1; - } - - if( doDelete ) - delete m_vec[ptr].data; - m_vec[ptr].data = data; - } - } - - // get the data associated with the given index, - // return 0 if not found - wxClientData* Get( size_t index ) const - { - size_t it = Find( index ); - if( it == m_vec.size() ) return 0; - return (wxClientData*)m_vec[it].data; // const cast - } - - // delete the data associated with the given index - // it also decreases by one the indices of all the elements - // with an index greater than the given index - void Delete( size_t index, bool doDelete ) - { - size_t todel = m_vec.size(); - - for( size_t i = 0, end = m_vec.size(); i != end; ++i ) - { - if( m_vec[i].index == index ) - todel = i; - else if( m_vec[i].index > index ) - --(m_vec[i].index); - } - - if( todel != m_vec.size() ) - { - if( doDelete ) - delete m_vec[todel].data; - m_vec.erase( todel ); - } - } -private: - // returns MyVec.size() if not found - size_t Find( size_t index ) const - { - for( size_t i = 0, end = m_vec.size(); i != end; ++i ) - { - if( m_vec[i].index == index ) - return i; - } - - return m_vec.size(); - } - - wxClientDataDictionaryPairVector m_vec; -}; - -#endif // __WXMOTIF__ - -// ---------------------------------------------------------------------------- -#endif +#endif // _WX_CLNTDATAH__