+#define IMP_PYCALLBACK__DCRECTINTINT_const(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(wxDC& a, const wxRect& b, int c, int d) const { \
+ bool found; \
+ wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyMake_wxObject(&a,false); \
+ PyObject* ro = wxPyConstructObject((void*)&b, wxT("wxRect"), 0); \
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOii)", obj, ro, c, d)); \
+ Py_DECREF(obj); Py_DECREF(ro); \
+ } \
+ wxPyEndBlockThreads(blocked); \
+ if (! found) \
+ PCLASS::CBNAME(a,b,c,d); \
+ }
+
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK__RECTINT(CBNAME) \
+ void CBNAME(const wxRect& a, int b)
+
+#define IMP_PYCALLBACK__RECTINT(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(const wxRect& a, int b) { \
+ bool found; \
+ wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* ro = wxPyConstructObject((void*)&a, wxT("wxRect"), 0); \
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(Oi)", ro, b)); \
+ Py_DECREF(ro); \
+ } \
+ wxPyEndBlockThreads(blocked); \
+ if (! found) \
+ PCLASS::CBNAME(a,b); \
+ }
+
+
+#define DEC_PYCALLBACK_BOOL_RECTINT(CBNAME) \
+ bool CBNAME(const wxRect& a, int b)
+
+#define IMP_PYCALLBACK_BOOL_RECTINT(CLASS, PCLASS, CBNAME) \
+ bool CLASS::CBNAME(const wxRect& a, int b) { \
+ bool found; \
+ bool rval = false; \
+ wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* ro = wxPyConstructObject((void*)&a, wxT("wxRect"), 0); \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(Oi)", ro, b));\
+ Py_DECREF(ro); \
+ } \
+ wxPyEndBlockThreads(blocked); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a,b); \
+ return rval; \
+ }
+
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_STRING_SIZET(CBNAME) \
+ wxString CBNAME(size_t a) const