1899
|
1 /* -----------------------------------------------------------------------------
|
|
2 * swigrun.swg
|
|
3 *
|
|
4 * This file contains generic C API SWIG runtime support for pointer
|
|
5 * type checking.
|
|
6 * ----------------------------------------------------------------------------- */
|
|
7
|
|
8 /* This should only be incremented when either the layout of swig_type_info changes,
|
|
9 or for whatever reason, the runtime changes incompatibly */
|
|
10 #define SWIG_RUNTIME_VERSION "4"
|
|
11
|
|
12 /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
|
|
13 #ifdef SWIG_TYPE_TABLE
|
|
14 # define SWIG_QUOTE_STRING(x) #x
|
|
15 # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
|
|
16 # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
|
|
17 #else
|
|
18 # define SWIG_TYPE_TABLE_NAME
|
|
19 #endif
|
|
20
|
|
21 /*
|
|
22 You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
|
|
23 creating a static or dynamic library from the SWIG runtime code.
|
|
24 In 99.9% of the cases, SWIG just needs to declare them as 'static'.
|
|
25
|
|
26 But only do this if strictly necessary, ie, if you have problems
|
|
27 with your compiler or suchlike.
|
|
28 */
|
|
29
|
|
30 #ifndef SWIGRUNTIME
|
|
31 # define SWIGRUNTIME SWIGINTERN
|
|
32 #endif
|
|
33
|
|
34 #ifndef SWIGRUNTIMEINLINE
|
|
35 # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
|
|
36 #endif
|
|
37
|
|
38 /* Generic buffer size */
|
|
39 #ifndef SWIG_BUFFER_SIZE
|
|
40 # define SWIG_BUFFER_SIZE 1024
|
|
41 #endif
|
|
42
|
|
43 /* Flags for pointer conversions */
|
|
44 #define SWIG_POINTER_DISOWN 0x1
|
|
45 #define SWIG_CAST_NEW_MEMORY 0x2
|
|
46
|
|
47 /* Flags for new pointer objects */
|
|
48 #define SWIG_POINTER_OWN 0x1
|
|
49
|
|
50
|
|
51 /*
|
|
52 Flags/methods for returning states.
|
|
53
|
|
54 The SWIG conversion methods, as ConvertPtr, return an integer
|
|
55 that tells if the conversion was successful or not. And if not,
|
|
56 an error code can be returned (see swigerrors.swg for the codes).
|
|
57
|
|
58 Use the following macros/flags to set or process the returning
|
|
59 states.
|
|
60
|
|
61 In old versions of SWIG, code such as the following was usually written:
|
|
62
|
|
63 if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
|
|
64 // success code
|
|
65 } else {
|
|
66 //fail code
|
|
67 }
|
|
68
|
|
69 Now you can be more explicit:
|
|
70
|
|
71 int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
|
|
72 if (SWIG_IsOK(res)) {
|
|
73 // success code
|
|
74 } else {
|
|
75 // fail code
|
|
76 }
|
|
77
|
|
78 which is the same really, but now you can also do
|
|
79
|
|
80 Type *ptr;
|
|
81 int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
|
|
82 if (SWIG_IsOK(res)) {
|
|
83 // success code
|
|
84 if (SWIG_IsNewObj(res) {
|
|
85 ...
|
|
86 delete *ptr;
|
|
87 } else {
|
|
88 ...
|
|
89 }
|
|
90 } else {
|
|
91 // fail code
|
|
92 }
|
|
93
|
|
94 I.e., now SWIG_ConvertPtr can return new objects and you can
|
|
95 identify the case and take care of the deallocation. Of course that
|
|
96 also requires SWIG_ConvertPtr to return new result values, such as
|
|
97
|
|
98 int SWIG_ConvertPtr(obj, ptr,...) {
|
|
99 if (<obj is ok>) {
|
|
100 if (<need new object>) {
|
|
101 *ptr = <ptr to new allocated object>;
|
|
102 return SWIG_NEWOBJ;
|
|
103 } else {
|
|
104 *ptr = <ptr to old object>;
|
|
105 return SWIG_OLDOBJ;
|
|
106 }
|
|
107 } else {
|
|
108 return SWIG_BADOBJ;
|
|
109 }
|
|
110 }
|
|
111
|
|
112 Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
|
|
113 more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
|
|
114 SWIG errors code.
|
|
115
|
|
116 Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
|
|
117 allows to return the 'cast rank', for example, if you have this
|
|
118
|
|
119 int food(double)
|
|
120 int fooi(int);
|
|
121
|
|
122 and you call
|
|
123
|
|
124 food(1) // cast rank '1' (1 -> 1.0)
|
|
125 fooi(1) // cast rank '0'
|
|
126
|
|
127 just use the SWIG_AddCast()/SWIG_CheckState()
|
|
128 */
|
|
129
|
|
130 #define SWIG_OK (0)
|
|
131 #define SWIG_ERROR (-1)
|
|
132 #define SWIG_IsOK(r) (r >= 0)
|
|
133 #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
|
|
134
|
|
135 /* The CastRankLimit says how many bits are used for the cast rank */
|
|
136 #define SWIG_CASTRANKLIMIT (1 << 8)
|
|
137 /* The NewMask denotes the object was created (using new/malloc) */
|
|
138 #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1)
|
|
139 /* The TmpMask is for in/out typemaps that use temporal objects */
|
|
140 #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1)
|
|
141 /* Simple returning values */
|
|
142 #define SWIG_BADOBJ (SWIG_ERROR)
|
|
143 #define SWIG_OLDOBJ (SWIG_OK)
|
|
144 #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
|
|
145 #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
|
|
146 /* Check, add and del mask methods */
|
|
147 #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
|
|
148 #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
|
|
149 #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
|
|
150 #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
|
|
151 #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
|
|
152 #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
|
|
153
|
|
154 /* Cast-Rank Mode */
|
|
155 #if defined(SWIG_CASTRANK_MODE)
|
|
156 # ifndef SWIG_TypeRank
|
|
157 # define SWIG_TypeRank unsigned long
|
|
158 # endif
|
|
159 # ifndef SWIG_MAXCASTRANK /* Default cast allowed */
|
|
160 # define SWIG_MAXCASTRANK (2)
|
|
161 # endif
|
|
162 # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
|
|
163 # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
|
|
164 SWIGINTERNINLINE int SWIG_AddCast(int r) {
|
|
165 return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
|
|
166 }
|
|
167 SWIGINTERNINLINE int SWIG_CheckState(int r) {
|
|
168 return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
|
|
169 }
|
|
170 #else /* no cast-rank mode */
|
|
171 # define SWIG_AddCast(r) (r)
|
|
172 # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
|
|
173 #endif
|
|
174
|
|
175
|
|
176 #include <string.h>
|
|
177
|
|
178 #ifdef __cplusplus
|
|
179 extern "C" {
|
|
180 #endif
|
|
181
|
|
182 typedef void *(*swig_converter_func)(void *, int *);
|
|
183 typedef struct swig_type_info *(*swig_dycast_func)(void **);
|
|
184
|
|
185 /* Structure to store information on one type */
|
|
186 typedef struct swig_type_info {
|
|
187 const char *name; /* mangled name of this type */
|
|
188 const char *str; /* human readable name of this type */
|
|
189 swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
|
|
190 struct swig_cast_info *cast; /* linked list of types that can cast into this type */
|
|
191 void *clientdata; /* language specific type data */
|
|
192 int owndata; /* flag if the structure owns the clientdata */
|
|
193 } swig_type_info;
|
|
194
|
|
195 /* Structure to store a type and conversion function used for casting */
|
|
196 typedef struct swig_cast_info {
|
|
197 swig_type_info *type; /* pointer to type that is equivalent to this type */
|
|
198 swig_converter_func converter; /* function to cast the void pointers */
|
|
199 struct swig_cast_info *next; /* pointer to next cast in linked list */
|
|
200 struct swig_cast_info *prev; /* pointer to the previous cast */
|
|
201 } swig_cast_info;
|
|
202
|
|
203 /* Structure used to store module information
|
|
204 * Each module generates one structure like this, and the runtime collects
|
|
205 * all of these structures and stores them in a circularly linked list.*/
|
|
206 typedef struct swig_module_info {
|
|
207 swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
|
|
208 size_t size; /* Number of types in this module */
|
|
209 struct swig_module_info *next; /* Pointer to next element in circularly linked list */
|
|
210 swig_type_info **type_initial; /* Array of initially generated type structures */
|
|
211 swig_cast_info **cast_initial; /* Array of initially generated casting structures */
|
|
212 void *clientdata; /* Language specific module data */
|
|
213 } swig_module_info;
|
|
214
|
|
215 /*
|
|
216 Compare two type names skipping the space characters, therefore
|
|
217 "char*" == "char *" and "Class<int>" == "Class<int >", etc.
|
|
218
|
|
219 Return 0 when the two name types are equivalent, as in
|
|
220 strncmp, but skipping ' '.
|
|
221 */
|
|
222 SWIGRUNTIME int
|
|
223 SWIG_TypeNameComp(const char *f1, const char *l1,
|
|
224 const char *f2, const char *l2) {
|
|
225 for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
|
|
226 while ((*f1 == ' ') && (f1 != l1)) ++f1;
|
|
227 while ((*f2 == ' ') && (f2 != l2)) ++f2;
|
|
228 if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
|
|
229 }
|
|
230 return (int)((l1 - f1) - (l2 - f2));
|
|
231 }
|
|
232
|
|
233 /*
|
|
234 Check type equivalence in a name list like <name1>|<name2>|...
|
|
235 Return 0 if equal, -1 if nb < tb, 1 if nb > tb
|
|
236 */
|
|
237 SWIGRUNTIME int
|
|
238 SWIG_TypeCmp(const char *nb, const char *tb) {
|
|
239 int equiv = 1;
|
|
240 const char* te = tb + strlen(tb);
|
|
241 const char* ne = nb;
|
|
242 while (equiv != 0 && *ne) {
|
|
243 for (nb = ne; *ne; ++ne) {
|
|
244 if (*ne == '|') break;
|
|
245 }
|
|
246 equiv = SWIG_TypeNameComp(nb, ne, tb, te);
|
|
247 if (*ne) ++ne;
|
|
248 }
|
|
249 return equiv;
|
|
250 }
|
|
251
|
|
252 /*
|
|
253 Check type equivalence in a name list like <name1>|<name2>|...
|
|
254 Return 0 if not equal, 1 if equal
|
|
255 */
|
|
256 SWIGRUNTIME int
|
|
257 SWIG_TypeEquiv(const char *nb, const char *tb) {
|
|
258 return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
|
|
259 }
|
|
260
|
|
261 /*
|
|
262 Check the typename
|
|
263 */
|
|
264 SWIGRUNTIME swig_cast_info *
|
|
265 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
|
|
266 if (ty) {
|
|
267 swig_cast_info *iter = ty->cast;
|
|
268 while (iter) {
|
|
269 if (strcmp(iter->type->name, c) == 0) {
|
|
270 if (iter == ty->cast)
|
|
271 return iter;
|
|
272 /* Move iter to the top of the linked list */
|
|
273 iter->prev->next = iter->next;
|
|
274 if (iter->next)
|
|
275 iter->next->prev = iter->prev;
|
|
276 iter->next = ty->cast;
|
|
277 iter->prev = 0;
|
|
278 if (ty->cast) ty->cast->prev = iter;
|
|
279 ty->cast = iter;
|
|
280 return iter;
|
|
281 }
|
|
282 iter = iter->next;
|
|
283 }
|
|
284 }
|
|
285 return 0;
|
|
286 }
|
|
287
|
|
288 /*
|
|
289 Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
|
|
290 */
|
|
291 SWIGRUNTIME swig_cast_info *
|
|
292 SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
|
|
293 if (ty) {
|
|
294 swig_cast_info *iter = ty->cast;
|
|
295 while (iter) {
|
|
296 if (iter->type == from) {
|
|
297 if (iter == ty->cast)
|
|
298 return iter;
|
|
299 /* Move iter to the top of the linked list */
|
|
300 iter->prev->next = iter->next;
|
|
301 if (iter->next)
|
|
302 iter->next->prev = iter->prev;
|
|
303 iter->next = ty->cast;
|
|
304 iter->prev = 0;
|
|
305 if (ty->cast) ty->cast->prev = iter;
|
|
306 ty->cast = iter;
|
|
307 return iter;
|
|
308 }
|
|
309 iter = iter->next;
|
|
310 }
|
|
311 }
|
|
312 return 0;
|
|
313 }
|
|
314
|
|
315 /*
|
|
316 Cast a pointer up an inheritance hierarchy
|
|
317 */
|
|
318 SWIGRUNTIMEINLINE void *
|
|
319 SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
|
|
320 return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
|
|
321 }
|
|
322
|
|
323 /*
|
|
324 Dynamic pointer casting. Down an inheritance hierarchy
|
|
325 */
|
|
326 SWIGRUNTIME swig_type_info *
|
|
327 SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
|
|
328 swig_type_info *lastty = ty;
|
|
329 if (!ty || !ty->dcast) return ty;
|
|
330 while (ty && (ty->dcast)) {
|
|
331 ty = (*ty->dcast)(ptr);
|
|
332 if (ty) lastty = ty;
|
|
333 }
|
|
334 return lastty;
|
|
335 }
|
|
336
|
|
337 /*
|
|
338 Return the name associated with this type
|
|
339 */
|
|
340 SWIGRUNTIMEINLINE const char *
|
|
341 SWIG_TypeName(const swig_type_info *ty) {
|
|
342 return ty->name;
|
|
343 }
|
|
344
|
|
345 /*
|
|
346 Return the pretty name associated with this type,
|
|
347 that is an unmangled type name in a form presentable to the user.
|
|
348 */
|
|
349 SWIGRUNTIME const char *
|
|
350 SWIG_TypePrettyName(const swig_type_info *type) {
|
|
351 /* The "str" field contains the equivalent pretty names of the
|
|
352 type, separated by vertical-bar characters. We choose
|
|
353 to print the last name, as it is often (?) the most
|
|
354 specific. */
|
|
355 if (!type) return NULL;
|
|
356 if (type->str != NULL) {
|
|
357 const char *last_name = type->str;
|
|
358 const char *s;
|
|
359 for (s = type->str; *s; s++)
|
|
360 if (*s == '|') last_name = s+1;
|
|
361 return last_name;
|
|
362 }
|
|
363 else
|
|
364 return type->name;
|
|
365 }
|
|
366
|
|
367 /*
|
|
368 Set the clientdata field for a type
|
|
369 */
|
|
370 SWIGRUNTIME void
|
|
371 SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
|
|
372 swig_cast_info *cast = ti->cast;
|
|
373 /* if (ti->clientdata == clientdata) return; */
|
|
374 ti->clientdata = clientdata;
|
|
375
|
|
376 while (cast) {
|
|
377 if (!cast->converter) {
|
|
378 swig_type_info *tc = cast->type;
|
|
379 if (!tc->clientdata) {
|
|
380 SWIG_TypeClientData(tc, clientdata);
|
|
381 }
|
|
382 }
|
|
383 cast = cast->next;
|
|
384 }
|
|
385 }
|
|
386 SWIGRUNTIME void
|
|
387 SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
|
|
388 SWIG_TypeClientData(ti, clientdata);
|
|
389 ti->owndata = 1;
|
|
390 }
|
|
391
|
|
392 /*
|
|
393 Search for a swig_type_info structure only by mangled name
|
|
394 Search is a O(log #types)
|
|
395
|
|
396 We start searching at module start, and finish searching when start == end.
|
|
397 Note: if start == end at the beginning of the function, we go all the way around
|
|
398 the circular list.
|
|
399 */
|
|
400 SWIGRUNTIME swig_type_info *
|
|
401 SWIG_MangledTypeQueryModule(swig_module_info *start,
|
|
402 swig_module_info *end,
|
|
403 const char *name) {
|
|
404 swig_module_info *iter = start;
|
|
405 do {
|
|
406 if (iter->size) {
|
|
407 register size_t l = 0;
|
|
408 register size_t r = iter->size - 1;
|
|
409 do {
|
|
410 /* since l+r >= 0, we can (>> 1) instead (/ 2) */
|
|
411 register size_t i = (l + r) >> 1;
|
|
412 const char *iname = iter->types[i]->name;
|
|
413 if (iname) {
|
|
414 register int compare = strcmp(name, iname);
|
|
415 if (compare == 0) {
|
|
416 return iter->types[i];
|
|
417 } else if (compare < 0) {
|
|
418 if (i) {
|
|
419 r = i - 1;
|
|
420 } else {
|
|
421 break;
|
|
422 }
|
|
423 } else if (compare > 0) {
|
|
424 l = i + 1;
|
|
425 }
|
|
426 } else {
|
|
427 break; /* should never happen */
|
|
428 }
|
|
429 } while (l <= r);
|
|
430 }
|
|
431 iter = iter->next;
|
|
432 } while (iter != end);
|
|
433 return 0;
|
|
434 }
|
|
435
|
|
436 /*
|
|
437 Search for a swig_type_info structure for either a mangled name or a human readable name.
|
|
438 It first searches the mangled names of the types, which is a O(log #types)
|
|
439 If a type is not found it then searches the human readable names, which is O(#types).
|
|
440
|
|
441 We start searching at module start, and finish searching when start == end.
|
|
442 Note: if start == end at the beginning of the function, we go all the way around
|
|
443 the circular list.
|
|
444 */
|
|
445 SWIGRUNTIME swig_type_info *
|
|
446 SWIG_TypeQueryModule(swig_module_info *start,
|
|
447 swig_module_info *end,
|
|
448 const char *name) {
|
|
449 /* STEP 1: Search the name field using binary search */
|
|
450 swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
|
|
451 if (ret) {
|
|
452 return ret;
|
|
453 } else {
|
|
454 /* STEP 2: If the type hasn't been found, do a complete search
|
|
455 of the str field (the human readable name) */
|
|
456 swig_module_info *iter = start;
|
|
457 do {
|
|
458 register size_t i = 0;
|
|
459 for (; i < iter->size; ++i) {
|
|
460 if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
|
|
461 return iter->types[i];
|
|
462 }
|
|
463 iter = iter->next;
|
|
464 } while (iter != end);
|
|
465 }
|
|
466
|
|
467 /* neither found a match */
|
|
468 return 0;
|
|
469 }
|
|
470
|
|
471 /*
|
|
472 Pack binary data into a string
|
|
473 */
|
|
474 SWIGRUNTIME char *
|
|
475 SWIG_PackData(char *c, void *ptr, size_t sz) {
|
|
476 static const char hex[17] = "0123456789abcdef";
|
|
477 register const unsigned char *u = (unsigned char *) ptr;
|
|
478 register const unsigned char *eu = u + sz;
|
|
479 for (; u != eu; ++u) {
|
|
480 register unsigned char uu = *u;
|
|
481 *(c++) = hex[(uu & 0xf0) >> 4];
|
|
482 *(c++) = hex[uu & 0xf];
|
|
483 }
|
|
484 return c;
|
|
485 }
|
|
486
|
|
487 /*
|
|
488 Unpack binary data from a string
|
|
489 */
|
|
490 SWIGRUNTIME const char *
|
|
491 SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
|
|
492 register unsigned char *u = (unsigned char *) ptr;
|
|
493 register const unsigned char *eu = u + sz;
|
|
494 for (; u != eu; ++u) {
|
|
495 register char d = *(c++);
|
|
496 register unsigned char uu;
|
|
497 if ((d >= '0') && (d <= '9'))
|
|
498 uu = ((d - '0') << 4);
|
|
499 else if ((d >= 'a') && (d <= 'f'))
|
|
500 uu = ((d - ('a'-10)) << 4);
|
|
501 else
|
|
502 return (char *) 0;
|
|
503 d = *(c++);
|
|
504 if ((d >= '0') && (d <= '9'))
|
|
505 uu |= (d - '0');
|
|
506 else if ((d >= 'a') && (d <= 'f'))
|
|
507 uu |= (d - ('a'-10));
|
|
508 else
|
|
509 return (char *) 0;
|
|
510 *u = uu;
|
|
511 }
|
|
512 return c;
|
|
513 }
|
|
514
|
|
515 /*
|
|
516 Pack 'void *' into a string buffer.
|
|
517 */
|
|
518 SWIGRUNTIME char *
|
|
519 SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
|
|
520 char *r = buff;
|
|
521 if ((2*sizeof(void *) + 2) > bsz) return 0;
|
|
522 *(r++) = '_';
|
|
523 r = SWIG_PackData(r,&ptr,sizeof(void *));
|
|
524 if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
|
|
525 strcpy(r,name);
|
|
526 return buff;
|
|
527 }
|
|
528
|
|
529 SWIGRUNTIME const char *
|
|
530 SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
|
|
531 if (*c != '_') {
|
|
532 if (strcmp(c,"NULL") == 0) {
|
|
533 *ptr = (void *) 0;
|
|
534 return name;
|
|
535 } else {
|
|
536 return 0;
|
|
537 }
|
|
538 }
|
|
539 return SWIG_UnpackData(++c,ptr,sizeof(void *));
|
|
540 }
|
|
541
|
|
542 SWIGRUNTIME char *
|
|
543 SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
|
|
544 char *r = buff;
|
|
545 size_t lname = (name ? strlen(name) : 0);
|
|
546 if ((2*sz + 2 + lname) > bsz) return 0;
|
|
547 *(r++) = '_';
|
|
548 r = SWIG_PackData(r,ptr,sz);
|
|
549 if (lname) {
|
|
550 strncpy(r,name,lname+1);
|
|
551 } else {
|
|
552 *r = 0;
|
|
553 }
|
|
554 return buff;
|
|
555 }
|
|
556
|
|
557 SWIGRUNTIME const char *
|
|
558 SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
|
|
559 if (*c != '_') {
|
|
560 if (strcmp(c,"NULL") == 0) {
|
|
561 memset(ptr,0,sz);
|
|
562 return name;
|
|
563 } else {
|
|
564 return 0;
|
|
565 }
|
|
566 }
|
|
567 return SWIG_UnpackData(++c,ptr,sz);
|
|
568 }
|
|
569
|
|
570 #ifdef __cplusplus
|
|
571 }
|
|
572 #endif
|