+ sprintf(buff, "%sPtr", className);
+ PyObject* classobj = PyDict_GetItemString(wxPython_dict, buff);
+
+ return classobj; // returns NULL if not found
+}
+
+
+PyObject* wxPyMake_wxObject(wxObject* source) {
+ PyObject* target;
+
+ if (source) {
+ wxClassInfo* info = source->GetClassInfo();
+ wxChar* name = (wxChar*)info->GetClassName();
+ PyObject* klass = wxPyClassExists(name);
+ while (info && !klass) {
+ name = (wxChar*)info->GetBaseClassName1();
+ info = wxClassInfo::FindClass(name);
+ klass = wxPyClassExists(name);
+ }
+ if (info) {
+ target = wxPyConstructObject(source, name, klass, FALSE);
+ } else {
+ wxString msg("wxPython class not found for ");
+ msg += source->GetClassInfo()->GetClassName();
+ PyErr_SetString(PyExc_NameError, msg.c_str());
+ target = NULL;
+ }
+ } else { // source was NULL so return None.
+ Py_INCREF(Py_None); target = Py_None;
+ }
+ return target;
+}
+
+//---------------------------------------------------------------------------
+
+PyObject* wxPyConstructObject(void* ptr,
+ const char* className,
+ PyObject* klass,
+ int setThisOwn) {
+
+ PyObject* obj;
+ PyObject* arg;
+ PyObject* item;
+ char swigptr[64]; // should always be big enough...
+ char buff[64];
+
+ if ((item = PyDict_GetItemString(wxPyPtrTypeMap, (char*)className)) != NULL) {
+ className = PyString_AsString(item);
+ }