diff options
author | Matthias Köppe <mkoeppe@mail.math.uni-magdeburg.de> | 2003-06-10 21:54:01 +0000 |
---|---|---|
committer | Matthias Köppe <mkoeppe@mail.math.uni-magdeburg.de> | 2003-06-10 21:54:01 +0000 |
commit | 568be8990a37e19fc70f0387d84ac35883f91017 (patch) | |
tree | bd1e2d9f7653bd7352dc32822bafe51c47d95aae /Lib | |
parent | 6410f0970a149991795f8fb8f5da371a47c763ae (diff) | |
download | swig-568be8990a37e19fc70f0387d84ac35883f91017.tar.gz |
Merged MzScheme changes contributed by John Lenz.
Minor build changes to fix MzScheme/C++ test cases.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4880 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/mzscheme/mzrun.swg | 134 | ||||
-rw-r--r-- | Lib/mzscheme/mzscheme.i | 26 | ||||
-rw-r--r-- | Lib/mzscheme/mzscheme.swg | 312 | ||||
-rw-r--r-- | Lib/mzscheme/mzschemedec.swg | 84 | ||||
-rw-r--r-- | Lib/mzscheme/std_map.i | 140 | ||||
-rw-r--r-- | Lib/mzscheme/std_vector.i | 50 | ||||
-rw-r--r-- | Lib/mzscheme/typemaps.i | 78 |
7 files changed, 313 insertions, 511 deletions
diff --git a/Lib/mzscheme/mzrun.swg b/Lib/mzscheme/mzrun.swg new file mode 100644 index 000000000..9b43ac76b --- /dev/null +++ b/Lib/mzscheme/mzrun.swg @@ -0,0 +1,134 @@ +/* -*- c -*- + * ----------------------------------------------------------------------- + * swig_lib/mzscheme/mzrun.swg + * + * Author: John Lenz <jelenz@students.wisc.edu> + * ----------------------------------------------------------------------- */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <escheme.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAXVALUES 6 +#define swig_make_boolean(b) (b ? scheme_true : scheme_false) + +#ifdef SWIG_NOINCLUDE + +SWIGIMPORT(void) SWIG_Mzscheme_Init(); +/* If there is a type-mismatch, return nonzero; on success, return 0. */ +SWIGIMPORT(int) SWIG_Mzscheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags); +/* If there is a type-mismatch, signal a wrong-type-arg error for the given argument number. */ +SWIGIMPORT(void *) SWIG_Mzscheme_MustGetPtr(Scheme_Object *s, swig_type_info *type, + int argnum, int flags, const char *func_name, + int argc, Scheme_Object **argv); +SWIGIMPORT(Scheme_Object *) SWIG_Mzscheme_NewPointerObj(void *ptr, swig_type_info *type, int owner); +SWIGIMPORT(void *) SWIG_Mzscheme_Malloc(size_t size, const char *func_name); +SWIGIMPORT(Scheme_Object *) SWIG_Mzscheme_PackageValues(int num, Scheme_Object **values); + +#else + +struct swig_mz_proxy { + Scheme_Type mztype; + swig_type_info *type; + void *object; +}; + +static Scheme_Type swig_type; +static int swig_mz_initialized = 0; + +static void mz_free_swig(void *p, void *data) { + struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) p; + if (SCHEME_NULLP((Scheme_Object*)p) || SCHEME_TYPE((Scheme_Object*)p) != swig_type) + return; + if (proxy->type) { + if (proxy->type->clientdata) { + ((Scheme_Prim *)proxy->type->clientdata)(1, (Scheme_Object **)&proxy); + } + } +} + +SWIGRUNTIME(Scheme_Object *) +SWIG_Mzscheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) { + struct swig_mz_proxy *new_proxy; + new_proxy = (struct swig_mz_proxy *) scheme_malloc(sizeof(struct swig_mz_proxy)); + new_proxy->mztype = swig_type; + new_proxy->type = type; + new_proxy->object = ptr; + if (owner) { + scheme_add_finalizer(new_proxy, mz_free_swig, NULL); + } + return (Scheme_Object *) new_proxy; +} + +SWIGRUNTIME(int) +SWIG_Mzscheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) { + swig_type_info *cast; + + if (SCHEME_NULLP(s)) { + *result = NULL; + return 0; + } else if (SCHEME_TYPE(s) == swig_type) { + struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) s; + if (type) { + cast = SWIG_TypeCheck((char *)proxy->type->name, type); + if (cast) { + *result = SWIG_TypeCast(cast, proxy->object); + return 0; + } else { + return 1; + } + } else { + *result = proxy->object; + return 0; + } + } + return 1; +} + +SWIGRUNTIME(void *) +SWIG_Mzscheme_MustGetPtr(Scheme_Object *s, swig_type_info *type, + int argnum, int flags, const char *func_name, + int argc, Scheme_Object **argv) { + void *result; + if (SWIG_Mzscheme_ConvertPtr(s, &result, type, flags)) { + scheme_wrong_type(func_name, type->str ? type->str : "void *", argnum, argc, argv); + } + return result; +} + +SWIGRUNTIME(void) +SWIG_Mzscheme_Init() { + if (!swig_mz_initialized) { + swig_type = scheme_make_type((char *)"swig"); + swig_mz_initialized = 1; + } +} + +SWIGRUNTIME(void *) +SWIG_Mzscheme_Malloc(size_t size, const char *func_name) { + void *p = malloc(size); + if (p == NULL) { + scheme_signal_error("swig-memory-error"); + } else return p; +} + +SWIGIMPORT(Scheme_Object *) +SWIG_Mzscheme_PackageValues(int num, Scheme_Object **values) { + /* ignore first value if void */ + if (num > 0 && SCHEME_VOIDP(values[0])) + num--, values++; + if (num == 0) return scheme_void; + else if (num == 1) return values[0]; + else return scheme_values(num, values); +} + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/Lib/mzscheme/mzscheme.i b/Lib/mzscheme/mzscheme.i index 372a0b906..e69de29bb 100644 --- a/Lib/mzscheme/mzscheme.i +++ b/Lib/mzscheme/mzscheme.i @@ -1,26 +0,0 @@ -/* SWIG Configuration File for MzScheme. -*-c-*- - This file is parsed by SWIG before reading any other interface - file. */ - -/* Include headers */ -%insert(runtime) "mzschemedec.swg" - -/*#ifndef SWIG_NOINCLUDE*/ -%insert(runtime) "mzscheme.swg" -/*#endif*/ - -%define SWIG_APPEND_VALUE(value) - values[lenv++] = value -%enddef - -/* Definitions */ -#define SWIG_malloc(size) swig_malloc(size, FUNC_NAME) -#define SWIG_free(mem) free(mem) - -/* Guile compatibility kludges */ -#define SCM_VALIDATE_VECTOR(argnum, value) (void)0 -#define SCM_VALIDATE_LIST(argnum, value) (void)0 - -/* Read in standard typemaps. */ -%include "typemaps.i" - diff --git a/Lib/mzscheme/mzscheme.swg b/Lib/mzscheme/mzscheme.swg index e4ac8864f..d083db864 100644 --- a/Lib/mzscheme/mzscheme.swg +++ b/Lib/mzscheme/mzscheme.swg @@ -1,270 +1,46 @@ -/* -*-c-*- */ - -/* SWIG pointer structure */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct SwigCast { - struct SwigPtrType *type; /* Type in SwigPtrTbl */ - void *(*cast)(void *); /* Pointer casting function */ - struct SwigCast *next; /* Linked list pointer */ -}; - -struct SwigPtrType { - const char *name; /* Datatype name */ - const char *prettyname; /* Pretty datatype name */ - struct SwigCast *cast; /* List of compatible types */ -}; - -struct swig_proxy { - Scheme_Type type; - SwigPtrType *ptrtype; - void *object; -}; - -/* Pointer table */ -static SwigPtrType **SwigPtrTbl = 0; /* Sorted table */ -static int SwigPtrMax = 64; /* Max entries that can be held */ - /* (may be adjusted dynamically) */ -static int SwigPtrN = 0; /* Current number of entries */ -static int SwigPtrSort = 0; /* Status flag indicating sort */ - -/* Sort comparison function */ -static int -swigsort (const void *data1, const void *data2) -{ - SwigPtrType *type1 = * (SwigPtrType **) data1; - SwigPtrType *type2 = * (SwigPtrType **) data2; - return strcmp(type1->name, type2->name); -} - -/* Register a new datatype with the type-checker */ -SWIGSTATIC SwigPtrType * -SWIG_RegisterType (const char *type, const char *prettyname) -{ - int i; - struct SwigPtrType **t; - - /* Allocate the pointer table if necessary */ - if (!SwigPtrTbl) { - SwigPtrTbl = (SwigPtrType **) malloc(SwigPtrMax*sizeof(SwigPtrType *)); - SwigPtrN = 0; - } - /* Grow the table if necessary */ - if (SwigPtrN >= SwigPtrMax) { - SwigPtrMax = 2*SwigPtrMax; - SwigPtrTbl = (SwigPtrType **) realloc((char *) SwigPtrTbl, - SwigPtrMax*sizeof(SwigPtrType *)); - } - /* Look up type */ - for (i = 0; i < SwigPtrN; i++) - if (strcmp(SwigPtrTbl[i]->name,type) == 0) { - if (prettyname!=NULL) - SwigPtrTbl[i]->prettyname = prettyname; - return SwigPtrTbl[i]; - } - t = SwigPtrTbl + SwigPtrN; - *t = (SwigPtrType *) malloc(sizeof(SwigPtrType)); - (*t)->name = type; - (*t)->prettyname = prettyname; - (*t)->cast = NULL; - SwigPtrN++; - SwigPtrSort = 0; - return *t; -} - -/* Register two data types and their mapping with the type checker. */ -SWIGSTATIC void -SWIG_RegisterMapping (const char *origtype, const char *newtype, void *(*cast)(void *)) -{ - struct SwigPtrType *t = SWIG_RegisterType(origtype, NULL); - - if (newtype!=NULL) { - struct SwigPtrType *t1 = SWIG_RegisterType(newtype, NULL); - struct SwigCast *c; - /* Check for existing cast */ - for (c = t->cast; c && c->type!=t1; c=c->next) /* nothing */; - if (c) { - if (cast) c->cast = cast; - } - else { - c = (struct SwigCast *) malloc(sizeof(struct SwigCast)); - c->type = t1; - c->cast = cast; - c->next = t->cast; - t->cast = c; - } - } -} - -/* Sort table */ - -static void -SWIG_SortTable (void) -{ - qsort ((void *) SwigPtrTbl, SwigPtrN, sizeof(struct SwigPtrTbl *), swigsort); - /* Indicate that everything is sorted */ - SwigPtrSort = 1; -} - -/* Look up pointer-type entry in table */ - -static int -swigcmp (const void *key, const void *data) -{ - char *k = (char *) key; - SwigPtrType *t = *(SwigPtrType **) data; - return strcmp(k, t->name); -} - -static SwigPtrType * -SWIG_GetPtrType (const char *_t) -{ - SwigPtrType **result; - if (!SwigPtrSort) SWIG_SortTable(); - result = (SwigPtrType **) bsearch(_t, SwigPtrTbl, SwigPtrN, - sizeof(SwigPtrType *), swigcmp); - if (result!=NULL) return *result; - else return NULL; -} - -/* Cast a pointer if possible; returns 1 if successful */ - -static int -SWIG_Cast (void *source, SwigPtrType *source_type, - void **ptr, SwigPtrType *dest_type) -{ - if (dest_type != source_type) { - /* We have a type mismatch. Will have to look through our type - mapping table to figure out whether or not we can accept this - datatype. */ - struct SwigCast *c; - for (c = dest_type->cast; - c && c->type!=source_type; c = c->next) /* nothing */; - if (c) { - /* Get pointer value. */ - if (c->cast) *ptr = (*(c->cast))(source); - else *ptr = source; - return -1; +/* SWIG Configuration File for MzScheme. -*-c-*- + This file is parsed by SWIG before reading any other interface + file. */ + +%runtime %{ +#define SWIG_malloc(size) SWIG_Mzscheme_Malloc(size, FUNC_NAME) +#define SWIG_free(mem) free(mem) +#define SWIG_ConvertPtr(s, result, type, flags) \ + SWIG_Mzscheme_ConvertPtr(s, result, type, flags) +#define SWIG_MustGetPtr(s, type, argnum, flags) \ + SWIG_Mzscheme_MustGetPtr(s, type, argnum, flags, FUNC_NAME, argc, argv) +#define SWIG_NewPointerObj(ptr, type, owner) \ + SWIG_Mzscheme_NewPointerObj((void *)ptr, type, owner) +%} + +/* Include headers */ +%runtime "common.swg" +%runtime "mzrun.swg" + +%define SWIG_APPEND_VALUE(value) + values[lenv++] = value +%enddef + +/* Definitions */ +#define SWIG_malloc(size) swig_malloc(size, FUNC_NAME) +#define SWIG_free(mem) free(mem) + +/* Guile compatibility kludges */ +#define SCM_VALIDATE_VECTOR(argnum, value) (void)0 +#define SCM_VALIDATE_LIST(argnum, value) (void)0 + +/* Read in standard typemaps. */ +%include "typemaps.i" + +%init %{ + static int _swig_init = 0; + + if (!_swig_init) { + int i; + for (i = 0; swig_types_initial[i]; i++) { + swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]); } - /* Didn't find any sort of match for this data. - Get the pointer value and return false. */ - *ptr = source; - return 0; - } else { - /* Found a match on the first try. Return pointer value. */ - *ptr = source; - return -1; - } -} - -/* Function for getting a pointer value */ - -static Scheme_Type swig_type; -int swig_initialized_p = 0; - -SWIGSTATIC Scheme_Object * -SWIG_MakePtr(void *c_pointer, swig_type_info *type) { - struct swig_proxy *new_proxy; - new_proxy = (struct swig_proxy *) scheme_malloc(sizeof(struct swig_proxy)); - new_proxy->type = swig_type; - new_proxy->ptrtype = type->ptrtype; - new_proxy->object = (void *) c_pointer; - return (Scheme_Object *) new_proxy; -} - -/* Return 0 if successful. */ -SWIGSTATIC int -SWIG_GetPtr(Scheme_Object *s, void **result, swig_type_info *type) -{ - if (SCHEME_NULLP(s)) { - *result = NULL; - return 0; - } - else if (SCHEME_TYPE(s) == swig_type) { - struct swig_proxy *proxy = (struct swig_proxy *) s; - if (type) { - return !SWIG_Cast(proxy->object, proxy->ptrtype, - result, type->ptrtype); - } - else { - *result = proxy->object; - return 0; - } - } - return -1; -} - -SWIGSTATIC void * -SWIG_MustGetPtr_ (Scheme_Object *s, swig_type_info *type, - int argnum, const char *func_name, - int argc, Scheme_Object **argv) -{ - void *result; - if (SWIG_GetPtr(s, &result, type) != 0) { - /* type mismatch */ - scheme_wrong_type(func_name, type->str ? type->str : "void *", argnum, argc, argv); - } - return result; -} - -SWIGSTATIC -void SWIG_RegisterTypes(swig_type_info **table, - swig_type_info **init) -{ - if (!swig_initialized_p) { - swig_type = scheme_make_type((char *) "swig"); - swig_initialized_p = 1; - } - for (; *init; table++, init++) { - swig_type_info *type = *table = *init; - const char *origname = type->name; - /* Register datatype itself and store pointer back */ - type->ptrtype = SWIG_RegisterType(origname, type->str); - /* Register compatible types */ - for (type++; type->name; type++) - SWIG_RegisterMapping(origname, type->name, type->converter); - } -} - - -/* Dynamic pointer casting. Down an inheritance hierarchy */ -SWIGSTATIC swig_type_info * -SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) -{ - swig_type_info *lastty = ty; - if (!ty || !ty->dcast) return ty; - while (ty && (ty->dcast)) { - ty = (*ty->dcast)(ptr); - if (ty) lastty = ty; + _swig_init = 1; } - return lastty; -} - -static Scheme_Object * -swig_package_values(int num, Scheme_Object **values) -{ - /* ignore first value if void */ - if (num > 0 && SCHEME_VOIDP(values[0])) - num--, values++; - if (num == 0) return scheme_void; - else if (num == 1) return values[0]; - else return scheme_values(num, values); -} - -static void * -swig_malloc(size_t size, const char *func_name) -{ - void *p = malloc(size); - if (p == NULL) { - scheme_signal_error("swig-memory-error"); - } - else return p; -} - -#ifdef __cplusplus -} -#endif - + SWIG_Mzscheme_Init(); +%} diff --git a/Lib/mzscheme/mzschemedec.swg b/Lib/mzscheme/mzschemedec.swg index 59a540422..e69de29bb 100644 --- a/Lib/mzscheme/mzschemedec.swg +++ b/Lib/mzscheme/mzschemedec.swg @@ -1,84 +0,0 @@ -/* -*-c-*- - * ----------------------------------------------------------------------- - * swig_lib/mzscheme/mzschemedec.swg - * Copyright (C) 2000, 2001 Matthias Koeppe - * - * MzScheme runtime code -- declarations - * ----------------------------------------------------------------------- */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#include <escheme.h> - -#if defined(SWIG_NOINCLUDE) -# define SWIGSTATIC -#elif defined(SWIG_GLOBAL) -# define SWIGSTATIC -#else -# define SWIGSTATIC static -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define MAXVALUES 6 - -static Scheme_Object * -swig_make_boolean(int b) -{ - if (b) return scheme_true; - else return scheme_false; -} - -static Scheme_Object * -swig_package_values(int num, Scheme_Object **values); - - -typedef struct SwigPtrType SwigPtrType; -typedef struct swig_type_info *(*swig_dycast_func)(void **); - -typedef struct swig_type_info { - const char *name; - void *(*converter)(void *); - const char *str; - void *clientdata; - SwigPtrType *ptrtype; - swig_dycast_func dcast; -} swig_type_info; - -SWIGSTATIC SwigPtrType * -SWIG_RegisterType (const char *type, const char *prettyname); - -SWIGSTATIC void -SWIG_RegisterMapping (const char *origtype, const char *newtype, void *(*cast)(void *)); - -/* Dynamic pointer casting. Down an inheritance hierarchy */ -SWIGSTATIC swig_type_info * -SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr); - -SWIGSTATIC Scheme_Object * -SWIG_MakePtr(void *c_pointer, swig_type_info *type); - -SWIGSTATIC int -SWIG_GetPtr(Scheme_Object *s, void **result, swig_type_info *type); - -SWIGSTATIC void * -SWIG_MustGetPtr_ (Scheme_Object *s, swig_type_info *type, - int argnum, const char *func_name, - int argc, Scheme_Object **argv); - -#define SWIG_MustGetPtr(s, type, argnum) \ - SWIG_MustGetPtr_(s, type, argnum, FUNC_NAME, argc, argv) - -SWIGSTATIC -void SWIG_RegisterTypes(swig_type_info **table, - swig_type_info **init); - -#ifdef __cplusplus -} -#endif - -/* mzschemedec.swg ends here */ diff --git a/Lib/mzscheme/std_map.i b/Lib/mzscheme/std_map.i index 1dc4b0445..86374c5bc 100644 --- a/Lib/mzscheme/std_map.i +++ b/Lib/mzscheme/std_map.i @@ -74,20 +74,20 @@ namespace std { SWIG_exception(SWIG_TypeError,"alist expected"); key = scheme_car(entry); val = scheme_cdr(entry); - k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) == -1) { + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { if (!SCHEME_PAIRP(val)) SWIG_exception(SWIG_TypeError,"alist expected"); val = scheme_car(val); - x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); } (($1_type &)$1)[*k] = *x; alist = scheme_cdr(alist); } } else { $1 = *(($&1_type) - SWIG_MustGetPtr($input,$&1_descriptor,$argnum)); + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); } } %typemap(in) const map<K,T>& (std::map<K,T> temp, @@ -110,19 +110,19 @@ namespace std { SWIG_exception(SWIG_TypeError,"alist expected"); key = scheme_car(entry); val = scheme_cdr(entry); - k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) == -1) { + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { if (!SCHEME_PAIRP(val)) SWIG_exception(SWIG_TypeError,"alist expected"); val = scheme_car(val); - x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); } temp[*k] = *x; alist = scheme_cdr(alist); } } else { - $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum); + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); } } %typemap(out) map<K,T> { @@ -131,8 +131,8 @@ namespace std { i!=$1.rend(); ++i) { K* key = new K(i->first); T* val = new T(i->second); - Scheme_Object* k = SWIG_MakePtr(key,$descriptor(K *)); - Scheme_Object* x = SWIG_MakePtr(val,$descriptor(T *)); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); + Scheme_Object* x = SWIG_NewPointerObj(val,$descriptor(T *), 1); Scheme_Object* entry = scheme_make_pair(k,x); alist = scheme_make_pair(entry,alist); } @@ -151,17 +151,17 @@ namespace std { if (SCHEME_PAIRP(head)) { Scheme_Object* key = scheme_car(head); Scheme_Object* val = scheme_cdr(head); - if (SWIG_GetPtr(key,(void**) &k, - $descriptor(K *)) == -1) { + if (SWIG_ConvertPtr(key,(void**) &k, + $descriptor(K *), 0) == -1) { $1 = 0; } else { - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { $1 = 1; } else if (SCHEME_PAIRP(val)) { val = scheme_car(val); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; @@ -175,8 +175,8 @@ namespace std { } else { /* wrapped map? */ std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $&1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -196,17 +196,17 @@ namespace std { if (SCHEME_PAIRP(head)) { Scheme_Object* key = scheme_car(head); Scheme_Object* val = scheme_cdr(head); - if (SWIG_GetPtr(key,(void**) &k, - $descriptor(K *)) == -1) { + if (SWIG_ConvertPtr(key,(void**) &k, + $descriptor(K *), 0) == -1) { $1 = 0; } else { - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { $1 = 1; } else if (SCHEME_PAIRP(val)) { val = scheme_car(val); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; @@ -220,8 +220,8 @@ namespace std { } else { /* wrapped map? */ std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -268,7 +268,7 @@ namespace std { for (std::map<K,T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { K* key = new K(i->first); - Scheme_Object* k = SWIG_MakePtr(key,$descriptor(K *)); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); result = scheme_make_pair(k,result); } return result; @@ -299,19 +299,19 @@ namespace std { if (!CHECK(key)) SWIG_exception(SWIG_TypeError, "map<" #K "," #T "> expected"); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) == -1) { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { if (!SCHEME_PAIRP(val)) SWIG_exception(SWIG_TypeError,"alist expected"); val = scheme_car(val); - x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); } (($1_type &)$1)[CONVERT_FROM(key)] = *x; alist = scheme_cdr(alist); } } else { $1 = *(($&1_type) - SWIG_MustGetPtr($input,$&1_descriptor,$argnum)); + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); } } %typemap(in) const map<K,T>& (std::map<K,T> temp, @@ -336,18 +336,18 @@ namespace std { if (!CHECK(key)) SWIG_exception(SWIG_TypeError, "map<" #K "," #T "> expected"); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) == -1) { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) == -1) { if (!SCHEME_PAIRP(val)) SWIG_exception(SWIG_TypeError,"alist expected"); val = scheme_car(val); - x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum); + x = (T*) SWIG_MustGetPtr(val,$descriptor(T *),$argnum, 0); } temp[CONVERT_FROM(key)] = *x; alist = scheme_cdr(alist); } } else { - $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum); + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); } } %typemap(out) map<K,T> { @@ -356,7 +356,7 @@ namespace std { i!=$1.rend(); ++i) { T* val = new T(i->second); Scheme_Object* k = CONVERT_TO(i->first); - Scheme_Object* x = SWIG_MakePtr(val,$descriptor(T *)); + Scheme_Object* x = SWIG_NewPointerObj(val,$descriptor(T *), 1); Scheme_Object* entry = scheme_make_pair(k,x); alist = scheme_make_pair(entry,alist); } @@ -377,13 +377,13 @@ namespace std { if (!CHECK(key)) { $1 = 0; } else { - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { $1 = 1; } else if (SCHEME_PAIRP(val)) { val = scheme_car(val); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; @@ -397,8 +397,8 @@ namespace std { } else { // wrapped map? std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $&1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -420,13 +420,13 @@ namespace std { if (!CHECK(key)) { $1 = 0; } else { - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) { + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) { $1 = 1; } else if (SCHEME_PAIRP(val)) { val = scheme_car(val); - if (SWIG_GetPtr(val,(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(val,(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; @@ -440,8 +440,8 @@ namespace std { } else { // wrapped map? std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -512,7 +512,7 @@ namespace std { SWIG_exception(SWIG_TypeError,"alist expected"); key = scheme_car(entry); val = scheme_cdr(entry); - k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); if (!CHECK(val)) { if (!SCHEME_PAIRP(val)) SWIG_exception(SWIG_TypeError,"alist expected"); @@ -526,7 +526,7 @@ namespace std { } } else { $1 = *(($&1_type) - SWIG_MustGetPtr($input,$&1_descriptor,$argnum)); + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); } } %typemap(in) const map<K,T>& (std::map<K,T> temp, @@ -548,7 +548,7 @@ namespace std { SWIG_exception(SWIG_TypeError,"alist expected"); key = scheme_car(entry); val = scheme_cdr(entry); - k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum); + k = (K*) SWIG_MustGetPtr(key,$descriptor(K *),$argnum, 0); if (!CHECK(val)) { if (!SCHEME_PAIRP(val)) SWIG_exception(SWIG_TypeError,"alist expected"); @@ -561,7 +561,7 @@ namespace std { alist = scheme_cdr(alist); } } else { - $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum); + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); } } %typemap(out) map<K,T> { @@ -569,7 +569,7 @@ namespace std { for (std::map<K,T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { K* key = new K(i->first); - Scheme_Object* k = SWIG_MakePtr(key,$descriptor(K *)); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); Scheme_Object* x = CONVERT_TO(i->second); Scheme_Object* entry = scheme_make_pair(k,x); alist = scheme_make_pair(entry,alist); @@ -588,8 +588,8 @@ namespace std { if (SCHEME_PAIRP(head)) { Scheme_Object* key = scheme_car(head); Scheme_Object* val = scheme_cdr(head); - if (SWIG_GetPtr(val,(void **) &k, - $descriptor(K *)) == -1) { + if (SWIG_ConvertPtr(val,(void **) &k, + $descriptor(K *), 0) == -1) { $1 = 0; } else { if (CHECK(val)) { @@ -610,8 +610,8 @@ namespace std { } else { // wrapped map? std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $&1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -630,8 +630,8 @@ namespace std { if (SCHEME_PAIRP(head)) { Scheme_Object* key = scheme_car(head); Scheme_Object* val = scheme_cdr(head); - if (SWIG_GetPtr(val,(void **) &k, - $descriptor(K *)) == -1) { + if (SWIG_ConvertPtr(val,(void **) &k, + $descriptor(K *), 0) == -1) { $1 = 0; } else { if (CHECK(val)) { @@ -652,8 +652,8 @@ namespace std { } else { // wrapped map? std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -700,7 +700,7 @@ namespace std { for (std::map<K,T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) { K* key = new K(i->first); - Scheme_Object* k = SWIG_MakePtr(key,$descriptor(K *)); + Scheme_Object* k = SWIG_NewPointerObj(key,$descriptor(K *), 1); result = scheme_make_pair(k,result); } return result; @@ -742,7 +742,7 @@ namespace std { } } else { $1 = *(($&1_type) - SWIG_MustGetPtr($input,$&1_descriptor,$argnum)); + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); } } %typemap(in) const map<K,T>& (std::map<K,T> temp, @@ -778,7 +778,7 @@ namespace std { alist = scheme_cdr(alist); } } else { - $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum); + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); } } %typemap(out) map<K,T> { @@ -824,8 +824,8 @@ namespace std { } else { // wrapped map? std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $&1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $&1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -864,8 +864,8 @@ namespace std { } else { // wrapped map? std::map<K,T >* m; - if (SWIG_GetPtr($input,(void **) &m, - $1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &m, + $1_descriptor, 0) != -1) $1 = 1; else $1 = 0; diff --git a/Lib/mzscheme/std_vector.i b/Lib/mzscheme/std_vector.i index ad1f75de1..b9765cec6 100644 --- a/Lib/mzscheme/std_vector.i +++ b/Lib/mzscheme/std_vector.i @@ -80,7 +80,7 @@ namespace std { (($1_type &)$1)[i] = *((T*) SWIG_MustGetPtr(items[i], $descriptor(T *), - $argnum)); + $argnum, 0)); } } else if (SCHEME_NULLP($input)) { $1 = std::vector<T >(); @@ -93,11 +93,11 @@ namespace std { tail = scheme_cdr(tail); $1.push_back(*((T*)SWIG_MustGetPtr(head, $descriptor(T *), - $argnum))); + $argnum, 0))); } } else { $1 = *(($&1_type) - SWIG_MustGetPtr($input,$&1_descriptor,$argnum)); + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); } } %typemap(in) const vector<T>& (std::vector<T> temp), @@ -110,7 +110,7 @@ namespace std { for (unsigned int i=0; i<size; i++) { temp[i] = *((T*) SWIG_MustGetPtr(items[i], $descriptor(T *), - $argnum)); + $argnum, 0)); } } else if (SCHEME_NULLP($input)) { temp = std::vector<T >(); @@ -125,10 +125,10 @@ namespace std { tail = scheme_cdr(tail); temp.push_back(*((T*) SWIG_MustGetPtr(head, $descriptor(T *), - $argnum))); + $argnum, 0))); } } else { - $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum); + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); } } %typemap(out) vector<T> { @@ -136,7 +136,7 @@ namespace std { Scheme_Object** els = SCHEME_VEC_ELS($result); for (unsigned int i=0; i<$1.size(); i++) { T* x = new T((($1_type &)$1)[i]); - els[i] = SWIG_MakePtr(x,$descriptor(T *)); + els[i] = SWIG_NewPointerObj(x,$descriptor(T *), 1); } } %typecheck(SWIG_TYPECHECK_VECTOR) vector<T> { @@ -150,8 +150,8 @@ namespace std { /* check the first element only */ T* x; Scheme_Object** items = SCHEME_VEC_ELS($input); - if (SWIG_GetPtr(items[0],(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(items[0],(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; @@ -163,16 +163,16 @@ namespace std { /* check the first element only */ T* x; Scheme_Object *head = scheme_car($input); - if (SWIG_GetPtr(head,(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(head,(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; } else { /* wrapped vector? */ std::vector<T >* v; - if (SWIG_GetPtr($input,(void **) &v, - $&1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -190,8 +190,8 @@ namespace std { /* check the first element only */ T* x; Scheme_Object** items = SCHEME_VEC_ELS($input); - if (SWIG_GetPtr(items[0],(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(items[0],(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; @@ -203,16 +203,16 @@ namespace std { /* check the first element only */ T* x; Scheme_Object *head = scheme_car($input); - if (SWIG_GetPtr(head,(void**) &x, - $descriptor(T *)) != -1) + if (SWIG_ConvertPtr(head,(void**) &x, + $descriptor(T *), 0) != -1) $1 = 1; else $1 = 0; } else { /* wrapped vector? */ std::vector<T >* v; - if (SWIG_GetPtr($input,(void **) &v, - $1_descriptor) != -1) + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor, 0) != -1) $1 = 1; else $1 = 0; @@ -292,7 +292,7 @@ namespace std { } } else { $1 = *(($&1_type) - SWIG_MustGetPtr($input,$&1_descriptor,$argnum)); + SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0)); } } %typemap(in) const vector<T>& (std::vector<T> temp), @@ -328,7 +328,7 @@ namespace std { $argnum, argc, argv); } } else { - $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum); + $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0); } } %typemap(out) vector<T> { @@ -361,8 +361,8 @@ namespace std { } else { /* wrapped vector? */ std::vector<T >* v; - $1 = (SWIG_GetPtr($input,(void **) &v, - $&1_descriptor) != -1) ? 1 : 0; + $1 = (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor, 0) != -1) ? 1 : 0; } } %typecheck(SWIG_TYPECHECK_VECTOR) const vector<T>&, @@ -390,8 +390,8 @@ namespace std { } else { /* wrapped vector? */ std::vector<T >* v; - $1 = (SWIG_GetPtr($input,(void **) &v, - $1_descriptor) != -1) ? 1 : 0; + $1 = (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor, 0) != -1) ? 1 : 0; } } public: diff --git a/Lib/mzscheme/typemaps.i b/Lib/mzscheme/typemaps.i index 2dc450e2b..eafca0b66 100644 --- a/Lib/mzscheme/typemaps.i +++ b/Lib/mzscheme/typemaps.i @@ -11,32 +11,50 @@ /* Pointers */ %typemap(in) SWIGTYPE * { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum); + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); } %typemap(in) void * { - $1 = SWIG_MustGetPtr($input, NULL, $argnum); + $1 = SWIG_MustGetPtr($input, NULL, $argnum, 0); } %typemap(varin) SWIGTYPE * { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, 1); + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, 1, 0); } +%typemap(varin) SWIGTYPE & { + $1 = *(($1_ltype)SWIG_MustGetPtr($input, $descriptor, 1, 0)); +} + +%typemap(varin) SWIGTYPE [ANY] { + void *temp; + int ii; + $1_basetype *b = 0; + temp = SWIG_MustGetPtr($input, $1_descriptor, 1, 0); + b = ($1_basetype *) $1; + for (ii = 0; ii < $1_size; ii++) b[ii] = *(($1_basetype *) temp + ii); +} + + %typemap(varin) void * { - $1 = SWIG_MustGetPtr($input, NULL, 1); + $1 = SWIG_MustGetPtr($input, NULL, 1, 0); } %typemap(out) SWIGTYPE * { - $result = SWIG_MakePtr ($1, $descriptor); + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); } %typemap(out) SWIGTYPE *DYNAMIC { swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1); - $result = SWIG_MakePtr ($1, ty); + $result = SWIG_NewPointerObj ($1, ty, $owner); } -%typemap(varout) SWIGTYPE * { - $result = SWIG_MakePtr ($1, $descriptor); +%typemap(varout) SWIGTYPE *, SWIGTYPE [] { + $result = SWIG_NewPointerObj ($1, $descriptor, 0); +} + +%typemap(varout) SWIGTYPE & { + $result = SWIG_NewPointerObj((void *) &$1, $1_descriptor, 0); } /* C++ References */ @@ -44,45 +62,29 @@ #ifdef __cplusplus %typemap(in) SWIGTYPE &, const SWIGTYPE & { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum); + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); if ($1 == NULL) scheme_signal_error("swig-type-error (null reference)"); } %typemap(out) SWIGTYPE &, const SWIGTYPE & { - $result = SWIG_MakePtr ($1, $descriptor); + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); } %typemap(out) SWIGTYPE &DYNAMIC { swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1); - $result = SWIG_MakePtr ($1, ty); + $result = SWIG_NewPointerObj ($1, ty, $owner); } #endif -%typemap(out) SWIGTYPE -#ifdef __cplusplus -{ - $&1_ltype resultptr; - resultptr = new $1_ltype(($1_ltype &) $1); - $result = SWIG_MakePtr (resultptr, $&1_descriptor); -} -#else -{ - $&1_ltype resultptr; - resultptr = ($&1_ltype) malloc(sizeof($1_type)); - memmove(resultptr, &$1, sizeof($1_type)); - $result = SWIG_MakePtr(resultptr, $&1_descriptor); -} -#endif - /* Arrays */ %typemap(in) SWIGTYPE[] { - $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum); + $1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum, 0); } %typemap(out) SWIGTYPE[] { - $result = SWIG_MakePtr ($1, $descriptor); + $result = SWIG_NewPointerObj ($1, $descriptor, $owner); } /* Enums */ @@ -105,13 +107,13 @@ /* Pass-by-value */ %typemap(in) SWIGTYPE($&1_ltype argp) { - argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, $argnum); + argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, $argnum, 0); $1 = *argp; } %typemap(varin) SWIGTYPE { $&1_ltype argp; - argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, 1); + argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, 1, 0); $1 = *argp; } @@ -121,14 +123,14 @@ { $&1_ltype resultptr; resultptr = new $1_ltype(($1_ltype &) $1); - $result = SWIG_MakePtr (resultptr, $&1_descriptor); + $result = SWIG_NewPointerObj (resultptr, $&1_descriptor, 1); } #else { $&1_ltype resultptr; resultptr = ($&1_ltype) malloc(sizeof($1_type)); memmove(resultptr, &$1, sizeof($1_type)); - $result = SWIG_MakePtr(resultptr, $&1_descriptor); + $result = SWIG_NewPointerObj(resultptr, $&1_descriptor, 1); } #endif @@ -137,14 +139,14 @@ { $&1_ltype resultptr; resultptr = new $1_ltype(($1_ltype &) $1); - $result = SWIG_MakePtr (resultptr, $&1_descriptor); + $result = SWIG_NewPointerObj (resultptr, $&1_descriptor, 0); } #else { $&1_ltype resultptr; resultptr = ($&1_ltype) malloc(sizeof($1_type)); memmove(resultptr, &$1, sizeof($1_type)); - $result = SWIG_MakePtr(resultptr, $&1_descriptor); + $result = SWIG_NewPointerObj(resultptr, $&1_descriptor, 0); } #endif @@ -316,7 +318,7 @@ REF_MAP(double, SCHEME_REALP, scheme_real_to_double, %typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] { void *ptr; - if (SWIG_GetPtr($input, (void **) &ptr, $1_descriptor)) { + if (SWIG_ConvertPtr($input, (void **) &ptr, $1_descriptor, 0)) { $1 = 0; } else { $1 = 1; @@ -325,7 +327,7 @@ REF_MAP(double, SCHEME_REALP, scheme_real_to_double, %typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { void *ptr; - if (SWIG_GetPtr($input, (void **) &ptr, $&1_descriptor)) { + if (SWIG_ConvertPtr($input, (void **) &ptr, $&1_descriptor, 0)) { $1 = 0; } else { $1 = 1; @@ -334,7 +336,7 @@ REF_MAP(double, SCHEME_REALP, scheme_real_to_double, %typecheck(SWIG_TYPECHECK_VOIDPTR) void * { void *ptr; - if (SWIG_GetPtr($input, (void **) &ptr, 0)) { + if (SWIG_ConvertPtr($input, (void **) &ptr, 0, 0)) { $1 = 0; } else { $1 = 1; |