pyinit.swg 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. /* ------------------------------------------------------------
  2. * The start of the Python initialization function
  3. * ------------------------------------------------------------ */
  4. %insert(init) "swiginit.swg"
  5. #if defined(SWIGPYTHON_BUILTIN)
  6. %fragment("<stddef.h>"); // For offsetof
  7. #endif
  8. %init %{
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. /* Python-specific SWIG API */
  13. #define SWIG_newvarlink() SWIG_Python_newvarlink()
  14. #define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr)
  15. #define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants)
  16. /* -----------------------------------------------------------------------------
  17. * global variable support code.
  18. * ----------------------------------------------------------------------------- */
  19. typedef struct swig_globalvar {
  20. char *name; /* Name of global variable */
  21. PyObject *(*get_attr)(void); /* Return the current value */
  22. int (*set_attr)(PyObject *); /* Set the value */
  23. struct swig_globalvar *next;
  24. } swig_globalvar;
  25. typedef struct swig_varlinkobject {
  26. PyObject_HEAD
  27. swig_globalvar *vars;
  28. } swig_varlinkobject;
  29. SWIGINTERN PyObject *
  30. swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) {
  31. #if PY_VERSION_HEX >= 0x03000000
  32. return PyUnicode_InternFromString("<Swig global variables>");
  33. #else
  34. return PyString_FromString("<Swig global variables>");
  35. #endif
  36. }
  37. SWIGINTERN PyObject *
  38. swig_varlink_str(swig_varlinkobject *v) {
  39. #if PY_VERSION_HEX >= 0x03000000
  40. PyObject *str = PyUnicode_InternFromString("(");
  41. PyObject *tail;
  42. PyObject *joined;
  43. swig_globalvar *var;
  44. for (var = v->vars; var; var=var->next) {
  45. tail = PyUnicode_FromString(var->name);
  46. joined = PyUnicode_Concat(str, tail);
  47. Py_DecRef(str);
  48. Py_DecRef(tail);
  49. str = joined;
  50. if (var->next) {
  51. tail = PyUnicode_InternFromString(", ");
  52. joined = PyUnicode_Concat(str, tail);
  53. Py_DecRef(str);
  54. Py_DecRef(tail);
  55. str = joined;
  56. }
  57. }
  58. tail = PyUnicode_InternFromString(")");
  59. joined = PyUnicode_Concat(str, tail);
  60. Py_DecRef(str);
  61. Py_DecRef(tail);
  62. str = joined;
  63. #else
  64. PyObject *str = PyString_FromString("(");
  65. swig_globalvar *var;
  66. for (var = v->vars; var; var=var->next) {
  67. PyString_ConcatAndDel(&str,PyString_FromString(var->name));
  68. if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
  69. }
  70. PyString_ConcatAndDel(&str,PyString_FromString(")"));
  71. #endif
  72. return str;
  73. }
  74. SWIGINTERN int
  75. swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
  76. char *tmp;
  77. PyObject *str = swig_varlink_str(v);
  78. fprintf(fp,"Swig global variables ");
  79. fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str));
  80. SWIG_Python_str_DelForPy3(tmp);
  81. Py_DECREF(str);
  82. return 0;
  83. }
  84. SWIGINTERN void
  85. swig_varlink_dealloc(swig_varlinkobject *v) {
  86. swig_globalvar *var = v->vars;
  87. while (var) {
  88. swig_globalvar *n = var->next;
  89. free(var->name);
  90. free(var);
  91. var = n;
  92. }
  93. }
  94. SWIGINTERN PyObject *
  95. swig_varlink_getattr(swig_varlinkobject *v, char *n) {
  96. PyObject *res = NULL;
  97. swig_globalvar *var = v->vars;
  98. while (var) {
  99. if (strcmp(var->name,n) == 0) {
  100. res = (*var->get_attr)();
  101. break;
  102. }
  103. var = var->next;
  104. }
  105. if (res == NULL && !PyErr_Occurred()) {
  106. PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n);
  107. }
  108. return res;
  109. }
  110. SWIGINTERN int
  111. swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
  112. int res = 1;
  113. swig_globalvar *var = v->vars;
  114. while (var) {
  115. if (strcmp(var->name,n) == 0) {
  116. res = (*var->set_attr)(p);
  117. break;
  118. }
  119. var = var->next;
  120. }
  121. if (res == 1 && !PyErr_Occurred()) {
  122. PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n);
  123. }
  124. return res;
  125. }
  126. SWIGINTERN PyTypeObject*
  127. swig_varlink_type(void) {
  128. static char varlink__doc__[] = "Swig var link object";
  129. static PyTypeObject varlink_type;
  130. static int type_init = 0;
  131. if (!type_init) {
  132. const PyTypeObject tmp = {
  133. /* PyObject header changed in Python 3 */
  134. #if PY_VERSION_HEX >= 0x03000000
  135. PyVarObject_HEAD_INIT(NULL, 0)
  136. #else
  137. PyObject_HEAD_INIT(NULL)
  138. 0, /* ob_size */
  139. #endif
  140. (char *)"swigvarlink", /* tp_name */
  141. sizeof(swig_varlinkobject), /* tp_basicsize */
  142. 0, /* tp_itemsize */
  143. (destructor) swig_varlink_dealloc, /* tp_dealloc */
  144. (printfunc) swig_varlink_print, /* tp_print */
  145. (getattrfunc) swig_varlink_getattr, /* tp_getattr */
  146. (setattrfunc) swig_varlink_setattr, /* tp_setattr */
  147. 0, /* tp_compare */
  148. (reprfunc) swig_varlink_repr, /* tp_repr */
  149. 0, /* tp_as_number */
  150. 0, /* tp_as_sequence */
  151. 0, /* tp_as_mapping */
  152. 0, /* tp_hash */
  153. 0, /* tp_call */
  154. (reprfunc) swig_varlink_str, /* tp_str */
  155. 0, /* tp_getattro */
  156. 0, /* tp_setattro */
  157. 0, /* tp_as_buffer */
  158. 0, /* tp_flags */
  159. varlink__doc__, /* tp_doc */
  160. 0, /* tp_traverse */
  161. 0, /* tp_clear */
  162. 0, /* tp_richcompare */
  163. 0, /* tp_weaklistoffset */
  164. #if PY_VERSION_HEX >= 0x02020000
  165. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
  166. #endif
  167. #if PY_VERSION_HEX >= 0x02030000
  168. 0, /* tp_del */
  169. #endif
  170. #if PY_VERSION_HEX >= 0x02060000
  171. 0, /* tp_version_tag */
  172. #endif
  173. #if PY_VERSION_HEX >= 0x03040000
  174. 0, /* tp_finalize */
  175. #endif
  176. #ifdef COUNT_ALLOCS
  177. 0, /* tp_allocs */
  178. 0, /* tp_frees */
  179. 0, /* tp_maxalloc */
  180. #if PY_VERSION_HEX >= 0x02050000
  181. 0, /* tp_prev */
  182. #endif
  183. 0 /* tp_next */
  184. #endif
  185. };
  186. varlink_type = tmp;
  187. type_init = 1;
  188. #if PY_VERSION_HEX < 0x02020000
  189. varlink_type.ob_type = &PyType_Type;
  190. #else
  191. if (PyType_Ready(&varlink_type) < 0)
  192. return NULL;
  193. #endif
  194. }
  195. return &varlink_type;
  196. }
  197. /* Create a variable linking object for use later */
  198. SWIGINTERN PyObject *
  199. SWIG_Python_newvarlink(void) {
  200. swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type());
  201. if (result) {
  202. result->vars = 0;
  203. }
  204. return ((PyObject*) result);
  205. }
  206. SWIGINTERN void
  207. SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
  208. swig_varlinkobject *v = (swig_varlinkobject *) p;
  209. swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
  210. if (gv) {
  211. size_t size = strlen(name)+1;
  212. gv->name = (char *)malloc(size);
  213. if (gv->name) {
  214. strncpy(gv->name,name,size);
  215. gv->get_attr = get_attr;
  216. gv->set_attr = set_attr;
  217. gv->next = v->vars;
  218. }
  219. }
  220. v->vars = gv;
  221. }
  222. SWIGINTERN PyObject *
  223. SWIG_globals(void) {
  224. static PyObject *_SWIG_globals = 0;
  225. if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink();
  226. return _SWIG_globals;
  227. }
  228. /* -----------------------------------------------------------------------------
  229. * constants/methods manipulation
  230. * ----------------------------------------------------------------------------- */
  231. /* Install Constants */
  232. SWIGINTERN void
  233. SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
  234. PyObject *obj = 0;
  235. size_t i;
  236. for (i = 0; constants[i].type; ++i) {
  237. switch(constants[i].type) {
  238. case SWIG_PY_POINTER:
  239. obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
  240. break;
  241. case SWIG_PY_BINARY:
  242. obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
  243. break;
  244. default:
  245. obj = 0;
  246. break;
  247. }
  248. if (obj) {
  249. PyDict_SetItemString(d, constants[i].name, obj);
  250. Py_DECREF(obj);
  251. }
  252. }
  253. }
  254. /* -----------------------------------------------------------------------------*/
  255. /* Fix SwigMethods to carry the callback ptrs when needed */
  256. /* -----------------------------------------------------------------------------*/
  257. SWIGINTERN void
  258. SWIG_Python_FixMethods(PyMethodDef *methods,
  259. swig_const_info *const_table,
  260. swig_type_info **types,
  261. swig_type_info **types_initial) {
  262. size_t i;
  263. for (i = 0; methods[i].ml_name; ++i) {
  264. const char *c = methods[i].ml_doc;
  265. if (!c) continue;
  266. c = strstr(c, "swig_ptr: ");
  267. if (c) {
  268. int j;
  269. swig_const_info *ci = 0;
  270. const char *name = c + 10;
  271. for (j = 0; const_table[j].type; ++j) {
  272. if (strncmp(const_table[j].name, name,
  273. strlen(const_table[j].name)) == 0) {
  274. ci = &(const_table[j]);
  275. break;
  276. }
  277. }
  278. if (ci) {
  279. void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
  280. if (ptr) {
  281. size_t shift = (ci->ptype) - types;
  282. swig_type_info *ty = types_initial[shift];
  283. size_t ldoc = (c - methods[i].ml_doc);
  284. size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
  285. char *ndoc = (char*)malloc(ldoc + lptr + 10);
  286. if (ndoc) {
  287. char *buff = ndoc;
  288. strncpy(buff, methods[i].ml_doc, ldoc);
  289. buff += ldoc;
  290. strncpy(buff, "swig_ptr: ", 10);
  291. buff += 10;
  292. SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
  293. methods[i].ml_doc = ndoc;
  294. }
  295. }
  296. }
  297. }
  298. }
  299. }
  300. #ifdef __cplusplus
  301. }
  302. #endif
  303. /* -----------------------------------------------------------------------------*
  304. * Partial Init method
  305. * -----------------------------------------------------------------------------*/
  306. #ifdef __cplusplus
  307. extern "C"
  308. #endif
  309. SWIGEXPORT
  310. #if PY_VERSION_HEX >= 0x03000000
  311. PyObject*
  312. #else
  313. void
  314. #endif
  315. SWIG_init(void) {
  316. PyObject *m, *d, *md;
  317. #if PY_VERSION_HEX >= 0x03000000
  318. static struct PyModuleDef SWIG_module = {
  319. # if PY_VERSION_HEX >= 0x03020000
  320. PyModuleDef_HEAD_INIT,
  321. # else
  322. {
  323. PyObject_HEAD_INIT(NULL)
  324. NULL, /* m_init */
  325. 0, /* m_index */
  326. NULL, /* m_copy */
  327. },
  328. # endif
  329. (char *) SWIG_name,
  330. NULL,
  331. -1,
  332. SwigMethods,
  333. NULL,
  334. NULL,
  335. NULL,
  336. NULL
  337. };
  338. #endif
  339. #if defined(SWIGPYTHON_BUILTIN)
  340. static SwigPyClientData SwigPyObject_clientdata = {0, 0, 0, 0, 0, 0, 0};
  341. static PyGetSetDef this_getset_def = {
  342. (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL
  343. };
  344. static SwigPyGetSet thisown_getset_closure = {
  345. (PyCFunction) SwigPyObject_own,
  346. (PyCFunction) SwigPyObject_own
  347. };
  348. static PyGetSetDef thisown_getset_def = {
  349. (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
  350. };
  351. PyObject *metatype_args;
  352. PyTypeObject *builtin_pytype;
  353. int builtin_base_count;
  354. swig_type_info *builtin_basetype;
  355. PyObject *tuple;
  356. PyGetSetDescrObject *static_getset;
  357. PyTypeObject *metatype;
  358. SwigPyClientData *cd;
  359. PyObject *public_interface, *public_symbol;
  360. PyObject *this_descr;
  361. PyObject *thisown_descr;
  362. PyObject *self = 0;
  363. int i;
  364. (void)builtin_pytype;
  365. (void)builtin_base_count;
  366. (void)builtin_basetype;
  367. (void)tuple;
  368. (void)static_getset;
  369. (void)self;
  370. /* metatype is used to implement static member variables. */
  371. metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
  372. assert(metatype_args);
  373. metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
  374. assert(metatype);
  375. Py_DECREF(metatype_args);
  376. metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
  377. assert(PyType_Ready(metatype) >= 0);
  378. #endif
  379. /* Fix SwigMethods to carry the callback ptrs when needed */
  380. SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
  381. #if PY_VERSION_HEX >= 0x03000000
  382. m = PyModule_Create(&SWIG_module);
  383. #else
  384. m = Py_InitModule((char *) SWIG_name, SwigMethods);
  385. #endif
  386. md = d = PyModule_GetDict(m);
  387. (void)md;
  388. SWIG_InitializeModule(0);
  389. #ifdef SWIGPYTHON_BUILTIN
  390. SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
  391. assert(SwigPyObject_stype);
  392. cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
  393. if (!cd) {
  394. SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
  395. SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
  396. } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
  397. PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
  398. # if PY_VERSION_HEX >= 0x03000000
  399. return NULL;
  400. # else
  401. return;
  402. # endif
  403. }
  404. /* All objects have a 'this' attribute */
  405. this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def);
  406. (void)this_descr;
  407. /* All objects have a 'thisown' attribute */
  408. thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def);
  409. (void)thisown_descr;
  410. public_interface = PyList_New(0);
  411. public_symbol = 0;
  412. (void)public_symbol;
  413. PyDict_SetItemString(md, "__all__", public_interface);
  414. Py_DECREF(public_interface);
  415. for (i = 0; SwigMethods[i].ml_name != NULL; ++i)
  416. SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name);
  417. for (i = 0; swig_const_table[i].name != 0; ++i)
  418. SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name);
  419. #endif
  420. SWIG_InstallConstants(d,swig_const_table);
  421. %}