+#endif // __WXDEBUG__ || wxUSE_DEBUG_CONTEXT
+
+// we must disable optimizations for VC.NET because otherwise its too eager
+// linker discards wxClassInfo objects in release build thus breaking many,
+// many things
+#if defined __VISUALC__ && __VISUALC__ >= 1300
+ #pragma optimize("", off)
+#endif
+
+#if wxUSE_EXTENDED_RTTI
+const wxClassInfo* wxObject::ms_classParents[] = { NULL } ;
+ wxObject* wxVariantToObjectConverterwxObject ( wxxVariant &data )
+{ return data.wxTEMPLATED_MEMBER_CALL(Get , wxObject*) ; }
+ wxObject* wxVariantOfPtrToObjectConverterwxObject ( wxxVariant &data )
+{ return &data.wxTEMPLATED_MEMBER_CALL(Get , wxObject) ; }
+ wxxVariant wxObjectToVariantConverterwxObject ( wxObject *data )
+ { return wxxVariant( dynamic_cast<wxObject*> (data) ) ; }
+ wxClassInfo wxObject::ms_classInfo(ms_classParents , wxT("") , wxT("wxObject"),
+ (int) sizeof(wxObject), \
+ (wxObjectConstructorFn) 0 ,
+ (wxPropertyInfo*) NULL,(wxHandlerInfo*) NULL,0 , 0 ,
+ 0 , wxVariantOfPtrToObjectConverterwxObject , wxVariantToObjectConverterwxObject , wxObjectToVariantConverterwxObject);
+ template<> void wxStringReadValue(const wxString & , wxObject * & ){assert(0) ;}
+ template<> void wxStringWriteValue(wxString & , wxObject* const & ){assert(0) ;}
+ template<> void wxStringReadValue(const wxString & , wxObject & ){assert(0) ;}
+ template<> void wxStringWriteValue(wxString & , wxObject const & ){assert(0) ;}
+ wxClassTypeInfo s_typeInfo(wxT_OBJECT_PTR , &wxObject::ms_classInfo , NULL , NULL , typeid(wxObject*).name() ) ;
+ wxClassTypeInfo s_typeInfowxObject(wxT_OBJECT , &wxObject::ms_classInfo , NULL , NULL , typeid(wxObject).name() ) ;
+#else
+wxClassInfo wxObject::ms_classInfo( wxT("wxObject"), 0, 0,
+ (int) sizeof(wxObject),
+ (wxObjectConstructorFn) 0 );
+#endif
+
+// restore optimizations
+#if defined __VISUALC__ && __VISUALC__ >= 1300
+ #pragma optimize("", on)