import source from 1.3.40
[external/swig.git] / Lib / pike / pikerun.swg
1 /* -----------------------------------------------------------------------------
2  * See the LICENSE file for information on copyright, usage and redistribution
3  * of SWIG, and the README file for authors - http://www.swig.org/release.html.
4  *
5  * pikerun.swg
6  *
7  * This file contains the runtime support for Pike modules
8  * and includes code for managing global variables and pointer
9  * type checking.
10  * ----------------------------------------------------------------------------- */
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 #include "object.h"
16 #include "program.h"
17 #ifdef __cplusplus
18 }
19 #endif
20
21 /* Stores information about a wrapped object */
22 typedef struct swig_object_wrapper {
23     void *self;
24     swig_type_info *type;
25 } swig_object_wrapper;
26
27 #ifdef THIS
28 #undef THIS
29 #endif
30 #define THIS (((swig_object_wrapper *) Pike_fp->current_storage)->self)
31
32 #define SWIG_ConvertPtr SWIG_Pike_ConvertPtr
33 #define SWIG_NewPointerObj SWIG_Pike_NewPointerObj
34 #define SWIG_GetModule(clientdata) SWIG_Pike_GetModule()
35 #define SWIG_SetModule(clientdata, pointer) SWIG_Pike_SetModule(pointer)
36
37 /* These need to be filled in before type sharing between modules will work */
38 static swig_module_info *SWIG_Pike_GetModule() {
39   return 0;
40 }
41
42 static void SWIG_Pike_SetModule(swig_module_info *pointer) {
43
44 }
45
46 /* Convert a pointer value */
47 static int
48 SWIG_Pike_ConvertPtr(struct object *obj, void **ptr, swig_type_info *ty, int flags) {
49     struct program *pr;
50     swig_cast_info *tc;
51     swig_object_wrapper *obj_wrapper;
52     
53     if (ty) {
54         pr = (struct program *) ty->clientdata;
55         obj_wrapper = (swig_object_wrapper *) get_storage(obj, pr);
56         if (obj_wrapper && obj_wrapper->type) {
57             tc = SWIG_TypeCheckStruct(obj_wrapper->type, ty);
58             if (tc) {
59                 int newmemory = 0;
60                 *ptr = SWIG_TypeCast(tc, obj_wrapper->self, &newmemory);
61                 assert(!newmemory); /* newmemory handling not yet implemented */
62                 return 0;
63             }
64         }
65     }
66     return -1;
67 }
68
69 /* Create a new pointer object */
70 static struct object *
71 SWIG_Pike_NewPointerObj(void *ptr, swig_type_info *type, int own) {
72     return 0;
73 }