123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757 |
- /////////////// 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_MAJOR_VERSION < 3
- 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_MAJOR_VERSION >= 3
- if (level == -1) {
- if (strchr(__Pyx_MODULE_NAME, '.')) {
- /* try package relative import first */
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, 1);
- if (!module) {
- if (!PyErr_ExceptionMatches(PyExc_ImportError))
- goto bad;
- PyErr_Clear();
- }
- }
- level = 0; /* try absolute import on failure */
- }
- #endif
- if (!module) {
- #if PY_MAJOR_VERSION < 3
- 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
- }
- }
- bad:
- #if PY_MAJOR_VERSION < 3
- 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;
- }
- /////////////// ImportStar ///////////////
- //@substitute: naming
- /* import_all_from is an unexposed function from ceval.c */
- static int
- __Pyx_import_all_from(PyObject *locals, PyObject *v)
- {
- PyObject *all = PyObject_GetAttrString(v, "__all__");
- PyObject *dict, *name, *value;
- int skip_leading_underscores = 0;
- int pos, err;
- if (all == NULL) {
- if (!PyErr_ExceptionMatches(PyExc_AttributeError))
- return -1; /* Unexpected error */
- PyErr_Clear();
- dict = PyObject_GetAttrString(v, "__dict__");
- if (dict == NULL) {
- if (!PyErr_ExceptionMatches(PyExc_AttributeError))
- return -1;
- PyErr_SetString(PyExc_ImportError,
- "from-import-* object has no __dict__ and no __all__");
- return -1;
- }
- #if PY_MAJOR_VERSION < 3
- all = PyObject_CallMethod(dict, (char *)"keys", NULL);
- #else
- all = PyMapping_Keys(dict);
- #endif
- Py_DECREF(dict);
- if (all == NULL)
- return -1;
- skip_leading_underscores = 1;
- }
- for (pos = 0, err = 0; ; pos++) {
- name = PySequence_GetItem(all, pos);
- if (name == NULL) {
- if (!PyErr_ExceptionMatches(PyExc_IndexError))
- err = -1;
- else
- PyErr_Clear();
- break;
- }
- if (skip_leading_underscores &&
- #if PY_MAJOR_VERSION < 3
- PyString_Check(name) &&
- PyString_AS_STRING(name)[0] == '_')
- #else
- PyUnicode_Check(name) &&
- PyUnicode_AS_UNICODE(name)[0] == '_')
- #endif
- {
- Py_DECREF(name);
- continue;
- }
- value = PyObject_GetAttr(v, name);
- if (value == NULL)
- err = -1;
- else if (PyDict_CheckExact(locals))
- err = PyDict_SetItem(locals, name, value);
- else
- err = PyObject_SetItem(locals, name, value);
- Py_DECREF(name);
- Py_XDECREF(value);
- if (err != 0)
- break;
- }
- Py_DECREF(all);
- return err;
- }
- static int ${import_star}(PyObject* m) {
- int i;
- int ret = -1;
- char* s;
- PyObject *locals = 0;
- PyObject *list = 0;
- #if PY_MAJOR_VERSION >= 3
- PyObject *utf8_name = 0;
- #endif
- PyObject *name;
- PyObject *item;
- locals = PyDict_New(); if (!locals) goto bad;
- if (__Pyx_import_all_from(locals, m) < 0) goto bad;
- list = PyDict_Items(locals); if (!list) goto bad;
- for(i=0; i<PyList_GET_SIZE(list); i++) {
- name = PyTuple_GET_ITEM(PyList_GET_ITEM(list, i), 0);
- item = PyTuple_GET_ITEM(PyList_GET_ITEM(list, i), 1);
- #if PY_MAJOR_VERSION >= 3
- utf8_name = PyUnicode_AsUTF8String(name);
- if (!utf8_name) goto bad;
- s = PyBytes_AS_STRING(utf8_name);
- if (${import_star_set}(item, name, s) < 0) goto bad;
- Py_DECREF(utf8_name); utf8_name = 0;
- #else
- s = PyString_AsString(name);
- if (!s) goto bad;
- if (${import_star_set}(item, name, s) < 0) goto bad;
- #endif
- }
- ret = 0;
- bad:
- Py_XDECREF(locals);
- Py_XDECREF(list);
- #if PY_MAJOR_VERSION >= 3
- Py_XDECREF(utf8_name);
- #endif
- return ret;
- }
- /////////////// 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 ///////////////
- // PY_VERSION_HEX >= 0x03030000
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_PEP489_MULTI_PHASE_INIT
- 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
- // PY_VERSION_HEX >= 0x03030000
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_PEP489_MULTI_PHASE_INIT
- 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(PyObject_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 = PyObject_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. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- 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
- 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
- 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
- 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
- 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
- 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
- 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;
- }
- /////////////// MergeVTables.proto ///////////////
- //@requires: GetVTable
- static int __Pyx_MergeVtables(PyTypeObject *type); /*proto*/
- /////////////// MergeVTables ///////////////
- static int __Pyx_MergeVtables(PyTypeObject *type) {
- int i;
- void** base_vtables;
- void* unknown = (void*)-1;
- PyObject* bases = type->tp_bases;
- int base_depth = 0;
- {
- PyTypeObject* base = type->tp_base;
- while (base) {
- base_depth += 1;
- base = base->tp_base;
- }
- }
- base_vtables = (void**) malloc(sizeof(void*) * (base_depth + 1));
- base_vtables[0] = unknown;
- // Could do MRO resolution of individual methods in the future, assuming
- // compatible vtables, but for now simply require a common vtable base.
- // Note that if the vtables of various bases are extended separately,
- // resolution isn't possible and we must reject it just as when the
- // instance struct is so extended. (It would be good to also do this
- // check when a multiple-base class is created in pure Python as well.)
- for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
- void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i))->tp_dict);
- if (base_vtable != NULL) {
- int j;
- PyTypeObject* base = type->tp_base;
- for (j = 0; j < base_depth; j++) {
- if (base_vtables[j] == unknown) {
- base_vtables[j] = __Pyx_GetVtable(base->tp_dict);
- base_vtables[j + 1] = unknown;
- }
- if (base_vtables[j] == base_vtable) {
- break;
- } else if (base_vtables[j] == NULL) {
- // No more potential matching bases (with vtables).
- goto bad;
- }
- base = base->tp_base;
- }
- }
- }
- PyErr_Clear();
- free(base_vtables);
- return 0;
- bad:
- PyErr_Format(
- PyExc_TypeError,
- "multiple bases have vtable conflict: '%s' and '%s'",
- type->tp_base->tp_name, ((PyTypeObject*)PyTuple_GET_ITEM(bases, i))->tp_name);
- free(base_vtables);
- return -1;
- }
- /////////////// ImportNumPyArray.proto ///////////////
- static PyObject *__pyx_numpy_ndarray = NULL;
- static PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void); /*proto*/
- /////////////// ImportNumPyArray.cleanup ///////////////
- Py_CLEAR(__pyx_numpy_ndarray);
- /////////////// ImportNumPyArray ///////////////
- //@requires: ImportExport.c::Import
- static PyObject* __Pyx__ImportNumPyArray(void) {
- PyObject *numpy_module, *ndarray_object = NULL;
- numpy_module = __Pyx_Import(PYIDENT("numpy"), NULL, 0);
- if (likely(numpy_module)) {
- ndarray_object = PyObject_GetAttrString(numpy_module, "ndarray");
- Py_DECREF(numpy_module);
- }
- if (unlikely(!ndarray_object)) {
- // ImportError, AttributeError, ...
- PyErr_Clear();
- }
- if (unlikely(!ndarray_object || !PyObject_TypeCheck(ndarray_object, &PyType_Type))) {
- Py_XDECREF(ndarray_object);
- Py_INCREF(Py_None);
- ndarray_object = Py_None;
- }
- return ndarray_object;
- }
- static CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) {
- if (unlikely(!__pyx_numpy_ndarray)) {
- __pyx_numpy_ndarray = __Pyx__ImportNumPyArray();
- }
- Py_INCREF(__pyx_numpy_ndarray);
- return __pyx_numpy_ndarray;
- }
|