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