]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/xti.h
using newer API
[wxWidgets.git] / include / wx / xti.h
index 3bf18e703d8727b2ccf6ebd451a72890bc795b2a..302b6605ae1c5bbba118f087bc6004703d4393d2 100644 (file)
 #ifndef _WX_XTIH__
 #define _WX_XTIH__
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "xti.h"
-#endif
-
 // We want to support properties, event sources and events sinks through
 // explicit declarations, using templates and specialization to make the
 // effort as painless as possible.
@@ -92,7 +88,7 @@ class WXDLLIMPEXP_BASE wxObjectRefData;
 class WXDLLIMPEXP_BASE wxEvent;
 class WXDLLIMPEXP_BASE wxEvtHandler;
 
-typedef void (wxEvtHandler::*wxObjectEventFunction)(wxEvent&);
+typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
 
 #if wxUSE_FUNC_TEMPLATE_POINTER
 #  define wxTO_STRING(type) wxToStringConverter<type>
@@ -668,7 +664,8 @@ public :
 
     wxxVariant& operator=(const wxxVariant &d)
     {
-        m_data = d.m_data->Clone() ;
+        delete m_data;
+        m_data = d.m_data ? d.m_data->Clone() : NULL ;
         m_name = d.m_name ;
         return *this ;
     }
@@ -692,7 +689,7 @@ private :
     wxString m_name ;
 } ;
 
-#include <wx/dynarray.h>
+#include "wx/dynarray.h"
 
 WX_DECLARE_OBJARRAY_WITH_DECL(wxxVariant, wxxVariantArray, class WXDLLIMPEXP_BASE);
 
@@ -1402,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,
@@ -1664,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; }
@@ -2079,4 +2099,4 @@ template<typename collection_t> void wxArrayCollectionToVariantArray( const coll
 }
 
 
-#endif
+#endif // _WX_XTIH__