swig/Lib/mzscheme/mzscheme.swg
Dave Beazley 7242c6daf7 Applied Oleg's MzScheme patches
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@496 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2000-06-19 00:29:04 +00:00

29 lines
749 B
Text

#include <escheme.h>
typedef struct swig_proxy {
Scheme_Type type;
void *object;
} swig_proxy;
static Scheme_Object *swig_make_c_pointer(void *c_pointer, char *type_name) {
swig_proxy *new_proxy;
new_proxy = (swig_proxy *) scheme_malloc(sizeof(swig_proxy));
new_proxy->type = scheme_make_type(type_name);
new_proxy->object = (void *) c_pointer;
return (Scheme_Object *) new_proxy;
}
/* returns 1 on success, 0 otherwise */
static int swig_get_c_pointer(Scheme_Object *so, char *c_type, void **c_ptr) {
Scheme_Type st = SCHEME_TYPE(so);
char *type_name = scheme_get_type_name(st);
int err = 1;
if(strcmp(type_name, c_type))
err = 0;
else
*c_ptr = ((swig_proxy *) so)->object;
return err;
}