New way of sharing type information between modules for chicken, mzscheme,

ruby, tcl, and perl.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6332 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
John Lenz 2004-10-05 22:43:41 +00:00
commit 9dead7a11d
13 changed files with 203 additions and 84 deletions

View file

@ -1,6 +1,16 @@
Version 1.3.23 (in progress) Version 1.3.23 (in progress)
============================ ============================
10/05/2004: wuzzeb (John Lenz)
- Reorganize how runtime type information is stored and shared
between modules. For chicken and mzscheme, I removed
the ability to use runtime libraries, while perl, tcl, python, and
ruby default to using the new method but can go back to the old
method by declaring SWIG_ALLOW_RUNTIME.
- line 582 in mzscheme.cxx was generating a segfault on
imports.multicpptest, so I fixed it.
10/04/2004: wsfulton 10/04/2004: wsfulton
Fixes for %extend and overloaded static methods with default Fixes for %extend and overloaded static methods with default
arguments. arguments.

View file

@ -601,6 +601,19 @@ $realmodule_swig_init(int argc, C_word closure, C_word continuation) {
C_word ret; C_word ret;
if (!typeinit) { if (!typeinit) {
/* lookup the type pointer... it is stored in it's own symbol table */
C_SYMBOL_TABLE *stable = C_find_symbol_table("swig_runtime_data");
if (stable != NULL) {
sym = SWIG_Chicken_LookupSymbol("type_pointer", stable);
if (C_truep(sym) && C_swig_is_ptr(sym)) {
swig_type_list_handle = (swig_type_info **) C_block_item(sym, 0);
}
} else {
stable = C_new_symbol_table("swig_runtime_data", 16);
sym = C_intern_in(C_heaptop, C_strlen("type_pointer"), "type_pointer", stable);
C_mutate(&C_block_item(sym, 0), C_mpointer(C_heaptop, (void *) swig_type_list_handle));
}
for (i = 0; swig_types_initial[i]; i++) { for (i = 0; swig_types_initial[i]; i++) {
swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]); swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
} }

View file

@ -60,27 +60,7 @@ enum {
SWIG_BARF1_ARGUMENT_NULL /* 1 arg */ SWIG_BARF1_ARGUMENT_NULL /* 1 arg */
}; };
#ifdef SWIG_NOINCLUDE static char *
/*SWIGIMPORT(void) SWIG_Chicken_Init();*/
/* Interface helper function */
SWIGIMPORT(char *) SWIG_Chicken_MakeString(C_word str);
/* Get a pointer value from a C_word. If there is a type-mismatch,
return nonzero; on success, return 0. */
SWIGIMPORT(int) SWIG_Chicken_ConvertPtr(C_word s, void **result, swig_type_info *type, int flags);
/* Get a pointer value from a C_word. If there is a type-mismatch,
signal a wrong-type-arg error for the given argument number. */
SWIGIMPORT(void *) SWIG_Chicken_MustGetPtr(C_word s, swig_type_info *type, int argnum, int flags);
/* Make a smob from a pointer and typeinfo, using space as the memory for the new object */
SWIGIMPORT(C_word) SWIG_Chicken_NewPointerObj(void *ptr, swig_type_info *type, int owner, C_word **space);
/* generate an error message and halt */
SWIGIMPORT(void) SWIG_Chicken_Barf(int code, C_char *msg, ...);
#else
SWIGRUNTIME(char *)
SWIG_Chicken_MakeString(C_word str) { SWIG_Chicken_MakeString(C_word str) {
char *ret; char *ret;
size_t l; size_t l;
@ -94,6 +74,17 @@ SWIG_Chicken_MakeString(C_word str) {
return ret; return ret;
} }
static C_word SWIG_Chicken_LookupSymbol(char *name, C_SYMBOL_TABLE *stable) {
C_word *a = C_alloc(C_SIZEOF_STRING (strlen (name)));
C_word n = C_string2(&a, name);
C_word sym = C_find_symbol(n, stable);
if (C_truep(sym)) {
return C_symbol_value(sym);
} else {
return C_SCHEME_FALSE;
}
}
/* Just a helper function. Do not export it */ /* Just a helper function. Do not export it */
static void SWIG_Chicken_Panic (C_char *) C_noret; static void SWIG_Chicken_Panic (C_char *) C_noret;
static void SWIG_Chicken_Panic (C_char *msg) static void SWIG_Chicken_Panic (C_char *msg)
@ -104,9 +95,9 @@ static void SWIG_Chicken_Panic (C_char *msg)
exit (5); /* should never get here */ exit (5); /* should never get here */
} }
SWIGRUNTIME(void) static void
SWIG_Chicken_Barf(int code, C_char *msg, ...) C_noret; SWIG_Chicken_Barf(int code, C_char *msg, ...) C_noret;
SWIGRUNTIME(void) static void
SWIG_Chicken_Barf(int code, C_char *msg, ...) SWIG_Chicken_Barf(int code, C_char *msg, ...)
{ {
char *errorhook = C_text("\003syserror-hook"); char *errorhook = C_text("\003syserror-hook");
@ -166,7 +157,7 @@ SWIG_Chicken_Barf(int code, C_char *msg, ...)
} }
} }
SWIGRUNTIME(C_word) static inline C_word
SWIG_Chicken_NewPointerObj(void *ptr, swig_type_info *type, int owner, C_word **data) SWIG_Chicken_NewPointerObj(void *ptr, swig_type_info *type, int owner, C_word **data)
{ {
if (ptr == NULL) if (ptr == NULL)
@ -176,7 +167,7 @@ SWIG_Chicken_NewPointerObj(void *ptr, swig_type_info *type, int owner, C_word **
} }
/* Return 0 if successful. */ /* Return 0 if successful. */
SWIGRUNTIME(int) static int
SWIG_Chicken_ConvertPtr(C_word s, void **result, swig_type_info *type, int flags) SWIG_Chicken_ConvertPtr(C_word s, void **result, swig_type_info *type, int flags)
{ {
swig_type_info *cast; swig_type_info *cast;
@ -204,7 +195,7 @@ SWIG_Chicken_ConvertPtr(C_word s, void **result, swig_type_info *type, int flags
return 1; return 1;
} }
SWIGRUNTIME(void *) static inline void *
SWIG_Chicken_MustGetPtr (C_word s, swig_type_info *type, int argnum, int flags) SWIG_Chicken_MustGetPtr (C_word s, swig_type_info *type, int argnum, int flags)
{ {
void *result; void *result;
@ -216,15 +207,6 @@ SWIG_Chicken_MustGetPtr (C_word s, swig_type_info *type, int argnum, int flags)
return result; return result;
} }
/*
SWIGRUNTIME(void)
SWIG_Chicken_Init ()
{
}*/
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -33,34 +33,50 @@ extern "C" {
#define MAXVALUES 6 #define MAXVALUES 6
#define swig_make_boolean(b) (b ? scheme_true : scheme_false) #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);
SWIGIMPORT(Scheme_Object *)
SWIG_MzScheme_new_scheme_struct (Scheme_Env* env, const char* basename,
int num_fields, char** field_names);
#else
struct swig_mz_proxy { struct swig_mz_proxy {
Scheme_Type mztype; Scheme_Type mztype;
swig_type_info *type; swig_type_info *type;
void *object; void *object;
}; };
static Scheme_Type swig_type; /* The interpreter will store a pointer to this structure in a global
static int swig_mz_initialized = 0; variable called swig-runtime-data-type-pointer. The instance of this
struct is only used if no other module has yet been loaded */
struct swig_mzscheme_runtime_data {
swig_type_info **handle;
Scheme_Type type;
};
static struct swig_mzscheme_runtime_data swig_mzscheme_runtime_data;
static void mz_free_swig(void *p, void *data) { static Scheme_Type swig_type;
static void
SWIG_MzScheme_LookupTypePointer(Scheme_Env *env) {
Scheme_Object *pointer, *symbol;
struct swig_mzscheme_runtime_data *data;
/* first check if pointer already created */
symbol = scheme_intern_symbol("swig-runtime-data-type-pointer");
pointer = scheme_lookup_global(symbol, env);
if (pointer && SCHEME_CPTRP(pointer)) {
data = (struct swig_mzscheme_runtime_data *) SCHEME_CPTR_VAL(pointer);
swig_type_list_handle = data->handle;
swig_type = data->type;
} else {
/* create a new type for wrapped pointer values */
swig_type = scheme_make_type((char *)"swig");
swig_mzscheme_runtime_data.handle = swig_type_list_handle;
swig_mzscheme_runtime_data.type = swig_type;
/* create a new pointer */
pointer = scheme_make_cptr((void *) &swig_mzscheme_runtime_data, "swig_mzscheme_runtime_data");
scheme_add_global_symbol(symbol, pointer, env);
}
}
static void
mz_free_swig(void *p, void *data) {
struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) p; struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) p;
if (SCHEME_NULLP((Scheme_Object*)p) || SCHEME_TYPE((Scheme_Object*)p) != swig_type) if (SCHEME_NULLP((Scheme_Object*)p) || SCHEME_TYPE((Scheme_Object*)p) != swig_type)
return; return;
@ -71,7 +87,7 @@ static void mz_free_swig(void *p, void *data) {
} }
} }
SWIGRUNTIME(Scheme_Object *) static Scheme_Object *
SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) { SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) {
struct swig_mz_proxy *new_proxy; struct swig_mz_proxy *new_proxy;
new_proxy = (struct swig_mz_proxy *) scheme_malloc(sizeof(struct swig_mz_proxy)); new_proxy = (struct swig_mz_proxy *) scheme_malloc(sizeof(struct swig_mz_proxy));
@ -84,7 +100,7 @@ SWIG_MzScheme_NewPointerObj(void *ptr, swig_type_info *type, int owner) {
return (Scheme_Object *) new_proxy; return (Scheme_Object *) new_proxy;
} }
SWIGRUNTIME(int) static int
SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) { SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type, int flags) {
swig_type_info *cast; swig_type_info *cast;
@ -109,7 +125,7 @@ SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type,
return 1; return 1;
} }
SWIGRUNTIME(void *) static inline void *
SWIG_MzScheme_MustGetPtr(Scheme_Object *s, swig_type_info *type, SWIG_MzScheme_MustGetPtr(Scheme_Object *s, swig_type_info *type,
int argnum, int flags, const char *func_name, int argnum, int flags, const char *func_name,
int argc, Scheme_Object **argv) { int argc, Scheme_Object **argv) {
@ -120,15 +136,7 @@ SWIG_MzScheme_MustGetPtr(Scheme_Object *s, swig_type_info *type,
return result; return result;
} }
SWIGRUNTIME(void) static inline 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) { SWIG_MzScheme_Malloc(size_t size, const char *func_name) {
void *p = malloc(size); void *p = malloc(size);
if (p == NULL) { if (p == NULL) {
@ -136,7 +144,7 @@ SWIG_MzScheme_Malloc(size_t size, const char *func_name) {
} else return p; } else return p;
} }
SWIGIMPORT(Scheme_Object *) static inline Scheme_Object *
SWIG_MzScheme_PackageValues(int num, Scheme_Object **values) { SWIG_MzScheme_PackageValues(int num, Scheme_Object **values) {
/* ignore first value if void */ /* ignore first value if void */
if (num > 0 && SCHEME_VOIDP(values[0])) if (num > 0 && SCHEME_VOIDP(values[0]))
@ -152,7 +160,7 @@ SWIG_MzScheme_PackageValues(int num, Scheme_Object **values) {
#endif #endif
/* Function to create a new struct. */ /* Function to create a new struct. */
SWIGRUNTIME(Scheme_Object *) static Scheme_Object *
SWIG_MzScheme_new_scheme_struct (Scheme_Env* env, const char* basename, SWIG_MzScheme_new_scheme_struct (Scheme_Env* env, const char* basename,
int num_fields, char** field_names) int num_fields, char** field_names)
{ {
@ -185,8 +193,6 @@ SWIG_MzScheme_new_scheme_struct (Scheme_Env* env, const char* basename,
return new_type; return new_type;
} }
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -27,10 +27,10 @@
if (!_swig_init) { if (!_swig_init) {
int i; int i;
SWIG_MzScheme_LookupTypePointer(env);
for (i = 0; swig_types_initial[i]; i++) { for (i = 0; swig_types_initial[i]; i++) {
swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]); swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
} }
_swig_init = 1; _swig_init = 1;
} }
SWIG_MzScheme_Init();
%} %}

View file

@ -5,6 +5,24 @@
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
%runtime "precommon.swg" %runtime "precommon.swg"
%insert(runtime) %{
#ifndef SWIG_ALLOW_RUNTIME
/* -----------------------------------------------------------------------------
* Disable runtime library use, everything is used as static
* ----------------------------------------------------------------------------- */
#ifndef SWIG_DISABLE_RUNTIME
#define SWIG_DISABLE_RUNTIME
#endif
#ifdef SWIG_GLOBAL
#undef SWIG_GLOBAL
#endif
#ifdef SWIG_NOINCLUDE
#undef SWIG_NOINCLUDE
#endif
#endif /* SWIG_ALLOW_RUNTIME */
%}
%runtime "common.swg" // common type checking code %runtime "common.swg" // common type checking code
%runtime "perlrun.swg" // Perl runtime functions %runtime "perlrun.swg" // Perl runtime functions
%runtime "noembed.h" // undefine Perl5 macros %runtime "noembed.h" // undefine Perl5 macros
@ -584,6 +602,9 @@ XS(SWIG_init) {
int i; int i;
static int _init = 0; static int _init = 0;
if (!_init) { if (!_init) {
#ifdef SWIG_DISABLE_RUNTIME
SWIG_Perl_LookupTypePointer();
#endif
for (i = 0; swig_types_initial[i]; i++) { for (i = 0; swig_types_initial[i]; i++) {
swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]); swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
} }

View file

@ -170,6 +170,21 @@ extern "C" {
# define SWIG_MAYBE_PERL_OBJECT # define SWIG_MAYBE_PERL_OBJECT
#endif #endif
/* load the swig_runtime_list_handle variable from the interpreter */
static void SWIG_Perl_LookupTypePointer() {
SV *pointer;
/* first check if pointer already created */
pointer = get_sv("swig_runtime_data::type_pointer", FALSE);
if (pointer && SvOK(pointer)) {
swig_type_list_handle = INT2PTR(swig_type_info **, SvIV(pointer));
} else {
/* create a new pointer */
pointer = get_sv("swig_runtime_data::type_pointer", TRUE);
sv_setiv(pointer, PTR2IV(swig_type_list_handle));
}
}
#ifdef SWIG_NOINCLUDE #ifdef SWIG_NOINCLUDE
SWIGIMPORT(int) SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *, void **, swig_type_info *, int flags); SWIGIMPORT(int) SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *, void **, swig_type_info *, int flags);

View file

@ -6,13 +6,37 @@
%runtime "rubyhead.swg" %runtime "rubyhead.swg"
%runtime "precommon.swg" %runtime "precommon.swg"
%insert(runtime) %{
#ifndef SWIG_ALLOW_RUNTIME
/* -----------------------------------------------------------------------------
* Disable runtime library use, everything is used as static
* ----------------------------------------------------------------------------- */
#ifndef SWIG_DISABLE_RUNTIME
#define SWIG_DISABLE_RUNTIME
#endif
#ifdef SWIG_GLOBAL
#undef SWIG_GLOBAL
#endif
#ifdef SWIG_NOINCLUDE
#undef SWIG_NOINCLUDE
#endif
#endif /* SWIG_ALLOW_RUNTIME */
%}
%runtime "common.swg" %runtime "common.swg"
%insert(runtime) %{
#ifdef SWIG_NOINCLUDE #ifdef SWIG_NOINCLUDE
%}
%runtime "rubydec.swg" %runtime "rubydec.swg"
%insert(runtime) %{
#else #else
%}
%runtime "rubydef.swg" %runtime "rubydef.swg"
%insert(runtime) %{
#endif #endif
%}
#define %alias %feature("alias") #define %alias %feature("alias")
#define %freefunc %feature("freefunc") #define %freefunc %feature("freefunc")

View file

@ -5,14 +5,31 @@ extern "C" {
static VALUE _mSWIG = Qnil; static VALUE _mSWIG = Qnil;
static VALUE _cSWIG_Pointer = Qnil; static VALUE _cSWIG_Pointer = Qnil;
static VALUE swig_runtime_data_type_pointer = Qnil;
/* Initialize Ruby runtime support */ /* Initialize Ruby runtime support */
SWIGRUNTIME(void) SWIGRUNTIME(void)
SWIG_Ruby_InitRuntime(void) SWIG_Ruby_InitRuntime(void)
{ {
VALUE pointer;
if (_mSWIG == Qnil) { if (_mSWIG == Qnil) {
_mSWIG = rb_define_module("SWIG"); _mSWIG = rb_define_module("SWIG");
} }
#ifdef SWIG_DISABLE_RUNTIME
/* first check if pointer already created */
pointer = rb_gv_get("$swig_runtime_data_type_pointer");
if (pointer != Qnil) {
Data_Get_Struct(pointer, swig_type_info *, swig_type_list_handle);
} else {
/* register a new class */
VALUE cl = rb_define_class("swig_runtime_data", rb_cObject);
/* create and store the structure pointer to a global variable */
swig_runtime_data_type_pointer = Data_Wrap_Struct(cl, 0, 0, swig_type_list_handle);
rb_define_readonly_variable("$swig_runtime_data_type_pointer", &swig_runtime_data_type_pointer);
}
#endif
} }
/* Define Ruby class for C type */ /* Define Ruby class for C type */

View file

@ -104,6 +104,24 @@ typedef struct swig_instance {
#define SWIG_MethodCommand SWIG_Tcl_MethodCommand #define SWIG_MethodCommand SWIG_Tcl_MethodCommand
#define SWIG_ObjectDelete SWIG_Tcl_ObjectDelete #define SWIG_ObjectDelete SWIG_Tcl_ObjectDelete
static void
SWIG_Tcl_LookupTypePointer(Tcl_Interp *interp) {
char buf[512];
char *data;
/* first check if pointer already created */
data = (char *) Tcl_GetVar(interp, "swig_runtime_data_type_pointer", TCL_GLOBAL_ONLY);
if (data) {
SWIG_UnpackData(data, &swig_type_list_handle, sizeof(swig_type_info **));
} else {
/* create a new pointer */
data = SWIG_PackData(buf, &swig_type_list_handle, sizeof(swig_type_info **));
*data = 0;
Tcl_SetVar(interp, "swig_runtime_data_type_pointer", buf, 0);
}
}
#ifdef SWIG_NOINCLUDE #ifdef SWIG_NOINCLUDE
SWIGIMPORT(int) SWIG_Tcl_ConvertPtrFromString(Tcl_Interp *, char *, void **, swig_type_info *,int flags); SWIGIMPORT(int) SWIG_Tcl_ConvertPtrFromString(Tcl_Interp *, char *, void **, swig_type_info *,int flags);

View file

@ -5,6 +5,24 @@
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
%runtime "precommon.swg" %runtime "precommon.swg"
%insert(runtime) %{
#ifndef SWIG_ALLOW_RUNTIME
/* -----------------------------------------------------------------------------
* Disable runtime library use, everything is used as static
* ----------------------------------------------------------------------------- */
#ifndef SWIG_DISABLE_RUNTIME
#define SWIG_DISABLE_RUNTIME
#endif
#ifdef SWIG_GLOBAL
#undef SWIG_GLOBAL
#endif
#ifdef SWIG_NOINCLUDE
#undef SWIG_NOINCLUDE
#endif
#endif /* SWIG_ALLOW_RUNTIME */
%}
%runtime "common.swg" %runtime "common.swg"
%runtime "swigtcl8.swg" %runtime "swigtcl8.swg"
@ -646,6 +664,9 @@ SWIGEXPORT(int) SWIG_init(Tcl_Interp *interp) {
Tcl_Eval(interp, "namespace eval " SWIG_namespace " { }"); Tcl_Eval(interp, "namespace eval " SWIG_namespace " { }");
#endif #endif
if (!_init) { if (!_init) {
#ifdef SWIG_DISABLE_RUNTIME
SWIG_Tcl_LookupTypePointer(interp);
#endif
for (i = 0; swig_types_initial[i]; i++) { for (i = 0; swig_types_initial[i]; i++) {
swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]); swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
} }

View file

@ -230,10 +230,6 @@ CHICKEN::top(Node *n)
Printf(f_runtime, "/* -*- buffer-read-only: t -*- vi: set ro: */\n"); Printf(f_runtime, "/* -*- buffer-read-only: t -*- vi: set ro: */\n");
Swig_banner(f_runtime); Swig_banner(f_runtime);
if (NoInclude) {
Printf(f_runtime, "#define SWIG_NOINCLUDE\n");
}
/* Set module name */ /* Set module name */
realmodule = Copy(Getattr(n,"name")); realmodule = Copy(Getattr(n,"name"));
module = Copy(realmodule); module = Copy(realmodule);
@ -390,10 +386,10 @@ CHICKEN::top(Node *n)
int int
CHICKEN::importDirective(Node *n) CHICKEN::importDirective(Node *n)
{ {
String *modname = Getattr(n,"module"); /*String *modname = Getattr(n,"module");
if (modname) { if (modname) {
Printf(f_scm,"(declare (uses %s))\n", modname); Printf(f_scm,"(declare (uses %s))\n", modname);
} }*/
return Language::importDirective(n); return Language::importDirective(n);
} }

View file

@ -149,10 +149,6 @@ public:
Printf(f_runtime, "/* -*- buffer-read-only: t -*- vi: set ro: */\n"); Printf(f_runtime, "/* -*- buffer-read-only: t -*- vi: set ro: */\n");
Swig_banner (f_runtime); Swig_banner (f_runtime);
if (NoInclude) {
Printf(f_runtime, "#define SWIG_NOINCLUDE\n");
}
module = Getattr(n,"name"); module = Getattr(n,"name");
Language::top(n); Language::top(n);
@ -583,7 +579,7 @@ public:
// Make a static variable; // Make a static variable;
Printf (var_name, "_wrap_const_%s", Swig_name_mangle(iname)); Printf (var_name, "_wrap_const_%s", Swig_name_mangle(Getattr(n,"sym:name")));
// Build the name for scheme. // Build the name for scheme.
Printv(proc_name, iname,NIL); Printv(proc_name, iname,NIL);