| /////////////// PyIdentifierFromString.proto /////////////// |
| |
| #if !defined(__Pyx_PyIdentifier_FromString) |
| #if PY_MAJOR_VERSION < 3 |
| #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) |
| #else |
| #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) |
| #endif |
| #endif |
| |
| |
| /////////////// Import.proto /////////////// |
| |
| static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ |
| |
| /////////////// Import /////////////// |
| //@requires: ObjectHandling.c::PyObjectGetAttrStr |
| //@substitute: naming |
| |
| static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { |
| PyObject *empty_list = 0; |
| PyObject *module = 0; |
| PyObject *global_dict = 0; |
| PyObject *empty_dict = 0; |
| PyObject *list; |
| #if PY_VERSION_HEX < 0x03030000 |
| PyObject *py_import; |
| py_import = __Pyx_PyObject_GetAttrStr($builtins_cname, PYIDENT("__import__")); |
| if (!py_import) |
| goto bad; |
| #endif |
| if (from_list) |
| list = from_list; |
| else { |
| empty_list = PyList_New(0); |
| if (!empty_list) |
| goto bad; |
| list = empty_list; |
| } |
| global_dict = PyModule_GetDict($module_cname); |
| if (!global_dict) |
| goto bad; |
| empty_dict = PyDict_New(); |
| if (!empty_dict) |
| goto bad; |
| #if PY_VERSION_HEX >= 0x02050000 |
| { |
| #if PY_MAJOR_VERSION >= 3 |
| if (level == -1) { |
| if (strchr(__Pyx_MODULE_NAME, '.')) { |
| /* try package relative import first */ |
| #if PY_VERSION_HEX < 0x03030000 |
| PyObject *py_level = PyInt_FromLong(1); |
| if (!py_level) |
| goto bad; |
| module = PyObject_CallFunctionObjArgs(py_import, |
| name, global_dict, empty_dict, list, py_level, NULL); |
| Py_DECREF(py_level); |
| #else |
| module = PyImport_ImportModuleLevelObject( |
| name, global_dict, empty_dict, list, 1); |
| #endif |
| if (!module) { |
| if (!PyErr_ExceptionMatches(PyExc_ImportError)) |
| goto bad; |
| PyErr_Clear(); |
| } |
| } |
| level = 0; /* try absolute import on failure */ |
| } |
| #endif |
| if (!module) { |
| #if PY_VERSION_HEX < 0x03030000 |
| PyObject *py_level = PyInt_FromLong(level); |
| if (!py_level) |
| goto bad; |
| module = PyObject_CallFunctionObjArgs(py_import, |
| name, global_dict, empty_dict, list, py_level, NULL); |
| Py_DECREF(py_level); |
| #else |
| module = PyImport_ImportModuleLevelObject( |
| name, global_dict, empty_dict, list, level); |
| #endif |
| } |
| } |
| #else |
| if (level>0) { |
| PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); |
| goto bad; |
| } |
| module = PyObject_CallFunctionObjArgs(py_import, |
| name, global_dict, empty_dict, list, NULL); |
| #endif |
| bad: |
| #if PY_VERSION_HEX < 0x03030000 |
| Py_XDECREF(py_import); |
| #endif |
| Py_XDECREF(empty_list); |
| Py_XDECREF(empty_dict); |
| return module; |
| } |
| |
| |
| /////////////// ImportFrom.proto /////////////// |
| |
| static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ |
| |
| /////////////// ImportFrom /////////////// |
| //@requires: ObjectHandling.c::PyObjectGetAttrStr |
| |
| static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { |
| PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); |
| if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { |
| PyErr_Format(PyExc_ImportError, |
| #if PY_MAJOR_VERSION < 3 |
| "cannot import name %.230s", PyString_AS_STRING(name)); |
| #else |
| "cannot import name %S", name); |
| #endif |
| } |
| return value; |
| } |
| |
| |
| /////////////// ModuleImport.proto /////////////// |
| |
| static PyObject *__Pyx_ImportModule(const char *name); /*proto*/ |
| |
| /////////////// ModuleImport /////////////// |
| //@requires: PyIdentifierFromString |
| |
| #ifndef __PYX_HAVE_RT_ImportModule |
| #define __PYX_HAVE_RT_ImportModule |
| static PyObject *__Pyx_ImportModule(const char *name) { |
| PyObject *py_name = 0; |
| PyObject *py_module = 0; |
| |
| py_name = __Pyx_PyIdentifier_FromString(name); |
| if (!py_name) |
| goto bad; |
| py_module = PyImport_Import(py_name); |
| Py_DECREF(py_name); |
| return py_module; |
| bad: |
| Py_XDECREF(py_name); |
| return 0; |
| } |
| #endif |
| |
| |
| /////////////// SetPackagePathFromImportLib.proto /////////////// |
| |
| #if PY_VERSION_HEX >= 0x03030000 |
| static int __Pyx_SetPackagePathFromImportLib(const char* parent_package_name, PyObject *module_name); |
| #else |
| #define __Pyx_SetPackagePathFromImportLib(a, b) 0 |
| #endif |
| |
| /////////////// SetPackagePathFromImportLib /////////////// |
| //@requires: ObjectHandling.c::PyObjectGetAttrStr |
| //@substitute: naming |
| |
| #if PY_VERSION_HEX >= 0x03030000 |
| static int __Pyx_SetPackagePathFromImportLib(const char* parent_package_name, PyObject *module_name) { |
| PyObject *importlib, *loader, *osmod, *ossep, *parts, *package_path; |
| PyObject *path = NULL, *file_path = NULL; |
| int result; |
| if (parent_package_name) { |
| PyObject *package = PyImport_ImportModule(parent_package_name); |
| if (unlikely(!package)) |
| goto bad; |
| path = PyObject_GetAttrString(package, "__path__"); |
| Py_DECREF(package); |
| if (unlikely(!path) || unlikely(path == Py_None)) |
| goto bad; |
| } else { |
| path = Py_None; Py_INCREF(Py_None); |
| } |
| // package_path = [importlib.find_loader(module_name, path).path.rsplit(os.sep, 1)[0]] |
| importlib = PyImport_ImportModule("importlib"); |
| if (unlikely(!importlib)) |
| goto bad; |
| loader = PyObject_CallMethod(importlib, "find_loader", "(OO)", module_name, path); |
| Py_DECREF(importlib); |
| Py_DECREF(path); path = NULL; |
| if (unlikely(!loader)) |
| goto bad; |
| file_path = PyObject_GetAttrString(loader, "path"); |
| Py_DECREF(loader); |
| if (unlikely(!file_path)) |
| goto bad; |
| |
| if (unlikely(__Pyx_SetAttrString($module_cname, "__file__", file_path) < 0)) |
| goto bad; |
| |
| osmod = PyImport_ImportModule("os"); |
| if (unlikely(!osmod)) |
| goto bad; |
| ossep = PyObject_GetAttrString(osmod, "sep"); |
| Py_DECREF(osmod); |
| if (unlikely(!ossep)) |
| goto bad; |
| parts = PyObject_CallMethod(file_path, "rsplit", "(Oi)", ossep, 1); |
| Py_DECREF(file_path); file_path = NULL; |
| Py_DECREF(ossep); |
| if (unlikely(!parts)) |
| goto bad; |
| package_path = Py_BuildValue("[O]", PyList_GET_ITEM(parts, 0)); |
| Py_DECREF(parts); |
| if (unlikely(!package_path)) |
| goto bad; |
| goto set_path; |
| |
| bad: |
| PyErr_WriteUnraisable(module_name); |
| Py_XDECREF(path); |
| Py_XDECREF(file_path); |
| |
| // set an empty path list on failure |
| PyErr_Clear(); |
| package_path = PyList_New(0); |
| if (unlikely(!package_path)) |
| return -1; |
| |
| set_path: |
| result = __Pyx_SetAttrString($module_cname, "__path__", package_path); |
| Py_DECREF(package_path); |
| return result; |
| } |
| #endif |
| |
| |
| /////////////// TypeImport.proto /////////////// |
| |
| static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); /*proto*/ |
| |
| /////////////// TypeImport /////////////// |
| //@requires: PyIdentifierFromString |
| //@requires: ModuleImport |
| |
| #ifndef __PYX_HAVE_RT_ImportType |
| #define __PYX_HAVE_RT_ImportType |
| static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, |
| size_t size, int strict) |
| { |
| PyObject *py_module = 0; |
| PyObject *result = 0; |
| PyObject *py_name = 0; |
| char warning[200]; |
| Py_ssize_t basicsize; |
| #ifdef Py_LIMITED_API |
| PyObject *py_basicsize; |
| #endif |
| |
| py_module = __Pyx_ImportModule(module_name); |
| if (!py_module) |
| goto bad; |
| py_name = __Pyx_PyIdentifier_FromString(class_name); |
| if (!py_name) |
| goto bad; |
| result = PyObject_GetAttr(py_module, py_name); |
| Py_DECREF(py_name); |
| py_name = 0; |
| Py_DECREF(py_module); |
| py_module = 0; |
| if (!result) |
| goto bad; |
| if (!PyType_Check(result)) { |
| PyErr_Format(PyExc_TypeError, |
| "%.200s.%.200s is not a type object", |
| module_name, class_name); |
| goto bad; |
| } |
| #ifndef Py_LIMITED_API |
| basicsize = ((PyTypeObject *)result)->tp_basicsize; |
| #else |
| py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); |
| if (!py_basicsize) |
| goto bad; |
| basicsize = PyLong_AsSsize_t(py_basicsize); |
| Py_DECREF(py_basicsize); |
| py_basicsize = 0; |
| if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) |
| goto bad; |
| #endif |
| if (!strict && (size_t)basicsize > size) { |
| PyOS_snprintf(warning, sizeof(warning), |
| "%s.%s size changed, may indicate binary incompatibility", |
| module_name, class_name); |
| #if PY_VERSION_HEX < 0x02050000 |
| if (PyErr_Warn(NULL, warning) < 0) goto bad; |
| #else |
| if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; |
| #endif |
| } |
| else if ((size_t)basicsize != size) { |
| PyErr_Format(PyExc_ValueError, |
| "%.200s.%.200s has the wrong size, try recompiling", |
| module_name, class_name); |
| goto bad; |
| } |
| return (PyTypeObject *)result; |
| bad: |
| Py_XDECREF(py_module); |
| Py_XDECREF(result); |
| return NULL; |
| } |
| #endif |
| |
| /////////////// FunctionImport.proto /////////////// |
| |
| static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/ |
| |
| /////////////// FunctionImport /////////////// |
| //@substitute: naming |
| |
| #ifndef __PYX_HAVE_RT_ImportFunction |
| #define __PYX_HAVE_RT_ImportFunction |
| static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { |
| PyObject *d = 0; |
| PyObject *cobj = 0; |
| union { |
| void (*fp)(void); |
| void *p; |
| } tmp; |
| |
| d = PyObject_GetAttrString(module, (char *)"$api_name"); |
| if (!d) |
| goto bad; |
| cobj = PyDict_GetItemString(d, funcname); |
| if (!cobj) { |
| PyErr_Format(PyExc_ImportError, |
| "%.200s does not export expected C function %.200s", |
| PyModule_GetName(module), funcname); |
| goto bad; |
| } |
| #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) |
| if (!PyCapsule_IsValid(cobj, sig)) { |
| PyErr_Format(PyExc_TypeError, |
| "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", |
| PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); |
| goto bad; |
| } |
| tmp.p = PyCapsule_GetPointer(cobj, sig); |
| #else |
| {const char *desc, *s1, *s2; |
| desc = (const char *)PyCObject_GetDesc(cobj); |
| if (!desc) |
| goto bad; |
| s1 = desc; s2 = sig; |
| while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } |
| if (*s1 != *s2) { |
| PyErr_Format(PyExc_TypeError, |
| "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", |
| PyModule_GetName(module), funcname, sig, desc); |
| goto bad; |
| } |
| tmp.p = PyCObject_AsVoidPtr(cobj);} |
| #endif |
| *f = tmp.fp; |
| if (!(*f)) |
| goto bad; |
| Py_DECREF(d); |
| return 0; |
| bad: |
| Py_XDECREF(d); |
| return -1; |
| } |
| #endif |
| |
| /////////////// FunctionExport.proto /////////////// |
| |
| static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/ |
| |
| /////////////// FunctionExport /////////////// |
| //@substitute: naming |
| |
| static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { |
| PyObject *d = 0; |
| PyObject *cobj = 0; |
| union { |
| void (*fp)(void); |
| void *p; |
| } tmp; |
| |
| d = PyObject_GetAttrString($module_cname, (char *)"$api_name"); |
| if (!d) { |
| PyErr_Clear(); |
| d = PyDict_New(); |
| if (!d) |
| goto bad; |
| Py_INCREF(d); |
| if (PyModule_AddObject($module_cname, (char *)"$api_name", d) < 0) |
| goto bad; |
| } |
| tmp.fp = f; |
| #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) |
| cobj = PyCapsule_New(tmp.p, sig, 0); |
| #else |
| cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); |
| #endif |
| if (!cobj) |
| goto bad; |
| if (PyDict_SetItemString(d, name, cobj) < 0) |
| goto bad; |
| Py_DECREF(cobj); |
| Py_DECREF(d); |
| return 0; |
| bad: |
| Py_XDECREF(cobj); |
| Py_XDECREF(d); |
| return -1; |
| } |
| |
| /////////////// VoidPtrImport.proto /////////////// |
| |
| static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); /*proto*/ |
| |
| /////////////// VoidPtrImport /////////////// |
| //@substitute: naming |
| |
| #ifndef __PYX_HAVE_RT_ImportVoidPtr |
| #define __PYX_HAVE_RT_ImportVoidPtr |
| static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { |
| PyObject *d = 0; |
| PyObject *cobj = 0; |
| |
| d = PyObject_GetAttrString(module, (char *)"$api_name"); |
| if (!d) |
| goto bad; |
| cobj = PyDict_GetItemString(d, name); |
| if (!cobj) { |
| PyErr_Format(PyExc_ImportError, |
| "%.200s does not export expected C variable %.200s", |
| PyModule_GetName(module), name); |
| goto bad; |
| } |
| #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) |
| if (!PyCapsule_IsValid(cobj, sig)) { |
| PyErr_Format(PyExc_TypeError, |
| "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", |
| PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); |
| goto bad; |
| } |
| *p = PyCapsule_GetPointer(cobj, sig); |
| #else |
| {const char *desc, *s1, *s2; |
| desc = (const char *)PyCObject_GetDesc(cobj); |
| if (!desc) |
| goto bad; |
| s1 = desc; s2 = sig; |
| while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } |
| if (*s1 != *s2) { |
| PyErr_Format(PyExc_TypeError, |
| "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", |
| PyModule_GetName(module), name, sig, desc); |
| goto bad; |
| } |
| *p = PyCObject_AsVoidPtr(cobj);} |
| #endif |
| if (!(*p)) |
| goto bad; |
| Py_DECREF(d); |
| return 0; |
| bad: |
| Py_XDECREF(d); |
| return -1; |
| } |
| #endif |
| |
| /////////////// VoidPtrExport.proto /////////////// |
| |
| static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); /*proto*/ |
| |
| /////////////// VoidPtrExport /////////////// |
| //@substitute: naming |
| //@requires: ObjectHandling.c::PyObjectSetAttrStr |
| |
| static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { |
| PyObject *d; |
| PyObject *cobj = 0; |
| |
| d = PyDict_GetItem($moddict_cname, PYIDENT("$api_name")); |
| Py_XINCREF(d); |
| if (!d) { |
| d = PyDict_New(); |
| if (!d) |
| goto bad; |
| if (__Pyx_PyObject_SetAttrStr($module_cname, PYIDENT("$api_name"), d) < 0) |
| goto bad; |
| } |
| #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) |
| cobj = PyCapsule_New(p, sig, 0); |
| #else |
| cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); |
| #endif |
| if (!cobj) |
| goto bad; |
| if (PyDict_SetItem(d, name, cobj) < 0) |
| goto bad; |
| Py_DECREF(cobj); |
| Py_DECREF(d); |
| return 0; |
| bad: |
| Py_XDECREF(cobj); |
| Py_XDECREF(d); |
| return -1; |
| } |
| |
| |
| /////////////// SetVTable.proto /////////////// |
| |
| static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ |
| |
| /////////////// SetVTable /////////////// |
| |
| static int __Pyx_SetVtable(PyObject *dict, void *vtable) { |
| #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) |
| PyObject *ob = PyCapsule_New(vtable, 0, 0); |
| #else |
| PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); |
| #endif |
| if (!ob) |
| goto bad; |
| if (PyDict_SetItem(dict, PYIDENT("__pyx_vtable__"), ob) < 0) |
| goto bad; |
| Py_DECREF(ob); |
| return 0; |
| bad: |
| Py_XDECREF(ob); |
| return -1; |
| } |
| |
| |
| /////////////// GetVTable.proto /////////////// |
| |
| static void* __Pyx_GetVtable(PyObject *dict); /*proto*/ |
| |
| /////////////// GetVTable /////////////// |
| |
| static void* __Pyx_GetVtable(PyObject *dict) { |
| void* ptr; |
| PyObject *ob = PyObject_GetItem(dict, PYIDENT("__pyx_vtable__")); |
| if (!ob) |
| goto bad; |
| #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) |
| ptr = PyCapsule_GetPointer(ob, 0); |
| #else |
| ptr = PyCObject_AsVoidPtr(ob); |
| #endif |
| if (!ptr && !PyErr_Occurred()) |
| PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); |
| Py_DECREF(ob); |
| return ptr; |
| bad: |
| Py_XDECREF(ob); |
| return NULL; |
| } |