]>
Commit | Line | Data |
---|---|---|
1 | /* ---------------------------------------------------------------------------- | |
2 | * This file was automatically generated by SWIG (http://www.swig.org). | |
3 | * Version 1.3.27 | |
4 | * | |
5 | * This file is not intended to be easily readable and contains a number of | |
6 | * coding conventions designed to improve portability and efficiency. Do not make | |
7 | * changes to this file unless you know what you are doing--modify the SWIG | |
8 | * interface file instead. | |
9 | * ----------------------------------------------------------------------------- */ | |
10 | ||
11 | #define SWIGPYTHON | |
12 | ||
13 | #ifdef __cplusplus | |
14 | template<class T> class SwigValueWrapper { | |
15 | T *tt; | |
16 | public: | |
17 | SwigValueWrapper() : tt(0) { } | |
18 | SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { } | |
19 | SwigValueWrapper(const T& t) : tt(new T(t)) { } | |
20 | ~SwigValueWrapper() { delete tt; } | |
21 | SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; } | |
22 | operator T&() const { return *tt; } | |
23 | T *operator&() { return tt; } | |
24 | private: | |
25 | SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs); | |
26 | }; | |
27 | #endif | |
28 | ||
29 | /*********************************************************************** | |
30 | * | |
31 | * This section contains generic SWIG labels for method/variable | |
32 | * declarations/attributes, and other compiler dependent labels. | |
33 | * | |
34 | ************************************************************************/ | |
35 | ||
36 | /* template workaround for compilers that cannot correctly implement the C++ standard */ | |
37 | #ifndef SWIGTEMPLATEDISAMBIGUATOR | |
38 | # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) | |
39 | # define SWIGTEMPLATEDISAMBIGUATOR template | |
40 | # else | |
41 | # define SWIGTEMPLATEDISAMBIGUATOR | |
42 | # endif | |
43 | #endif | |
44 | ||
45 | /* inline attribute */ | |
46 | #ifndef SWIGINLINE | |
47 | # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) | |
48 | # define SWIGINLINE inline | |
49 | # else | |
50 | # define SWIGINLINE | |
51 | # endif | |
52 | #endif | |
53 | ||
54 | /* attribute recognised by some compilers to avoid 'unused' warnings */ | |
55 | #ifndef SWIGUNUSED | |
56 | # if defined(__GNUC__) || defined(__ICC) | |
57 | # define SWIGUNUSED __attribute__ ((unused)) | |
58 | # else | |
59 | # define SWIGUNUSED | |
60 | # endif | |
61 | #endif | |
62 | ||
63 | /* internal SWIG method */ | |
64 | #ifndef SWIGINTERN | |
65 | # define SWIGINTERN static SWIGUNUSED | |
66 | #endif | |
67 | ||
68 | /* internal inline SWIG method */ | |
69 | #ifndef SWIGINTERNINLINE | |
70 | # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE | |
71 | #endif | |
72 | ||
73 | /* exporting methods for Windows DLLs */ | |
74 | #ifndef SWIGEXPORT | |
75 | # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | |
76 | # if defined(STATIC_LINKED) | |
77 | # define SWIGEXPORT | |
78 | # else | |
79 | # define SWIGEXPORT __declspec(dllexport) | |
80 | # endif | |
81 | # else | |
82 | # define SWIGEXPORT | |
83 | # endif | |
84 | #endif | |
85 | ||
86 | /* calling conventions for Windows */ | |
87 | #ifndef SWIGSTDCALL | |
88 | # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | |
89 | # define SWIGSTDCALL __stdcall | |
90 | # else | |
91 | # define SWIGSTDCALL | |
92 | # endif | |
93 | #endif | |
94 | ||
95 | ||
96 | ||
97 | #include <Python.h> | |
98 | ||
99 | /*********************************************************************** | |
100 | * swigrun.swg | |
101 | * | |
102 | * This file contains generic CAPI SWIG runtime support for pointer | |
103 | * type checking. | |
104 | * | |
105 | ************************************************************************/ | |
106 | ||
107 | /* This should only be incremented when either the layout of swig_type_info changes, | |
108 | or for whatever reason, the runtime changes incompatibly */ | |
109 | #define SWIG_RUNTIME_VERSION "2" | |
110 | ||
111 | /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ | |
112 | #ifdef SWIG_TYPE_TABLE | |
113 | # define SWIG_QUOTE_STRING(x) #x | |
114 | # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) | |
115 | # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) | |
116 | #else | |
117 | # define SWIG_TYPE_TABLE_NAME | |
118 | #endif | |
119 | ||
120 | /* | |
121 | You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for | |
122 | creating a static or dynamic library from the swig runtime code. | |
123 | In 99.9% of the cases, swig just needs to declare them as 'static'. | |
124 | ||
125 | But only do this if is strictly necessary, ie, if you have problems | |
126 | with your compiler or so. | |
127 | */ | |
128 | ||
129 | #ifndef SWIGRUNTIME | |
130 | # define SWIGRUNTIME SWIGINTERN | |
131 | #endif | |
132 | ||
133 | #ifndef SWIGRUNTIMEINLINE | |
134 | # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE | |
135 | #endif | |
136 | ||
137 | #include <string.h> | |
138 | ||
139 | #ifdef __cplusplus | |
140 | extern "C" { | |
141 | #endif | |
142 | ||
143 | typedef void *(*swig_converter_func)(void *); | |
144 | typedef struct swig_type_info *(*swig_dycast_func)(void **); | |
145 | ||
146 | /* Structure to store inforomation on one type */ | |
147 | typedef struct swig_type_info { | |
148 | const char *name; /* mangled name of this type */ | |
149 | const char *str; /* human readable name of this type */ | |
150 | swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ | |
151 | struct swig_cast_info *cast; /* linked list of types that can cast into this type */ | |
152 | void *clientdata; /* language specific type data */ | |
153 | } swig_type_info; | |
154 | ||
155 | /* Structure to store a type and conversion function used for casting */ | |
156 | typedef struct swig_cast_info { | |
157 | swig_type_info *type; /* pointer to type that is equivalent to this type */ | |
158 | swig_converter_func converter; /* function to cast the void pointers */ | |
159 | struct swig_cast_info *next; /* pointer to next cast in linked list */ | |
160 | struct swig_cast_info *prev; /* pointer to the previous cast */ | |
161 | } swig_cast_info; | |
162 | ||
163 | /* Structure used to store module information | |
164 | * Each module generates one structure like this, and the runtime collects | |
165 | * all of these structures and stores them in a circularly linked list.*/ | |
166 | typedef struct swig_module_info { | |
167 | swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ | |
168 | size_t size; /* Number of types in this module */ | |
169 | struct swig_module_info *next; /* Pointer to next element in circularly linked list */ | |
170 | swig_type_info **type_initial; /* Array of initially generated type structures */ | |
171 | swig_cast_info **cast_initial; /* Array of initially generated casting structures */ | |
172 | void *clientdata; /* Language specific module data */ | |
173 | } swig_module_info; | |
174 | ||
175 | ||
176 | /* | |
177 | Compare two type names skipping the space characters, therefore | |
178 | "char*" == "char *" and "Class<int>" == "Class<int >", etc. | |
179 | ||
180 | Return 0 when the two name types are equivalent, as in | |
181 | strncmp, but skipping ' '. | |
182 | */ | |
183 | SWIGRUNTIME int | |
184 | SWIG_TypeNameComp(const char *f1, const char *l1, | |
185 | const char *f2, const char *l2) { | |
186 | for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { | |
187 | while ((*f1 == ' ') && (f1 != l1)) ++f1; | |
188 | while ((*f2 == ' ') && (f2 != l2)) ++f2; | |
189 | if (*f1 != *f2) return (int)(*f1 - *f2); | |
190 | } | |
191 | return (l1 - f1) - (l2 - f2); | |
192 | } | |
193 | ||
194 | /* | |
195 | Check type equivalence in a name list like <name1>|<name2>|... | |
196 | Return 0 if not equal, 1 if equal | |
197 | */ | |
198 | SWIGRUNTIME int | |
199 | SWIG_TypeEquiv(const char *nb, const char *tb) { | |
200 | int equiv = 0; | |
201 | const char* te = tb + strlen(tb); | |
202 | const char* ne = nb; | |
203 | while (!equiv && *ne) { | |
204 | for (nb = ne; *ne; ++ne) { | |
205 | if (*ne == '|') break; | |
206 | } | |
207 | equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; | |
208 | if (*ne) ++ne; | |
209 | } | |
210 | return equiv; | |
211 | } | |
212 | ||
213 | /* | |
214 | Check type equivalence in a name list like <name1>|<name2>|... | |
215 | Return 0 if equal, -1 if nb < tb, 1 if nb > tb | |
216 | */ | |
217 | SWIGRUNTIME int | |
218 | SWIG_TypeCompare(const char *nb, const char *tb) { | |
219 | int equiv = 0; | |
220 | const char* te = tb + strlen(tb); | |
221 | const char* ne = nb; | |
222 | while (!equiv && *ne) { | |
223 | for (nb = ne; *ne; ++ne) { | |
224 | if (*ne == '|') break; | |
225 | } | |
226 | equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; | |
227 | if (*ne) ++ne; | |
228 | } | |
229 | return equiv; | |
230 | } | |
231 | ||
232 | ||
233 | /* think of this as a c++ template<> or a scheme macro */ | |
234 | #define SWIG_TypeCheck_Template(comparison, ty) \ | |
235 | if (ty) { \ | |
236 | swig_cast_info *iter = ty->cast; \ | |
237 | while (iter) { \ | |
238 | if (comparison) { \ | |
239 | if (iter == ty->cast) return iter; \ | |
240 | /* Move iter to the top of the linked list */ \ | |
241 | iter->prev->next = iter->next; \ | |
242 | if (iter->next) \ | |
243 | iter->next->prev = iter->prev; \ | |
244 | iter->next = ty->cast; \ | |
245 | iter->prev = 0; \ | |
246 | if (ty->cast) ty->cast->prev = iter; \ | |
247 | ty->cast = iter; \ | |
248 | return iter; \ | |
249 | } \ | |
250 | iter = iter->next; \ | |
251 | } \ | |
252 | } \ | |
253 | return 0 | |
254 | ||
255 | /* | |
256 | Check the typename | |
257 | */ | |
258 | SWIGRUNTIME swig_cast_info * | |
259 | SWIG_TypeCheck(const char *c, swig_type_info *ty) { | |
260 | SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty); | |
261 | } | |
262 | ||
263 | /* Same as previous function, except strcmp is replaced with a pointer comparison */ | |
264 | SWIGRUNTIME swig_cast_info * | |
265 | SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) { | |
266 | SWIG_TypeCheck_Template(iter->type == from, into); | |
267 | } | |
268 | ||
269 | /* | |
270 | Cast a pointer up an inheritance hierarchy | |
271 | */ | |
272 | SWIGRUNTIMEINLINE void * | |
273 | SWIG_TypeCast(swig_cast_info *ty, void *ptr) { | |
274 | return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr); | |
275 | } | |
276 | ||
277 | /* | |
278 | Dynamic pointer casting. Down an inheritance hierarchy | |
279 | */ | |
280 | SWIGRUNTIME swig_type_info * | |
281 | SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { | |
282 | swig_type_info *lastty = ty; | |
283 | if (!ty || !ty->dcast) return ty; | |
284 | while (ty && (ty->dcast)) { | |
285 | ty = (*ty->dcast)(ptr); | |
286 | if (ty) lastty = ty; | |
287 | } | |
288 | return lastty; | |
289 | } | |
290 | ||
291 | /* | |
292 | Return the name associated with this type | |
293 | */ | |
294 | SWIGRUNTIMEINLINE const char * | |
295 | SWIG_TypeName(const swig_type_info *ty) { | |
296 | return ty->name; | |
297 | } | |
298 | ||
299 | /* | |
300 | Return the pretty name associated with this type, | |
301 | that is an unmangled type name in a form presentable to the user. | |
302 | */ | |
303 | SWIGRUNTIME const char * | |
304 | SWIG_TypePrettyName(const swig_type_info *type) { | |
305 | /* The "str" field contains the equivalent pretty names of the | |
306 | type, separated by vertical-bar characters. We choose | |
307 | to print the last name, as it is often (?) the most | |
308 | specific. */ | |
309 | if (type->str != NULL) { | |
310 | const char *last_name = type->str; | |
311 | const char *s; | |
312 | for (s = type->str; *s; s++) | |
313 | if (*s == '|') last_name = s+1; | |
314 | return last_name; | |
315 | } | |
316 | else | |
317 | return type->name; | |
318 | } | |
319 | ||
320 | /* | |
321 | Set the clientdata field for a type | |
322 | */ | |
323 | SWIGRUNTIME void | |
324 | SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { | |
325 | swig_cast_info *cast = ti->cast; | |
326 | /* if (ti->clientdata == clientdata) return; */ | |
327 | ti->clientdata = clientdata; | |
328 | ||
329 | while (cast) { | |
330 | if (!cast->converter) { | |
331 | swig_type_info *tc = cast->type; | |
332 | if (!tc->clientdata) { | |
333 | SWIG_TypeClientData(tc, clientdata); | |
334 | } | |
335 | } | |
336 | cast = cast->next; | |
337 | } | |
338 | } | |
339 | ||
340 | /* | |
341 | Search for a swig_type_info structure only by mangled name | |
342 | Search is a O(log #types) | |
343 | ||
344 | We start searching at module start, and finish searching when start == end. | |
345 | Note: if start == end at the beginning of the function, we go all the way around | |
346 | the circular list. | |
347 | */ | |
348 | SWIGRUNTIME swig_type_info * | |
349 | SWIG_MangledTypeQueryModule(swig_module_info *start, | |
350 | swig_module_info *end, | |
351 | const char *name) { | |
352 | swig_module_info *iter = start; | |
353 | do { | |
354 | if (iter->size) { | |
355 | register size_t l = 0; | |
356 | register size_t r = iter->size - 1; | |
357 | do { | |
358 | /* since l+r >= 0, we can (>> 1) instead (/ 2) */ | |
359 | register size_t i = (l + r) >> 1; | |
360 | const char *iname = iter->types[i]->name; | |
361 | if (iname) { | |
362 | register int compare = strcmp(name, iname); | |
363 | if (compare == 0) { | |
364 | return iter->types[i]; | |
365 | } else if (compare < 0) { | |
366 | if (i) { | |
367 | r = i - 1; | |
368 | } else { | |
369 | break; | |
370 | } | |
371 | } else if (compare > 0) { | |
372 | l = i + 1; | |
373 | } | |
374 | } else { | |
375 | break; /* should never happen */ | |
376 | } | |
377 | } while (l <= r); | |
378 | } | |
379 | iter = iter->next; | |
380 | } while (iter != end); | |
381 | return 0; | |
382 | } | |
383 | ||
384 | /* | |
385 | Search for a swig_type_info structure for either a mangled name or a human readable name. | |
386 | It first searches the mangled names of the types, which is a O(log #types) | |
387 | If a type is not found it then searches the human readable names, which is O(#types). | |
388 | ||
389 | We start searching at module start, and finish searching when start == end. | |
390 | Note: if start == end at the beginning of the function, we go all the way around | |
391 | the circular list. | |
392 | */ | |
393 | SWIGRUNTIME swig_type_info * | |
394 | SWIG_TypeQueryModule(swig_module_info *start, | |
395 | swig_module_info *end, | |
396 | const char *name) { | |
397 | /* STEP 1: Search the name field using binary search */ | |
398 | swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); | |
399 | if (ret) { | |
400 | return ret; | |
401 | } else { | |
402 | /* STEP 2: If the type hasn't been found, do a complete search | |
403 | of the str field (the human readable name) */ | |
404 | swig_module_info *iter = start; | |
405 | do { | |
406 | register size_t i = 0; | |
407 | for (; i < iter->size; ++i) { | |
408 | if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) | |
409 | return iter->types[i]; | |
410 | } | |
411 | iter = iter->next; | |
412 | } while (iter != end); | |
413 | } | |
414 | ||
415 | /* neither found a match */ | |
416 | return 0; | |
417 | } | |
418 | ||
419 | ||
420 | /* | |
421 | Pack binary data into a string | |
422 | */ | |
423 | SWIGRUNTIME char * | |
424 | SWIG_PackData(char *c, void *ptr, size_t sz) { | |
425 | static const char hex[17] = "0123456789abcdef"; | |
426 | register const unsigned char *u = (unsigned char *) ptr; | |
427 | register const unsigned char *eu = u + sz; | |
428 | for (; u != eu; ++u) { | |
429 | register unsigned char uu = *u; | |
430 | *(c++) = hex[(uu & 0xf0) >> 4]; | |
431 | *(c++) = hex[uu & 0xf]; | |
432 | } | |
433 | return c; | |
434 | } | |
435 | ||
436 | /* | |
437 | Unpack binary data from a string | |
438 | */ | |
439 | SWIGRUNTIME const char * | |
440 | SWIG_UnpackData(const char *c, void *ptr, size_t sz) { | |
441 | register unsigned char *u = (unsigned char *) ptr; | |
442 | register const unsigned char *eu = u + sz; | |
443 | for (; u != eu; ++u) { | |
444 | register char d = *(c++); | |
445 | register unsigned char uu = 0; | |
446 | if ((d >= '0') && (d <= '9')) | |
447 | uu = ((d - '0') << 4); | |
448 | else if ((d >= 'a') && (d <= 'f')) | |
449 | uu = ((d - ('a'-10)) << 4); | |
450 | else | |
451 | return (char *) 0; | |
452 | d = *(c++); | |
453 | if ((d >= '0') && (d <= '9')) | |
454 | uu |= (d - '0'); | |
455 | else if ((d >= 'a') && (d <= 'f')) | |
456 | uu |= (d - ('a'-10)); | |
457 | else | |
458 | return (char *) 0; | |
459 | *u = uu; | |
460 | } | |
461 | return c; | |
462 | } | |
463 | ||
464 | /* | |
465 | Pack 'void *' into a string buffer. | |
466 | */ | |
467 | SWIGRUNTIME char * | |
468 | SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { | |
469 | char *r = buff; | |
470 | if ((2*sizeof(void *) + 2) > bsz) return 0; | |
471 | *(r++) = '_'; | |
472 | r = SWIG_PackData(r,&ptr,sizeof(void *)); | |
473 | if (strlen(name) + 1 > (bsz - (r - buff))) return 0; | |
474 | strcpy(r,name); | |
475 | return buff; | |
476 | } | |
477 | ||
478 | SWIGRUNTIME const char * | |
479 | SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { | |
480 | if (*c != '_') { | |
481 | if (strcmp(c,"NULL") == 0) { | |
482 | *ptr = (void *) 0; | |
483 | return name; | |
484 | } else { | |
485 | return 0; | |
486 | } | |
487 | } | |
488 | return SWIG_UnpackData(++c,ptr,sizeof(void *)); | |
489 | } | |
490 | ||
491 | SWIGRUNTIME char * | |
492 | SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { | |
493 | char *r = buff; | |
494 | size_t lname = (name ? strlen(name) : 0); | |
495 | if ((2*sz + 2 + lname) > bsz) return 0; | |
496 | *(r++) = '_'; | |
497 | r = SWIG_PackData(r,ptr,sz); | |
498 | if (lname) { | |
499 | strncpy(r,name,lname+1); | |
500 | } else { | |
501 | *r = 0; | |
502 | } | |
503 | return buff; | |
504 | } | |
505 | ||
506 | SWIGRUNTIME const char * | |
507 | SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { | |
508 | if (*c != '_') { | |
509 | if (strcmp(c,"NULL") == 0) { | |
510 | memset(ptr,0,sz); | |
511 | return name; | |
512 | } else { | |
513 | return 0; | |
514 | } | |
515 | } | |
516 | return SWIG_UnpackData(++c,ptr,sz); | |
517 | } | |
518 | ||
519 | #ifdef __cplusplus | |
520 | } | |
521 | #endif | |
522 | ||
523 | /* ----------------------------------------------------------------------------- | |
524 | * SWIG API. Portion that goes into the runtime | |
525 | * ----------------------------------------------------------------------------- */ | |
526 | ||
527 | #ifdef __cplusplus | |
528 | extern "C" { | |
529 | #endif | |
530 | ||
531 | /* ----------------------------------------------------------------------------- | |
532 | * for internal method declarations | |
533 | * ----------------------------------------------------------------------------- */ | |
534 | ||
535 | #ifndef SWIGINTERN | |
536 | # define SWIGINTERN static SWIGUNUSED | |
537 | #endif | |
538 | ||
539 | #ifndef SWIGINTERNINLINE | |
540 | # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE | |
541 | #endif | |
542 | ||
543 | /* | |
544 | Exception handling in wrappers | |
545 | */ | |
546 | #define SWIG_fail goto fail | |
547 | #define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) | |
548 | #define SWIG_append_errmsg(msg) SWIG_Python_AddErrMesg(msg,0) | |
549 | #define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1) | |
550 | #define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj) | |
551 | #define SWIG_null_ref(type) SWIG_Python_NullRef(type) | |
552 | ||
553 | /* | |
554 | Contract support | |
555 | */ | |
556 | #define SWIG_contract_assert(expr, msg) \ | |
557 | if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else | |
558 | ||
559 | /* ----------------------------------------------------------------------------- | |
560 | * Constant declarations | |
561 | * ----------------------------------------------------------------------------- */ | |
562 | ||
563 | /* Constant Types */ | |
564 | #define SWIG_PY_INT 1 | |
565 | #define SWIG_PY_FLOAT 2 | |
566 | #define SWIG_PY_STRING 3 | |
567 | #define SWIG_PY_POINTER 4 | |
568 | #define SWIG_PY_BINARY 5 | |
569 | ||
570 | /* Constant information structure */ | |
571 | typedef struct swig_const_info { | |
572 | int type; | |
573 | char *name; | |
574 | long lvalue; | |
575 | double dvalue; | |
576 | void *pvalue; | |
577 | swig_type_info **ptype; | |
578 | } swig_const_info; | |
579 | ||
580 | ||
581 | /* ----------------------------------------------------------------------------- | |
582 | * Alloc. memory flags | |
583 | * ----------------------------------------------------------------------------- */ | |
584 | #define SWIG_OLDOBJ 1 | |
585 | #define SWIG_NEWOBJ SWIG_OLDOBJ + 1 | |
586 | #define SWIG_PYSTR SWIG_NEWOBJ + 1 | |
587 | ||
588 | #ifdef __cplusplus | |
589 | } | |
590 | #endif | |
591 | ||
592 | ||
593 | /*********************************************************************** | |
594 | * pyrun.swg | |
595 | * | |
596 | * This file contains the runtime support for Python modules | |
597 | * and includes code for managing global variables and pointer | |
598 | * type checking. | |
599 | * | |
600 | * Author : David Beazley (beazley@cs.uchicago.edu) | |
601 | ************************************************************************/ | |
602 | ||
603 | /* Common SWIG API */ | |
604 | #define SWIG_ConvertPtr(obj, pp, type, flags) SWIG_Python_ConvertPtr(obj, pp, type, flags) | |
605 | #define SWIG_NewPointerObj(p, type, flags) SWIG_Python_NewPointerObj(p, type, flags) | |
606 | #define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) | |
607 | ||
608 | ||
609 | /* Python-specific SWIG API */ | |
610 | #define SWIG_ConvertPacked(obj, ptr, sz, ty, flags) SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags) | |
611 | #define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) | |
612 | ||
613 | /* Runtime API */ | |
614 | #define SWIG_GetModule(clientdata) SWIG_Python_GetModule() | |
615 | #define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) | |
616 | ||
617 | /* ----------------------------------------------------------------------------- | |
618 | * Pointer declarations | |
619 | * ----------------------------------------------------------------------------- */ | |
620 | /* | |
621 | Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent | |
622 | C/C++ pointers in the python side. Very useful for debugging, but | |
623 | not always safe. | |
624 | */ | |
625 | #if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES) | |
626 | # define SWIG_COBJECT_TYPES | |
627 | #endif | |
628 | ||
629 | /* Flags for pointer conversion */ | |
630 | #define SWIG_POINTER_EXCEPTION 0x1 | |
631 | #define SWIG_POINTER_DISOWN 0x2 | |
632 | ||
633 | ||
634 | /* Add PyOS_snprintf for old Pythons */ | |
635 | #if PY_VERSION_HEX < 0x02020000 | |
636 | #define PyOS_snprintf snprintf | |
637 | #endif | |
638 | ||
639 | #ifdef __cplusplus | |
640 | extern "C" { | |
641 | #endif | |
642 | ||
643 | /* ----------------------------------------------------------------------------- | |
644 | * Create a new pointer string | |
645 | * ----------------------------------------------------------------------------- */ | |
646 | #ifndef SWIG_BUFFER_SIZE | |
647 | #define SWIG_BUFFER_SIZE 1024 | |
648 | #endif | |
649 | ||
650 | /* A crude PyString_FromFormat implementation for old Pythons */ | |
651 | #if PY_VERSION_HEX < 0x02020000 | |
652 | static PyObject * | |
653 | PyString_FromFormat(const char *fmt, ...) { | |
654 | va_list ap; | |
655 | char buf[SWIG_BUFFER_SIZE * 2]; | |
656 | int res; | |
657 | va_start(ap, fmt); | |
658 | res = vsnprintf(buf, sizeof(buf), fmt, ap); | |
659 | va_end(ap); | |
660 | return (res < 0 || res >= sizeof(buf)) ? 0 : PyString_FromString(buf); | |
661 | } | |
662 | #endif | |
663 | ||
664 | #if PY_VERSION_HEX < 0x01060000 | |
665 | #define PyObject_Del(op) PyMem_DEL((op)) | |
666 | #endif | |
667 | ||
668 | #if defined(SWIG_COBJECT_TYPES) | |
669 | #if !defined(SWIG_COBJECT_PYTHON) | |
670 | /* ----------------------------------------------------------------------------- | |
671 | * Implements a simple Swig Object type, and use it instead of PyCObject | |
672 | * ----------------------------------------------------------------------------- */ | |
673 | ||
674 | typedef struct { | |
675 | PyObject_HEAD | |
676 | void *ptr; | |
677 | const char *desc; | |
678 | } PySwigObject; | |
679 | ||
680 | /* Declarations for objects of type PySwigObject */ | |
681 | ||
682 | SWIGRUNTIME int | |
683 | PySwigObject_print(PySwigObject *v, FILE *fp, int flags) | |
684 | { | |
685 | char result[SWIG_BUFFER_SIZE]; | |
686 | flags = flags; | |
687 | if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) { | |
688 | fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp); | |
689 | return 0; | |
690 | } else { | |
691 | return 1; | |
692 | } | |
693 | } | |
694 | ||
695 | SWIGRUNTIME PyObject * | |
696 | PySwigObject_repr(PySwigObject *v) | |
697 | { | |
698 | char result[SWIG_BUFFER_SIZE]; | |
699 | return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ? | |
700 | PyString_FromFormat("<Swig Object at %s>", result) : 0; | |
701 | } | |
702 | ||
703 | SWIGRUNTIME PyObject * | |
704 | PySwigObject_str(PySwigObject *v) | |
705 | { | |
706 | char result[SWIG_BUFFER_SIZE]; | |
707 | return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ? | |
708 | PyString_FromString(result) : 0; | |
709 | } | |
710 | ||
711 | SWIGRUNTIME PyObject * | |
712 | PySwigObject_long(PySwigObject *v) | |
713 | { | |
714 | return PyLong_FromVoidPtr(v->ptr); | |
715 | } | |
716 | ||
717 | SWIGRUNTIME PyObject * | |
718 | PySwigObject_format(const char* fmt, PySwigObject *v) | |
719 | { | |
720 | PyObject *res = NULL; | |
721 | PyObject *args = PyTuple_New(1); | |
722 | if (args && (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0)) { | |
723 | PyObject *ofmt = PyString_FromString(fmt); | |
724 | if (ofmt) { | |
725 | res = PyString_Format(ofmt,args); | |
726 | Py_DECREF(ofmt); | |
727 | } | |
728 | Py_DECREF(args); | |
729 | } | |
730 | return res; | |
731 | } | |
732 | ||
733 | SWIGRUNTIME PyObject * | |
734 | PySwigObject_oct(PySwigObject *v) | |
735 | { | |
736 | return PySwigObject_format("%o",v); | |
737 | } | |
738 | ||
739 | SWIGRUNTIME PyObject * | |
740 | PySwigObject_hex(PySwigObject *v) | |
741 | { | |
742 | return PySwigObject_format("%x",v); | |
743 | } | |
744 | ||
745 | SWIGRUNTIME int | |
746 | PySwigObject_compare(PySwigObject *v, PySwigObject *w) | |
747 | { | |
748 | int c = strcmp(v->desc, w->desc); | |
749 | if (c) { | |
750 | return (c > 0) ? 1 : -1; | |
751 | } else { | |
752 | void *i = v->ptr; | |
753 | void *j = w->ptr; | |
754 | return (i < j) ? -1 : ((i > j) ? 1 : 0); | |
755 | } | |
756 | } | |
757 | ||
758 | SWIGRUNTIME void | |
759 | PySwigObject_dealloc(PySwigObject *self) | |
760 | { | |
761 | PyObject_Del(self); | |
762 | } | |
763 | ||
764 | SWIGRUNTIME PyTypeObject* | |
765 | PySwigObject_type(void) { | |
766 | static char pyswigobject_type__doc__[] = | |
767 | "Swig object carries a C/C++ instance pointer"; | |
768 | ||
769 | static PyNumberMethods PySwigObject_as_number = { | |
770 | (binaryfunc)0, /*nb_add*/ | |
771 | (binaryfunc)0, /*nb_subtract*/ | |
772 | (binaryfunc)0, /*nb_multiply*/ | |
773 | (binaryfunc)0, /*nb_divide*/ | |
774 | (binaryfunc)0, /*nb_remainder*/ | |
775 | (binaryfunc)0, /*nb_divmod*/ | |
776 | (ternaryfunc)0,/*nb_power*/ | |
777 | (unaryfunc)0, /*nb_negative*/ | |
778 | (unaryfunc)0, /*nb_positive*/ | |
779 | (unaryfunc)0, /*nb_absolute*/ | |
780 | (inquiry)0, /*nb_nonzero*/ | |
781 | 0, /*nb_invert*/ | |
782 | 0, /*nb_lshift*/ | |
783 | 0, /*nb_rshift*/ | |
784 | 0, /*nb_and*/ | |
785 | 0, /*nb_xor*/ | |
786 | 0, /*nb_or*/ | |
787 | (coercion)0, /*nb_coerce*/ | |
788 | (unaryfunc)PySwigObject_long, /*nb_int*/ | |
789 | (unaryfunc)PySwigObject_long, /*nb_long*/ | |
790 | (unaryfunc)0, /*nb_float*/ | |
791 | (unaryfunc)PySwigObject_oct, /*nb_oct*/ | |
792 | (unaryfunc)PySwigObject_hex, /*nb_hex*/ | |
793 | #if PY_VERSION_HEX >= 0x02020000 | |
794 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ | |
795 | #elif PY_VERSION_HEX >= 0x02000000 | |
796 | 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ | |
797 | #endif | |
798 | }; | |
799 | ||
800 | static PyTypeObject pyswigobject_type | |
801 | #if !defined(__cplusplus) | |
802 | ; | |
803 | static int type_init = 0; | |
804 | if (!type_init) { | |
805 | PyTypeObject tmp | |
806 | #endif | |
807 | = { | |
808 | PyObject_HEAD_INIT(&PyType_Type) | |
809 | 0, /*ob_size*/ | |
810 | (char *)"PySwigObject", /*tp_name*/ | |
811 | sizeof(PySwigObject), /*tp_basicsize*/ | |
812 | 0, /*tp_itemsize*/ | |
813 | /* methods */ | |
814 | (destructor)PySwigObject_dealloc, /*tp_dealloc*/ | |
815 | (printfunc)PySwigObject_print, /*tp_print*/ | |
816 | (getattrfunc)0, /*tp_getattr*/ | |
817 | (setattrfunc)0, /*tp_setattr*/ | |
818 | (cmpfunc)PySwigObject_compare, /*tp_compare*/ | |
819 | (reprfunc)PySwigObject_repr, /*tp_repr*/ | |
820 | &PySwigObject_as_number, /*tp_as_number*/ | |
821 | 0, /*tp_as_sequence*/ | |
822 | 0, /*tp_as_mapping*/ | |
823 | (hashfunc)0, /*tp_hash*/ | |
824 | (ternaryfunc)0, /*tp_call*/ | |
825 | (reprfunc)PySwigObject_str, /*tp_str*/ | |
826 | /* Space for future expansion */ | |
827 | 0,0,0,0, | |
828 | pyswigobject_type__doc__, /* Documentation string */ | |
829 | #if PY_VERSION_HEX >= 0x02000000 | |
830 | 0, /* tp_traverse */ | |
831 | 0, /* tp_clear */ | |
832 | #endif | |
833 | #if PY_VERSION_HEX >= 0x02010000 | |
834 | 0, /* tp_richcompare */ | |
835 | 0, /* tp_weaklistoffset */ | |
836 | #endif | |
837 | #if PY_VERSION_HEX >= 0x02020000 | |
838 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ | |
839 | #endif | |
840 | #if PY_VERSION_HEX >= 0x02030000 | |
841 | 0, /* tp_del */ | |
842 | #endif | |
843 | #ifdef COUNT_ALLOCS | |
844 | 0,0,0,0 /* tp_alloc -> tp_next */ | |
845 | #endif | |
846 | }; | |
847 | #if !defined(__cplusplus) | |
848 | pyswigobject_type = tmp; | |
849 | type_init = 1; | |
850 | } | |
851 | #endif | |
852 | return &pyswigobject_type; | |
853 | } | |
854 | ||
855 | SWIGRUNTIME PyObject * | |
856 | PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc) | |
857 | { | |
858 | PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_type()); | |
859 | if (self) { | |
860 | self->ptr = ptr; | |
861 | self->desc = desc; | |
862 | } | |
863 | return (PyObject *)self; | |
864 | } | |
865 | ||
866 | SWIGRUNTIMEINLINE void * | |
867 | PySwigObject_AsVoidPtr(PyObject *self) | |
868 | { | |
869 | return ((PySwigObject *)self)->ptr; | |
870 | } | |
871 | ||
872 | SWIGRUNTIMEINLINE const char * | |
873 | PySwigObject_GetDesc(PyObject *self) | |
874 | { | |
875 | return ((PySwigObject *)self)->desc; | |
876 | } | |
877 | ||
878 | SWIGRUNTIMEINLINE int | |
879 | PySwigObject_Check(PyObject *op) { | |
880 | return ((op)->ob_type == PySwigObject_type()) | |
881 | || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0); | |
882 | } | |
883 | ||
884 | /* ----------------------------------------------------------------------------- | |
885 | * Implements a simple Swig Packed type, and use it instead of string | |
886 | * ----------------------------------------------------------------------------- */ | |
887 | ||
888 | typedef struct { | |
889 | PyObject_HEAD | |
890 | void *pack; | |
891 | const char *desc; | |
892 | size_t size; | |
893 | } PySwigPacked; | |
894 | ||
895 | SWIGRUNTIME int | |
896 | PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags) | |
897 | { | |
898 | char result[SWIG_BUFFER_SIZE]; | |
899 | flags = flags; | |
900 | fputs("<Swig Packed ", fp); | |
901 | if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { | |
902 | fputs("at ", fp); | |
903 | fputs(result, fp); | |
904 | } | |
905 | fputs(v->desc,fp); | |
906 | fputs(">", fp); | |
907 | return 0; | |
908 | } | |
909 | ||
910 | SWIGRUNTIME PyObject * | |
911 | PySwigPacked_repr(PySwigPacked *v) | |
912 | { | |
913 | char result[SWIG_BUFFER_SIZE]; | |
914 | if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { | |
915 | return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc); | |
916 | } else { | |
917 | return PyString_FromFormat("<Swig Packed %s>", v->desc); | |
918 | } | |
919 | } | |
920 | ||
921 | SWIGRUNTIME PyObject * | |
922 | PySwigPacked_str(PySwigPacked *v) | |
923 | { | |
924 | char result[SWIG_BUFFER_SIZE]; | |
925 | if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ | |
926 | return PyString_FromFormat("%s%s", result, v->desc); | |
927 | } else { | |
928 | return PyString_FromString(v->desc); | |
929 | } | |
930 | } | |
931 | ||
932 | SWIGRUNTIME int | |
933 | PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w) | |
934 | { | |
935 | int c = strcmp(v->desc, w->desc); | |
936 | if (c) { | |
937 | return (c > 0) ? 1 : -1; | |
938 | } else { | |
939 | size_t i = v->size; | |
940 | size_t j = w->size; | |
941 | int s = (i < j) ? -1 : ((i > j) ? 1 : 0); | |
942 | return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); | |
943 | } | |
944 | } | |
945 | ||
946 | SWIGRUNTIME void | |
947 | PySwigPacked_dealloc(PySwigPacked *self) | |
948 | { | |
949 | free(self->pack); | |
950 | PyObject_Del(self); | |
951 | } | |
952 | ||
953 | SWIGRUNTIME PyTypeObject* | |
954 | PySwigPacked_type(void) { | |
955 | static char pyswigpacked_type__doc__[] = | |
956 | "Swig object carries a C/C++ instance pointer"; | |
957 | static PyTypeObject pyswigpacked_type | |
958 | #if !defined(__cplusplus) | |
959 | ; | |
960 | static int type_init = 0; | |
961 | if (!type_init) { | |
962 | PyTypeObject tmp | |
963 | #endif | |
964 | = { | |
965 | PyObject_HEAD_INIT(&PyType_Type) | |
966 | 0, /*ob_size*/ | |
967 | (char *)"PySwigPacked", /*tp_name*/ | |
968 | sizeof(PySwigPacked), /*tp_basicsize*/ | |
969 | 0, /*tp_itemsize*/ | |
970 | /* methods */ | |
971 | (destructor)PySwigPacked_dealloc, /*tp_dealloc*/ | |
972 | (printfunc)PySwigPacked_print, /*tp_print*/ | |
973 | (getattrfunc)0, /*tp_getattr*/ | |
974 | (setattrfunc)0, /*tp_setattr*/ | |
975 | (cmpfunc)PySwigPacked_compare, /*tp_compare*/ | |
976 | (reprfunc)PySwigPacked_repr, /*tp_repr*/ | |
977 | 0, /*tp_as_number*/ | |
978 | 0, /*tp_as_sequence*/ | |
979 | 0, /*tp_as_mapping*/ | |
980 | (hashfunc)0, /*tp_hash*/ | |
981 | (ternaryfunc)0, /*tp_call*/ | |
982 | (reprfunc)PySwigPacked_str, /*tp_str*/ | |
983 | /* Space for future expansion */ | |
984 | 0,0,0,0, | |
985 | pyswigpacked_type__doc__, /* Documentation string */ | |
986 | #if PY_VERSION_HEX >= 0x02000000 | |
987 | 0, /* tp_traverse */ | |
988 | 0, /* tp_clear */ | |
989 | #endif | |
990 | #if PY_VERSION_HEX >= 0x02010000 | |
991 | 0, /* tp_richcompare */ | |
992 | 0, /* tp_weaklistoffset */ | |
993 | #endif | |
994 | #if PY_VERSION_HEX >= 0x02020000 | |
995 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ | |
996 | #endif | |
997 | #if PY_VERSION_HEX >= 0x02030000 | |
998 | 0, /* tp_del */ | |
999 | #endif | |
1000 | #ifdef COUNT_ALLOCS | |
1001 | 0,0,0,0 /* tp_alloc -> tp_next */ | |
1002 | #endif | |
1003 | }; | |
1004 | #if !defined(__cplusplus) | |
1005 | pyswigpacked_type = tmp; | |
1006 | type_init = 1; | |
1007 | } | |
1008 | #endif | |
1009 | return &pyswigpacked_type; | |
1010 | } | |
1011 | ||
1012 | SWIGRUNTIME PyObject * | |
1013 | PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc) | |
1014 | { | |
1015 | PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_type()); | |
1016 | if (self == NULL) { | |
1017 | return NULL; | |
1018 | } else { | |
1019 | void *pack = malloc(size); | |
1020 | if (pack) { | |
1021 | memcpy(pack, ptr, size); | |
1022 | self->pack = pack; | |
1023 | self->desc = desc; | |
1024 | self->size = size; | |
1025 | return (PyObject *) self; | |
1026 | } | |
1027 | return NULL; | |
1028 | } | |
1029 | } | |
1030 | ||
1031 | SWIGRUNTIMEINLINE const char * | |
1032 | PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size) | |
1033 | { | |
1034 | PySwigPacked *self = (PySwigPacked *)obj; | |
1035 | if (self->size != size) return 0; | |
1036 | memcpy(ptr, self->pack, size); | |
1037 | return self->desc; | |
1038 | } | |
1039 | ||
1040 | SWIGRUNTIMEINLINE const char * | |
1041 | PySwigPacked_GetDesc(PyObject *self) | |
1042 | { | |
1043 | return ((PySwigPacked *)self)->desc; | |
1044 | } | |
1045 | ||
1046 | SWIGRUNTIMEINLINE int | |
1047 | PySwigPacked_Check(PyObject *op) { | |
1048 | return ((op)->ob_type == PySwigPacked_type()) | |
1049 | || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0); | |
1050 | } | |
1051 | ||
1052 | #else | |
1053 | /* ----------------------------------------------------------------------------- | |
1054 | * Use the old Python PyCObject instead of PySwigObject | |
1055 | * ----------------------------------------------------------------------------- */ | |
1056 | ||
1057 | #define PySwigObject_GetDesc(obj) PyCObject_GetDesc(obj) | |
1058 | #define PySwigObject_Check(obj) PyCObject_Check(obj) | |
1059 | #define PySwigObject_AsVoidPtr(obj) PyCObject_AsVoidPtr(obj) | |
1060 | #define PySwigObject_FromVoidPtrAndDesc(p, d) PyCObject_FromVoidPtrAndDesc(p, d, NULL) | |
1061 | ||
1062 | #endif | |
1063 | ||
1064 | #endif | |
1065 | ||
1066 | /* ----------------------------------------------------------------------------- | |
1067 | * errors manipulation | |
1068 | * ----------------------------------------------------------------------------- */ | |
1069 | ||
1070 | SWIGRUNTIME void | |
1071 | SWIG_Python_TypeError(const char *type, PyObject *obj) | |
1072 | { | |
1073 | if (type) { | |
1074 | #if defined(SWIG_COBJECT_TYPES) | |
1075 | if (obj && PySwigObject_Check(obj)) { | |
1076 | const char *otype = (const char *) PySwigObject_GetDesc(obj); | |
1077 | if (otype) { | |
1078 | PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received", | |
1079 | type, otype); | |
1080 | return; | |
1081 | } | |
1082 | } else | |
1083 | #endif | |
1084 | { | |
1085 | const char *otype = (obj ? obj->ob_type->tp_name : 0); | |
1086 | if (otype) { | |
1087 | PyObject *str = PyObject_Str(obj); | |
1088 | const char *cstr = str ? PyString_AsString(str) : 0; | |
1089 | if (cstr) { | |
1090 | PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", | |
1091 | type, otype, cstr); | |
1092 | } else { | |
1093 | PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", | |
1094 | type, otype); | |
1095 | } | |
1096 | Py_XDECREF(str); | |
1097 | return; | |
1098 | } | |
1099 | } | |
1100 | PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); | |
1101 | } else { | |
1102 | PyErr_Format(PyExc_TypeError, "unexpected type is received"); | |
1103 | } | |
1104 | } | |
1105 | ||
1106 | SWIGRUNTIMEINLINE void | |
1107 | SWIG_Python_NullRef(const char *type) | |
1108 | { | |
1109 | if (type) { | |
1110 | PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type); | |
1111 | } else { | |
1112 | PyErr_Format(PyExc_TypeError, "null reference was received"); | |
1113 | } | |
1114 | } | |
1115 | ||
1116 | SWIGRUNTIME int | |
1117 | SWIG_Python_AddErrMesg(const char* mesg, int infront) | |
1118 | { | |
1119 | if (PyErr_Occurred()) { | |
1120 | PyObject *type = 0; | |
1121 | PyObject *value = 0; | |
1122 | PyObject *traceback = 0; | |
1123 | PyErr_Fetch(&type, &value, &traceback); | |
1124 | if (value) { | |
1125 | PyObject *old_str = PyObject_Str(value); | |
1126 | Py_XINCREF(type); | |
1127 | PyErr_Clear(); | |
1128 | if (infront) { | |
1129 | PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str)); | |
1130 | } else { | |
1131 | PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg); | |
1132 | } | |
1133 | Py_DECREF(old_str); | |
1134 | } | |
1135 | return 1; | |
1136 | } else { | |
1137 | return 0; | |
1138 | } | |
1139 | } | |
1140 | ||
1141 | SWIGRUNTIME int | |
1142 | SWIG_Python_ArgFail(int argnum) | |
1143 | { | |
1144 | if (PyErr_Occurred()) { | |
1145 | /* add information about failing argument */ | |
1146 | char mesg[256]; | |
1147 | PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); | |
1148 | return SWIG_Python_AddErrMesg(mesg, 1); | |
1149 | } else { | |
1150 | return 0; | |
1151 | } | |
1152 | } | |
1153 | ||
1154 | ||
1155 | /* ----------------------------------------------------------------------------- | |
1156 | * pointers/data manipulation | |
1157 | * ----------------------------------------------------------------------------- */ | |
1158 | ||
1159 | /* Convert a pointer value */ | |
1160 | SWIGRUNTIME int | |
1161 | SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) { | |
1162 | swig_cast_info *tc; | |
1163 | const char *c = 0; | |
1164 | static PyObject *SWIG_this = 0; | |
1165 | int newref = 0; | |
1166 | PyObject *pyobj = 0; | |
1167 | void *vptr; | |
1168 | ||
1169 | if (!obj) return 0; | |
1170 | if (obj == Py_None) { | |
1171 | *ptr = 0; | |
1172 | return 0; | |
1173 | } | |
1174 | ||
1175 | #ifdef SWIG_COBJECT_TYPES | |
1176 | if (!(PySwigObject_Check(obj))) { | |
1177 | if (!SWIG_this) | |
1178 | SWIG_this = PyString_FromString("this"); | |
1179 | pyobj = obj; | |
1180 | obj = PyObject_GetAttr(obj,SWIG_this); | |
1181 | newref = 1; | |
1182 | if (!obj) goto type_error; | |
1183 | if (!PySwigObject_Check(obj)) { | |
1184 | Py_DECREF(obj); | |
1185 | goto type_error; | |
1186 | } | |
1187 | } | |
1188 | vptr = PySwigObject_AsVoidPtr(obj); | |
1189 | c = (const char *) PySwigObject_GetDesc(obj); | |
1190 | if (newref) { Py_DECREF(obj); } | |
1191 | goto type_check; | |
1192 | #else | |
1193 | if (!(PyString_Check(obj))) { | |
1194 | if (!SWIG_this) | |
1195 | SWIG_this = PyString_FromString("this"); | |
1196 | pyobj = obj; | |
1197 | obj = PyObject_GetAttr(obj,SWIG_this); | |
1198 | newref = 1; | |
1199 | if (!obj) goto type_error; | |
1200 | if (!PyString_Check(obj)) { | |
1201 | Py_DECREF(obj); | |
1202 | goto type_error; | |
1203 | } | |
1204 | } | |
1205 | c = PyString_AsString(obj); | |
1206 | /* Pointer values must start with leading underscore */ | |
1207 | c = SWIG_UnpackVoidPtr(c, &vptr, ty->name); | |
1208 | if (newref) { Py_DECREF(obj); } | |
1209 | if (!c) goto type_error; | |
1210 | #endif | |
1211 | ||
1212 | type_check: | |
1213 | if (ty) { | |
1214 | tc = SWIG_TypeCheck(c,ty); | |
1215 | if (!tc) goto type_error; | |
1216 | *ptr = SWIG_TypeCast(tc,vptr); | |
1217 | } else { | |
1218 | *ptr = vptr; | |
1219 | } | |
1220 | if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) { | |
1221 | PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False); | |
1222 | } | |
1223 | return 0; | |
1224 | ||
1225 | type_error: | |
1226 | PyErr_Clear(); | |
1227 | if (pyobj && !obj) { | |
1228 | obj = pyobj; | |
1229 | if (PyCFunction_Check(obj)) { | |
1230 | /* here we get the method pointer for callbacks */ | |
1231 | char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); | |
1232 | c = doc ? strstr(doc, "swig_ptr: ") : 0; | |
1233 | if (c) { | |
1234 | c = ty ? SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name) : 0; | |
1235 | if (!c) goto type_error; | |
1236 | goto type_check; | |
1237 | } | |
1238 | } | |
1239 | } | |
1240 | if (flags & SWIG_POINTER_EXCEPTION) { | |
1241 | if (ty) { | |
1242 | SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); | |
1243 | } else { | |
1244 | SWIG_Python_TypeError("C/C++ pointer", obj); | |
1245 | } | |
1246 | } | |
1247 | return -1; | |
1248 | } | |
1249 | ||
1250 | /* Convert a pointer value, signal an exception on a type mismatch */ | |
1251 | SWIGRUNTIME void * | |
1252 | SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) { | |
1253 | void *result; | |
1254 | if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { | |
1255 | PyErr_Clear(); | |
1256 | if (flags & SWIG_POINTER_EXCEPTION) { | |
1257 | SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); | |
1258 | SWIG_Python_ArgFail(argnum); | |
1259 | } | |
1260 | } | |
1261 | return result; | |
1262 | } | |
1263 | ||
1264 | /* Convert a packed value value */ | |
1265 | SWIGRUNTIME int | |
1266 | SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) { | |
1267 | swig_cast_info *tc; | |
1268 | const char *c = 0; | |
1269 | ||
1270 | #if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON) | |
1271 | c = PySwigPacked_UnpackData(obj, ptr, sz); | |
1272 | #else | |
1273 | if ((!obj) || (!PyString_Check(obj))) goto type_error; | |
1274 | c = PyString_AsString(obj); | |
1275 | /* Pointer values must start with leading underscore */ | |
1276 | c = SWIG_UnpackDataName(c, ptr, sz, ty->name); | |
1277 | #endif | |
1278 | if (!c) goto type_error; | |
1279 | if (ty) { | |
1280 | tc = SWIG_TypeCheck(c,ty); | |
1281 | if (!tc) goto type_error; | |
1282 | } | |
1283 | return 0; | |
1284 | ||
1285 | type_error: | |
1286 | PyErr_Clear(); | |
1287 | if (flags & SWIG_POINTER_EXCEPTION) { | |
1288 | if (ty) { | |
1289 | SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); | |
1290 | } else { | |
1291 | SWIG_Python_TypeError("C/C++ packed data", obj); | |
1292 | } | |
1293 | } | |
1294 | return -1; | |
1295 | } | |
1296 | ||
1297 | /* Create a new array object */ | |
1298 | SWIGRUNTIME PyObject * | |
1299 | SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) { | |
1300 | PyObject *robj = 0; | |
1301 | if (!type) { | |
1302 | if (!PyErr_Occurred()) { | |
1303 | PyErr_Forma |