X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6057972be41063d3c6038f09605eec76931a847a..33754c4d83c59b7523a6da0c4fb21079cb60301c:/src/common/object.cpp?ds=sidebyside diff --git a/src/common/object.cpp b/src/common/object.cpp index 8f4755be97..20e531a1f2 100644 --- a/src/common/object.cpp +++ b/src/common/object.cpp @@ -32,6 +32,11 @@ #endif // wxUSE_SERIAL #endif // WX_PRECOMP +#ifdef __VISAGECPP__ + #include "wx/objstrm.h" + #include "wx/serbase.h" +#endif + #include #include @@ -57,11 +62,6 @@ wxClassInfo wxObject::sm_classwxObject((wxChar *) wxT("wxObject"), (wxChar *) NU wxClassInfo* wxClassInfo::sm_first = (wxClassInfo *) NULL; wxHashTable* wxClassInfo::sm_classTable = (wxHashTable*) NULL; -#if defined(__WXDEBUG__) && defined(__VISAGECPP__) - int wxObject::N = 0; // total number of objects - int wxObject::Nid = 0;// object serial counter -#endif // __WXDEBUG__ - // These are here so we can avoid 'always true/false' warnings // by referring to these instead of TRUE/FALSE const bool wxTrue = TRUE; @@ -77,12 +77,6 @@ wxObject::wxObject() #if wxUSE_SERIAL m_serialObj = (wxObject_Serialize *)NULL; #endif -#if defined(__WXDEBUG__) && defined(__VISAGECPP__) - id = Nid++; - N++; -// { printf("wxObject %i/%i \t",id,N); -// } -#endif } wxObject::~wxObject() @@ -92,11 +86,6 @@ wxObject::~wxObject() if (m_serialObj) delete m_serialObj; #endif -#if defined(__WXDEBUG__) && defined(__VISAGECPP__) - N--; -// { printf("~wxObject %i/%i \t",id,N); -// } -#endif //__WXDEBUG__ } /* @@ -115,24 +104,8 @@ bool wxObject::IsKindOf(wxClassInfo *info) const return FALSE; } -wxObject *wxObject::Clone() const -{ - wxObject *object = GetClassInfo()->CreateObject(); - CopyObject(*object); - return object; -} - -#ifdef __WXDEBUG__ -void wxObject::CopyObject(wxObject& object_dest) const -#else // !Debug -void wxObject::CopyObject(wxObject& WXUNUSED(object_dest)) const -#endif // Debug/!Debug -{ - wxASSERT(object_dest.GetClassInfo()->IsKindOf(GetClassInfo())); -} - #if wxUSE_STD_IOSTREAM && (defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT) -void wxObject::Dump(ostream& str) +void wxObject::Dump(wxSTD ostream& str) { if (GetClassInfo() && GetClassInfo()->GetClassName()) str << GetClassInfo()->GetClassName(); @@ -309,7 +282,7 @@ wxObject *wxCreateDynamicObject(const wxChar *name) #if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT DEBUG_PRINTF(wxObject *wxCreateDynamicObject) #endif - + if (wxClassInfo::sm_classTable) { wxClassInfo *info = (wxClassInfo *)wxClassInfo::sm_classTable->Get(name); @@ -347,7 +320,7 @@ void wxObject::StoreObject( wxObjectOutputStream& stream ) #if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT DEBUG_PRINTF(wxObject::StoreObject) #endif - + wxString obj_name = wxString(GetClassInfo()->GetClassName()) + "_Serialize"; wxLibrary *lib = wxTheLibraries.LoadLibrary("wxserial"); @@ -376,7 +349,7 @@ void wxObject::LoadObject( wxObjectInputStream& stream ) #if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT DEBUG_PRINTF(wxObject::LoadObject) #endif - + wxString obj_name = wxString(GetClassInfo()->GetClassName()) + "_Serialize"; wxLibrary *lib = wxTheLibraries.LoadLibrary("wxserial"); @@ -439,3 +412,26 @@ wxObjectRefData::wxObjectRefData(void) : m_count(1) wxObjectRefData::~wxObjectRefData() { } + +#if defined(__DARWIN__) && defined(DYLIB_INIT) + +extern "C" { + void __initialize_Cplusplus(void); + void wxWindowsDylibInit(void); +}; + +// Dynamic shared library (dylib) initialization routine +// required to initialize static C++ objects bacause of lazy dynamic linking +// http://developer.apple.com/techpubs/macosx/Essentials/ +// SystemOverview/Frameworks/Dynamic_Shared_Libraries.html +// +void wxWindowsDylibInit() +{ + // The function __initialize_Cplusplus() must be called from the shared + // library initialization routine to cause the static C++ objects in + // the library to be initialized (reference number 2441683). + + __initialize_Cplusplus(); +} + +#endif