+#define DEC_PYCALLBACK__WXCPBOOL2DBL2INT(CBNAME) \
+ void CBNAME(wxControlPoint* a, bool b, double c, double d, int e, int f); \
+ void base_##CBNAME(wxControlPoint* a, bool b, double c, double d, int e, int f);
+
+
+#define IMP_PYCALLBACK__WXCPBOOL2DBL2INT(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(wxControlPoint* a, bool b, double c, double d, \
+ int e, int f) { \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) \
+ m_myInst.callCallback(Py_BuildValue("(Oiddii)", \
+ wxPyConstructObject(a, "wxPyControlPoint"), \
+ (int)b, c, d, e, f)); \
+ else \
+ PCLASS::CBNAME(a, b, c, d, e, f); \
+ wxPySaveThread(doSave); \
+ } \
+ void CLASS::base_##CBNAME(wxControlPoint* a, bool b, double c, double d, \
+ int e, int f) { \
+ PCLASS::CBNAME(a, b, c, d, e, f); \
+ }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK__WXCP2DBL2INT(CBNAME) \
+ void CBNAME(wxControlPoint* a, double b, double c, int d, int e); \
+ void base_##CBNAME(wxControlPoint* a, double b, double c, int d, int e);
+
+
+#define IMP_PYCALLBACK__WXCP2DBL2INT(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(wxControlPoint* a, double b, double c, int d, int e) { \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) \
+ m_myInst.callCallback(Py_BuildValue("(Oddii)", \
+ wxPyConstructObject(a, "wxPyControlPoint"), \
+ b, c, d, e)); \
+ else \
+ PCLASS::CBNAME(a, b, c, d, e); \
+ wxPySaveThread(doSave); \
+ } \
+ void CLASS::base_##CBNAME(wxControlPoint* a, double b, double c, \
+ int d, int e) { \
+ PCLASS::CBNAME(a, b, c, d, e); \
+ }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK__2DBLINT(CBNAME) \
+ void CBNAME(double a, double b, int c); \
+ void base_##CBNAME(double a, double b, int c);
+
+
+#define IMP_PYCALLBACK__2DBLINT(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(double a, double b, int c) { \
+ bool doSave = wxPyRestoreThread(); \