+ wxClassInfo( const wxChar *className,
+ const wxClassInfo *baseInfo1,
+ const wxClassInfo *baseInfo2,
+ int size,
+ wxObjectConstructorFn ctor )
+ : m_className(className)
+ , m_objectSize(size)
+ , m_objectConstructor(ctor)
+ , m_baseInfo1(baseInfo1)
+ , m_baseInfo2(baseInfo2)
+ , m_next(sm_first)
+ {
+ sm_first = this;
+ Register();
+ }
+
+ ~wxClassInfo();
+
+ wxObject *CreateObject() const { return m_objectConstructor ? (*m_objectConstructor)() : 0; }
+ bool IsDynamic() const { return (NULL != m_objectConstructor); }
+
+ const wxChar *GetClassName() const { return m_className; }
+ const wxChar *GetBaseClassName1() const
+ { return m_baseInfo1 ? m_baseInfo1->GetClassName() : NULL; }
+ const wxChar *GetBaseClassName2() const
+ { return m_baseInfo2 ? m_baseInfo2->GetClassName() : NULL; }
+ const wxClassInfo *GetBaseClass1() const { return m_baseInfo1; }
+ const wxClassInfo *GetBaseClass2() const { return m_baseInfo2; }
+ int GetSize() const { return m_objectSize; }
+
+ wxObjectConstructorFn GetConstructor() const { return m_objectConstructor; }
+ static const wxClassInfo *GetFirst() { return sm_first; }
+ const wxClassInfo *GetNext() const { return m_next; }
+ static wxClassInfo *FindClass(const wxChar *className);
+
+ // Climb upwards through inheritance hierarchy.
+ // Dual inheritance is catered for.
+
+ bool IsKindOf(const wxClassInfo *info) const
+ {
+ return info != 0 &&
+ ( info == this ||
+ ( m_baseInfo1 && m_baseInfo1->IsKindOf(info) ) ||
+ ( m_baseInfo2 && m_baseInfo2->IsKindOf(info) ) );
+ }
+
+#if WXWIN_COMPATIBILITY_2_4
+ // Initializes parent pointers and hash table for fast searching.
+ wxDEPRECATED( static void InitializeClasses() );
+ // Cleans up hash table used for fast searching.
+ wxDEPRECATED( static void CleanUpClasses() );
+#endif
+
+public:
+ const wxChar *m_className;
+ int m_objectSize;
+ wxObjectConstructorFn m_objectConstructor;