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
13extern "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 */
22typedef 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 */
38static swig_module_info *SWIG_Pike_GetModule() {
39  return 0;
40}
41
42static void SWIG_Pike_SetModule(swig_module_info *pointer) {
43
44}
45
46/* Convert a pointer value */
47static int
48SWIG_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 */
70static struct object *
71SWIG_Pike_NewPointerObj(void *ptr, swig_type_info *type, int own) {
72    return 0;
73}
74