#if wxUSE_DYNAMIC_CLASSES
+#ifndef wxUSE_EXTENDED_RTTI
+#define wxUSE_EXTENDED_RTTI 0
+#endif
+
+#if wxUSE_EXTENDED_RTTI
+#include "wx/xti.h"
+#else
+
// ----------------------------------------------------------------------------
// conditional compilation
// ----------------------------------------------------------------------------
static void CleanUpClasses();
+
public:
const wxChar *m_className;
const wxChar *m_baseClassName1;
virtual wxClassInfo *GetClassInfo() const \
{ return &name::sm_class##name; }
+#define DECLARE_DYNAMIC_CLASS_NO_ASSIGN(name) \
+ DECLARE_NO_ASSIGN_CLASS(name) \
+ DECLARE_DYNAMIC_CLASS(name)
+
+#define DECLARE_DYNAMIC_CLASS_NO_COPY(name) \
+ DECLARE_NO_COPY_CLASS(name) \
+ DECLARE_DYNAMIC_CLASS(name)
+
#define DECLARE_ABSTRACT_CLASS(name) DECLARE_DYNAMIC_CLASS(name)
#define DECLARE_CLASS(name) DECLARE_DYNAMIC_CLASS(name)
#define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS
#define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2
+#endif // !wxUSE_EXTENDED_RTTI
+
+
// -----------------------------------
// for pluggable classes
// -----------------------------------
#define IMPLEMENT_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2) \
IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2)
-
#define CLASSINFO(name) (&name::sm_class##name)
#else // !wxUSE_DYNAMIC_CLASSES
#endif // wxUSE_DYNAMIC_CLASSES
-
#define wxIS_KIND_OF(obj, className) obj->IsKindOf(&className::sm_class##className)
// Just seems a bit nicer-looking (pretend it's not a macro)
private:
void InitFrom(const wxObject& other);
-
+
public:
wxObject() { m_refData = NULL; }
virtual ~wxObject() { UnRef(); }
-
+
wxObject(const wxObject& other)
{
InitFrom(other);
}
-
+
wxObject& operator=(const wxObject& other)
{
if ( this != &other )