X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3f1af9204f1813a10e2c59a5f9b28a7eec630861..1a519eb0074879b00b3134211f237637b6c6c066:/include/wx/object.h diff --git a/include/wx/object.h b/include/wx/object.h index b16265669a..61c34c41ec 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -6,7 +6,7 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_OBJECTH__ @@ -34,19 +34,20 @@ class WXDLLEXPORT wxObject; class WXDLLEXPORT wxClassInfo; class WXDLLEXPORT wxInputStream; +class WXDLLEXPORT wxOutputStream; class WXDLLEXPORT wxObjectInputStream; class WXDLLEXPORT wxObjectOutputStream; class WXDLLEXPORT wxHashTable; class WXDLLEXPORT wxObject_Serialize; #if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -# include + // N.B. BC++ doesn't have istream.h, ostream.h +# include #else -# include -# ifdef _MSC_VER - using namespace std; -# endif +# include +# if defined(__VISUALC__) || defined(__MWERKS__) + using namespace std; +# endif #endif /* @@ -58,13 +59,13 @@ typedef wxObject * (*wxObjectConstructorFn) (void); class WXDLLEXPORT wxClassInfo { public: - wxClassInfo(char *cName, char *baseName1, char *baseName2, int sz, wxObjectConstructorFn fn); + wxClassInfo(wxChar *cName, wxChar *baseName1, wxChar *baseName2, int sz, wxObjectConstructorFn fn); wxObject *CreateObject(void); - - inline char *GetClassName(void) const { return m_className; } - inline char *GetBaseClassName1(void) const { return m_baseClassName1; } - inline char *GetBaseClassName2(void) const { return m_baseClassName2; } + + inline wxChar *GetClassName(void) const { return m_className; } + inline wxChar *GetBaseClassName1(void) const { return m_baseClassName1; } + inline wxChar *GetBaseClassName2(void) const { return m_baseClassName2; } inline wxClassInfo* GetBaseClass1() const { return m_baseInfo1; } inline wxClassInfo* GetBaseClass2() const { return m_baseInfo2; } inline int GetSize(void) const { return m_objectSize; } @@ -73,7 +74,7 @@ class WXDLLEXPORT wxClassInfo inline wxClassInfo* GetNext() const { return m_next; } bool IsKindOf(wxClassInfo *info) const; - static wxClassInfo *FindClass(char *c); + static wxClassInfo *FindClass(wxChar *c); // Initializes parent pointers and hash table for fast searching. static void InitializeClasses(void); @@ -82,12 +83,12 @@ class WXDLLEXPORT wxClassInfo static void CleanUpClasses(void); public: - char* m_className; - char* m_baseClassName1; - char* m_baseClassName2; + wxChar* m_className; + wxChar* m_baseClassName1; + wxChar* m_baseClassName2; int m_objectSize; wxObjectConstructorFn m_objectConstructor; - + // Pointers to base wxClassInfos: set in InitializeClasses // called from wx_main.cc wxClassInfo* m_baseInfo1; @@ -99,9 +100,9 @@ public: static wxHashTable* sm_classTable; }; -WXDLLEXPORT wxObject* wxCreateDynamicObject(const char *name); +WXDLLEXPORT wxObject* wxCreateDynamicObject(const wxChar *name); -#ifdef wxUSE_SERIAL +#if wxUSE_SERIAL WXDLLEXPORT wxObject* wxCreateStoredObject( wxInputStream& stream ); #endif @@ -122,13 +123,13 @@ WXDLLEXPORT wxObject* wxCreateStoredObject( wxInputStream& stream ); #define IMPLEMENT_DYNAMIC_CLASS(name, basename) \ wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ { return new name; }\ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename, (char *) NULL, (int) sizeof(name), (wxObjectConstructorFn) wxConstructorFor##name); + wxClassInfo name::sm_class##name((wxChar *) _T(#name), (wxChar *) _T(#basename), (wxChar *) NULL, (int) sizeof(name), (wxObjectConstructorFn) wxConstructorFor##name); // Multiple inheritance with two base classes #define IMPLEMENT_DYNAMIC_CLASS2(name, basename1, basename2) \ wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ { return new name; }\ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename1, (char *) #basename2, (int) sizeof(name), (wxObjectConstructorFn) wxConstructorFor##name); + wxClassInfo name::sm_class##name((wxChar *) _T(#name), (wxChar *) _T(#basename1), (wxChar *) _T(#basename2), (int) sizeof(name), (wxObjectConstructorFn) wxConstructorFor##name); ////// ////// for abstract classes @@ -136,12 +137,13 @@ wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ // Single inheritance with one base class #define IMPLEMENT_ABSTRACT_CLASS(name, basename) \ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename, \ - (char *) NULL, (int) sizeof(name), (wxObjectConstructorFn) NULL); + wxClassInfo name::sm_class##name((wxChar *) _T(#name), (wxChar *) _T(#basename), \ + (wxChar *) NULL, (int) sizeof(name), (wxObjectConstructorFn) NULL); // Multiple inheritance with two base classes #define IMPLEMENT_ABSTRACT_CLASS2(name, basename1, basename2) \ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename1, (char *) #basename2, (int) sizeof(name), (wxObjectConstructorFn) NULL); + wxClassInfo name::sm_class##name((wxChar *) _T(#name), (wxChar *) _T(#basename1), \ + (wxChar *) _T(#basename2), (int) sizeof(name), (wxObjectConstructorFn) NULL); #define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS #define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2 @@ -190,39 +192,38 @@ class WXDLLEXPORT wxObject virtual ~wxObject(void); virtual wxClassInfo *GetClassInfo(void) const { return &sm_classwxObject; } + wxObject *Clone(void) const; + virtual void CopyObject(wxObject& object_dest) const; bool IsKindOf(wxClassInfo *info) const; #if defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING - void * operator new (size_t size, char * fileName = NULL, int lineNum = 0); + void * operator new (size_t size, wxChar * fileName = NULL, int lineNum = 0); void operator delete (void * buf); // VC++ 6.0 -#if _MSC_VER >= 1200 +#if defined(__VISUALC__) && (__VISUALC__ >= 1200) void operator delete(void *buf, char*, int); #endif - // Cause problems for VC++ -// #ifndef _MSC_VER -#if !defined(_MSC_VER) && wxUSE_ARRAY_MEMORY_OPERATORS - void * operator new[] (size_t size, char * fileName = NULL, int lineNum = 0); + // Causes problems for VC++ +#if wxUSE_ARRAY_MEMORY_OPERATORS && !defined(__VISUALC__) && !defined( __MWERKS__) + void * operator new[] (size_t size, wxChar * fileName = NULL, int lineNum = 0); void operator delete[] (void * buf); #endif -/* #ifdef __MWERKS__ - void * operator new[] (size_t size, char * fileName , int lineNum = 0); + void * operator new[] (size_t size, wxChar * fileName , int lineNum = 0); void operator delete[] (void * buf); #endif -*/ -#endif +#endif // Debug & memory tracing #if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT virtual void Dump(ostream& str); #endif -#ifdef wxUSE_SERIAL +#if wxUSE_SERIAL virtual void StoreObject( wxObjectOutputStream &stream ); virtual void LoadObject( wxObjectInputStream &stream ); #endif @@ -238,7 +239,7 @@ class WXDLLEXPORT wxObject protected: wxObjectRefData* m_refData; -#ifdef wxUSE_SERIAL +#if wxUSE_SERIAL wxObject_Serialize* m_serialObj; #endif }; @@ -262,7 +263,7 @@ private: #ifdef __WXDEBUG__ #ifndef WXDEBUG_NEW -#define WXDEBUG_NEW new(__FILE__,__LINE__) +#define WXDEBUG_NEW new(__TFILE__,__LINE__) #endif #else #define WXDEBUG_NEW new @@ -273,7 +274,7 @@ private: // use WXDEBUG_NEW explicitly if you wish to use the debugging version. #if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS -#define new new(__FILE__,__LINE__) +#define new new(__TFILE__,__LINE__) #endif #endif