comparison lib/swig/swigwin-2.0.11/UIControlModule_wrap.cxx @ 2033:e78fa9082174

UIControl module
author Ritor1
date Tue, 19 Nov 2013 20:23:42 +0600
parents
children 7a9477135943
comparison
equal deleted inserted replaced
2032:b9e11e88b157 2033:e78fa9082174
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 #ifdef __cplusplus
730 extern "C" {
731 #endif
732
733 #include "..\..\lua\lua.h"
734 //#include "lauxlib.h"
735 #include <stdlib.h> /* for malloc */
736 #include <assert.h> /* for a few sanity tests */
737
738 /* -----------------------------------------------------------------------------
739 * Lua flavors
740 * ----------------------------------------------------------------------------- */
741
742 #define SWIG_LUA_FLAVOR_LUA 1
743 #define SWIG_LUA_FLAVOR_ELUA 2
744 #define SWIG_LUA_FLAVOR_ELUAC 3
745
746 #if !defined(SWIG_LUA_TARGET)
747 # error SWIG_LUA_TARGET not defined
748 #endif
749
750 #if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
751 # define SWIG_LUA_CONSTTAB_INT(B, C) LSTRKEY(B), LNUMVAL(C)
752 # define SWIG_LUA_CONSTTAB_FLOAT(B, C) LSTRKEY(B), LNUMVAL(C)
753 # define SWIG_LUA_CONSTTAB_STRING(B, C) LSTRKEY(B), LSTRVAL(C)
754 # define SWIG_LUA_CONSTTAB_CHAR(B, C) LSTRKEY(B), LNUMVAL(C)
755 #else /* SWIG_LUA_FLAVOR_LUA */
756 # define SWIG_LUA_CONSTTAB_INT(B, C) SWIG_LUA_INT, (char *)B, (long)C, 0, 0, 0
757 # define SWIG_LUA_CONSTTAB_FLOAT(B, C) SWIG_LUA_FLOAT, (char *)B, 0, (double)C, 0, 0
758 # define SWIG_LUA_CONSTTAB_STRING(B, C) SWIG_LUA_STRING, (char *)B, 0, 0, (void *)C, 0
759 # define SWIG_LUA_CONSTTAB_CHAR(B, C) SWIG_LUA_CHAR, (char *)B, (long)C, 0, 0, 0
760 #endif
761
762 #if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
763 # define LRO_STRVAL(v) {{.p = (char *) v}, LUA_TSTRING}
764 # define LSTRVAL LRO_STRVAL
765 #endif
766
767 /* -----------------------------------------------------------------------------
768 * compatibility defines
769 * ----------------------------------------------------------------------------- */
770
771 /* History of Lua C API length functions: In Lua 5.0 (and before?)
772 there was "lua_strlen". In Lua 5.1, this was renamed "lua_objlen",
773 but a compatibility define of "lua_strlen" was added. In Lua 5.2,
774 this function was again renamed, to "lua_rawlen" (to emphasize that
775 it doesn't call the "__len" metamethod), and the compatibility
776 define of lua_strlen was removed. All SWIG uses have been updated
777 to "lua_rawlen", and we add our own defines of that here for older
778 versions of Lua. */
779 #if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 501
780 # define lua_rawlen lua_strlen
781 #elif LUA_VERSION_NUM == 501
782 # define lua_rawlen lua_objlen
783 #endif
784
785
786 /* lua_pushglobaltable is the recommended "future-proof" way to get
787 the global table for Lua 5.2 and later. Here we define
788 lua_pushglobaltable ourselves for Lua versions before 5.2. */
789 #if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 502
790 # define lua_pushglobaltable(L) lua_pushvalue(L, LUA_GLOBALSINDEX)
791 #endif
792
793
794 /* --------------------------------------------------------------------------
795 * Helper functions for error handling
796 * -------------------------------------------------------------------------- */
797
798 /* Push the string STR on the Lua stack, like lua_pushstring, but
799 prefixed with the the location of the innermost Lua call-point
800 (as formated by luaL_where). */
801 SWIGRUNTIME void
802 SWIG_Lua_pusherrstring (lua_State *L, const char *str)
803 {
804 luaL_where (L, 1);
805 lua_pushstring (L, str);
806 lua_concat (L, 2);
807 }
808
809 /* Push a formatted string generated from FMT and following args on
810 the Lua stack, like lua_pushfstring, but prefixed with the the
811 location of the innermost Lua call-point (as formated by luaL_where). */
812 SWIGRUNTIME void
813 SWIG_Lua_pushferrstring (lua_State *L, const char *fmt, ...)
814 {
815 va_list argp;
816 va_start(argp, fmt);
817 luaL_where(L, 1);
818 lua_pushvfstring(L, fmt, argp);
819 va_end(argp);
820 lua_concat(L, 2);
821 }
822
823
824 /* -----------------------------------------------------------------------------
825 * global swig types
826 * ----------------------------------------------------------------------------- */
827 /* Constant table */
828 #define SWIG_LUA_INT 1
829 #define SWIG_LUA_FLOAT 2
830 #define SWIG_LUA_STRING 3
831 #define SWIG_LUA_POINTER 4
832 #define SWIG_LUA_BINARY 5
833 #define SWIG_LUA_CHAR 6
834
835 /* Structure for variable linking table */
836 typedef struct {
837 const char *name;
838 lua_CFunction get;
839 lua_CFunction set;
840 } swig_lua_var_info;
841
842 /* Constant information structure */
843 typedef struct {
844 int type;
845 char *name;
846 long lvalue;
847 double dvalue;
848 void *pvalue;
849 swig_type_info **ptype;
850 } swig_lua_const_info;
851
852 typedef struct {
853 const char *name;
854 lua_CFunction method;
855 } swig_lua_method;
856
857 typedef struct {
858 const char *name;
859 lua_CFunction getmethod;
860 lua_CFunction setmethod;
861 } swig_lua_attribute;
862
863 // Can be used to create namespaces. Currently used to
864 // wrap class static methods/variables/constants
865 typedef struct {
866 const char *name;
867 swig_lua_method *ns_methods;
868 swig_lua_attribute *ns_attributes;
869 swig_lua_const_info *ns_constants;
870 } swig_lua_namespace;
871
872 typedef struct swig_lua_class {
873 const char *name;
874 swig_type_info **type;
875 lua_CFunction constructor;
876 void (*destructor)(void *);
877 swig_lua_method *methods;
878 swig_lua_attribute *attributes;
879 swig_lua_namespace cls_static;
880 struct swig_lua_class **bases;
881 const char **base_names;
882 } swig_lua_class;
883
884 /* this is the struct for wrapping all pointers in SwigLua
885 */
886 typedef struct {
887 swig_type_info *type;
888 int own; /* 1 if owned & must be destroyed */
889 void *ptr;
890 } swig_lua_userdata;
891
892 /* this is the struct for wrapping arbitrary packed binary data
893 (currently it is only used for member function pointers)
894 the data ordering is similar to swig_lua_userdata, but it is currently not possible
895 to tell the two structures apart within SWIG, other than by looking at the type
896 */
897 typedef struct {
898 swig_type_info *type;
899 int own; /* 1 if owned & must be destroyed */
900 char data[1]; /* arbitary amount of data */
901 } swig_lua_rawdata;
902
903 /* Common SWIG API */
904 #define SWIG_NewPointerObj(L, ptr, type, owner) SWIG_Lua_NewPointerObj(L, (void *)ptr, type, owner)
905 #define SWIG_ConvertPtr(L,idx, ptr, type, flags) SWIG_Lua_ConvertPtr(L,idx,ptr,type,flags)
906 #define SWIG_MustGetPtr(L,idx, type,flags, argnum,fnname) SWIG_Lua_MustGetPtr(L,idx, type,flags, argnum,fnname)
907 /* for C++ member pointers, ie, member methods */
908 #define SWIG_ConvertMember(L, idx, ptr, sz, ty) SWIG_Lua_ConvertPacked(L, idx, ptr, sz, ty)
909 #define SWIG_NewMemberObj(L, ptr, sz, type) SWIG_Lua_NewPackedObj(L, ptr, sz, type)
910
911 /* Runtime API */
912 #define SWIG_GetModule(clientdata) SWIG_Lua_GetModule((lua_State*)(clientdata))
913 #define SWIG_SetModule(clientdata, pointer) SWIG_Lua_SetModule((lua_State*) (clientdata), pointer)
914 #define SWIG_MODULE_CLIENTDATA_TYPE lua_State*
915
916 /* Contract support */
917 #define SWIG_contract_assert(expr, msg) \
918 if (!(expr)) { SWIG_Lua_pusherrstring(L, (char *) msg); goto fail; } else
919
920
921 /* helper #defines */
922 #define SWIG_fail {goto fail;}
923 #define SWIG_fail_arg(func_name,argnum,type) \
924 {SWIG_Lua_pushferrstring(L,"Error in %s (arg %d), expected '%s' got '%s'",\
925 func_name,argnum,type,SWIG_Lua_typename(L,argnum));\
926 goto fail;}
927 #define SWIG_fail_ptr(func_name,argnum,type) \
928 SWIG_fail_arg(func_name,argnum,(type && type->str)?type->str:"void*")
929 #define SWIG_check_num_args(func_name,a,b) \
930 if (lua_gettop(L)<a || lua_gettop(L)>b) \
931 {SWIG_Lua_pushferrstring(L,"Error in %s expected %d..%d args, got %d",func_name,a,b,lua_gettop(L));\
932 goto fail;}
933
934
935 #define SWIG_Lua_get_table(L,n) \
936 (lua_pushstring(L, n), lua_rawget(L,-2))
937
938 #define SWIG_Lua_add_function(L,n,f) \
939 (lua_pushstring(L, n), \
940 lua_pushcfunction(L, f), \
941 lua_rawset(L,-3))
942
943 /* special helper for allowing 'nil' for usertypes */
944 #define SWIG_isptrtype(L,I) (lua_isuserdata(L,I) || lua_isnil(L,I))
945
946 #ifdef __cplusplus
947 /* Special helper for member function pointers
948 it gets the address, casts it, then dereferences it */
949 //#define SWIG_mem_fn_as_voidptr(a) (*((char**)&(a)))
950 #endif
951
952 /* storing/access of swig_module_info */
953 SWIGRUNTIME swig_module_info *
954 SWIG_Lua_GetModule(lua_State* L) {
955 swig_module_info *ret = 0;
956 lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
957 lua_rawget(L,LUA_REGISTRYINDEX);
958 if (lua_islightuserdata(L,-1))
959 ret=(swig_module_info*)lua_touserdata(L,-1);
960 lua_pop(L,1); /* tidy */
961 return ret;
962 }
963
964 SWIGRUNTIME void
965 SWIG_Lua_SetModule(lua_State* L, swig_module_info *module) {
966 /* add this all into the Lua registry: */
967 lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
968 lua_pushlightuserdata(L,(void*)module);
969 lua_rawset(L,LUA_REGISTRYINDEX);
970 }
971
972 /* -----------------------------------------------------------------------------
973 * global variable support code: modules
974 * ----------------------------------------------------------------------------- */
975
976 /* this function is called when trying to set an immutable.
977 default action is to print an error.
978 This can removed with a compile flag SWIGLUA_IGNORE_SET_IMMUTABLE */
979 SWIGINTERN int SWIG_Lua_set_immutable(lua_State* L)
980 {
981 /* there should be 1 param passed in: the new value */
982 #ifndef SWIGLUA_IGNORE_SET_IMMUTABLE
983 lua_pop(L,1); /* remove it */
984 luaL_error(L,"This variable is immutable");
985 #endif
986 return 0; /* should not return anything */
987 }
988
989 /* the module.get method used for getting linked data */
990 SWIGINTERN int SWIG_Lua_module_get(lua_State* L)
991 {
992 /* there should be 2 params passed in
993 (1) table (not the meta table)
994 (2) string name of the attribute
995 printf("SWIG_Lua_module_get %p(%s) '%s'\n",
996 lua_topointer(L,1),lua_typename(L,lua_type(L,1)),
997 lua_tostring(L,2));
998 */
999 /* get the metatable */
1000 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1001 assert(lua_isrotable(L,1)); /* just in case */
1002 #else
1003 assert(lua_istable(L,1)); /* default Lua action */
1004 #endif
1005 lua_getmetatable(L,1); /* get the metatable */
1006 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1007 assert(lua_isrotable(L,-1)); /* just in case */
1008 #else
1009 assert(lua_istable(L,-1));
1010 #endif
1011 SWIG_Lua_get_table(L,".get"); /* get the .get table */
1012 lua_remove(L,3); /* remove metatable */
1013 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1014 if (lua_isrotable(L,-1))
1015 #else
1016 if (lua_istable(L,-1))
1017 #endif
1018 {
1019 /* look for the key in the .get table */
1020 lua_pushvalue(L,2); /* key */
1021 lua_rawget(L,-2);
1022 lua_remove(L,3); /* remove .get */
1023 if (lua_iscfunction(L,-1))
1024 { /* found it so call the fn & return its value */
1025 lua_call(L,0,1);
1026 return 1;
1027 }
1028 lua_pop(L,1); /* remove the top */
1029 }
1030 lua_pop(L,1); /* remove the .get */
1031 lua_pushnil(L); /* return a nil */
1032 return 1;
1033 }
1034
1035 /* the module.set method used for setting linked data */
1036 SWIGINTERN int SWIG_Lua_module_set(lua_State* L)
1037 {
1038 /* there should be 3 params passed in
1039 (1) table (not the meta table)
1040 (2) string name of the attribute
1041 (3) any for the new value
1042 */
1043 /* get the metatable */
1044 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1045 assert(lua_isrotable(L,1)); /* just in case */
1046 #else
1047 assert(lua_istable(L,1)); /* default Lua action */
1048 #endif
1049 lua_getmetatable(L,1); /* get the metatable */
1050 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1051 assert(lua_isrotable(L,-1)); /* just in case */
1052 #else
1053 assert(lua_istable(L,-1));
1054 #endif
1055 SWIG_Lua_get_table(L,".set"); /* get the .set table */
1056 lua_remove(L,4); /* remove metatable */
1057 #if ((SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC))
1058 if (lua_isrotable(L,-1))
1059 #else
1060 if (lua_istable(L,-1))
1061 #endif
1062 {
1063 /* look for the key in the .set table */
1064 lua_pushvalue(L,2); /* key */
1065 lua_rawget(L,-2);
1066 lua_remove(L,4); /* remove .set */
1067 if (lua_iscfunction(L,-1))
1068 { /* found it so call the fn & return its value */
1069 lua_pushvalue(L,3); /* value */
1070 lua_call(L,1,0);
1071 return 0;
1072 }
1073 #if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA)
1074 else {
1075 return 0; // Exits stoically if an invalid key is initialized.
1076 }
1077 #endif
1078 }
1079 lua_settop(L,3); /* reset back to start */
1080 /* we now have the table, key & new value, so just set directly */
1081 lua_rawset(L,1); /* add direct */
1082 return 0;
1083 }
1084
1085 #if ((SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUA) && (SWIG_LUA_TARGET != SWIG_LUA_FLAVOR_ELUAC))
1086 /* registering a module in lua. Pushes the module table on the stack. */
1087 SWIGINTERN void SWIG_Lua_module_begin(lua_State* L,const char* name)
1088 {
1089 assert(lua_istable(L,-1)); /* just in case */
1090 lua_pushstring(L,name);
1091 lua_newtable(L); /* the table */
1092 /* add meta table */
1093 lua_newtable(L); /* the meta table */
1094 SWIG_Lua_add_function(L,"__index",SWIG_Lua_module_get);
1095 SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_module_set);
1096 lua_pushstring(L,".get");
1097 lua_newtable(L); /* the .get table */
1098 lua_rawset(L,-3); /* add .get into metatable */
1099 lua_pushstring(L,".set");
1100 lua_newtable(L); /* the .set table */
1101 lua_rawset(L,-3); /* add .set into metatable */
1102 lua_setmetatable(L,-2); /* sets meta table in module */
1103 #ifdef SWIG_LUA_MODULE_GLOBAL
1104 /* If requested, install the module directly into the global namespace. */
1105 lua_rawset(L,-3); /* add module into parent */
1106 SWIG_Lua_get_table(L,name); /* get the table back out */
1107 #else
1108 /* Do not install the module table as global name. The stack top has
1109 the module table with the name below. We pop the top and replace
1110 the name with it. */
1111 lua_replace(L,-2);
1112 #endif
1113 }
1114
1115 /* ending the register */
1116 SWIGINTERN void SWIG_Lua_module_end(lua_State* L)
1117 {
1118 lua_pop(L,1); /* tidy stack (remove module) */
1119 }
1120
1121 /* adding a linked variable to the module */
1122 SWIGINTERN void SWIG_Lua_module_add_variable(lua_State* L,const char* name,lua_CFunction getFn,lua_CFunction setFn)
1123 {
1124 assert(lua_istable(L,-1)); /* just in case */
1125 lua_getmetatable(L,-1); /* get the metatable */
1126 assert(lua_istable(L,-1)); /* just in case */
1127 SWIG_Lua_get_table(L,".get"); /* find the .get table */
1128 assert(lua_istable(L,-1)); /* should be a table: */
1129 SWIG_Lua_add_function(L,name,getFn);
1130 lua_pop(L,1); /* tidy stack (remove table) */
1131 if (setFn) /* if there is a set fn */
1132 {
1133 SWIG_Lua_get_table(L,".set"); /* find the .set table */
1134 assert(lua_istable(L,-1)); /* should be a table: */
1135 SWIG_Lua_add_function(L,name,setFn);
1136 lua_pop(L,1); /* tidy stack (remove table) */
1137 }
1138 lua_pop(L,1); /* tidy stack (remove meta) */
1139 }
1140 #endif
1141
1142 /* adding a function module */
1143 SWIGINTERN void SWIG_Lua_module_add_function(lua_State* L,const char* name,lua_CFunction fn)
1144 {
1145 SWIG_Lua_add_function(L,name,fn);
1146 }
1147
1148 /* -----------------------------------------------------------------------------
1149 * global variable support code: namespaces
1150 * ----------------------------------------------------------------------------- */
1151
1152 SWIGINTERN int SWIG_Lua_namespace_get(lua_State* L)
1153 {
1154 /* there should be 2 params passed in
1155 (1) table (not the meta table)
1156 (2) string name of the attribute
1157 */
1158 assert(lua_istable(L,-2)); /* just in case */
1159 lua_getmetatable(L,-2);
1160 assert(lua_istable(L,-1));
1161 SWIG_Lua_get_table(L,".get"); /* find the .get table */
1162 assert(lua_istable(L,-1));
1163 /* look for the key in the .get table */
1164 lua_pushvalue(L,2); /* key */
1165 lua_rawget(L,-2);
1166 lua_remove(L,-2); /* stack tidy, remove .get table */
1167 if (lua_iscfunction(L,-1))
1168 { /* found it so call the fn & return its value */
1169 lua_call(L,0,1); /* 1 value in (userdata),1 out (result) */
1170 lua_remove(L,-2); /* stack tidy, remove metatable */
1171 return 1;
1172 }
1173 lua_pop(L,1); /* remove whatever was there */
1174 /* ok, so try the .fn table */
1175 SWIG_Lua_get_table(L,".fn"); /* find the .get table */
1176 assert(lua_istable(L,-1)); /* just in case */
1177 lua_pushvalue(L,2); /* key */
1178 lua_rawget(L,-2); /* look for the fn */
1179 lua_remove(L,-2); /* stack tidy, remove .fn table */
1180 if (lua_isfunction(L,-1)) /* note: whether it's a C function or lua function */
1181 { /* found it so return the fn & let lua call it */
1182 lua_remove(L,-2); /* stack tidy, remove metatable */
1183 return 1;
1184 }
1185 lua_pop(L,1); /* remove whatever was there */
1186 return 0;
1187 }
1188
1189 SWIGINTERN int SWIG_Lua_namespace_set(lua_State* L)
1190 {
1191 /* there should be 3 params passed in
1192 (1) table (not the meta table)
1193 (2) string name of the attribute
1194 (3) any for the new value
1195 */
1196
1197 assert(lua_istable(L,1));
1198 lua_getmetatable(L,1); /* get the meta table */
1199 assert(lua_istable(L,-1));
1200
1201 SWIG_Lua_get_table(L,".set"); /* find the .set table */
1202 if (lua_istable(L,-1))
1203 {
1204 /* look for the key in the .set table */
1205 lua_pushvalue(L,2); /* key */
1206 lua_rawget(L,-2);
1207 if (lua_iscfunction(L,-1))
1208 { /* found it so call the fn & return its value */
1209 lua_pushvalue(L,3); /* value */
1210 lua_call(L,1,0);
1211 return 0;
1212 }
1213 lua_pop(L,1); /* remove the value */
1214 }
1215 lua_pop(L,1); /* remove the value .set table */
1216 return 0;
1217 }
1218
1219 SWIGINTERN void SWIG_Lua_InstallConstants(lua_State* L, swig_lua_const_info constants[]); // forward declaration
1220 SWIGINTERN void SWIG_Lua_add_class_variable(lua_State* L,const char* name,lua_CFunction getFn,lua_CFunction setFn); // forward declaration
1221
1222 /* helper function - register namespace methods and attributes into namespace */
1223 SWIGINTERN int SWIG_Lua_add_namespace_details(lua_State* L, swig_lua_namespace* ns)
1224 {
1225 int i = 0;
1226 assert(lua_istable(L,-1));
1227 /* There must be table at the top of the stack */
1228 SWIG_Lua_InstallConstants(L, ns->ns_constants);
1229
1230 lua_getmetatable(L,-1);
1231
1232 /* add fns */
1233 for(i=0;ns->ns_attributes[i].name;i++){
1234 SWIG_Lua_add_class_variable(L,ns->ns_attributes[i].name,ns->ns_attributes[i].getmethod,ns->ns_attributes[i].setmethod);
1235 }
1236
1237 /* add methods to the metatable */
1238 SWIG_Lua_get_table(L,".fn"); /* find the .fn table */
1239 assert(lua_istable(L,-1)); /* just in case */
1240 for(i=0;ns->ns_methods[i].name;i++){
1241 SWIG_Lua_add_function(L,ns->ns_methods[i].name,ns->ns_methods[i].method);
1242 }
1243 lua_pop(L,1);
1244
1245 /* clear stack - remove metatble */
1246 lua_pop(L,1);
1247 return 0;
1248 }
1249
1250 /* helper function. creates namespace table and add it to module table */
1251 SWIGINTERN int SWIG_Lua_namespace_register(lua_State* L, swig_lua_namespace* ns)
1252 {
1253 assert(lua_istable(L,-1)); /* just in case. This is supposed to be module table */
1254 lua_checkstack(L,5);
1255 lua_pushstring(L, ns->name);
1256 lua_newtable(L); /* namespace itself */
1257 lua_newtable(L); /* metatable for namespace */
1258
1259 /* add a table called ".get" */
1260 lua_pushstring(L,".get");
1261 lua_newtable(L);
1262 lua_rawset(L,-3);
1263 /* add a table called ".set" */
1264 lua_pushstring(L,".set");
1265 lua_newtable(L);
1266 lua_rawset(L,-3);
1267 /* add a table called ".fn" */
1268 lua_pushstring(L,".fn");
1269 lua_newtable(L);
1270 lua_rawset(L,-3);
1271
1272 /* add accessor fns for using the .get,.set&.fn */
1273 SWIG_Lua_add_function(L,"__index",SWIG_Lua_namespace_get);
1274 SWIG_Lua_add_function(L,"__newindex",SWIG_Lua_namespace_set);
1275
1276 lua_setmetatable(L,-2); /* set metatable */
1277 lua_rawset(L,-3); /* add namespace to module table */
1278 return 0;
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 "..\..\..\NewUI\Core\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