]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/object.h
Compilation fix for VC++ 5 and 6
[wxWidgets.git] / include / wx / object.h
index 43e96756ebbd4ecfe6fd7c815613544f70245f25..38f714596ca7379be0857ee663d4e7a542aa5c8a 100644 (file)
@@ -304,7 +304,11 @@ name##PluginSentinel  m_pluginsentinel;
 // Just seems a bit nicer-looking (pretend it's not a macro)
 #define wxIsKindOf(obj, className) obj->IsKindOf(&className::ms_classInfo)
 
-// to be replaced by dynamic_cast<> in the future
+// this cast does some more checks at compile time as it uses static_cast
+// internally
+//
+// note that it still has different semantics from dynamic_cast<> and so can't
+// be replaced by it as long as there are any compilers not supporting it
 #define wxDynamicCast(obj, className) \
     ((className *) wxCheckDynamicCast( \
         wx_const_cast(wxObject *, wx_static_cast(const wxObject *, \
@@ -314,7 +318,7 @@ name##PluginSentinel  m_pluginsentinel;
 // The 'this' pointer is always true, so use this version
 // to cast the this pointer and avoid compiler warnings.
 #define wxDynamicCastThis(className) \
- (IsKindOf(&className::ms_classInfo) ? (className *)(this) : (className *)0)
    (IsKindOf(&className::ms_classInfo) ? (className *)(this) : (className *)0)
 
 #ifdef __WXDEBUG__
 inline void* wxCheckCast(void *ptr)
@@ -326,7 +330,8 @@ inline void* wxCheckCast(void *ptr)
  ((className *)wxCheckCast(wxDynamicCast(obj, className)))
 
 #else  // !__WXDEBUG__
-#define wxStaticCast(obj, className) ((className *)(obj))
+#define wxStaticCast(obj, className) \
+    wx_const_cast(className *, wx_static_cast(const className *, obj))
 
 #endif  // __WXDEBUG__
 
@@ -386,7 +391,7 @@ inline void* wxCheckCast(void *ptr)
 
 #endif // wxUSE_ARRAY_MEMORY_OPERATORS
 
-#endif // WXDEBUG && wxUSE_MEMORY_TRACING
+#endif // __WXDEBUG__ && wxUSE_MEMORY_TRACING
 
 // ----------------------------------------------------------------------------
 // wxObject: the root class of wxWidgets object hierarchy
@@ -463,6 +468,18 @@ public:
     // destroy a reference
     void UnRef();
 
+
+    // Reserved for future use
+    virtual void ReservedObjectFunc1() {}
+    virtual void ReservedObjectFunc2() {}
+    virtual void ReservedObjectFunc3() {}
+    virtual void ReservedObjectFunc4() {}
+    virtual void ReservedObjectFunc5() {}
+    virtual void ReservedObjectFunc6() {}
+    virtual void ReservedObjectFunc7() {}
+    virtual void ReservedObjectFunc8() {}
+    virtual void ReservedObjectFunc9() {}
+
 protected:
     // ensure that our data is not shared with anybody else: if we have no
     // data, it is created using CreateRefData() below, if we have shared data