15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// PyIdentifierFromString.proto /////////////// 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(__Pyx_PyIdentifier_FromString) 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION < 3 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// Import.proto /////////////// 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// Import /////////////// 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: ObjectHandling.c::PyObjectGetAttrStr 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *empty_list = 0; 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *module = 0; 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *global_dict = 0; 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *empty_dict = 0; 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *list; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX < 0x03030000 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_import; 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_import = __Pyx_PyObject_GetAttrStr($builtins_cname, PYIDENT("__import__")); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_import) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (from_list) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) list = from_list; 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) else { 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) empty_list = PyList_New(0); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!empty_list) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) list = empty_list; 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) global_dict = PyModule_GetDict($module_cname); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!global_dict) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) empty_dict = PyDict_New(); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!empty_dict) 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX >= 0x02050000 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_MAJOR_VERSION >= 3 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (level == -1) { 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (strchr(__Pyx_MODULE_NAME, '.')) { 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* try package relative import first */ 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX < 0x03030000 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_level = PyInt_FromLong(1); 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_level) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module = PyObject_CallFunctionObjArgs(py_import, 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) name, global_dict, empty_dict, list, py_level, NULL); 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(py_level); 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #else 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module = PyImport_ImportModuleLevelObject( 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) name, global_dict, empty_dict, list, 1); 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!module) { 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!PyErr_ExceptionMatches(PyExc_ImportError)) 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Clear(); 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) level = 0; /* try absolute import on failure */ 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!module) { 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX < 0x03030000 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_level = PyInt_FromLong(level); 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_level) 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module = PyObject_CallFunctionObjArgs(py_import, 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) name, global_dict, empty_dict, list, py_level, NULL); 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(py_level); 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #else 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module = PyImport_ImportModuleLevelObject( 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) name, global_dict, empty_dict, list, level); 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #else 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (level>0) { 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module = PyObject_CallFunctionObjArgs(py_import, 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) name, global_dict, empty_dict, list, NULL); 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX < 0x03030000 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(py_import); 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(empty_list); 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(empty_dict); 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return module; 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// ImportFrom.proto /////////////// 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// ImportFrom /////////////// 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: ObjectHandling.c::PyObjectGetAttrStr 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_ImportError, 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_MAJOR_VERSION < 3 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "cannot import name %.230s", PyString_AS_STRING(name)); 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #else 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "cannot import name %S", name); 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return value; 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// ModuleImport.proto /////////////// 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_ImportModule(const char *name); /*proto*/ 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// ModuleImport /////////////// 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: PyIdentifierFromString 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef __PYX_HAVE_RT_ImportModule 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __PYX_HAVE_RT_ImportModule 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_ImportModule(const char *name) { 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_name = 0; 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_module = 0; 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_name = __Pyx_PyIdentifier_FromString(name); 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_name) 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_module = PyImport_Import(py_name); 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(py_name); 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return py_module; 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(py_name); 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// SetPackagePathFromImportLib.proto /////////////// 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x03030000 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_SetPackagePathFromImportLib(const char* parent_package_name, PyObject *module_name); 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_SetPackagePathFromImportLib(a, b) 0 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// SetPackagePathFromImportLib /////////////// 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: ObjectHandling.c::PyObjectGetAttrStr 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x03030000 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_SetPackagePathFromImportLib(const char* parent_package_name, PyObject *module_name) { 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *importlib, *loader, *osmod, *ossep, *parts, *package_path; 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *path = NULL, *file_path = NULL; 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int result; 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (parent_package_name) { 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *package = PyImport_ImportModule(parent_package_name); 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!package)) 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) path = PyObject_GetAttrString(package, "__path__"); 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(package); 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!path) || unlikely(path == Py_None)) 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) path = Py_None; Py_INCREF(Py_None); 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // package_path = [importlib.find_loader(module_name, path).path.rsplit(os.sep, 1)[0]] 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) importlib = PyImport_ImportModule("importlib"); 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!importlib)) 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) loader = PyObject_CallMethod(importlib, "find_loader", "(OO)", module_name, path); 1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(importlib); 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(path); path = NULL; 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!loader)) 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) file_path = PyObject_GetAttrString(loader, "path"); 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(loader); 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!file_path)) 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(__Pyx_SetAttrString($module_cname, "__file__", file_path) < 0)) 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) osmod = PyImport_ImportModule("os"); 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!osmod)) 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ossep = PyObject_GetAttrString(osmod, "sep"); 2005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(osmod); 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!ossep)) 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) parts = PyObject_CallMethod(file_path, "rsplit", "(Oi)", ossep, 1); 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(file_path); file_path = NULL; 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(ossep); 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!parts)) 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) package_path = Py_BuildValue("[O]", PyList_GET_ITEM(parts, 0)); 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(parts); 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!package_path)) 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto set_path; 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_WriteUnraisable(module_name); 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(path); 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(file_path); 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // set an empty path list on failure 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Clear(); 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) package_path = PyList_New(0); 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!package_path)) 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)set_path: 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = __Pyx_SetAttrString($module_cname, "__path__", package_path); 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(package_path); 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// TypeImport.proto /////////////// 2345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); /*proto*/ 2365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// TypeImport /////////////// 2385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: PyIdentifierFromString 2395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: ModuleImport 2405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef __PYX_HAVE_RT_ImportType 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __PYX_HAVE_RT_ImportType 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t size, int strict) 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 2465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_module = 0; 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *result = 0; 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_name = 0; 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) char warning[200]; 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_ssize_t basicsize; 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifdef Py_LIMITED_API 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *py_basicsize; 2535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_module = __Pyx_ImportModule(module_name); 2565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_module) 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_name = __Pyx_PyIdentifier_FromString(class_name); 2595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_name) 2605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = PyObject_GetAttr(py_module, py_name); 2625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(py_name); 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_name = 0; 2645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(py_module); 2655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_module = 0; 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!result) 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!PyType_Check(result)) { 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 2705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%.200s.%.200s is not a type object", 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module_name, class_name); 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef Py_LIMITED_API 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) basicsize = ((PyTypeObject *)result)->tp_basicsize; 2765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 2775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); 2785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!py_basicsize) 2795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) basicsize = PyLong_AsSsize_t(py_basicsize); 2815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(py_basicsize); 2825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) py_basicsize = 0; 2835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) 2845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 2855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!strict && (size_t)basicsize > size) { 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyOS_snprintf(warning, sizeof(warning), 2885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%s.%s size changed, may indicate binary incompatibility", 2895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module_name, class_name); 2905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX < 0x02050000 2915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyErr_Warn(NULL, warning) < 0) goto bad; 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #else 2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; 2945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) else if ((size_t)basicsize != size) { 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_ValueError, 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%.200s.%.200s has the wrong size, try recompiling", 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) module_name, class_name); 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (PyTypeObject *)result; 3035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(py_module); 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(result); 3065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 3075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 3095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// FunctionImport.proto /////////////// 3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/ 3135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// FunctionImport /////////////// 3155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 3165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef __PYX_HAVE_RT_ImportFunction 3185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __PYX_HAVE_RT_ImportFunction 3195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { 3205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *d = 0; 3215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *cobj = 0; 3225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) union { 3235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void (*fp)(void); 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void *p; 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } tmp; 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = PyObject_GetAttrString(module, (char *)"$api_name"); 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!d) 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cobj = PyDict_GetItemString(d, funcname); 3315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!cobj) { 3325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_ImportError, 3335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%.200s does not export expected C function %.200s", 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyModule_GetName(module), funcname); 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) 3385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!PyCapsule_IsValid(cobj, sig)) { 3395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 3405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", 3415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); 3425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp.p = PyCapsule_GetPointer(cobj, sig); 3455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 3465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {const char *desc, *s1, *s2; 3475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) desc = (const char *)PyCObject_GetDesc(cobj); 3485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!desc) 3495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) s1 = desc; s2 = sig; 3515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } 3525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (*s1 != *s2) { 3535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 3545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", 3555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyModule_GetName(module), funcname, sig, desc); 3565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp.p = PyCObject_AsVoidPtr(cobj);} 3595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 3605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *f = tmp.fp; 3615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!(*f)) 3625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(d); 3645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 3655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 3665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(d); 3675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 3685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 3705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// FunctionExport.proto /////////////// 3725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/ 3745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// FunctionExport /////////////// 3765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 3775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { 3795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *d = 0; 3805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *cobj = 0; 3815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) union { 3825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void (*fp)(void); 3835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void *p; 3845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } tmp; 3855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = PyObject_GetAttrString($module_cname, (char *)"$api_name"); 3875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!d) { 3885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Clear(); 3895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = PyDict_New(); 3905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!d) 3915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(d); 3935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyModule_AddObject($module_cname, (char *)"$api_name", d) < 0) 3945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 3955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp.fp = f; 3975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) 3985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cobj = PyCapsule_New(tmp.p, sig, 0); 3995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 4005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); 4015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 4025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!cobj) 4035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyDict_SetItemString(d, name, cobj) < 0) 4055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(cobj); 4075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(d); 4085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 4095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 4105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(cobj); 4115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(d); 4125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 4135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// VoidPtrImport.proto /////////////// 4165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); /*proto*/ 4185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// VoidPtrImport /////////////// 4205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 4215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef __PYX_HAVE_RT_ImportVoidPtr 4235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __PYX_HAVE_RT_ImportVoidPtr 4245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { 4255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *d = 0; 4265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *cobj = 0; 4275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = PyObject_GetAttrString(module, (char *)"$api_name"); 4295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!d) 4305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cobj = PyDict_GetItemString(d, name); 4325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!cobj) { 4335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_ImportError, 4345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%.200s does not export expected C variable %.200s", 4355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyModule_GetName(module), name); 4365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 4385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) 4395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!PyCapsule_IsValid(cobj, sig)) { 4405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 4415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", 4425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); 4435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 4455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *p = PyCapsule_GetPointer(cobj, sig); 4465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 4475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {const char *desc, *s1, *s2; 4485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) desc = (const char *)PyCObject_GetDesc(cobj); 4495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!desc) 4505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) s1 = desc; s2 = sig; 4525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } 4535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (*s1 != *s2) { 4545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 4555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", 4565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyModule_GetName(module), name, sig, desc); 4575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 4595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *p = PyCObject_AsVoidPtr(cobj);} 4605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 4615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!(*p)) 4625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(d); 4645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 4655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 4665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(d); 4675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 4685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 4705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// VoidPtrExport.proto /////////////// 4725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); /*proto*/ 4745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// VoidPtrExport /////////////// 4765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 4775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: ObjectHandling.c::PyObjectSetAttrStr 4785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { 4805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *d; 4815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *cobj = 0; 4825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = PyDict_GetItem($moddict_cname, PYIDENT("$api_name")); 4845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(d); 4855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!d) { 4865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = PyDict_New(); 4875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!d) 4885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (__Pyx_PyObject_SetAttrStr($module_cname, PYIDENT("$api_name"), d) < 0) 4905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 4925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) 4935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cobj = PyCapsule_New(p, sig, 0); 4945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 4955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); 4965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 4975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!cobj) 4985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 4995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyDict_SetItem(d, name, cobj) < 0) 5005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 5015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(cobj); 5025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(d); 5035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 5045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 5055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(cobj); 5065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(d); 5075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 5085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 5095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// SetVTable.proto /////////////// 5125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ 5145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// SetVTable /////////////// 5165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_SetVtable(PyObject *dict, void *vtable) { 5185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) 5195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *ob = PyCapsule_New(vtable, 0, 0); 5205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 5215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); 5225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 5235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!ob) 5245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 5255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyDict_SetItem(dict, PYIDENT("__pyx_vtable__"), ob) < 0) 5265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 5275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(ob); 5285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 5295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 5305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(ob); 5315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 5325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 5335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// GetVTable.proto /////////////// 5365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static void* __Pyx_GetVtable(PyObject *dict); /*proto*/ 5385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/////////////// GetVTable /////////////// 5405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static void* __Pyx_GetVtable(PyObject *dict) { 5425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void* ptr; 5435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *ob = PyObject_GetItem(dict, PYIDENT("__pyx_vtable__")); 5445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!ob) 5455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto bad; 5465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) 5475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ptr = PyCapsule_GetPointer(ob, 0); 5485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 5495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ptr = PyCObject_AsVoidPtr(ob); 5505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 5515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!ptr && !PyErr_Occurred()) 5525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); 5535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(ob); 5545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return ptr; 5555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bad: 5565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(ob); 5575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 5585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 559