pikerun.swg 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #include "pike/object.h"
  12. #include "pike/program.h"
  13. #ifdef __cplusplus
  14. }
  15. #endif
  16. #include <assert.h>
  17. /* Stores information about a wrapped object */
  18. typedef struct swig_object_wrapper {
  19. void *self;
  20. swig_type_info *type;
  21. } swig_object_wrapper;
  22. #ifdef THIS
  23. #undef THIS
  24. #endif
  25. #define THIS (((swig_object_wrapper *) Pike_fp->current_storage)->self)
  26. #define SWIG_ConvertPtr SWIG_Pike_ConvertPtr
  27. #define SWIG_NewPointerObj SWIG_Pike_NewPointerObj
  28. #define SWIG_GetModule(clientdata) SWIG_Pike_GetModule(clientdata)
  29. #define SWIG_SetModule(clientdata, pointer) SWIG_Pike_SetModule(pointer)
  30. /* These need to be filled in before type sharing between modules will work */
  31. static swig_module_info *SWIG_Pike_GetModule(void *SWIGUNUSEDPARM(clientdata)) {
  32. return 0;
  33. }
  34. static void SWIG_Pike_SetModule(swig_module_info *pointer) {
  35. }
  36. /* Convert a pointer value */
  37. static int
  38. SWIG_Pike_ConvertPtr(struct object *obj, void **ptr, swig_type_info *ty, int flags) {
  39. struct program *pr;
  40. swig_cast_info *tc;
  41. swig_object_wrapper *obj_wrapper;
  42. if (ty) {
  43. pr = (struct program *) ty->clientdata;
  44. obj_wrapper = (swig_object_wrapper *) get_storage(obj, pr);
  45. if (obj_wrapper && obj_wrapper->type) {
  46. tc = SWIG_TypeCheckStruct(obj_wrapper->type, ty);
  47. if (tc) {
  48. int newmemory = 0;
  49. *ptr = SWIG_TypeCast(tc, obj_wrapper->self, &newmemory);
  50. assert(!newmemory); /* newmemory handling not yet implemented */
  51. return 0;
  52. }
  53. }
  54. }
  55. return -1;
  56. }
  57. /* Create a new pointer object */
  58. static struct object *
  59. SWIG_Pike_NewPointerObj(void *ptr, swig_type_info *type, int own) {
  60. return 0;
  61. }