comparison GUI/NewUI/Core/UIControlModule_wrap.cxx @ 2501:0ff6a9e9bf7f

GUI folger
author Ritor1
date Fri, 19 Sep 2014 04:21:12 +0600
parents
children
comparison
equal deleted inserted replaced
2500:952025b157aa 2501:0ff6a9e9bf7f
1 /* ----------------------------------------------------------------------------
2 * This file was automatically generated by SWIG (http://www.swig.org).
3 * Version 2.0.11
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 SWIGLUA
12 #define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_LUA
13 #define SWIG_LUA_MODULE_GLOBAL
14
15
16 #ifdef __cplusplus
17 /* SwigValueWrapper is described in swig.swg */
18 template<typename T> class SwigValueWrapper {
19 struct SwigMovePointer {
20 T *ptr;
21 SwigMovePointer(T *p) : ptr(p) { }
22 ~SwigMovePointer() { delete ptr; }
23 SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
24 } pointer;
25 SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
26 SwigValueWrapper(const SwigValueWrapper<T>& rhs);
27 public:
28 SwigValueWrapper() : pointer(0) { }
29 SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
30 operator T&() const { return *pointer.ptr; }
31 T *operator&() { return pointer.ptr; }
32 };
33
34 template <typename T> T SwigValueInit() {
35 return T();
36 }
37 #endif
38
39 /* -----------------------------------------------------------------------------
40 * This section contains generic SWIG labels for method/variable
41 * declarations/attributes, and other compiler dependent labels.
42 * ----------------------------------------------------------------------------- */
43
44 /* template workaround for compilers that cannot correctly implement the C++ standard */
45 #ifndef SWIGTEMPLATEDISAMBIGUATOR
46 # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
47 # define SWIGTEMPLATEDISAMBIGUATOR template
48 # elif defined(__HP_aCC)
49 /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
50 /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
51 # define SWIGTEMPLATEDISAMBIGUATOR template
52 # else
53 # define SWIGTEMPLATEDISAMBIGUATOR
54 # endif
55 #endif
56
57 /* inline attribute */
58 #ifndef SWIGINLINE
59 # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
60 # define SWIGINLINE inline
61 # else
62 # define SWIGINLINE
63 # endif
64 #endif
65
66 /* attribute recognised by some compilers to avoid 'unused' warnings */
67 #ifndef SWIGUNUSED
68 # if defined(__GNUC__)
69 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
70 # define SWIGUNUSED __attribute__ ((__unused__))
71 # else
72 # define SWIGUNUSED
73 # endif
74 # elif defined(__ICC)
75 # define SWIGUNUSED __attribute__ ((__unused__))
76 # else
77 # define SWIGUNUSED
78 # endif
79 #endif
80
81 #ifndef SWIG_MSC_UNSUPPRESS_4505
82 # if defined(_MSC_VER)
83 # pragma warning(disable : 4505) /* unreferenced local function has been removed */
84 # endif
85 #endif
86
87 #ifndef SWIGUNUSEDPARM
88 # ifdef __cplusplus
89 # define SWIGUNUSEDPARM(p)
90 # else
91 # define SWIGUNUSEDPARM(p) p SWIGUNUSED
92 # endif
93 #endif
94
95 /* internal SWIG method */
96 #ifndef SWIGINTERN
97 # define SWIGINTERN static SWIGUNUSED
98 #endif
99
100 /* internal inline SWIG method */
101 #ifndef SWIGINTERNINLINE
102 # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
103 #endif
104
105 /* exporting methods */
106 #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
107 # ifndef GCC_HASCLASSVISIBILITY
108 # define GCC_HASCLASSVISIBILITY
109 # endif
110 #endif
111
112 #ifndef SWIGEXPORT
113 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
114 # if defined(STATIC_LINKED)
115 # define SWIGEXPORT
116 # else
117 # define SWIGEXPORT __declspec(dllexport)
118 # endif
119 # else
120 # if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
121 # define SWIGEXPORT __attribute__ ((visibility("default")))
122 # else
123 # define SWIGEXPORT
124 # endif
125 # endif
126 #endif
127
128 /* calling conventions for Windows */
129 #ifndef SWIGSTDCALL
130 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
131 # define SWIGSTDCALL __stdcall
132 # else
133 # define SWIGSTDCALL
134 # endif
135 #endif
136
137 /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
138 #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
139 # define _CRT_SECURE_NO_DEPRECATE
140 #endif
141
142 /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
143 #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
144 # define _SCL_SECURE_NO_DEPRECATE
145 #endif
146
147
148 /* -----------------------------------------------------------------------------
149 * swigrun.swg
150 *
151 * This file contains generic C API SWIG runtime support for pointer
152 * type checking.
153 * ----------------------------------------------------------------------------- */
154
155 /* This should only be incremented when either the layout of swig_type_info changes,
156 or for whatever reason, the runtime changes incompatibly */
157 #define SWIG_RUNTIME_VERSION "4"
158
159 /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
160 #ifdef SWIG_TYPE_TABLE
161 # define SWIG_QUOTE_STRING(x) #x
162 # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
163 # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
164 #else
165 # define SWIG_TYPE_TABLE_NAME
166 #endif
167
168 /*
169 You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
170 creating a static or dynamic library from the SWIG runtime code.
171 In 99.9% of the cases, SWIG just needs to declare them as 'static'.
172
173 But only do this if strictly necessary, ie, if you have problems
174 with your compiler or suchlike.
175 */
176
177 #ifndef SWIGRUNTIME
178 # define SWIGRUNTIME SWIGINTERN
179 #endif
180
181 #ifndef SWIGRUNTIMEINLINE
182 # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
183 #endif
184
185 /* Generic buffer size */
186 #ifndef SWIG_BUFFER_SIZE
187 # define SWIG_BUFFER_SIZE 1024
188 #endif
189
190 /* Flags for pointer conversions */
191 #define SWIG_POINTER_DISOWN 0x1
192 #define SWIG_CAST_NEW_MEMORY 0x2
193
194 /* Flags for new pointer objects */
195 #define SWIG_POINTER_OWN 0x1
196
197
198 /*
199 Flags/methods for returning states.
200
201 The SWIG conversion methods, as ConvertPtr, return an integer
202 that tells if the conversion was successful or not. And if not,
203 an error code can be returned (see swigerrors.swg for the codes).
204
205 Use the following macros/flags to set or process the returning
206 states.
207
208 In old versions of SWIG, code such as the following was usually written:
209
210 if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
211 // success code
212 } else {
213 //fail code
214 }
215
216 Now you can be more explicit:
217
218 int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
219 if (SWIG_IsOK(res)) {
220 // success code
221 } else {
222 // fail code
223 }
224
225 which is the same really, but now you can also do
226
227 Type *ptr;
228 int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
229 if (SWIG_IsOK(res)) {
230 // success code
231 if (SWIG_IsNewObj(res) {
232 ...
233 delete *ptr;
234 } else {
235 ...
236 }
237 } else {
238 // fail code
239 }
240
241 I.e., now SWIG_ConvertPtr can return new objects and you can
242 identify the case and take care of the deallocation. Of course that
243 also requires SWIG_ConvertPtr to return new result values, such as
244
245 int SWIG_ConvertPtr(obj, ptr,...) {
246 if (<obj is ok>) {
247 if (<need new object>) {
248 *ptr = <ptr to new allocated object>;
249 return SWIG_NEWOBJ;
250 } else {
251 *ptr = <ptr to old object>;
252 return SWIG_OLDOBJ;
253 }
254 } else {
255 return SWIG_BADOBJ;
256 }
257 }
258
259 Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
260 more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
261 SWIG errors code.
262
263 Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
264 allows to return the 'cast rank', for example, if you have this
265
266 int food(double)
267 int fooi(int);
268
269 and you call
270
271 food(1) // cast rank '1' (1 -> 1.0)
272 fooi(1) // cast rank '0'
273
274 just use the SWIG_AddCast()/SWIG_CheckState()
275 */
276
277 #define SWIG_OK (0)
278 #define SWIG_ERROR (-1)
279 #define SWIG_IsOK(r) (r >= 0)
280 #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
281
282 /* The CastRankLimit says how many bits are used for the cast rank */
283 #define SWIG_CASTRANKLIMIT (1 << 8)
284 /* The NewMask denotes the object was created (using new/malloc) */
285 #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1)
286 /* The TmpMask is for in/out typemaps that use temporal objects */
287 #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1)
288 /* Simple returning values */
289 #define SWIG_BADOBJ (SWIG_ERROR)
290 #define SWIG_OLDOBJ (SWIG_OK)
291 #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
292 #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
293 /* Check, add and del mask methods */
294 #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
295 #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
296 #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
297 #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
298 #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
299 #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
300
301 /* Cast-Rank Mode */
302 #if defined(SWIG_CASTRANK_MODE)
303 # ifndef SWIG_TypeRank
304 # define SWIG_TypeRank unsigned long
305 # endif
306 # ifndef SWIG_MAXCASTRANK /* Default cast allowed */
307 # define SWIG_MAXCASTRANK (2)
308 # endif
309 # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
310 # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
311 SWIGINTERNINLINE int SWIG_AddCast(int r) {
312 return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
313 }
314 SWIGINTERNINLINE int SWIG_CheckState(int r) {
315 return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
316 }
317 #else /* no cast-rank mode */
318 # define SWIG_AddCast(r) (r)
319 # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
320 #endif
321
322
323 #include <string.h>
324
325 #ifdef __cplusplus
326 extern "C" {
327 #endif
328
329 typedef void *(*swig_converter_func)(void *, int *);
330 typedef struct swig_type_info *(*swig_dycast_func)(void **);
331
332 /* Structure to store information on one type */
333 typedef struct swig_type_info {
334 const char *name; /* mangled name of this type */
335 const char *str; /* human readable name of this type */
336 swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
337 struct swig_cast_info *cast; /* linked list of types that can cast into this type */
338 void *clientdata; /* language specific type data */
339 int owndata; /* flag if the structure owns the clientdata */
340 } swig_type_info;
341
342 /* Structure to store a type and conversion function used for casting */
343 typedef struct swig_cast_info {
344 swig_type_info *type; /* pointer to type that is equivalent to this type */
345 swig_converter_func converter; /* function to cast the void pointers */
346 struct swig_cast_info *next; /* pointer to next cast in linked list */
347 struct swig_cast_info *prev; /* pointer to the previous cast */
348 } swig_cast_info;
349
350 /* Structure used to store module information
351 * Each module generates one structure like this, and the runtime collects
352 * all of these structures and stores them in a circularly linked list.*/
353 typedef struct swig_module_info {
354 swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
355 size_t size; /* Number of types in this module */
356 struct swig_module_info *next; /* Pointer to next element in circularly linked list */
357 swig_type_info **type_initial; /* Array of initially generated type structures */
358 swig_cast_info **cast_initial; /* Array of initially generated casting structures */
359 void *clientdata; /* Language specific module data */
360 } swig_module_info;
361
362 /*
363 Compare two type names skipping the space characters, therefore
364 "char*" == "char *" and "Class<int>" == "Class<int >", etc.
365
366 Return 0 when the two name types are equivalent, as in
367 strncmp, but skipping ' '.
368 */
369 SWIGRUNTIME int
370 SWIG_TypeNameComp(const char *f1, const char *l1,
371 const char *f2, const char *l2) {
372 for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
373 while ((*f1 == ' ') && (f1 != l1)) ++f1;
374 while ((*f2 == ' ') && (f2 != l2)) ++f2;
375 if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
376 }
377 return (int)((l1 - f1) - (l2 - f2));
378 }
379
380 /*
381 Check type equivalence in a name list like <name1>|<name2>|...
382 Return 0 if equal, -1 if nb < tb, 1 if nb > tb
383 */
384 SWIGRUNTIME int
385 SWIG_TypeCmp(const char *nb, const char *tb) {
386 int equiv = 1;
387 const char* te = tb + strlen(tb);
388 const char* ne = nb;
389 while (equiv != 0 && *ne) {
390 for (nb = ne; *ne; ++ne) {
391 if (*ne == '|') break;
392 }
393 equiv = SWIG_TypeNameComp(nb, ne, tb, te);
394 if (*ne) ++ne;
395 }
396 return equiv;
397 }
398
399 /*
400 Check type equivalence in a name list like <name1>|<name2>|...
401 Return 0 if not equal, 1 if equal
402 */
403 SWIGRUNTIME int
404 SWIG_TypeEquiv(const char *nb, const char *tb) {
405 return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
406 }
407
408 /*
409 Check the typename
410 */
411 SWIGRUNTIME swig_cast_info *
412 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
413 if (ty) {
414 swig_cast_info *iter = ty->cast;
415 while (iter) {
416 if (strcmp(iter->type->name, c) == 0) {
417 if (iter == ty->cast)
418 return iter;
419 /* Move iter to the top of the linked list */
420 iter->prev->next = iter->next;
421 if (iter->next)
422 iter->next->prev = iter->prev;
423 iter->next = ty->cast;
424 iter->prev = 0;
425 if (ty->cast) ty->cast->prev = iter;
426 ty->cast = iter;
427 return iter;
428 }
429 iter = iter->next;
430 }
431 }
432 return 0;
433 }
434
435 /*
436 Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
437 */
438 SWIGRUNTIME swig_cast_info *
439 SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
440 if (ty) {
441 swig_cast_info *iter = ty->cast;
442 while (iter) {
443 if (iter->type == from) {
444 if (iter == ty->cast)
445 return iter;
446 /* Move iter to the top of the linked list */
447 iter->prev->next = iter->next;
448 if (iter->next)
449 iter->next->prev = iter->prev;
450 iter->next = ty->cast;
451 iter->prev = 0;
452 if (ty->cast) ty->cast->prev = iter;
453 ty->cast = iter;
454 return iter;
455 }
456 iter = iter->next;
457 }
458 }
459 return 0;
460 }
461
462 /*
463 Cast a pointer up an inheritance hierarchy
464 */
465 SWIGRUNTIMEINLINE void *
466 SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
467 return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
468 }
469
470 /*
471 Dynamic pointer casting. Down an inheritance hierarchy
472 */
473 SWIGRUNTIME swig_type_info *
474 SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
475 swig_type_info *lastty = ty;
476 if (!ty || !ty->dcast) return ty;
477 while (ty && (ty->dcast)) {
478 ty = (*ty->dcast)(ptr);
479 if (ty) lastty = ty;
480 }
481 return lastty;
482 }
483
484 /*
485 Return the name associated with this type
486 */
487 SWIGRUNTIMEINLINE const char *
488 SWIG_TypeName(const swig_type_info *ty) {
489 return ty->name;
490 }
491
492 /*
493 Return the pretty name associated with this type,
494 that is an unmangled type name in a form presentable to the user.
495 */
496 SWIGRUNTIME const char *
497 SWIG_TypePrettyName(const swig_type_info *type) {
498 /* The "str" field contains the equivalent pretty names of the
499 type, separated by vertical-bar characters. We choose
500 to print the last name, as it is often (?) the most
501 specific. */
502 if (!type) return NULL;
503 if (type->str != NULL) {
504 const char *last_name = type->str;
505 const char *s;
506 for (s = type->str; *s; s++)
507 if (*s == '|') last_name = s+1;
508 return last_name;
509 }
510 else
511 return type->name;
512 }
513
514 /*
515 Set the clientdata field for a type
516 */
517 SWIGRUNTIME void
518 SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
519 swig_cast_info *cast = ti->cast;
520 /* if (ti->clientdata == clientdata) return; */
521 ti->clientdata = clientdata;
522
523 while (cast) {
524 if (!cast->converter) {
525 swig_type_info *tc = cast->type;
526 if (!tc->clientdata) {
527 SWIG_TypeClientData(tc, clientdata);
528 }
529 }
530 cast = cast->next;
531 }
532 }
533 SWIGRUNTIME void
534 SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
535 SWIG_TypeClientData(ti, clientdata);
536 ti->owndata = 1;
537 }
538
539 /*
540 Search for a swig_type_info structure only by mangled name
541 Search is a O(log #types)
542
543 We start searching at module start, and finish searching when start == end.
544 Note: if start == end at the beginning of the function, we go all the way around
545 the circular list.
546 */
547 SWIGRUNTIME swig_type_info *
548 SWIG_MangledTypeQueryModule(swig_module_info *start,
549 swig_module_info *end,
550 const char *name) {
551 swig_module_info *iter = start;
552 do {
553 if (iter->size) {
554 register size_t l = 0;
555 register size_t r = iter->size - 1;
556 do {
557 /* since l+r >= 0, we can (>> 1) instead (/ 2) */
558 register size_t i = (l + r) >> 1;
559 const char *iname = iter->types[i]->name;
560 if (iname) {
561 register int compare = strcmp(name, iname);
562 if (compare == 0) {
563 return iter->types[i];
564 } else if (compare < 0) {
565 if (i) {
566 r = i - 1;
567 } else {
568 break;
569 }
570 } else if (compare > 0) {
571 l = i + 1;
572 }
573 } else {
574 break; /* should never happen */
575 }
576 } while (l <= r);
577 }
578 iter = iter->next;
579 } while (iter != end);
580 return 0;
581 }
582
583 /*
584 Search for a swig_type_info structure for either a mangled name or a human readable name.
585 It first searches the mangled names of the types, which is a O(log #types)
586 If a type is not found it then searches the human readable names, which is O(#types).
587
588 We start searching at module start, and finish searching when start == end.
589 Note: if start == end at the beginning of the function, we go all the way around
590 the circular list.
591 */
592 SWIGRUNTIME swig_type_info *
593 SWIG_TypeQueryModule(swig_module_info *start,
594 swig_module_info *end,
595 const char *name) {
596 /* STEP 1: Search the name field using binary search */
597 swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
598 if (ret) {
599 return ret;
600 } else {
601 /* STEP 2: If the type hasn't been found, do a complete search
602 of the str field (the human readable name) */
603 swig_module_info *iter = start;
604 do {
605 register size_t i = 0;
606 for (; i < iter->size; ++i) {
607 if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
608 return iter->types[i];
609 }
610 iter = iter->next;
611 } while (iter != end);
612 }
613
614 /* neither found a match */
615 return 0;
616 }
617
618 /*
619 Pack binary data into a string
620 */
621 SWIGRUNTIME char *
622 SWIG_PackData(char *c, void *ptr, size_t sz) {
623 static const char hex[17] = "0123456789abcdef";
624 register const unsigned char *u = (unsigned char *) ptr;
625 register const unsigned char *eu = u + sz;
626 for (; u != eu; ++u) {
627 register unsigned char uu = *u;
628 *(c++) = hex[(uu & 0xf0) >> 4];
629 *(c++) = hex[uu & 0xf];
630 }
631 return c;
632 }
633
634 /*
635 Unpack binary data from a string
636 */
637 SWIGRUNTIME const char *
638 SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
639 register unsigned char *u = (unsigned char *) ptr;
640 register const unsigned char *eu = u + sz;
641 for (; u != eu; ++u) {
642 register char d = *(c++);
643 register unsigned char uu;
644 if ((d >= '0') && (d <= '9'))
645 uu = ((d - '0') << 4);
646 else if ((d >= 'a') && (d <= 'f'))
647 uu = ((d - ('a'-10)) << 4);
648 else
649 return (char *) 0;
650 d = *(c++);
651 if ((d >= '0') && (d <= '9'))
652 uu |= (d - '0');
653 else if ((d >= 'a') && (d <= 'f'))
654 uu |= (d - ('a'-10));
655 else
656 return (char *) 0;
657 *u = uu;
658 }
659 return c;
660 }
661
662 /*
663 Pack 'void *' into a string buffer.
664 */
665 SWIGRUNTIME char *
666 SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
667 char *r = buff;
668 if ((2*sizeof(void *) + 2) > bsz) return 0;
669 *(r++) = '_';
670 r = SWIG_PackData(r,&ptr,sizeof(void *));
671 if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
672 strcpy(r,name);
673 return buff;
674 }
675
676 SWIGRUNTIME const char *
677 SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
678 if (*c != '_') {
679 if (strcmp(c,"NULL") == 0) {
680 *ptr = (void *) 0;
681 return name;
682 } else {
683 return 0;
684 }
685 }
686 return SWIG_UnpackData(++c,ptr,sizeof(void *));
687 }
688
689 SWIGRUNTIME char *
690 SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
691 char *r = buff;
692 size_t lname = (name ? strlen(name) : 0);
693 if ((2*sz + 2 + lname) > bsz) return 0;
694 *(r++) = '_';
695 r = SWIG_PackData(r,ptr,sz);
696 if (lname) {
697 strncpy(r,name,lname+1);
698 } else {
699 *r = 0;
700 }
701 return buff;
702 }
703
704 SWIGRUNTIME const char *
705 SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
706 if (*c != '_') {
707 if (strcmp(c,"NULL") == 0) {
708 memset(ptr,0,sz);
709 return name;
710 } else {
711 return 0;
712 }
713 }
714 return SWIG_UnpackData(++c,ptr,sz);
715 }
716
717 #ifdef __cplusplus
718 }
719 #endif
720
721 /* -----------------------------------------------------------------------------
722 * luarun.swg
723 *
724 * This file contains the runtime support for Lua modules
725 * and includes code for managing global variables and pointer
726 * type checking.
727 * ----------------------------------------------------------------------------- */
728
729 #include "lib/lua/lua.h"
730 #ifdef __cplusplus
731 extern "C" {
732 #endif
733
734 //#include "lua.h"
735 //#include "lauxlib.h"
736 #include <stdlib.h> /* for malloc */
737 #include <assert.h> /* for a few sanity tests */
738
739 /* -----------------------------------------------------------------------------
740 * Lua flavors
741 * ----------------------------------------------------------------------------- */
742
743 #define SWIG_LUA_FLAVOR_LUA 1
744 #define SWIG_LUA_FLAVOR_ELUA 2
745 #define SWIG_LUA_FLAVOR_ELUAC 3
746
747 #if !defined(SWIG_LUA_TARGET)
748 # error SWIG_LUA_TARGET not defined
749 #endif
750
751 #if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
752 # define SWIG_LUA_CONSTTAB_INT(B, C) LSTRKEY(B), LNUMVAL(C)
753 # define SWIG_LUA_CONSTTAB_FLOAT(B, C) LSTRKEY(B), LNUMVAL(C)
754 # define SWIG_LUA_CONSTTAB_STRING(B, C) LSTRKEY(B), LSTRVAL(C)
755 # define SWIG_LUA_CONSTTAB_CHAR(B, C) LSTRKEY(B), LNUMVAL(C)
756 #else /* SWIG_LUA_FLAVOR_LUA */
757 # define SWIG_LUA_CONSTTAB_INT(B, C) SWIG_LUA_INT, (char *)B, (long)C, 0, 0, 0
758 # define SWIG_LUA_CONSTTAB_FLOAT(B, C) SWIG_LUA_FLOAT, (char *)B, 0, (double)C, 0, 0
759 # define SWIG_LUA_CONSTTAB_STRING(B, C) SWIG_LUA_STRING, (char *)B, 0, 0, (void *)C, 0
760 # define SWIG_LUA_CONSTTAB_CHAR(B, C) SWIG_LUA_CHAR, (char *)B, (long)C, 0, 0, 0
761 #endif
762
763 #if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
764 # define LRO_STRVAL(v) {{.p = (char *) v}, LUA_TSTRING}
765 # define LSTRVAL LRO_STRVAL
766 #endif
767
768 /* -----------------------------------------------------------------------------
769 * compatibility defines
770 * ----------------------------------------------------------------------------- */
771
772 /* History of Lua C API length functions: In Lua 5.0 (and before?)
773 there was "lua_strlen". In Lua 5.1, this was renamed "lua_objlen",
774 but a compatibility define of "lua_strlen" was added. In Lua 5.2,
775 this function was again renamed, to "lua_rawlen" (to emphasize that
776 it doesn't call the "__len" metamethod), and the compatibility
777 define of lua_strlen was removed. All SWIG uses have been updated
778 to "lua_rawlen", and we add our own defines of that here for older
779 versions of Lua. */
780 #if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 501
781 # define lua_rawlen lua_strlen
782 #elif LUA_VERSION_NUM == 501
783 # define lua_rawlen lua_objlen
784 #endif
785
786
787 /* lua_pushglobaltable is the recommended "future-proof" way to get
788 the global table for Lua 5.2 and later. Here we define
789 lua_pushglobaltable ourselves for Lua versions before 5.2. */
790 #if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 502
791 # define lua_pushglobaltable(L) lua_pushvalue(L, LUA_GLOBALSINDEX)
792 #endif
793
794
795 /* --------------------------------------------------------------------------
796 * Helper functions for error handling
797 * -------------------------------------------------------------------------- */
798
799 /* Push the string STR on the Lua stack, like lua_pushstring, but
800 prefixed with the the location of the innermost Lua call-point
801 (as formated by luaL_where). */
802 SWIGRUNTIME void
803 SWIG_Lua_pusherrstring (lua_State *L, const char *str)
804 {
805 luaL_where (L, 1);
806 lua_pushstring (L, str);
807 lua_concat (L, 2);
808 }
809
810 /* Push a formatted string generated from FMT and following args on
811 the Lua stack, like lua_pushfstring, but prefixed with the the
812 location of the innermost Lua call-point (as formated by luaL_where). */
813 SWIGRUNTIME void
814 SWIG_Lua_pushferrstring (lua_State *L, const char *fmt, ...)
815 {
816 va_list argp;
817 va_start(argp, fmt);
818 luaL_where(L, 1);
819 lua_pushvfstring(L, fmt, argp);
820 va_end(argp);
821 lua_concat(L, 2);
822 }
823
824
825 /* -----------------------------------------------------------------------------
826 * global swig types
827 * ----------------------------------------------------------------------------- */
828 /* Constant table */
829 #define SWIG_LUA_INT 1
830 #define SWIG_LUA_FLOAT 2
831 #define SWIG_LUA_STRING 3
832 #define SWIG_LUA_POINTER 4
833 #define SWIG_LUA_BINARY 5
834 #define SWIG_LUA_CHAR 6
835
836 /* Structure for variable linking table */
837 typedef struct {
838 const char *name;
839 lua_CFunction get;
840 lua_CFunction set;
841 } swig_lua_var_info;
842
843 /* Constant information structure */
844 typedef struct {
845 int type;
846 char *name;
847 long lvalue;
848 double dvalue;
849 void *pvalue;
850 swig_type_info **ptype;
851 } swig_lua_const_info;
852
853 typedef struct {
854 const char *name;
855 lua_CFunction method;
856 } swig_lua_method;
857
858 typedef struct {
859 const char *name;
860 lua_CFunction getmethod;
861 lua_CFunction setmethod;
862 } swig_lua_attribute;
863
864 // Can be used to create namespaces. Currently used to
865 // wrap class static methods/variables/constants
866 typedef struct {
867 const char *name;
868 swig_lua_method *ns_methods;
869 swig_lua_attribute *ns_attributes;
870 swig_lua_const_info *ns_constants;
871 } swig_lua_namespace;
872
873 typedef struct swig_lua_class {
874 const char *name;
875 swig_type_info **type;
876 lua_CFunction constructor;
877 void (*destructor)(void *);
878 swig_lua_method *methods;
879 swig_lua_attribute *attributes;
880 swig_lua_namespace cls_static;
881 struct swig_lua_class **bases;
882 const char **base_names;
883 } swig_lua_class;
884
885 /* this is the struct for wrapping all pointers in SwigLua
886 */
887 typedef struct {
888 swig_type_info *type;
889 int own; /* 1 if owned & must be destroyed */
890 void *ptr;
891 } swig_lua_userdata;
892
893 /* this is the struct for wrapping arbitrary packed binary data
894 (currently it is only used for member function pointers)
895 the data ordering is similar to swig_lua_userdata, but it is currently not possible
896 to tell the two structures apart within SWIG, other than by looking at the type
897 */
898 typedef struct {
899 swig_type_info *type;
900 int own; /* 1 if owned & must be destroyed */
901 char data[1]; /* arbitary amount of data */
902 } swig_lua_rawdata;
903
904 /* Common SWIG API */
905 #define SWIG_NewPointerObj(L, ptr, type, owner) SWIG_Lua_NewPointerObj(L, (void *)ptr, type, owner)
906 #define SWIG_ConvertPtr(L,idx, ptr, type, flags) SWIG_Lua_ConvertPtr(L,idx,ptr,type,flags)
907 #define SWIG_MustGetPtr(L,idx, type,flags, argnum,fnname) SWIG_Lua_MustGetPtr(L,idx, type,flags, argnum,fnname)
908 /* for C++ member pointers, ie, member methods */
909 #define SWIG_ConvertMember(L, idx, ptr, sz, ty) SWIG_Lua_ConvertPacked(L, idx, ptr, sz, ty)
910 #define SWIG_NewMemberObj(L, ptr, sz, type) SWIG_Lua_NewPackedObj(L, ptr, sz, type)
911
912 /* Runtime API */
913 #define SWIG_GetModule(clientdata) SWIG_Lua_GetModule((lua_State*)(clientdata))
914 #define SWIG_SetModule(clientdata, pointer) SWIG_Lua_SetModule((lua_State*) (clientdata), pointer)
915 #define SWIG_MODULE_CLIENTDATA_TYPE lua_State*
916
917 /* Contract support */
918 #define SWIG_contract_assert(expr, msg) \
919 if (!(expr)) { SWIG_Lua_pusherrstring(L, (char *) msg); goto fail; } else
920
921
922 /* helper #defines */
923 #define SWIG_fail {goto fail;}
924 #define SWIG_fail_arg(func_name,argnum,type) \
925 {SWIG_Lua_pushferrstring(L,"Error in %s (arg %d), expected '%s' got '%s'",\
926 func_name,argnum,type,SWIG_Lua_typename(L,argnum));\
927 goto fail;}
928 #define SWIG_fail_ptr(func_name,argnum,type) \
929 SWIG_fail_arg(func_name,argnum,(type && type->str)?type->str:"void*")
930 #define SWIG_check_num_args(func_name,a,b) \
931 if (lua_gettop(L)<a || lua_gettop(L)>b) \
932 {SWIG_Lua_pushferrstring(L,"Error in %s expected %d..%d args, got %d",func_name,a,b,lua_gettop(L));\
933 goto fail;}
934
935
936 #define SWIG_Lua_get_table(L,n) \
937 (lua_pushstring(L, n), lua_rawget(L,-2))
938
939 #define SWIG_Lua_add_function(L,n,f) \
940 (lua_pushstring(L, n), \
941 lua_pushcfunction(L, f), \
942 lua_rawset(L,-3))
943
944 /* special helper for allowing 'nil' for usertypes */
945 #define SWIG_isptrtype(L,I) (lua_isuserdata(L,I) || lua_isnil(L,I))
946
947 #ifdef __cplusplus
948 /* Special helper for member function pointers
949 it gets the address, casts it, then dereferences it */
950 //#define SWIG_mem_fn_as_voidptr(a) (*((char**)&(a)))
951 #endif
952
953 /* storing/access of swig_module_info */
954 SWIGRUNTIME swig_module_info *
955 SWIG_Lua_GetModule(lua_State* L) {
956 swig_module_info *ret = 0;
957 lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
958 lua_rawget(L,LUA_REGISTRYINDEX);
959 if (lua_islightuserdata(L,-1))
960 ret=(swig_module_info*)lua_touserdata(L,-1);
961 lua_pop(L,1); /* tidy */
962 return ret;
963 }
964
965 SWIGRUNTIME void
966 SWIG_Lua_SetModule(lua_State* L, swig_module_info *module) {
967 /* add this all into the Lua registry: */
968 lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
969 lua_pushlightuserdata(L,(void*)module);
970 lua_rawset(L,LUA_REGISTRYINDEX);
971 }
972
973 /* -----------------------------------------------------------------------------
974 * global variable support code: modules
975 * ----------------------------------------------------------------------------- */
976
977 /* this function is called when trying to set an immutable.
978 default action is to print an error.
979 This can removed with a compile flag SWIGLUA_IGNORE_SET_IMMUTABLE */
980 SWIGINTERN int SWIG_Lua_set_immutable(lua_State* L)
981 {
982 /* there should be 1 param passed in: the new value */
983 #ifndef SWIGLUA_IGNORE_SET_IMMUTABLE
984 lua_pop(L,1); /* remove it */
985 luaL_error(L,"This variable is immutable");
986 #endif
987 return 0; /* should not return anything */
988 }
989
990 /* the module.get method used for getting linked data */
991 SWIGINTERN int SWIG_Lua_module_get(lua_State* L)
992 {
993 /* there should be 2 params passed in
994 (1) table (not the meta table)
995 (2) string name of the attribute
996 printf("SWIG_Lua_module_get %p(%s) '%s'\n",
997 lua_topointer(L,1),lua_typename(L,lua_type(L,1)),
998 lua_tostring(L,2));
999 */
1000 /* get the metatable */
1001 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1002 assert(lua_isrotable(L,1)); /* just in case */
1003 #else
1004 assert(lua_istable(L,1)); /* default Lua action */
1005 #endif
1006 lua_getmetatable(L,1); /* get the metatable */
1007 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1008 assert(lua_isrotable(L,-1)); /* just in case */
1009 #else
1010 assert(lua_istable(L,-1));
1011 #endif
1012 SWIG_Lua_get_table(L,".get"); /* get the .get table */
1013 lua_remove(L,3); /* remove metatable */
1014 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1015 if (lua_isrotable(L,-1))
1016 #else
1017 if (lua_istable(L,-1))
1018 #endif
1019 {
1020 /* look for the key in the .get table */
1021 lua_pushvalue(L,2); /* key */
1022 lua_rawget(L,-2);
1023 lua_remove(L,3); /* remove .get */
1024 if (lua_iscfunction(L,-1))
1025 { /* found it so call the fn & return its value */
1026 lua_call(L,0,1);
1027 return 1;
1028 }
1029 lua_pop(L,1); /* remove the top */
1030 }
1031 lua_pop(L,1); /* remove the .get */
1032 lua_pushnil(L); /* return a nil */
1033 return 1;
1034 }
1035
1036 /* the module.set method used for setting linked data */
1037 SWIGINTERN int SWIG_Lua_module_set(lua_State* L)
1038 {
1039 /* there should be 3 params passed in
1040 (1) table (not the meta table)
1041 (2) string name of the attribute
1042 (3) any for the new value
1043 */
1044 /* get the metatable */
1045 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1046 assert(lua_isrotable(L,1)); /* just in case */
1047 #else
1048 assert(lua_istable(L,1)); /* default Lua action */
1049 #endif
1050 lua_getmetatable(L,1); /* get the metatable */
1051 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1052 assert(lua_isrotable(L,-1)); /* just in case */
1053 #else
1054 assert(lua_istable(L,-1));
1055 #endif
1056 SWIG_Lua_get_table(L,".set"); /* get the .set table */
1057 lua_remove(L,4); /* remove metatable */
1058 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1059 if (lua_isrotable(L,-1))
1060 #else
1061 if (lua_istable(L,-1))
1062 #endif
1063 {
1064 /* look for the key in the .set table */
1065 lua_pushvalue(L,2); /* key */
1066 lua_rawget(L,-2);
1067 lua_remove(L,4); /* remove .set */
1068 if (lua_iscfunction(L,-1))
1069 { /* found it so call the fn & return its value */
1070 lua_pushvalue(L,3); /* value */
1071 lua_call(L,1,0);
1072 return 0;
1073 }
1074 #if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA)
1075 else {
1076 return 0; // Exits stoically if an invalid key is initialized.
1077 }
1078 #endif
1079 }
1080 lua_settop(L,3); /* reset back to start */
1081 /* we now have the table, key & new value, so just set directly */
1082 lua_rawset(L,1); /* add direct */
1083 return 0;
1084 }
1085
1086 #if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC))
1087 /* registering a module in lua. Pushes the module table on the stack. */
1088 SWIGINTERN void SWIG_Lua_module_begin(lua_State* L,const char* name)
1089 {
1090 assert(lua_istable(L,-1)); /* just in case */
1091 lua_pushstring(L,name);
1092 lua_newtable(L); /* the table */
1093 /* add meta table */
1094 lua_newtable(L); /* the meta table */
1095 SWIG_Lua_add_function(L,"__index",SWIG_Lua_module_get);
1096 SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_module_set);
1097 lua_pushstring(L,".get");
1098 lua_newtable(L); /* the .get table */
1099 lua_rawset(L,-3); /* add .get into metatable */
1100 lua_pushstring(L,".set");
1101 lua_newtable(L); /* the .set table */
1102 lua_rawset(L,-3); /* add .set into metatable */
1103 lua_setmetatable(L,-2); /* sets meta table in module */
1104 #ifdef SWIG_LUA_MODULE_GLOBAL
1105 /* If requested, install the module directly into the global namespace. */
1106 lua_rawset(L,-3); /* add module into parent */
1107 SWIG_Lua_get_table(L,name); /* get the table back out */
1108 #else
1109 /* Do not install the module table as global name. The stack top has
1110 the module table with the name below. We pop the top and replace
1111 the name with it. */
1112 lua_replace(L,-2);
1113 #endif
1114 }
1115
1116 /* ending the register */
1117 SWIGINTERN void SWIG_Lua_module_end(lua_State* L)
1118 {
1119 lua_pop(L,1); /* tidy stack (remove module) */
1120 }
1121
1122 /* adding a linked variable to the module */
1123 SWIGINTERN void SWIG_Lua_module_add_variable(lua_State* L,const char* name,lua_CFunction getFn,lua_CFunction setFn)
1124 {
1125 assert(lua_istable(L,-1)); /* just in case */
1126 lua_getmetatable(L,-1); /* get the metatable */
1127 assert(lua_istable(L,-1)); /* just in case */
1128 SWIG_Lua_get_table(L,".get"); /* find the .get table */
1129 assert(lua_istable(L,-1)); /* should be a table: */
1130 SWIG_Lua_add_function(L,name,getFn);
1131 lua_pop(L,1); /* tidy stack (remove table) */
1132 if (setFn) /* if there is a set fn */
1133 {
1134 SWIG_Lua_get_table(L,".set"); /* find the .set table */
1135 assert(lua_istable(L,-1)); /* should be a table: */
1136 SWIG_Lua_add_function(L,name,setFn);
1137 lua_pop(L,1); /* tidy stack (remove table) */
1138 }
1139 lua_pop(L,1); /* tidy stack (remove meta) */
1140 }
1141 #endif
1142
1143 /* adding a function module */
1144 SWIGINTERN void SWIG_Lua_module_add_function(lua_State* L,const char* name,lua_CFunction fn)
1145 {
1146 SWIG_Lua_add_function(L,name,fn);
1147 }
1148
1149 /* -----------------------------------------------------------------------------
1150 * global variable support code: namespaces
1151 * ----------------------------------------------------------------------------- */
1152
1153 SWIGINTERN int SWIG_Lua_namespace_get(lua_State* L)
1154 {
1155 /* there should be 2 params passed in
1156 (1) table (not the meta table)
1157 (2) string name of the attribute
1158 */
1159 assert(lua_istable(L,-2)); /* just in case */
1160 lua_getmetatable(L,-2);
1161 assert(lua_istable(L,-1));
1162 SWIG_Lua_get_table(L,".get"); /* find the .get table */
1163 assert(lua_istable(L,-1));
1164 /* look for the key in the .get table */
1165 lua_pushvalue(L,2); /* key */
1166 lua_rawget(L,-2);
1167 lua_remove(L,-2); /* stack tidy, remove .get table */
1168 if (lua_iscfunction(L,-1))
1169 { /* found it so call the fn & return its value */
1170 lua_call(L,0,1); /* 1 value in (userdata),1 out (result) */
1171 lua_remove(L,-2); /* stack tidy, remove metatable */
1172 return 1;
1173 }
1174 lua_pop(L,1); /* remove whatever was there */
1175 /* ok, so try the .fn table */
1176 SWIG_Lua_get_table(L,".fn"); /* find the .get table */
1177 assert(lua_istable(L,-1)); /* just in case */
1178 lua_pushvalue(L,2); /* key */
1179 lua_rawget(L,-2); /* look for the fn */
1180 lua_remove(L,-2); /* stack tidy, remove .fn table */
1181 if (lua_isfunction(L,-1)) /* note: whether it's a C function or lua function */
1182 { /* found it so return the fn & let lua call it */
1183 lua_remove(L,-2); /* stack tidy, remove metatable */
1184 return 1;
1185 }
1186 lua_pop(L,1); /* remove whatever was there */
1187 return 0;
1188 }
1189
1190 SWIGINTERN int SWIG_Lua_namespace_set(lua_State* L)
1191 {
1192 /* there should be 3 params passed in
1193 (1) table (not the meta table)
1194 (2) string name of the attribute
1195 (3) any for the new value
1196 */
1197
1198 assert(lua_istable(L,1));
1199 lua_getmetatable(L,1); /* get the meta table */
1200 assert(lua_istable(L,-1));
1201
1202 SWIG_Lua_get_table(L,".set"); /* find the .set table */
1203 if (lua_istable(L,-1))
1204 {
1205 /* look for the key in the .set table */
1206 lua_pushvalue(L,2); /* key */
1207 lua_rawget(L,-2);
1208 if (lua_iscfunction(L,-1))
1209 { /* found it so call the fn & return its value */
1210 lua_pushvalue(L,3); /* value */
1211 lua_call(L,1,0);
1212 return 0;
1213 }
1214 lua_pop(L,1); /* remove the value */
1215 }
1216 lua_pop(L,1); /* remove the value .set table */
1217 return 0;
1218 }
1219
1220 SWIGINTERN void SWIG_Lua_InstallConstants(lua_State* L, swig_lua_const_info constants[]); // forward declaration
1221 SWIGINTERN void SWIG_Lua_add_class_variable(lua_State* L,const char* name,lua_CFunction getFn,lua_CFunction setFn); // forward declaration
1222
1223 /* helper function - register namespace methods and attributes into namespace */
1224 SWIGINTERN void SWIG_Lua_add_namespace_details(lua_State* L, swig_lua_namespace* ns)
1225 {
1226 int i = 0;
1227 assert(lua_istable(L,-1));
1228 /* There must be table at the top of the stack */
1229 SWIG_Lua_InstallConstants(L, ns->ns_constants);
1230
1231 lua_getmetatable(L,-1);
1232
1233 /* add fns */
1234 for(i=0;ns->ns_attributes[i].name;i++){
1235 SWIG_Lua_add_class_variable(L,ns->ns_attributes[i].name,ns->ns_attributes[i].getmethod,ns->ns_attributes[i].setmethod);
1236 }
1237
1238 /* add methods to the metatable */
1239 SWIG_Lua_get_table(L,".fn"); /* find the .fn table */
1240 assert(lua_istable(L,-1)); /* just in case */
1241 for(i=0;ns->ns_methods[i].name;i++){
1242 SWIG_Lua_add_function(L,ns->ns_methods[i].name,ns->ns_methods[i].method);
1243 }
1244 lua_pop(L,1);
1245
1246 /* clear stack - remove metatble */
1247 lua_pop(L,1);
1248
1249 }
1250
1251 /* helper function. creates namespace table and add it to module table */
1252 SWIGINTERN void SWIG_Lua_namespace_register(lua_State* L, swig_lua_namespace* ns)
1253 {
1254 assert(lua_istable(L,-1)); /* just in case. This is supposed to be module table */
1255 lua_checkstack(L,5);
1256 lua_pushstring(L, ns->name);
1257 lua_newtable(L); /* namespace itself */
1258 lua_newtable(L); /* metatable for namespace */
1259
1260 /* add a table called ".get" */
1261 lua_pushstring(L,".get");
1262 lua_newtable(L);
1263 lua_rawset(L,-3);
1264 /* add a table called ".set" */
1265 lua_pushstring(L,".set");
1266 lua_newtable(L);
1267 lua_rawset(L,-3);
1268 /* add a table called ".fn" */
1269 lua_pushstring(L,".fn");
1270 lua_newtable(L);
1271 lua_rawset(L,-3);
1272
1273 /* add accessor fns for using the .get,.set&.fn */
1274 SWIG_Lua_add_function(L,"__index",SWIG_Lua_namespace_get);
1275 SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_namespace_set);
1276
1277 lua_setmetatable(L,-2); /* set metatable */
1278 lua_rawset(L,-3); /* add namespace to module table */
1279 }
1280 /* -----------------------------------------------------------------------------
1281 * global variable support code: classes
1282 * ----------------------------------------------------------------------------- */
1283
1284 /* the class.get method, performs the lookup of class attributes */
1285 SWIGINTERN int SWIG_Lua_class_get(lua_State* L)
1286 {
1287 /* there should be 2 params passed in
1288 (1) userdata (not the meta table)
1289 (2) string name of the attribute
1290 */
1291 assert(lua_isuserdata(L,-2)); /* just in case */
1292 lua_getmetatable(L,-2); /* get the meta table */
1293 assert(lua_istable(L,-1)); /* just in case */
1294 SWIG_Lua_get_table(L,".get"); /* find the .get table */
1295 assert(lua_istable(L,-1)); /* just in case */
1296 /* look for the key in the .get table */
1297 lua_pushvalue(L,2); /* key */
1298 lua_rawget(L,-2);
1299 lua_remove(L,-2); /* stack tidy, remove .get table */
1300 if (lua_iscfunction(L,-1))
1301 { /* found it so call the fn & return its value */
1302 lua_pushvalue(L,1); /* the userdata */
1303 lua_call(L,1,1); /* 1 value in (userdata),1 out (result) */
1304 lua_remove(L,-2); /* stack tidy, remove metatable */
1305 return 1;
1306 }
1307 lua_pop(L,1); /* remove whatever was there */
1308 /* ok, so try the .fn table */
1309 SWIG_Lua_get_table(L,".fn"); /* find the .get table */
1310 assert(lua_istable(L,-1)); /* just in case */
1311 lua_pushvalue(L,2); /* key */
1312 lua_rawget(L,-2); /* look for the fn */
1313 lua_remove(L,-2); /* stack tidy, remove .fn table */
1314 if (lua_isfunction(L,-1)) /* note: if its a C function or lua function */
1315 { /* found it so return the fn & let lua call it */
1316 lua_remove(L,-2); /* stack tidy, remove metatable */
1317 return 1;
1318 }
1319 lua_pop(L,1); /* remove whatever was there */
1320 /* NEW: looks for the __getitem() fn
1321 this is a user provided get fn */
1322 SWIG_Lua_get_table(L,"__getitem"); /* find the __getitem fn */
1323 if (lua_iscfunction(L,-1)) /* if its there */
1324 { /* found it so call the fn & return its value */
1325 lua_pushvalue(L,1); /* the userdata */
1326 lua_pushvalue(L,2); /* the parameter */
1327 lua_call(L,2,1); /* 2 value in (userdata),1 out (result) */
1328 lua_remove(L,-2); /* stack tidy, remove metatable */
1329 return 1;
1330 }
1331 return 0; /* sorry not known */
1332 }
1333
1334 /* the class.set method, performs the lookup of class attributes */
1335 SWIGINTERN int SWIG_Lua_class_set(lua_State* L)
1336 {
1337 /* there should be 3 params passed in
1338 (1) table (not the meta table)
1339 (2) string name of the attribute
1340 (3) any for the new value
1341 printf("SWIG_Lua_class_set %p(%s) '%s' %p(%s)\n",
1342 lua_topointer(L,1),lua_typename(L,lua_type(L,1)),
1343 lua_tostring(L,2),
1344 lua_topointer(L,3),lua_typename(L,lua_type(L,3)));*/
1345
1346 assert(lua_isuserdata(L,1)); /* just in case */
1347 lua_getmetatable(L,1); /* get the meta table */
1348 assert(lua_istable(L,-1)); /* just in case */
1349
1350 SWIG_Lua_get_table(L,".set"); /* find the .set table */
1351 if (lua_istable(L,-1))
1352 {
1353 /* look for the key in the .set table */
1354 lua_pushvalue(L,2); /* key */
1355 lua_rawget(L,-2);
1356 if (lua_iscfunction(L,-1))
1357 { /* found it so call the fn & return its value */
1358 lua_pushvalue(L,1); /* userdata */
1359 lua_pushvalue(L,3); /* value */
1360 lua_call(L,2,0);
1361 return 0;
1362 }
1363 lua_pop(L,1); /* remove the value */
1364 }
1365 lua_pop(L,1); /* remove the value .set table */
1366 /* NEW: looks for the __setitem() fn
1367 this is a user provided set fn */
1368 SWIG_Lua_get_table(L,"__setitem"); /* find the fn */
1369 if (lua_iscfunction(L,-1)) /* if its there */
1370 { /* found it so call the fn & return its value */
1371 lua_pushvalue(L,1); /* the userdata */
1372 lua_pushvalue(L,2); /* the parameter */
1373 lua_pushvalue(L,3); /* the value */
1374 lua_call(L,3,0); /* 3 values in ,0 out */
1375 lua_remove(L,-2); /* stack tidy, remove metatable */
1376 return 1;
1377 }
1378 return 0;
1379 }
1380
1381 /* the class.destruct method called by the interpreter */
1382 SWIGINTERN int SWIG_Lua_class_destruct(lua_State* L)
1383 {
1384 /* there should be 1 params passed in
1385 (1) userdata (not the meta table) */
1386 swig_lua_userdata* usr;
1387 swig_lua_class* clss;
1388 assert(lua_isuserdata(L,-1)); /* just in case */
1389 usr=(swig_lua_userdata*)lua_touserdata(L,-1); /* get it */
1390 /* if must be destroyed & has a destructor */
1391 if (usr->own) /* if must be destroyed */
1392 {
1393 clss=(swig_lua_class*)usr->type->clientdata; /* get the class */
1394 if (clss && clss->destructor) /* there is a destroy fn */
1395 {
1396 clss->destructor(usr->ptr); /* bye bye */
1397 }
1398 }
1399 return 0;
1400 }
1401
1402 /* the class.__tostring method called by the interpreter and print */
1403 SWIGINTERN int SWIG_Lua_class_tostring(lua_State* L)
1404 {
1405 /* there should be 1 param passed in
1406 (1) userdata (not the metatable) */
1407 assert(lua_isuserdata(L,1)); /* just in case */
1408 unsigned long userData = (unsigned long)lua_touserdata(L,1); /* get the userdata address for later */
1409 lua_getmetatable(L,1); /* get the meta table */
1410 assert(lua_istable(L,-1)); /* just in case */
1411
1412 lua_getfield(L, -1, ".type");
1413 const char* className = lua_tostring(L, -1);
1414
1415 char output[256];
1416 sprintf(output, "<%s userdata: %lX>", className, userData);
1417
1418 lua_pushstring(L, (const char*)output);
1419 return 1;
1420 }
1421
1422 /* to manually disown some userdata */
1423 SWIGINTERN int SWIG_Lua_class_disown(lua_State* L)
1424 {
1425 /* there should be 1 params passed in
1426 (1) userdata (not the meta table) */
1427 swig_lua_userdata* usr;
1428 assert(lua_isuserdata(L,-1)); /* just in case */
1429 usr=(swig_lua_userdata*)lua_touserdata(L,-1); /* get it */
1430
1431 usr->own = 0; /* clear our ownership */
1432 return 0;
1433 }
1434
1435 /* Constructor proxy. Used when class name entry in module is not class constructor,
1436 but special table instead. */
1437 SWIGINTERN int SWIG_Lua_constructor_proxy(lua_State* L)
1438 {
1439 /* unlimited number of parameters
1440 First one is our proxy table and we should remove it
1441 Other we should pass to real constructor
1442 */
1443 assert(lua_istable(L,1));
1444 lua_pushstring(L,".constructor");
1445 lua_rawget(L,1);
1446 assert(!lua_isnil(L,-1));
1447 lua_replace(L,1); /* replace our table with real constructor */
1448 lua_call(L,lua_gettop(L)-1,1);
1449 return 1;
1450 }
1451
1452 /* gets the swig class registry (or creates it) */
1453 SWIGINTERN void SWIG_Lua_get_class_registry(lua_State* L)
1454 {
1455 /* add this all into the swig registry: */
1456 lua_pushstring(L,"SWIG");
1457 lua_rawget(L,LUA_REGISTRYINDEX); /* get the registry */
1458 if (!lua_istable(L,-1)) /* not there */
1459 { /* must be first time, so add it */
1460 lua_pop(L,1); /* remove the result */
1461 lua_pushstring(L,"SWIG");
1462 lua_newtable(L);
1463 lua_rawset(L,LUA_REGISTRYINDEX);
1464 /* then get it */
1465 lua_pushstring(L,"SWIG");
1466 lua_rawget(L,LUA_REGISTRYINDEX);
1467 }
1468 }
1469
1470 /* helper fn to get the classes metatable from the register */
1471 SWIGINTERN void SWIG_Lua_get_class_metatable(lua_State* L,const char* cname)
1472 {
1473 SWIG_Lua_get_class_registry(L); /* get the registry */
1474 lua_pushstring(L,cname); /* get the name */
1475 lua_rawget(L,-2); /* get it */
1476 lua_remove(L,-2); /* tidy up (remove registry) */
1477 }
1478
1479 /* helper add a variable to a registered class */
1480 SWIGINTERN void SWIG_Lua_add_class_variable(lua_State* L,const char* name,lua_CFunction getFn,lua_CFunction setFn)
1481 {
1482 assert(lua_istable(L,-1)); /* just in case */
1483 SWIG_Lua_get_table(L,".get"); /* find the .get table */
1484 assert(lua_istable(L,-1)); /* just in case */
1485 SWIG_Lua_add_function(L,name,getFn);
1486 lua_pop(L,1); /* tidy stack (remove table) */
1487 if (setFn)
1488 {
1489 SWIG_Lua_get_table(L,".set"); /* find the .set table */
1490 assert(lua_istable(L,-1)); /* just in case */
1491 SWIG_Lua_add_function(L,name,setFn);
1492 lua_pop(L,1); /* tidy stack (remove table) */
1493 }
1494 }
1495
1496 /* helper to recursively add class static details (static attributes, operations and constants) */
1497 SWIGINTERN void SWIG_Lua_add_class_static_details(lua_State* L, swig_lua_class* clss)
1498 {
1499 int i = 0;
1500 /* The class namespace table must be on the top of the stack */
1501 assert(lua_istable(L,-1));
1502 /* call all the base classes first: we can then override these later: */
1503 for(i=0;clss->bases[i];i++)
1504 {
1505 SWIG_Lua_add_class_static_details(L,clss->bases[i]);
1506 }
1507
1508 SWIG_Lua_add_namespace_details(L, &clss->cls_static);
1509 }
1510
1511 /* helper to recursively add class details (attributes & operations) */
1512 SWIGINTERN void SWIG_Lua_add_class_details(lua_State* L,swig_lua_class* clss)
1513 {
1514 int i;
1515 /* call all the base classes first: we can then override these later: */
1516 for(i=0;clss->bases[i];i++)
1517 {
1518 SWIG_Lua_add_class_details(L,clss->bases[i]);
1519 }
1520 /* add fns */
1521 for(i=0;clss->attributes[i].name;i++){
1522 SWIG_Lua_add_class_variable(L,clss->attributes[i].name,clss->attributes[i].getmethod,clss->attributes[i].setmethod);
1523 }
1524 /* add methods to the metatable */
1525 SWIG_Lua_get_table(L,".fn"); /* find the .fn table */
1526 assert(lua_istable(L,-1)); /* just in case */
1527 for(i=0;clss->methods[i].name;i++){
1528 SWIG_Lua_add_function(L,clss->methods[i].name,clss->methods[i].method);
1529 }
1530 lua_pop(L,1); /* tidy stack (remove table) */
1531 /* add operator overloads
1532 these look ANY method which start with "__" and assume they
1533 are operator overloads & add them to the metatable
1534 (this might mess up is someone defines a method __gc (the destructor)*/
1535 for(i=0;clss->methods[i].name;i++){
1536 if (clss->methods[i].name[0]=='_' && clss->methods[i].name[1]=='_'){
1537 SWIG_Lua_add_function(L,clss->methods[i].name,clss->methods[i].method);
1538 }
1539 }
1540 }
1541
1542 /* set up the base classes pointers.
1543 Each class structure has a list of pointers to the base class structures.
1544 This function fills them.
1545 It cannot be done at compile time, as this will not work with hireachies
1546 spread over more than one swig file.
1547 Therefore it must be done at runtime, querying the SWIG type system.
1548 */
1549 SWIGINTERN void SWIG_Lua_init_base_class(lua_State* L,swig_lua_class* clss)
1550 {
1551 int i=0;
1552 swig_module_info* module=SWIG_GetModule(L);
1553 for(i=0;clss->base_names[i];i++)
1554 {
1555 if (clss->bases[i]==0) /* not found yet */
1556 {
1557 /* lookup and cache the base class */
1558 swig_type_info *info = SWIG_TypeQueryModule(module,module,clss->base_names[i]);
1559 if (info) clss->bases[i] = (swig_lua_class *) info->clientdata;
1560 }
1561 }
1562 }
1563
1564 /* Register class static methods,attributes etc as well as constructor proxy */
1565 SWIGINTERN void SWIG_Lua_class_register_static(lua_State* L, swig_lua_class* clss)
1566 {
1567 lua_checkstack(L,5); /* just in case */
1568 assert(lua_istable(L,-1)); /* just in case */
1569 assert(strcmp(clss->name, clss->cls_static.name) == 0); /* in class those 2 must be equal */
1570
1571 SWIG_Lua_namespace_register(L,&clss->cls_static);
1572
1573 SWIG_Lua_get_table(L,clss->name); // Get namespace table back
1574 assert(lua_istable(L,-1)); /* just in case */
1575
1576 /* add its constructor to module with the name of the class
1577 so you can do MyClass(...) as well as new_MyClass(...)
1578 BUT only if a constructor is defined
1579 (this overcomes the problem of pure virtual classes without constructors)*/
1580 if (clss->constructor)
1581 {
1582 SWIG_Lua_add_function(L,".constructor", clss->constructor);
1583 lua_getmetatable(L,-1);
1584 assert(lua_istable(L,-1)); /* just in case */
1585 SWIG_Lua_add_function(L,"__call", SWIG_Lua_constructor_proxy);
1586 lua_pop(L,1);
1587 }
1588
1589 assert(lua_istable(L,-1)); /* just in case */
1590 SWIG_Lua_add_class_static_details(L, clss);
1591
1592 /* clear stack */
1593 lua_pop(L,1);
1594 }
1595
1596 /* performs the entire class registration process */
1597 SWIGINTERN void SWIG_Lua_class_register(lua_State* L,swig_lua_class* clss)
1598 {
1599 SWIG_Lua_class_register_static(L,clss);
1600
1601 SWIG_Lua_get_class_registry(L); /* get the registry */
1602 lua_pushstring(L,clss->name); /* get the name */
1603 lua_newtable(L); /* create the metatable */
1604 /* add string of class name called ".type" */
1605 lua_pushstring(L,".type");
1606 lua_pushstring(L,clss->name);
1607 lua_rawset(L,-3);
1608 /* add a table called ".get" */
1609 lua_pushstring(L,".get");
1610 lua_newtable(L);
1611 lua_rawset(L,-3);
1612 /* add a table called ".set" */
1613 lua_pushstring(L,".set");
1614 lua_newtable(L);
1615 lua_rawset(L,-3);
1616 /* add a table called ".fn" */
1617 lua_pushstring(L,".fn");
1618 lua_newtable(L);
1619 /* add manual disown method */
1620 SWIG_Lua_add_function(L,"__disown",SWIG_Lua_class_disown);
1621 lua_rawset(L,-3);
1622 /* add accessor fns for using the .get,.set&.fn */
1623 SWIG_Lua_add_function(L,"__index",SWIG_Lua_class_get);
1624 SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_class_set);
1625 SWIG_Lua_add_function(L,"__gc",SWIG_Lua_class_destruct);
1626 /* add tostring method for better output */
1627 SWIG_Lua_add_function(L,"__tostring",SWIG_Lua_class_tostring);
1628 /* add it */
1629 lua_rawset(L,-3); /* metatable into registry */
1630 lua_pop(L,1); /* tidy stack (remove registry) */
1631
1632 SWIG_Lua_get_class_metatable(L,clss->name);
1633 SWIG_Lua_add_class_details(L,clss); /* recursive adding of details (atts & ops) */
1634 lua_pop(L,1); /* tidy stack (remove class metatable) */
1635 }
1636
1637 /* -----------------------------------------------------------------------------
1638 * Class/structure conversion fns
1639 * ----------------------------------------------------------------------------- */
1640
1641 /* helper to add metatable to new lua object */
1642 SWIGINTERN void _SWIG_Lua_AddMetatable(lua_State* L,swig_type_info *type)
1643 {
1644 if (type->clientdata) /* there is clientdata: so add the metatable */
1645 {
1646 SWIG_Lua_get_class_metatable(L,((swig_lua_class*)(type->clientdata))->name);
1647 if (lua_istable(L,-1))
1648 {
1649 lua_setmetatable(L,-2);
1650 }
1651 else
1652 {
1653 lua_pop(L,1);
1654 }
1655 }
1656 }
1657
1658 /* pushes a new object into the lua stack */
1659 SWIGRUNTIME void SWIG_Lua_NewPointerObj(lua_State* L,void* ptr,swig_type_info *type, int own)
1660 {
1661 swig_lua_userdata* usr;
1662 if (!ptr){
1663 lua_pushnil(L);
1664 return;
1665 }
1666 usr=(swig_lua_userdata*)lua_newuserdata(L,sizeof(swig_lua_userdata)); /* get data */
1667 usr->ptr=ptr; /* set the ptr */
1668 usr->type=type;
1669 usr->own=own;
1670 #if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC)
1671 _SWIG_Lua_AddMetatable(L,type); /* add metatable */
1672 #endif
1673 }
1674
1675 /* takes a object from the lua stack & converts it into an object of the correct type
1676 (if possible) */
1677 SWIGRUNTIME int SWIG_Lua_ConvertPtr(lua_State* L,int index,void** ptr,swig_type_info *type,int flags)
1678 {
1679 swig_lua_userdata* usr;
1680 swig_cast_info *cast;
1681 if (lua_isnil(L,index)){*ptr=0; return SWIG_OK;} /* special case: lua nil => NULL pointer */
1682 usr=(swig_lua_userdata*)lua_touserdata(L,index); /* get data */
1683 if (usr)
1684 {
1685 if (flags & SWIG_POINTER_DISOWN) /* must disown the object */
1686 {
1687 usr->own=0;
1688 }
1689 if (!type) /* special cast void*, no casting fn */
1690 {
1691 *ptr=usr->ptr;
1692 return SWIG_OK; /* ok */
1693 }
1694 cast=SWIG_TypeCheckStruct(usr->type,type); /* performs normal type checking */
1695 if (cast)
1696 {
1697 int newmemory = 0;
1698 *ptr=SWIG_TypeCast(cast,usr->ptr,&newmemory);
1699 assert(!newmemory); /* newmemory handling not yet implemented */
1700 return SWIG_OK; /* ok */
1701 }
1702 }
1703 return SWIG_ERROR; /* error */
1704 }
1705
1706 SWIGRUNTIME void* SWIG_Lua_MustGetPtr(lua_State* L,int index,swig_type_info *type,int flags,
1707 int argnum,const char* func_name){
1708 void* result;
1709 if (!SWIG_IsOK(SWIG_ConvertPtr(L,index,&result,type,flags))){
1710 luaL_error (L,"Error in %s, expected a %s at argument number %d\n",
1711 func_name,(type && type->str)?type->str:"void*",argnum);
1712 }
1713 return result;
1714 }
1715
1716 /* pushes a packed userdata. user for member fn pointers only */
1717 SWIGRUNTIME void SWIG_Lua_NewPackedObj(lua_State* L,void* ptr,size_t size,swig_type_info *type)
1718 {
1719 swig_lua_rawdata* raw;
1720 assert(ptr); /* not acceptable to pass in a NULL value */
1721 raw=(swig_lua_rawdata*)lua_newuserdata(L,sizeof(swig_lua_rawdata)-1+size); /* alloc data */
1722 raw->type=type;
1723 raw->own=0;
1724 memcpy(raw->data,ptr,size); /* copy the data */
1725 _SWIG_Lua_AddMetatable(L,type); /* add metatable */
1726 }
1727
1728 /* converts a packed userdata. user for member fn pointers only */
1729 SWIGRUNTIME int SWIG_Lua_ConvertPacked(lua_State* L,int index,void* ptr,size_t size,swig_type_info *type)
1730 {
1731 swig_lua_rawdata* raw;
1732 raw=(swig_lua_rawdata*)lua_touserdata(L,index); /* get data */
1733 if (!raw) return SWIG_ERROR; /* error */
1734 if (type==0 || type==raw->type) /* void* or identical type */
1735 {
1736 memcpy(ptr,raw->data,size); /* copy it */
1737 return SWIG_OK; /* ok */
1738 }
1739 return SWIG_ERROR; /* error */
1740 }
1741
1742 /* a function to get the typestring of a piece of data */
1743 SWIGRUNTIME const char *SWIG_Lua_typename(lua_State *L, int tp)
1744 {
1745 swig_lua_userdata* usr;
1746 if (lua_isuserdata(L,tp))
1747 {
1748 usr=(swig_lua_userdata*)lua_touserdata(L,tp); /* get data */
1749 if (usr && usr->type && usr->type->str)
1750 return usr->type->str;
1751 return "userdata (unknown type)";
1752 }
1753 return lua_typename(L,lua_type(L,tp));
1754 }
1755
1756 /* lua callable function to get the userdata's type */
1757 SWIGRUNTIME int SWIG_Lua_type(lua_State* L)
1758 {
1759 lua_pushstring(L,SWIG_Lua_typename(L,1));
1760 return 1;
1761 }
1762
1763 /* lua callable function to compare userdata's value
1764 the issue is that two userdata may point to the same thing
1765 but to lua, they are different objects */
1766 SWIGRUNTIME int SWIG_Lua_equal(lua_State* L)
1767 {
1768 int result;
1769 swig_lua_userdata *usr1,*usr2;
1770 if (!lua_isuserdata(L,1) || !lua_isuserdata(L,2)) /* just in case */
1771 return 0; /* nil reply */
1772 usr1=(swig_lua_userdata*)lua_touserdata(L,1); /* get data */
1773 usr2=(swig_lua_userdata*)lua_touserdata(L,2); /* get data */
1774 /*result=(usr1->ptr==usr2->ptr && usr1->type==usr2->type); only works if type is the same*/
1775 result=(usr1->ptr==usr2->ptr);
1776 lua_pushboolean(L,result);
1777 return 1;
1778 }
1779
1780 /* -----------------------------------------------------------------------------
1781 * global variable support code: class/struct typemap functions
1782 * ----------------------------------------------------------------------------- */
1783
1784 #if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC))
1785 /* Install Constants */
1786 SWIGINTERN void
1787 SWIG_Lua_InstallConstants(lua_State* L, swig_lua_const_info constants[]) {
1788 int i;
1789 for (i = 0; constants[i].type; i++) {
1790 switch(constants[i].type) {
1791 case SWIG_LUA_INT:
1792 lua_pushstring(L,constants[i].name);
1793 lua_pushnumber(L,(lua_Number)constants[i].lvalue);
1794 lua_rawset(L,-3);
1795 break;
1796 case SWIG_LUA_FLOAT:
1797 lua_pushstring(L,constants[i].name);
1798 lua_pushnumber(L,(lua_Number)constants[i].dvalue);
1799 lua_rawset(L,-3);
1800 break;
1801 case SWIG_LUA_CHAR:
1802 lua_pushstring(L,constants[i].name);
1803 lua_pushfstring(L,"%c",(char)constants[i].lvalue);
1804 lua_rawset(L,-3);
1805 break;
1806 case SWIG_LUA_STRING:
1807 lua_pushstring(L,constants[i].name);
1808 lua_pushstring(L,(char *) constants[i].pvalue);
1809 lua_rawset(L,-3);
1810 break;
1811 case SWIG_LUA_POINTER:
1812 lua_pushstring(L,constants[i].name);
1813 SWIG_NewPointerObj(L,constants[i].pvalue, *(constants[i]).ptype,0);
1814 lua_rawset(L,-3);
1815 break;
1816 case SWIG_LUA_BINARY:
1817 lua_pushstring(L,constants[i].name);
1818 SWIG_NewMemberObj(L,constants[i].pvalue,constants[i].lvalue,*(constants[i]).ptype);
1819 lua_rawset(L,-3);
1820 break;
1821 default:
1822 break;
1823 }
1824 }
1825 }
1826 #endif
1827
1828 /* -----------------------------------------------------------------------------
1829 * executing lua code from within the wrapper
1830 * ----------------------------------------------------------------------------- */
1831
1832 #ifndef SWIG_DOSTRING_FAIL /* Allows redefining of error function */
1833 #define SWIG_DOSTRING_FAIL(S) fprintf(stderr,"%s\n",S)
1834 #endif
1835 /* Executes a C string in Lua which is a really simple way of calling lua from C
1836 Unfortunately lua keeps changing its APIs, so we need a conditional compile
1837 In lua 5.0.X its lua_dostring()
1838 In lua 5.1.X its luaL_dostring()
1839 */
1840 SWIGINTERN int
1841 SWIG_Lua_dostring(lua_State *L, const char* str) {
1842 int ok,top;
1843 if (str==0 || str[0]==0) return 0; /* nothing to do */
1844 top=lua_gettop(L); /* save stack */
1845 #if (defined(LUA_VERSION_NUM) && (LUA_VERSION_NUM>=501))
1846 ok=luaL_dostring(L,str); /* looks like this is lua 5.1.X or later, good */
1847 #else
1848 ok=lua_dostring(L,str); /* might be lua 5.0.x, using lua_dostring */
1849 #endif
1850 if (ok!=0) {
1851 SWIG_DOSTRING_FAIL(lua_tostring(L,-1));
1852 }
1853 lua_settop(L,top); /* restore the stack */
1854 return ok;
1855 }
1856
1857 #ifdef __cplusplus
1858 }
1859 #endif
1860
1861 /* ------------------------------ end luarun.swg ------------------------------ */
1862
1863
1864 /* -------- TYPES TABLE (BEGIN) -------- */
1865
1866 #define SWIGTYPE_p_UIControl swig_types[0]
1867 static swig_type_info *swig_types[2];
1868 static swig_module_info swig_module = {swig_types, 1, 0, 0, 0, 0};
1869 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
1870 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
1871
1872 /* -------- TYPES TABLE (END) -------- */
1873
1874 #define SWIG_name "UIControl"
1875 #define SWIG_init luaopen_UIControl
1876 #define SWIG_init_user luaopen_UIControl_user
1877
1878 #define SWIG_LUACODE luaopen_UIControl_luacode
1879
1880 namespace swig {
1881 typedef struct{} LANGUAGE_OBJ;
1882 }
1883
1884
1885 #include "UIControl.h"
1886
1887 #ifdef __cplusplus
1888 extern "C" {
1889 #endif
1890 static int _wrap_UIControl_Show(lua_State* L) {
1891 int SWIG_arg = 0;
1892 UIControl *arg1 = (UIControl *) 0 ;
1893
1894 SWIG_check_num_args("UIControl::Show",1,1)
1895 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::Show",1,"UIControl *");
1896
1897 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
1898 SWIG_fail_ptr("UIControl_Show",1,SWIGTYPE_p_UIControl);
1899 }
1900
1901 (arg1)->Show();
1902
1903 return SWIG_arg;
1904
1905 if(0) SWIG_fail;
1906
1907 fail:
1908 lua_error(L);
1909 return SWIG_arg;
1910 }
1911
1912
1913 static int _wrap_UIControl_Focused(lua_State* L) {
1914 int SWIG_arg = 0;
1915 UIControl *arg1 = (UIControl *) 0 ;
1916 bool result;
1917
1918 SWIG_check_num_args("UIControl::Focused",1,1)
1919 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::Focused",1,"UIControl *");
1920
1921 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
1922 SWIG_fail_ptr("UIControl_Focused",1,SWIGTYPE_p_UIControl);
1923 }
1924
1925 result = (bool)(arg1)->Focused();
1926 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
1927 return SWIG_arg;
1928
1929 if(0) SWIG_fail;
1930
1931 fail:
1932 lua_error(L);
1933 return SWIG_arg;
1934 }
1935
1936
1937 static int _wrap_UIControl_OnKey(lua_State* L) {
1938 int SWIG_arg = 0;
1939 UIControl *arg1 = (UIControl *) 0 ;
1940 int arg2 ;
1941 bool result;
1942
1943 SWIG_check_num_args("UIControl::OnKey",2,2)
1944 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::OnKey",1,"UIControl *");
1945 if(!lua_isnumber(L,2)) SWIG_fail_arg("UIControl::OnKey",2,"int");
1946
1947 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
1948 SWIG_fail_ptr("UIControl_OnKey",1,SWIGTYPE_p_UIControl);
1949 }
1950
1951 arg2 = (int)lua_tonumber(L, 2);
1952 result = (bool)(arg1)->OnKey(arg2);
1953 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
1954 return SWIG_arg;
1955
1956 if(0) SWIG_fail;
1957
1958 fail:
1959 lua_error(L);
1960 return SWIG_arg;
1961 }
1962
1963
1964 static int _wrap_UIControl_OnMouseLeftClick(lua_State* L) {
1965 int SWIG_arg = 0;
1966 UIControl *arg1 = (UIControl *) 0 ;
1967 int arg2 ;
1968 int arg3 ;
1969 bool result;
1970
1971 SWIG_check_num_args("UIControl::OnMouseLeftClick",3,3)
1972 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::OnMouseLeftClick",1,"UIControl *");
1973 if(!lua_isnumber(L,2)) SWIG_fail_arg("UIControl::OnMouseLeftClick",2,"int");
1974 if(!lua_isnumber(L,3)) SWIG_fail_arg("UIControl::OnMouseLeftClick",3,"int");
1975
1976 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
1977 SWIG_fail_ptr("UIControl_OnMouseLeftClick",1,SWIGTYPE_p_UIControl);
1978 }
1979
1980 arg2 = (int)lua_tonumber(L, 2);
1981 arg3 = (int)lua_tonumber(L, 3);
1982 result = (bool)(arg1)->OnMouseLeftClick(arg2,arg3);
1983 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
1984 return SWIG_arg;
1985
1986 if(0) SWIG_fail;
1987
1988 fail:
1989 lua_error(L);
1990 return SWIG_arg;
1991 }
1992
1993
1994 static int _wrap_UIControl_OnMouseRightClick(lua_State* L) {
1995 int SWIG_arg = 0;
1996 UIControl *arg1 = (UIControl *) 0 ;
1997 int arg2 ;
1998 int arg3 ;
1999 bool result;
2000
2001 SWIG_check_num_args("UIControl::OnMouseRightClick",3,3)
2002 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::OnMouseRightClick",1,"UIControl *");
2003 if(!lua_isnumber(L,2)) SWIG_fail_arg("UIControl::OnMouseRightClick",2,"int");
2004 if(!lua_isnumber(L,3)) SWIG_fail_arg("UIControl::OnMouseRightClick",3,"int");
2005
2006 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
2007 SWIG_fail_ptr("UIControl_OnMouseRightClick",1,SWIGTYPE_p_UIControl);
2008 }
2009
2010 arg2 = (int)lua_tonumber(L, 2);
2011 arg3 = (int)lua_tonumber(L, 3);
2012 result = (bool)(arg1)->OnMouseRightClick(arg2,arg3);
2013 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
2014 return SWIG_arg;
2015
2016 if(0) SWIG_fail;
2017
2018 fail:
2019 lua_error(L);
2020 return SWIG_arg;
2021 }
2022
2023
2024 static int _wrap_UIControl_OnMouseEnter(lua_State* L) {
2025 int SWIG_arg = 0;
2026 UIControl *arg1 = (UIControl *) 0 ;
2027 bool result;
2028
2029 SWIG_check_num_args("UIControl::OnMouseEnter",1,1)
2030 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::OnMouseEnter",1,"UIControl *");
2031
2032 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
2033 SWIG_fail_ptr("UIControl_OnMouseEnter",1,SWIGTYPE_p_UIControl);
2034 }
2035
2036 result = (bool)(arg1)->OnMouseEnter();
2037 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
2038 return SWIG_arg;
2039
2040 if(0) SWIG_fail;
2041
2042 fail:
2043 lua_error(L);
2044 return SWIG_arg;
2045 }
2046
2047
2048 static int _wrap_UIControl_OnMouseLeave(lua_State* L) {
2049 int SWIG_arg = 0;
2050 UIControl *arg1 = (UIControl *) 0 ;
2051 bool result;
2052
2053 SWIG_check_num_args("UIControl::OnMouseLeave",1,1)
2054 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::OnMouseLeave",1,"UIControl *");
2055
2056 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
2057 SWIG_fail_ptr("UIControl_OnMouseLeave",1,SWIGTYPE_p_UIControl);
2058 }
2059
2060 result = (bool)(arg1)->OnMouseLeave();
2061 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
2062 return SWIG_arg;
2063
2064 if(0) SWIG_fail;
2065
2066 fail:
2067 lua_error(L);
2068 return SWIG_arg;
2069 }
2070
2071
2072 static int _wrap_UIControl_AddControl(lua_State* L) {
2073 int SWIG_arg = 0;
2074 UIControl *arg1 = (UIControl *) 0 ;
2075 UIControl *arg2 = (UIControl *) 0 ;
2076 bool result;
2077
2078 SWIG_check_num_args("UIControl::AddControl",2,2)
2079 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::AddControl",1,"UIControl *");
2080 if(!SWIG_isptrtype(L,2)) SWIG_fail_arg("UIControl::AddControl",2,"UIControl *");
2081
2082 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
2083 SWIG_fail_ptr("UIControl_AddControl",1,SWIGTYPE_p_UIControl);
2084 }
2085
2086
2087 if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&arg2,SWIGTYPE_p_UIControl,0))){
2088 SWIG_fail_ptr("UIControl_AddControl",2,SWIGTYPE_p_UIControl);
2089 }
2090
2091 result = (bool)(arg1)->AddControl(arg2);
2092 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
2093 return SWIG_arg;
2094
2095 if(0) SWIG_fail;
2096
2097 fail:
2098 lua_error(L);
2099 return SWIG_arg;
2100 }
2101
2102
2103 static int _wrap_UIControl_RemoveControl(lua_State* L) {
2104 int SWIG_arg = 0;
2105 UIControl *arg1 = (UIControl *) 0 ;
2106 UIControl *arg2 = (UIControl *) 0 ;
2107 bool result;
2108
2109 SWIG_check_num_args("UIControl::RemoveControl",2,2)
2110 if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("UIControl::RemoveControl",1,"UIControl *");
2111 if(!SWIG_isptrtype(L,2)) SWIG_fail_arg("UIControl::RemoveControl",2,"UIControl *");
2112
2113 if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_UIControl,0))){
2114 SWIG_fail_ptr("UIControl_RemoveControl",1,SWIGTYPE_p_UIControl);
2115 }
2116
2117
2118 if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&arg2,SWIGTYPE_p_UIControl,0))){
2119 SWIG_fail_ptr("UIControl_RemoveControl",2,SWIGTYPE_p_UIControl);
2120 }
2121
2122 result = (bool)(arg1)->RemoveControl(arg2);
2123 lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
2124 return SWIG_arg;
2125
2126 if(0) SWIG_fail;
2127
2128 fail:
2129 lua_error(L);
2130 return SWIG_arg;
2131 }
2132
2133
2134 static void swig_delete_UIControl(void *obj) {
2135 UIControl *arg1 = (UIControl *) obj;
2136 delete arg1;
2137 }
2138 static swig_lua_method swig_UIControl_methods[] = {
2139 {"Show", _wrap_UIControl_Show},
2140 {"Focused", _wrap_UIControl_Focused},
2141 {"OnKey", _wrap_UIControl_OnKey},
2142 {"OnMouseLeftClick", _wrap_UIControl_OnMouseLeftClick},
2143 {"OnMouseRightClick", _wrap_UIControl_OnMouseRightClick},
2144 {"OnMouseEnter", _wrap_UIControl_OnMouseEnter},
2145 {"OnMouseLeave", _wrap_UIControl_OnMouseLeave},
2146 {"AddControl", _wrap_UIControl_AddControl},
2147 {"RemoveControl", _wrap_UIControl_RemoveControl},
2148 {0,0}
2149 };
2150 static swig_lua_attribute swig_UIControl_attributes[] = {
2151 {0,0,0}
2152 };
2153 static swig_lua_attribute swig_UIControl_cls_attributes[] = {
2154 {0,0,0}
2155 };
2156 static swig_lua_method swig_UIControl_cls_methods[] = {
2157 {0,0}
2158 };
2159 static swig_lua_const_info swig_UIControl_cls_constants[] = {
2160 {0,0,0,0,0,0}
2161 };
2162 static swig_lua_class *swig_UIControl_bases[] = {0};
2163 static const char *swig_UIControl_base_names[] = {0};
2164 static swig_lua_class _wrap_class_UIControl = { "UIControl", &SWIGTYPE_p_UIControl,0, swig_delete_UIControl, swig_UIControl_methods, swig_UIControl_attributes, { "UIControl", swig_UIControl_cls_methods, swig_UIControl_cls_attributes, swig_UIControl_cls_constants }, swig_UIControl_bases, swig_UIControl_base_names };
2165
2166 #ifdef __cplusplus
2167 }
2168 #endif
2169
2170 static const struct luaL_Reg swig_commands[] = {
2171 {0,0}
2172 };
2173
2174 static swig_lua_var_info swig_variables[] = {
2175 {0,0,0}
2176 };
2177
2178 static swig_lua_const_info swig_constants[] = {
2179 {0,0,0,0,0,0}
2180 };
2181
2182 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
2183
2184 static swig_type_info _swigt__p_UIControl = {"_p_UIControl", "UIControl *", 0, 0, (void*)&_wrap_class_UIControl, 0};
2185
2186 static swig_type_info *swig_type_initial[] = {
2187 &_swigt__p_UIControl,
2188 };
2189
2190 static swig_cast_info _swigc__p_UIControl[] = { {&_swigt__p_UIControl, 0, 0, 0},{0, 0, 0, 0}};
2191
2192 static swig_cast_info *swig_cast_initial[] = {
2193 _swigc__p_UIControl,
2194 };
2195
2196
2197 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
2198
2199 /* -----------------------------------------------------------------------------
2200 * Type initialization:
2201 * This problem is tough by the requirement that no dynamic
2202 * memory is used. Also, since swig_type_info structures store pointers to
2203 * swig_cast_info structures and swig_cast_info structures store pointers back
2204 * to swig_type_info structures, we need some lookup code at initialization.
2205 * The idea is that swig generates all the structures that are needed.
2206 * The runtime then collects these partially filled structures.
2207 * The SWIG_InitializeModule function takes these initial arrays out of
2208 * swig_module, and does all the lookup, filling in the swig_module.types
2209 * array with the correct data and linking the correct swig_cast_info
2210 * structures together.
2211 *
2212 * The generated swig_type_info structures are assigned staticly to an initial
2213 * array. We just loop through that array, and handle each type individually.
2214 * First we lookup if this type has been already loaded, and if so, use the
2215 * loaded structure instead of the generated one. Then we have to fill in the
2216 * cast linked list. The cast data is initially stored in something like a
2217 * two-dimensional array. Each row corresponds to a type (there are the same
2218 * number of rows as there are in the swig_type_initial array). Each entry in
2219 * a column is one of the swig_cast_info structures for that type.
2220 * The cast_initial array is actually an array of arrays, because each row has
2221 * a variable number of columns. So to actually build the cast linked list,
2222 * we find the array of casts associated with the type, and loop through it
2223 * adding the casts to the list. The one last trick we need to do is making
2224 * sure the type pointer in the swig_cast_info struct is correct.
2225 *
2226 * First off, we lookup the cast->type name to see if it is already loaded.
2227 * There are three cases to handle:
2228 * 1) If the cast->type has already been loaded AND the type we are adding
2229 * casting info to has not been loaded (it is in this module), THEN we
2230 * replace the cast->type pointer with the type pointer that has already
2231 * been loaded.
2232 * 2) If BOTH types (the one we are adding casting info to, and the
2233 * cast->type) are loaded, THEN the cast info has already been loaded by
2234 * the previous module so we just ignore it.
2235 * 3) Finally, if cast->type has not already been loaded, then we add that
2236 * swig_cast_info to the linked list (because the cast->type) pointer will
2237 * be correct.
2238 * ----------------------------------------------------------------------------- */
2239
2240 #ifdef __cplusplus
2241 extern "C" {
2242 #if 0
2243 } /* c-mode */
2244 #endif
2245 #endif
2246
2247 #if 0
2248 #define SWIGRUNTIME_DEBUG
2249 #endif
2250
2251
2252 SWIGRUNTIME void
2253 SWIG_InitializeModule(void *clientdata) {
2254 size_t i;
2255 swig_module_info *module_head, *iter;
2256 int found, init;
2257
2258 /* check to see if the circular list has been setup, if not, set it up */
2259 if (swig_module.next==0) {
2260 /* Initialize the swig_module */
2261 swig_module.type_initial = swig_type_initial;
2262 swig_module.cast_initial = swig_cast_initial;
2263 swig_module.next = &swig_module;
2264 init = 1;
2265 } else {
2266 init = 0;
2267 }
2268
2269 /* Try and load any already created modules */
2270 module_head = SWIG_GetModule(clientdata);
2271 if (!module_head) {
2272 /* This is the first module loaded for this interpreter */
2273 /* so set the swig module into the interpreter */
2274 SWIG_SetModule(clientdata, &swig_module);
2275 module_head = &swig_module;
2276 } else {
2277 /* the interpreter has loaded a SWIG module, but has it loaded this one? */
2278 found=0;
2279 iter=module_head;
2280 do {
2281 if (iter==&swig_module) {
2282 found=1;
2283 break;
2284 }
2285 iter=iter->next;
2286 } while (iter!= module_head);
2287
2288 /* if the is found in the list, then all is done and we may leave */
2289 if (found) return;
2290 /* otherwise we must add out module into the list */
2291 swig_module.next = module_head->next;
2292 module_head->next = &swig_module;
2293 }
2294
2295 /* When multiple interpreters are used, a module could have already been initialized in
2296 a different interpreter, but not yet have a pointer in this interpreter.
2297 In this case, we do not want to continue adding types... everything should be
2298 set up already */
2299 if (init == 0) return;
2300
2301 /* Now work on filling in swig_module.types */
2302 #ifdef SWIGRUNTIME_DEBUG
2303 printf("SWIG_InitializeModule: size %d\n", swig_module.size);
2304 #endif
2305 for (i = 0; i < swig_module.size; ++i) {
2306 swig_type_info *type = 0;
2307 swig_type_info *ret;
2308 swig_cast_info *cast;
2309
2310 #ifdef SWIGRUNTIME_DEBUG
2311 printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
2312 #endif
2313
2314 /* if there is another module already loaded */
2315 if (swig_module.next != &swig_module) {
2316 type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
2317 }
2318 if (type) {
2319 /* Overwrite clientdata field */
2320 #ifdef SWIGRUNTIME_DEBUG
2321 printf("SWIG_InitializeModule: found type %s\n", type->name);
2322 #endif
2323 if (swig_module.type_initial[i]->clientdata) {
2324 type->clientdata = swig_module.type_initial[i]->clientdata;
2325 #ifdef SWIGRUNTIME_DEBUG
2326 printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
2327 #endif
2328 }
2329 } else {
2330 type = swig_module.type_initial[i];
2331 }
2332
2333 /* Insert casting types */
2334 cast = swig_module.cast_initial[i];
2335 while (cast->type) {
2336
2337 /* Don't need to add information already in the list */
2338 ret = 0;
2339 #ifdef SWIGRUNTIME_DEBUG
2340 printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
2341 #endif
2342 if (swig_module.next != &swig_module) {
2343 ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
2344 #ifdef SWIGRUNTIME_DEBUG
2345 if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
2346 #endif
2347 }
2348 if (ret) {
2349 if (type == swig_module.type_initial[i]) {
2350 #ifdef SWIGRUNTIME_DEBUG
2351 printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
2352 #endif
2353 cast->type = ret;
2354 ret = 0;
2355 } else {
2356 /* Check for casting already in the list */
2357 swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
2358 #ifdef SWIGRUNTIME_DEBUG
2359 if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
2360 #endif
2361 if (!ocast) ret = 0;
2362 }
2363 }
2364
2365 if (!ret) {
2366 #ifdef SWIGRUNTIME_DEBUG
2367 printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
2368 #endif
2369 if (type->cast) {
2370 type->cast->prev = cast;
2371 cast->next = type->cast;
2372 }
2373 type->cast = cast;
2374 }
2375 cast++;
2376 }
2377 /* Set entry in modules->types array equal to the type */
2378 swig_module.types[i] = type;
2379 }
2380 swig_module.types[i] = 0;
2381
2382 #ifdef SWIGRUNTIME_DEBUG
2383 printf("**** SWIG_InitializeModule: Cast List ******\n");
2384 for (i = 0; i < swig_module.size; ++i) {
2385 int j = 0;
2386 swig_cast_info *cast = swig_module.cast_initial[i];
2387 printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
2388 while (cast->type) {
2389 printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
2390 cast++;
2391 ++j;
2392 }
2393 printf("---- Total casts: %d\n",j);
2394 }
2395 printf("**** SWIG_InitializeModule: Cast List ******\n");
2396 #endif
2397 }
2398
2399 /* This function will propagate the clientdata field of type to
2400 * any new swig_type_info structures that have been added into the list
2401 * of equivalent types. It is like calling
2402 * SWIG_TypeClientData(type, clientdata) a second time.
2403 */
2404 SWIGRUNTIME void
2405 SWIG_PropagateClientData(void) {
2406 size_t i;
2407 swig_cast_info *equiv;
2408 static int init_run = 0;
2409
2410 if (init_run) return;
2411 init_run = 1;
2412
2413 for (i = 0; i < swig_module.size; i++) {
2414 if (swig_module.types[i]->clientdata) {
2415 equiv = swig_module.types[i]->cast;
2416 while (equiv) {
2417 if (!equiv->converter) {
2418 if (equiv->type && !equiv->type->clientdata)
2419 SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
2420 }
2421 equiv = equiv->next;
2422 }
2423 }
2424 }
2425 }
2426
2427 #ifdef __cplusplus
2428 #if 0
2429 { /* c-mode */
2430 #endif
2431 }
2432 #endif
2433
2434
2435
2436 /* Forward declaration of where the user's %init{} gets inserted */
2437 void SWIG_init_user(lua_State* L );
2438
2439 #ifdef __cplusplus
2440 extern "C" {
2441 #endif
2442 /* this is the initialization function
2443 added at the very end of the code
2444 the function is always called SWIG_init, but an earlier #define will rename it
2445 */
2446 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
2447 LUALIB_API int SWIG_init(lua_State* L)
2448 #else
2449 SWIGEXPORT int SWIG_init(lua_State* L) /* default Lua action */
2450 #endif
2451 {
2452 #if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC) /* valid for both Lua and eLua */
2453 int i;
2454 /* start with global table */
2455 lua_pushglobaltable (L);
2456 /* SWIG's internal initalisation */
2457 SWIG_InitializeModule((void*)L);
2458 SWIG_PropagateClientData();
2459 #endif
2460
2461 #if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC))
2462 /* add a global fn */
2463 SWIG_Lua_add_function(L,"swig_type",SWIG_Lua_type);
2464 SWIG_Lua_add_function(L,"swig_equals",SWIG_Lua_equal);
2465 /* begin the module (its a table with the same name as the module) */
2466 SWIG_Lua_module_begin(L,SWIG_name);
2467 /* add commands/functions */
2468 for (i = 0; swig_commands[i].name; i++){
2469 SWIG_Lua_module_add_function(L,swig_commands[i].name,swig_commands[i].func);
2470 }
2471 /* add variables */
2472 for (i = 0; swig_variables[i].name; i++){
2473 SWIG_Lua_module_add_variable(L,swig_variables[i].name,swig_variables[i].get,swig_variables[i].set);
2474 }
2475 #endif
2476
2477 #if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC)
2478 /* set up base class pointers (the hierarchy) */
2479 for (i = 0; swig_types[i]; i++){
2480 if (swig_types[i]->clientdata){
2481 SWIG_Lua_init_base_class(L,(swig_lua_class*)(swig_types[i]->clientdata));
2482 }
2483 }
2484 /* additional registration structs & classes in lua */
2485 for (i = 0; swig_types[i]; i++){
2486 if (swig_types[i]->clientdata){
2487 SWIG_Lua_class_register(L,(swig_lua_class*)(swig_types[i]->clientdata));
2488 }
2489 }
2490 #endif
2491
2492 #if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC))
2493 /* constants */
2494 SWIG_Lua_InstallConstants(L,swig_constants);
2495 #endif
2496
2497 #if (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC)
2498 /* invoke user-specific initialization */
2499 SWIG_init_user(L);
2500 /* end module */
2501 /* Note: We do not clean up the stack here (Lua will do this for us). At this
2502 point, we have the globals table and out module table on the stack. Returning
2503 one value makes the module table the result of the require command. */
2504 return 1;
2505 #else
2506 return 0;
2507 #endif
2508 }
2509
2510 #ifdef __cplusplus
2511 }
2512 #endif
2513
2514
2515 const char* SWIG_LUACODE=
2516 "";
2517
2518 void SWIG_init_user(lua_State* L)
2519 {
2520 /* exec Lua code if applicable */
2521 SWIG_Lua_dostring(L,SWIG_LUACODE);
2522 }
2523