]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/xti.h
CW8.3+ has ssize_t (patch 1492413)
[wxWidgets.git] / include / wx / xti.h
index de91e9d8da547f377b584318bc778858e9fd5f87..cf176c4b2f0ae9bcae830646936a6f44090c50a6 100644 (file)
@@ -768,7 +768,7 @@ class wxSetter##property : public wxSetter \
 public: \
     wxINFUNC_CLASS_TYPE_FIX(Klass) \
     wxSetter##property() : wxSetter( wxT(#setterMethod) ) {} \
-    ~wxSetter##property() {} \
+    virtual ~wxSetter##property() {} \
     void Set( wxObject *object, const wxxVariant &variantValue ) const \
 { \
     Klass *obj = dynamic_cast<Klass*>(object) ;  \
@@ -785,7 +785,7 @@ class wxGetter##property : public wxGetter \
 public : \
     wxINFUNC_CLASS_TYPE_FIX(Klass) \
     wxGetter##property() : wxGetter( wxT(#gettermethod) ) {} \
-    ~wxGetter##property() {} \
+    virtual ~wxGetter##property() {} \
     void Get( const wxObject *object , wxxVariant &result) const \
 { \
     const Klass *obj = dynamic_cast<const Klass*>(object) ;  \
@@ -799,7 +799,7 @@ class wxAdder##property : public wxAdder \
 public: \
     wxINFUNC_CLASS_TYPE_FIX(Klass) \
     wxAdder##property() : wxAdder( wxT(#addermethod) ) {} \
-    ~wxAdder##property() {} \
+    virtual ~wxAdder##property() {} \
     void Add( wxObject *object, const wxxVariant &variantValue ) const \
 { \
     Klass *obj = dynamic_cast<Klass*>(object) ;  \
@@ -816,7 +816,7 @@ class wxCollectionGetter##property : public wxCollectionGetter \
 public : \
     wxINFUNC_CLASS_TYPE_FIX(Klass) \
     wxCollectionGetter##property() : wxCollectionGetter( wxT(#gettermethod) ) {} \
-    ~wxCollectionGetter##property() {} \
+    virtual ~wxCollectionGetter##property() {} \
     void Get( const wxObject *object , wxxVariantArray &result) const \
 { \
     const Klass *obj = dynamic_cast<const Klass*>(object) ;  \
@@ -873,7 +873,7 @@ class WXDLLIMPEXP_BASE wxGenericPropertyAccessor : public wxPropertyAccessor
 {
 public :
     wxGenericPropertyAccessor( const wxString &propName ) ;
-    ~wxGenericPropertyAccessor() ;
+    virtual ~wxGenericPropertyAccessor() ;
 
     void RenameProperty( const wxString& WXUNUSED_UNLESS_DEBUG(oldName),
         const wxString& newName )
@@ -1399,6 +1399,28 @@ struct wxConstructorBridge_3 : public wxConstructorBridge
     const wxChar *klass::ms_constructorProperties[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  } ; \
     const int klass::ms_constructorPropertiesCount = 3 ;
 
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2>
+struct wxDirectConstructorBridge_3 : public wxDirectConstructorBrigde
+{
+    void Create(wxObject * &o, wxxVariant *args)
+    {
+        o = new Class(
+            args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
+            args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
+            args[2].wxTEMPLATED_MEMBER_CALL(Get , T2)
+            );
+    }
+};
+
+#define wxDIRECT_CONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \
+    wxDirectConstructorBridge_3<klass,t0,t1,t2> constructor##klass ; \
+    wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
+    const wxChar *klass::ms_constructorProperties[] = { wxT(#v0)  , wxT(#v1) , wxT(#v2) } ; \
+    const int klass::ms_constructorPropertiesCount = 3;
+
 // 4 params
 
 template<typename Class,
@@ -1661,6 +1683,7 @@ public:
     const wxChar       *GetIncludeName() const { return m_unitName ; }
     const wxClassInfo **GetParents() const { return m_parents; }
     int                 GetSize() const { return m_objectSize; }
+    bool                IsDynamic() const { return (NULL != m_objectConstructor); }
 
     wxObjectConstructorFn      GetConstructor() const { return m_objectConstructor; }
     static const wxClassInfo  *GetFirst() { return sm_first; }