diff options
Diffstat (limited to 'SWIG/Lib')
-rw-r--r-- | SWIG/Lib/common.swg | 7 | ||||
-rw-r--r-- | SWIG/Lib/guile/guile.i | 2 | ||||
-rw-r--r-- | SWIG/Lib/guile/guile.swg | 62 | ||||
-rw-r--r-- | SWIG/Lib/guile/guiledec.swg | 51 | ||||
-rw-r--r-- | SWIG/Lib/guile/guilemain.i | 8 | ||||
-rw-r--r-- | SWIG/Lib/guile/list-vector.i | 222 | ||||
-rw-r--r-- | SWIG/Lib/guile/pointer-in-out.i | 68 | ||||
-rw-r--r-- | SWIG/Lib/guile/ports.i | 3 | ||||
-rw-r--r-- | SWIG/Lib/guile/typemaps.i | 77 | ||||
-rw-r--r-- | SWIG/Lib/java/java_arrays.i | 11 | ||||
-rw-r--r-- | SWIG/Lib/java/stl_string.i | 82 | ||||
-rw-r--r-- | SWIG/Lib/java/typemaps.i | 84 | ||||
-rw-r--r-- | SWIG/Lib/mzscheme/mzscheme.i | 14 | ||||
-rw-r--r-- | SWIG/Lib/mzscheme/mzscheme.swg | 2 | ||||
-rw-r--r-- | SWIG/Lib/mzscheme/mzschemedec.swg | 8 | ||||
-rw-r--r-- | SWIG/Lib/mzscheme/typemaps.i | 28 | ||||
-rw-r--r-- | SWIG/Lib/perl5/perl5.swg | 8 | ||||
-rw-r--r-- | SWIG/Lib/perl5/ptrlang.i | 8 | ||||
-rw-r--r-- | SWIG/Lib/ruby/rubydec.swg | 2 | ||||
-rw-r--r-- | SWIG/Lib/tcl/object.swg | 22 | ||||
-rw-r--r-- | SWIG/Lib/tcl/swigtcl8.swg | 10 | ||||
-rw-r--r-- | SWIG/Lib/tcl/tclsh.i | 4 | ||||
-rw-r--r-- | SWIG/Lib/tcl/wish.i | 7 |
23 files changed, 621 insertions, 169 deletions
diff --git a/SWIG/Lib/common.swg b/SWIG/Lib/common.swg index 6a51b84e0..214ef421c 100644 --- a/SWIG/Lib/common.swg +++ b/SWIG/Lib/common.swg @@ -44,9 +44,9 @@ extern "C" { #endif typedef struct swig_type_info { - char *name; + const char *name; void *(*converter)(void *); - char *str; + const char *str; struct swig_type_info *next; struct swig_type_info *prev; } swig_type_info; @@ -55,6 +55,7 @@ typedef struct swig_type_info { SWIGEXPORT(swig_type_info *) SWIG_TypeRegister(swig_type_info *); SWIGEXPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *); SWIGEXPORT(void *) SWIG_TypeCast(swig_type_info *, void *); +SWIGEXPORT(swig_type_info *) SWIG_TypeQuery(const char *); #else static swig_type_info *swig_type_list = 0; @@ -132,7 +133,7 @@ SWIG_TypeCast(swig_type_info *ty, void *ptr) } /* Search for a swig_type_info structure */ -SWIGRUNTIME(void *) +SWIGRUNTIME(swig_type_info *) SWIG_TypeQuery(const char *name) { swig_type_info *ty = swig_type_list; while (ty) { diff --git a/SWIG/Lib/guile/guile.i b/SWIG/Lib/guile/guile.i index df81de988..f4fc1ea36 100644 --- a/SWIG/Lib/guile/guile.i +++ b/SWIG/Lib/guile/guile.i @@ -1,4 +1,4 @@ -/* SWIG Configuration File for Guile. +/* SWIG Configuration File for Guile. -*-c-*- This file is parsed by SWIG before reading any other interface file. */ diff --git a/SWIG/Lib/guile/guile.swg b/SWIG/Lib/guile/guile.swg index 3b5dd1e24..841115a08 100644 --- a/SWIG/Lib/guile/guile.swg +++ b/SWIG/Lib/guile/guile.swg @@ -7,6 +7,10 @@ /* SWIG pointer structure */ +#ifdef __cplusplus +extern "C" { +#endif + struct SwigCast { unsigned short type; /* Index into SwigPtrTbl */ void *(*cast)(void *); /* Pointer casting function */ @@ -14,8 +18,8 @@ struct SwigCast { }; struct SwigPtrType { - char *name; /* Datatype name */ - char *prettyname; /* Pretty datatype name */ + const char *name; /* Datatype name */ + const char *prettyname; /* Pretty datatype name */ unsigned short tag; /* Index in SwigPtrTable */ struct SwigCast *cast; /* List of compatible types */ }; @@ -45,7 +49,7 @@ swigsort (const void *data1, const void *data2) /* Register a new datatype with the type-checker */ SWIGSTATIC size_t -SWIG_RegisterType (char *type, char *prettyname) +SWIG_RegisterType (const char *type, const char *prettyname) { int i; @@ -90,9 +94,8 @@ SWIG_RegisterType (char *type, char *prettyname) /* Register two data types and their mapping with the type checker. */ SWIGSTATIC void -SWIG_RegisterMapping (char *origtype, char *newtype, void *(*cast)(void *)) +SWIG_RegisterMapping (const char *origtype, const char *newtype, void *(*cast)(void *)) { - int i; size_t t = SWIG_RegisterType(origtype, NULL); if (newtype!=NULL) { @@ -118,7 +121,6 @@ SWIG_RegisterMapping (char *origtype, char *newtype, void *(*cast)(void *)) static void SWIG_SortTable (void) { - int i; qsort ((void *) SwigPtrTbl, SwigPtrN, sizeof(size_t), swigsort); /* Indicate that everything is sorted */ SwigPtrSort = 1; @@ -137,10 +139,9 @@ swigcmp (const void *key, const void *data) static SwigPtrType * SWIG_GetPtrType (const char *_t) { - int start, end; size_t *result; if (!SwigPtrSort) SWIG_SortTable(); - result = bsearch(_t, SwigPtrTbl, SwigPtrN, sizeof(size_t), swigcmp); + result = (size_t *) bsearch(_t, SwigPtrTbl, SwigPtrN, sizeof(size_t), swigcmp); if (result!=NULL) return SwigPtrList+*result; else return NULL; } @@ -156,8 +157,8 @@ SWIG_Cast (void *source, size_t source_type, mapping table to figure out whether or not we can accept this datatype. */ struct SwigCast *c; - for (c = SwigPtrList[source_type].cast; - c && c->type!=dest_type; c = c->next) /* nothing */; + for (c = SwigPtrList[dest_type].cast; + c && c->type!=source_type; c = c->next) /* nothing */; if (c) { /* Get pointer value. */ if (c->cast) *ptr = (*(c->cast))(source); @@ -199,7 +200,7 @@ SWIG_Guile_GetPtr(SCM s, void **result, swig_type_info *type) && (unsigned long) SCM_TYP16(s) == swig_tag) { if (type) return !SWIG_Cast((void *) SCM_CDR(s), - SCM_CAR(s) >> 16, + (long) SCM_CAR(s) >> 16, result, type->tag); else { *result = (void *) SCM_CDR(s); @@ -209,18 +210,30 @@ SWIG_Guile_GetPtr(SCM s, void **result, swig_type_info *type) return 1; } +SWIGSTATIC void * +SWIG_Guile_MustGetPtr_ (SCM s, swig_type_info *type, + int argnum, const char *func_name) +{ + void *result; + if (SWIG_Guile_GetPtr(s, &result, type)) { + /* type mismatch */ + scm_wrong_type_arg((char *) func_name, argnum, s); + } + return result; +} + /* Init */ static int print_swig (SCM swig_smob, SCM port, scm_print_state *pstate) { - char buf[16]; scm_puts("#<swig ", port); - if (SwigPtrList[SCM_CAR(swig_smob) >> 16].prettyname != NULL) - scm_puts(SwigPtrList[SCM_CAR(swig_smob) >> 16].prettyname, port); - else scm_puts(SwigPtrList[SCM_CAR(swig_smob) >> 16].name, port); - sprintf(buf, " 0x%lx>", SCM_CDR(swig_smob)); - scm_puts(buf, port); + if (SwigPtrList[(long) SCM_CAR(swig_smob) >> 16].prettyname != NULL) + scm_puts(SwigPtrList[(long) SCM_CAR(swig_smob) >> 16].prettyname, port); + else scm_puts(SwigPtrList[(long) SCM_CAR(swig_smob) >> 16].name, port); + scm_puts(" ", port); + scm_intprint((long) SCM_CDR(swig_smob), 16, port); + scm_puts(">", port); /* non-zero means success */ return 1; } @@ -238,7 +251,7 @@ SWIGSTATIC void SWIG_Guile_Init (void) { if (swig_tag == 0) { - swig_tag = scm_make_smob_type_mfpe("swig", 0, NULL, NULL, + swig_tag = scm_make_smob_type_mfpe((char *) "swig", 0, NULL, NULL, print_swig, equalp_swig); } } @@ -246,11 +259,12 @@ SWIG_Guile_Init (void) /* Convert datatype table */ SWIGSTATIC -void SWIG_Guile_RegisterTypes(swig_type_info **table) +void SWIG_Guile_RegisterTypes(swig_type_info **table, + swig_type_info **init) { - for (; *table; table++) { - swig_type_info *type = *table; - char *origname = type->name; + for (; *init; table++, init++) { + swig_type_info *type = *table = *init; + const char *origname = type->name; /* Register datatype itself and store pointer back */ type->tag = SWIG_RegisterType(origname, type->str); /* Register compatible types */ @@ -267,7 +281,7 @@ SWIG_Guile_GetArgs (SCM *dest, SCM rest, int i; for (i = 0; i<reqargs; i++) { if (!SCM_CONSP(rest)) - scm_wrong_num_args(gh_str02scm(procname)); + scm_wrong_num_args(gh_str02scm((char *) procname)); *dest++ = SCM_CAR(rest); rest = SCM_CDR(rest); } @@ -278,7 +292,7 @@ SWIG_Guile_GetArgs (SCM *dest, SCM rest, for (; i<optargs; i++) *dest++ = GH_NOT_PASSED; if (!SCM_NULLP(rest)) - scm_wrong_num_args(gh_str02scm(procname)); + scm_wrong_num_args(gh_str02scm((char *) procname)); } #ifdef __cplusplus diff --git a/SWIG/Lib/guile/guiledec.swg b/SWIG/Lib/guile/guiledec.swg index 947619c57..d763f0809 100644 --- a/SWIG/Lib/guile/guiledec.swg +++ b/SWIG/Lib/guile/guiledec.swg @@ -27,17 +27,29 @@ extern "C" { #define GH_NOT_PASSED SCM_UNDEFINED #define GH_UNSPECIFIED SCM_UNSPECIFIED -#define GUILE_APPEND_RESULT(object) \ - if (gswig_result == GH_UNSPECIFIED) \ - gswig_result = object; \ - else { \ - if (!gh_pair_p(gswig_result)) \ - gswig_result = gh_list(gswig_result, object, GH_NOT_PASSED); \ - else \ - gswig_result = gh_append2(gswig_result, \ - gh_list(object, GH_NOT_PASSED)); \ +#define GUILE_APPEND_RESULT(object) \ + if (gswig_result == GH_UNSPECIFIED) \ + gswig_result = object; \ + else { \ + if (!gswig_list_p) { \ + gswig_list_p = 1; \ + gswig_result = gh_list(gswig_result, object, GH_NOT_PASSED); \ + } \ + else \ + gswig_result = gh_append2(gswig_result, \ + gh_list(object, GH_NOT_PASSED)); \ } +/* scm_values was implemented on C level in 1.4.1, and the prototype + is not included in libguile.h, so play safe and lookup `values'... */ +#define GUILE_MAYBE_VALUES \ + if (gswig_list_p) \ + gswig_result = gh_apply(gh_lookup("values"), gswig_result); + +#define GUILE_MAYBE_VECTOR \ + if (gswig_list_p) \ + gswig_result = gh_list_to_vector(gswig_result); + static char * GSWIG_scm2str (SCM s) { @@ -72,16 +84,15 @@ GSWIG_scm2char (SCM s) typedef struct SwigPtrType SwigPtrType; typedef struct swig_type_info { - char *name; + const char *name; void *(*converter)(void *); - char *str; + const char *str; size_t tag; } swig_type_info; -#define swig_types_initial swig_types - SWIGSTATIC void -SWIG_Guile_RegisterTypes (swig_type_info **table); +SWIG_Guile_RegisterTypes (swig_type_info **table, + swig_type_info **init); /* Register a new type-mapping with the type-checker. origtype is the original datatype and newtype is an equivalent type. cast is optional @@ -90,7 +101,7 @@ SWIG_Guile_RegisterTypes (swig_type_info **table); C++). */ SWIGSTATIC void -SWIG_RegisterMapping (char *origtype, char *newtype, +SWIG_RegisterMapping (const char *origtype, const char *newtype, void *(*cast)(void *)); /* Register SWIG smobs with Guile. */ @@ -106,6 +117,16 @@ SWIG_Guile_Init(); SWIGSTATIC int SWIG_Guile_GetPtr (SCM s, void **result, swig_type_info *type); +/* Get a pointer value from a smob. If there is a type-mismatch, + signal a wrong-type-arg error for the given argument number. */ +SWIGSTATIC void * +SWIG_Guile_MustGetPtr_ (SCM s, swig_type_info *type, + int argnum, const char *func_name); + +/* Use this convenience macro instead of the above function. */ +#define SWIG_Guile_MustGetPtr(s, type, argnum) \ + SWIG_Guile_MustGetPtr_(s, type, argnum, FUNC_NAME) + /* Make a smob from a pointer and typeinfo. */ SWIGSTATIC SCM SWIG_Guile_MakePtr (void *ptr, swig_type_info *type); diff --git a/SWIG/Lib/guile/guilemain.i b/SWIG/Lib/guile/guilemain.i index cd7da9813..7d5eacf30 100644 --- a/SWIG/Lib/guile/guilemain.i +++ b/SWIG/Lib/guile/guilemain.i @@ -27,6 +27,10 @@ %{ #include <libguile.h> +#ifdef __cplusplus +extern "C" { +#endif + /* Debugger interface (don't change the order of the following lines) */ #define GDB_TYPE SCM #include <libguile/gdb_interface.h> @@ -44,6 +48,10 @@ inner_main(void *closure, int argc, char **argv) /* never reached: scm_shell will perform an exit */ } +#ifdef __cplusplus +} +#endif + int main(int argc, char **argv) { diff --git a/SWIG/Lib/guile/list-vector.i b/SWIG/Lib/guile/list-vector.i new file mode 100644 index 000000000..97a5c7d9d --- /dev/null +++ b/SWIG/Lib/guile/list-vector.i @@ -0,0 +1,222 @@ +/* list-vector.i --- Guile typemaps for converting between -*- c -*- arrays + and Scheme lists or vectors + + Copyright (C) 2001 Matthias Koeppe <mkoeppe@mail.math.uni-magdeburg.de> + + $Header$ +*/ + +/* Here is a macro that will define typemaps for converting between C + arrays and Scheme lists or vectors when passing arguments to the C + function. + + TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(C_TYPE, SCM_TO_C, C_TO_SCM, SCM_TYPE) + + Supported calling conventions: + + func(int VECTORLENINPUT, [const] C_TYPE *VECTORINPUT) or + func([const] C_TYPE *VECTORINPUT, int VECTORLENINPUT) + + Scheme wrapper will take one argument, a vector. A temporary C + array of elements of type C_TYPE will be allocated and filled + with the elements of the vectors, converted to C with the + SCM_TO_C function. Length and address of the array are passed + to the C function. + + SCM_TYPE is used to describe the Scheme type of the elements in + the Guile procedure documentation. + + func(int LISTLENINPUT, [const] C_TYPE *LISTINPUT) or + func([const] C_TYPE *LISTINPUT, int LISTLENINPUT) + + Likewise, but the Scheme wrapper will take one argument, a list. + + func(int *VECTORLENOUTPUT, C_TYPE **VECTOROUTPUT) or + func(C_TYPE **VECTOROUTPUT, int *VECTORLENOUTPUT) + + Scheme wrapper will take no arguments. Addresses of an integer + and a C_TYPE * variable will be passed to the C function. The + C function is expected to return address and length of a + freshly allocated array of elements of type C_TYPE through + these pointers. The elements of this array are converted to + Scheme with the C_TO_SCM function and returned as a Scheme + vector. + + If the function has a void return value, the vector constructed + by this typemap becomes the return value of the Scheme wrapper. + Otherwise, the function returns multiple values. (See + Doc/internals.html on how to deal with multiple values.) + + func(int *LISTLENOUTPUT, C_TYPE **LISTOUTPUT) or + func(C_TYPE **LISTOUTPUT, int *LISTLENOUTPUT) + + Likewise, but the Scheme wrapper will return a list instead of + a vector. + + Multiple parallel lists and vectors (sharing one length argument + each) are also supported. */ + +%define TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(C_TYPE, SCM_TO_C, C_TO_SCM, SCM_TYPE) + + /* input */ + + /* Passing data is a little complicated here; just remember: + IGNORE typemaps come first, then IN, then CHECK. But if + IGNORE is given, IN won't be used for this type. + + We need to "ignore" one of the parameters because there shall + be only one argument on the Scheme side. Here we only + initialize the array length to 0 but save its address for a + later change. */ + + %typemap(ignore) int VECTORLENINPUT (int *vector_length) + { + $target = 0; + vector_length = &$target; + } + + %typemap(ignore) int LISTLENINPUT (int *list_length) + { + $target = 0; + list_length = &$target; + } + + /* All the work is done in IN. */ + + %typemap(in) C_TYPE *VECTORINPUT, + const C_TYPE *VECTORINPUT + { + SCM_VALIDATE_VECTOR($argnum, $source); + *vector_length = gh_vector_length($source); + if (*vector_length > 0) { + int i; + $target = SCM_MUST_MALLOC(sizeof(C_TYPE) + * (*vector_length)); + for (i = 0; i<*vector_length; i++) { + SCM elt = gh_vector_ref($source, gh_int2scm(i)); + $target[i] = SCM_TO_C(elt); + } + } + else $target = NULL; + } + + %typemap(in) C_TYPE *LISTINPUT, + const C_TYPE *LISTINPUT + { + SCM_VALIDATE_LIST($argnum, $source); + *list_length = gh_length($source); + if (*list_length > 0) { + int i; + SCM rest; + $target = SCM_MUST_MALLOC(sizeof(C_TYPE) + * (*list_length)); + for (i = 0, rest = $source; + i<*list_length; + i++, rest = gh_cdr(rest)) { + SCM elt = gh_car(rest); + $target[i] = SCM_TO_C(elt); + } + } + else $target = NULL; + } + + /* Don't check for NULL pointers (override checks). */ + + %typemap(check) C_TYPE *VECTORINPUT, + const C_TYPE *VECTORINPUT, + C_TYPE *LISTINPUT, + const C_TYPE *LISTINPUT + "/* no check for NULL pointer */"; + + /* Discard the temporary array after the call. */ + + %typemap(freearg) C_TYPE *VECTORINPUT, + const C_TYPE *VECTORINPUT, + C_TYPE *LISTINPUT, + const C_TYPE *LISTINPUT + "if ($target!=NULL) scm_must_free($target);"; + + /* On the Scheme side, the argument is a vector or a list, so say + so in the arglist documentation. */ + + %typemap(indoc) C_TYPE *VECTORINPUT, + const C_TYPE *VECTORINPUT + "($arg <vector of <SCM_TYPE>>)"; + + %typemap(indoc) C_TYPE *LISTINPUT, + const C_TYPE *LISTINPUT + "($arg <list of <SCM_TYPE>>)"; + + /* output */ + + /* First we make a temporary variable ARRAYLENTEMP, use its + address as the ...LENOUTPUT argument for the C function and + "ignore" the ...LENOUTPUT argument for Scheme. */ + + %typemap(ignore) int *VECTORLENOUTPUT (int arraylentemp), + int *LISTLENOUTPUT (int arraylentemp) + "$target = &arraylentemp;"; + + /* We also need to ignore the ...OUTPUT argument. */ + + %typemap(ignore) C_TYPE **VECTOROUTPUT (C_TYPE *arraytemp), + C_TYPE **LISTOUTPUT (C_TYPE *arraytemp) + "$target = &arraytemp;"; + + /* In the ARGOUT typemaps, we convert the array into a vector or + a list and append it to the results. */ + + %typemap(argout) C_TYPE **VECTOROUTPUT + { + int i; + SCM res = gh_make_vector(gh_int2scm(arraylentemp), + SCM_BOOL_F); + for (i = 0; i<arraylentemp; i++) { + SCM elt = C_TO_SCM((*$target)[i]); + gh_vector_set_x(res, gh_int2scm(i), elt); + } + if ((*$target)!=NULL) free(*$target); + GUILE_APPEND_RESULT(res); + } + + %typemap(argout) C_TYPE **LISTOUTPUT + { + int i; + SCM res = SCM_EOL; + for (i = arraylentemp - 1; i>=0; i--) { + SCM elt = C_TO_SCM((*$target)[i]); + res = gh_cons(elt, res); + } + if ((*$target)!=NULL) free(*$target); + GUILE_APPEND_RESULT(res); + } + + /* We return a vector or a list, so say so in the procedure + documentation. */ + + %typemap(argoutdoc) C_TYPE **VECTOROUTPUT + "($arg <vector of <SCM_TYPE>>)"; + + %typemap(argoutdoc) C_TYPE **LISTOUTPUT + "($arg <list of <SCM_TYPE>>)"; + +%enddef + +/* We use the macro to define typemaps for some standard types. */ + +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(bool, gh_scm2bool, gh_bool2scm, boolean); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(char, GSWIG_scm2char, gh_char2scm, char); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned char, GSWIG_scm2char, gh_char2scm, char); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(int, gh_scm2int, gh_int2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(short, gh_scm2int, gh_int2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(long, gh_scm2long, gh_long2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(ptrdiff_t, gh_scm2long, gh_long2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned int, gh_scm2ulong, gh_ulong2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned short, gh_scm2ulong, gh_ulong2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(unsigned long, gh_scm2ulong, gh_ulong2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(size_t, gh_scm2ulong, gh_ulong2scm, integer); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(float, gh_scm2double, gh_double2scm, real); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(double, gh_scm2double, gh_double2scm, real); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(char *, GSWIG_scm2str, gh_str02scm, string); +TYPEMAP_LIST_VECTOR_INPUT_OUTPUT(const char *, GSWIG_scm2str, gh_str02scm, string); + diff --git a/SWIG/Lib/guile/pointer-in-out.i b/SWIG/Lib/guile/pointer-in-out.i new file mode 100644 index 000000000..761b9e5f0 --- /dev/null +++ b/SWIG/Lib/guile/pointer-in-out.i @@ -0,0 +1,68 @@ +/* pointer-in-out.i --- Guile typemaps for passing -*- c -*- pointers indirectly + + Copyright (C) 2001 Matthias Koeppe <mkoeppe@mail.math.uni-magdeburg.de> + + $Header$ +*/ + +/* Here is a macro that will define typemaps for converting between C + arrays and Scheme lists or vectors when passing arguments to the C + function. + + TYPEMAP_POINTER_INPUT_OUTPUT(PTRTYPE, SCM_TYPE) + + Supported calling conventions (in this example, PTRTYPE is int *): + + func(int **INPUT) + + Scheme wrapper will take one argument, a wrapped C pointer. + The address of a variable containing this pointer will be + passed to the function. + + func(int **OUTPUT) + + Scheme wrapper will take no arguments. The address of an int * + variable will be passed to the function. The function is + expected to modify the variable; its value is wrapped and + becomes an extra return value. (See Doc/internals.html on how + to deal with multiple values.) + + func(int **BOTH) + + This annotation combines INPUT and OUTPUT. + +*/ + +%define TYPEMAP_POINTER_INPUT_OUTPUT(PTRTYPE, SCM_TYPE) + +%typemap(in) PTRTYPE *INPUT(PTRTYPE temp) +{ + if (SWIG_Guile_GetPtr($source, (void **) &temp, $*descriptor)) { + scm_wrong_type_arg(FUNC_NAME, $argnum, $source); + } + $target = &temp; +} +%typemap(indoc) PTRTYPE *INPUT "($arg <SCM_TYPE>)"; + +%typemap(ignore) PTRTYPE *OUTPUT(PTRTYPE temp) + "$target = &temp;"; + +%typemap(argout) PTRTYPE *OUTPUT + "GUILE_APPEND_RESULT(SWIG_Guile_MakePtr(*$target, $*descriptor));"; + +%typemap(argoutdoc) PTRTYPE *OUTPUT "<SCM_TYPE>"; + +%typemap(in) PTRTYPE *BOTH = PTRTYPE *INPUT; +%typemap(argout) PTRTYPE *BOTH = PTRTYPE *OUTPUT; +%typemap(argoutdoc) PTRTYPE *BOTH = PTRTYPE *OUTPUT; +%typemap(in) PTRTYPE *INOUT = PTRTYPE *INPUT; +%typemap(argout) PTRTYPE *INOUT = PTRTYPE *OUTPUT; +%typemap(argoutdoc) PTRTYPE *INOUT = PTRTYPE *OUTPUT; + +/* As a special convenience measure, also attach docs involving + SCM_TYPE to the standard pointer typemaps */ + +%typemap(indoc) PTRTYPE "<($arg <SCM_TYPE>)>"; +%typemap(outdoc) PTRTYPE "<SCM_TYPE>"; + +%enddef diff --git a/SWIG/Lib/guile/ports.i b/SWIG/Lib/guile/ports.i index 3741070b0..33737e1c4 100644 --- a/SWIG/Lib/guile/ports.i +++ b/SWIG/Lib/guile/ports.i @@ -7,10 +7,11 @@ %{ #ifndef _POSIX_SOURCE /* This is needed on Solaris for fdopen(). */ - # define _POSIX_SOURCE=199506L + # define _POSIX_SOURCE 199506L #endif #include <stdio.h> #include <errno.h> + #include <unistd.h> %} /* Feed FILE * arguments from file ports */ diff --git a/SWIG/Lib/guile/typemaps.i b/SWIG/Lib/guile/typemaps.i index 21d6150db..90dee2ae8 100644 --- a/SWIG/Lib/guile/typemaps.i +++ b/SWIG/Lib/guile/typemaps.i @@ -4,33 +4,68 @@ $Header$ */ /* Unlike other SWIG language modules, the Guile module handles all - non-pointer types uniformly via typemaps. Here are the - definitions. + types uniformly via typemaps. Here are the definitions. +*/ - The SIMPLE_MAP macro below defines the whole set of typemaps needed +/* Pointers */ + +%typemap(in) SWIGPOINTER * { + if (SWIG_Guile_GetPtr($source, (void **) &$target, $descriptor)) + scm_wrong_type_arg(FUNC_NAME, $argnum, $source); +} + +%typemap(in) void * { + if (SWIG_Guile_GetPtr($source, (void **) &$target, NULL)) + scm_wrong_type_arg(FUNC_NAME, $argnum, $source); +} + +%typemap(varin) SWIGPOINTER * { + if (SWIG_Guile_GetPtr($source, (void **) &$target, $descriptor)) + scm_wrong_type_arg(FUNC_NAME, $argnum, $source); +} + +%typemap(varin) void * { + if (SWIG_Guile_GetPtr($source, (void **) &$target, NULL)) + scm_wrong_type_arg(FUNC_NAME, $argnum, $source); +} + +%typemap(out) SWIGPOINTER * { + $target = SWIG_Guile_MakePtr ($source, $descriptor); +} + +%typemap(varout) SWIGPOINTER * { + $target = SWIG_Guile_MakePtr ($source, $descriptor); +} + +/* The SIMPLE_MAP macro below defines the whole set of typemaps needed for simple types. */ %define SIMPLE_MAP(C_NAME, SCM_TO_C, C_TO_SCM, SCM_NAME) - %typemap (guile, in) C_NAME "$target = SCM_TO_C($source);"; - %typemap (guile, varin) C_NAME "$target = SCM_TO_C($source);"; - %typemap (guile, out) C_NAME "$target = C_TO_SCM($source);"; - %typemap (guile, varout) C_NAME "$target = C_TO_SCM($source);"; + %typemap (guile, in) C_NAME {$target = SCM_TO_C($source);} + %typemap (guile, varin) C_NAME {$target = SCM_TO_C($source);} + %typemap (guile, out) C_NAME {$target = C_TO_SCM($source);} + %typemap (guile, varout) C_NAME {$target = C_TO_SCM($source);} %typemap (guile, indoc) C_NAME "($arg <SCM_NAME>)"; %typemap (guile, varindoc) C_NAME "($arg <SCM_NAME>)"; %typemap (guile, outdoc) C_NAME "<SCM_NAME>"; %typemap (guile, varoutdoc) C_NAME "<SCM_NAME>"; - %typemap (guile, in) C_NAME *INPUT (C_NAME temp) - "temp = (C_NAME) C_TO_SCM($source); $target = &temp;" + %typemap (guile, in) C_NAME *INPUT (C_NAME temp) { + temp = (C_NAME) SCM_TO_C($source); $target = &temp; + } %typemap (guile, indoc) C_NAME *INPUT "($arg <SCM_NAME>)"; %typemap (guile, ignore) C_NAME *OUTPUT (C_NAME temp) - "$target = &temp;" + {$target = &temp;} %typemap (guile, argout) C_NAME *OUTPUT - "GUILE_APPEND_RESULT(C_TO_SCM(*$target));"; + {GUILE_APPEND_RESULT(C_TO_SCM(*$target));} %typemap (guile, argoutdoc) C_NAME *OUTPUT "($arg <SCM_NAME>)"; %typemap (guile, in) C_NAME *BOTH = C_NAME *INPUT; %typemap (guile, indoc) C_NAME *BOTH = C_NAME *INPUT; %typemap (guile, argout) C_NAME *BOTH = C_NAME *OUTPUT; %typemap (guile, argoutdoc) C_NAME *BOTH = C_NAME *OUTPUT; + %typemap (guile, in) C_NAME *INOUT = C_NAME *INPUT; + %typemap (guile, indoc) C_NAME *INOUT = C_NAME *INPUT; + %typemap (guile, argout) C_NAME *INOUT = C_NAME *OUTPUT; + %typemap (guile, argoutdoc) C_NAME *INOUT = C_NAME *OUTPUT; %enddef SIMPLE_MAP(bool, gh_scm2bool, gh_bool2scm, boolean); @@ -54,9 +89,29 @@ %typemap (guile, freearg) char *, const char * "if ($target) scm_must_free($target);"; +%typemap (guile, freearg) char **OUTPUT, char **BOTH "if (*$target) scm_must_free(*$target);" + +/* But this shall not apply if we try to pass a single char by + reference. */ + +%typemap (guile, freearg) char *OUTPUT, char *BOTH ""; + +/* If we set a string variable, delete the old result first. */ + +%typemap (varin) char *, const char * { + if ($target) free($target); + $target = GSWIG_scm2str($source); +} + /* Void */ %typemap (guile, out) void "gswig_result = GH_UNSPECIFIED;"; %typemap (guile, outdoc) void ""; +/* SCM is passed through */ + +typedef unsigned long SCM; +%typemap (guile, in) SCM "$target=$source;"; +%typemap (guile, out) SCM "$target=$source;"; + /* typemaps.i ends here */ diff --git a/SWIG/Lib/java/java_arrays.i b/SWIG/Lib/java/java_arrays.i new file mode 100644 index 000000000..198c43017 --- /dev/null +++ b/SWIG/Lib/java/java_arrays.i @@ -0,0 +1,11 @@ +/* +Support for setting values in arrays. This is intended to cover all types of +arrays, that is arrays of basic types, eg int, unsigned int, arrays of +structures/classes, arrays of enums and arrays of pointers. +*/ +%typemap(java, memberin) SWIGARRAY [] { + int i; + for (i=0; i<$dim0; i++) + $target[i] = $source[i]; +} + diff --git a/SWIG/Lib/java/stl_string.i b/SWIG/Lib/java/stl_string.i new file mode 100644 index 000000000..d3afcdccb --- /dev/null +++ b/SWIG/Lib/java/stl_string.i @@ -0,0 +1,82 @@ +//-*-c++-*- +/* + * typemaps for standard C++ string and wstring + * by: Tal Shalif <tal@slt.atr.co.jp> + */ +/* what type to use in java source code */ +%typemap(java,jtype) const string & {String} + +/* what is the corresponding jni type */ +%typemap(java,jni) const string & {jstring} + +/* how to convert the c++ type to the java type */ +%typemap(java,out) const string & { + $target = JCALL(NewStringUTF, jenv) $source->c_str()); +} + +/* how to convert java type to requested c++ type */ +%typemap(java,in) const string & { + $target = NULL; + if($source != NULL) { + /* get the String from the StringBuffer */ + char *p = (char *)jenv->GetStringUTFChars($source, 0); + $target = new string(p); + JCALL(ReleaseStringUTFChars, jenv) $source, p); + } +} +/* free resource once finished using */ +%typemap(java,freearg) const string & { + delete $target; +} + +%typemap(java,jtype) string & = const string &; +%typemap(java,jni) string & = const string &; +%typemap(java,in) string & = const string &; +%typemap(java,out) string & = const string &; +%typemap(java,freearg) string & = const string &; + +/* what type to use in java source code */ +%typemap(java,jtype) const wstring & {String} + +/* what is the corresponding jni type */ +%typemap(java,jni) const wstring & {jstring} + +/* how to convert the c++ type to the java type */ +%typemap(java,out) const wstring & { + unsigned int len = $source->length(); + jchar *conv_buf = new jchar[len]; + for (unsigned int i = 0; i < len; ++i) { + conv_buf[i] = (jchar)(*$source)[i]; + } + $target = JCALL(NewString, jenv) conv_buf, len); + delete [] conv_buf; +} + +/* how to convert java type to requested c++ type */ +%typemap(java,in) const wstring & { + $target = NULL; + if($source != NULL) { + /* get the String from the StringBuffer */ + const jchar *jchar_p = jenv->GetStringChars($source, 0); + unsigned int len; + for (len = 0; jchar_p[len]; ++len); + if (len) { + wchar_t *conv_buf = new wchar_t[len]; + for (unsigned int i = 0; i < len; ++i) { + conv_buf[i] = jchar_p[i]; + } + $target = new wstring(conv_buf, len); + delete [] conv_buf; + } + + JCALL(ReleaseStringChars, jenv) $source, jchar_p); + } +} + + +%typemap(java,jtype) wstring & = const wstring &; +%typemap(java,jni) wstring & = const wstring &; +%typemap(java,in) wstring & = const wstring &; +%typemap(java,out) wstring & = const wstring &; +%typemap(java,freearg) wstring & = const wstring &; + diff --git a/SWIG/Lib/java/typemaps.i b/SWIG/Lib/java/typemaps.i index 307cc5660..2b2ab55fb 100644 --- a/SWIG/Lib/java/typemaps.i +++ b/SWIG/Lib/java/typemaps.i @@ -1,4 +1,4 @@ -//-*-c++-*- +// // SWIG Typemap library // for Java @@ -125,85 +125,3 @@ %typemap(java,ignore) jobject jobj { $target = jobj; } - -/* - * typemaps for standard C++ string and wstring - * by: Tal Shalif <tal@slt.atr.co.jp> - */ -/* what type to use in java source code */ -%typemap(java,jtype) const string & {String} - -/* what is the corresponding jni type */ -%typemap(java,jni) const string & {jstring} - -/* how to convert the c++ type to the java type */ -%typemap(java,out) const string & { - $target = JCALL(NewStringUTF, jenv) $source->c_str()); -} - -/* how to convert java type to requested c++ type */ -%typemap(java,in) const string & { - $target = NULL; - if($source != NULL) { - /* get the String from the StringBuffer */ - char *p = (char *)jenv->GetStringUTFChars($source, 0); - $target = new string(p); - JCALL(ReleaseStringUTFChars, jenv) $source, p); - } -} -/* free resource once finished using */ -%typemap(java,freearg) const string & { - delete $target; -} - -%typemap(java,jtype) string & = const string &; -%typemap(java,jni) string & = const string &; -%typemap(java,in) string & = const string &; -%typemap(java,out) string & = const string &; -%typemap(java,freearg) string & = const string &; - -/* what type to use in java source code */ -%typemap(java,jtype) const wstring & {String} - -/* what is the corresponding jni type */ -%typemap(java,jni) const wstring & {jstring} - -/* how to convert the c++ type to the java type */ -%typemap(java,out) const wstring & { - unsigned int len = $source->length(); - jchar *conv_buf = new jchar[len]; - for (unsigned int i = 0; i < len; ++i) { - conv_buf[i] = (jchar)(*$source)[i]; - } - $target = JCALL(NewString, jenv) conv_buf, len); - delete [] conv_buf; -} - -/* how to convert java type to requested c++ type */ -%typemap(java,in) const wstring & { - $target = NULL; - if($source != NULL) { - /* get the String from the StringBuffer */ - const jchar *jchar_p = jenv->GetStringChars($source, 0); - unsigned int len; - for (len = 0; jchar_p[len]; ++len); - if (len) { - wchar_t *conv_buf = new wchar_t[len]; - for (unsigned int i = 0; i < len; ++i) { - conv_buf[i] = jchar_p[i]; - } - $target = new wstring(conv_buf, len); - delete [] conv_buf; - } - - JCALL(ReleaseStringChars, jenv) $source, jchar_p); - } -} - - -%typemap(java,jtype) wstring & = const wstring &; -%typemap(java,jni) wstring & = const wstring &; -%typemap(java,in) wstring & = const wstring &; -%typemap(java,out) wstring & = const wstring &; -%typemap(java,freearg) wstring & = const wstring &; - diff --git a/SWIG/Lib/mzscheme/mzscheme.i b/SWIG/Lib/mzscheme/mzscheme.i new file mode 100644 index 000000000..bea4e401b --- /dev/null +++ b/SWIG/Lib/mzscheme/mzscheme.i @@ -0,0 +1,14 @@ +/* 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*/ + +/* Read in standard typemaps. */ +%include "typemaps.i" + diff --git a/SWIG/Lib/mzscheme/mzscheme.swg b/SWIG/Lib/mzscheme/mzscheme.swg index cd0a732eb..c97cd2ced 100644 --- a/SWIG/Lib/mzscheme/mzscheme.swg +++ b/SWIG/Lib/mzscheme/mzscheme.swg @@ -1,4 +1,4 @@ -#include <escheme.h> +/* -*-c-*- */ typedef struct swig_proxy { Scheme_Type type; diff --git a/SWIG/Lib/mzscheme/mzschemedec.swg b/SWIG/Lib/mzscheme/mzschemedec.swg new file mode 100644 index 000000000..f17b168b3 --- /dev/null +++ b/SWIG/Lib/mzscheme/mzschemedec.swg @@ -0,0 +1,8 @@ +/* -*-c-*- */ +/* Implementation : MZSCHEME */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include <escheme.h> diff --git a/SWIG/Lib/mzscheme/typemaps.i b/SWIG/Lib/mzscheme/typemaps.i index ea5989ad2..6f4b18623 100644 --- a/SWIG/Lib/mzscheme/typemaps.i +++ b/SWIG/Lib/mzscheme/typemaps.i @@ -1,4 +1,4 @@ -/* +/* -*-c-*- -------------------------------------------------- argout typemaps convert arguments from C to Scheme @@ -71,6 +71,12 @@ void m_output_helper(Scheme_Object **target, Scheme_Object *s, int *_lenv) { ------------------------------------------------- */ +%typemap(mzscheme, in) bool { + if(!SCHEME_BOOLP($source)) + scheme_wrong_type("$name", "boolean", $argnum, argc, argv); + $target = SCHEME_TRUEP($source); +} + %typemap(mzscheme, in) char { if(!SCHEME_CHARP($source)) scheme_wrong_type("$name", "character", $argnum, argc, argv); @@ -263,6 +269,10 @@ void m_output_helper(Scheme_Object **target, Scheme_Object *s, int *_lenv) { ------------------------------------ */ +%typemap(mzscheme, out) bool { + $target = $source ? scheme_true : scheme_false; +} + %typemap(mzscheme, out) char { $target = scheme_make_character($source); } @@ -374,6 +384,12 @@ void m_output_helper(Scheme_Object **target, Scheme_Object *s, int *_lenv) { ------------------------------------------------------------ */ +%typemap(mzscheme, varin) bool { + if(!SCHEME_BOOLP($source)) + scheme_wrong_type("$name", "boolean", $argnum, argc, argv); + $target = SCHEME_TRUEP($source); +} + %typemap(mzscheme, varin) char { if(!SCHEME_CHARP($source)) scheme_wrong_type("$name", "character", $argnum, argc, argv); @@ -567,6 +583,10 @@ void m_output_helper(Scheme_Object **target, Scheme_Object *s, int *_lenv) { ----------------------------------- */ +%typemap(mzscheme, varout) bool { + $target = $source ? scheme_true : scheme_false; +} + %typemap(mzscheme, varout) char { $target = scheme_make_character($source); } @@ -671,3 +691,9 @@ void m_output_helper(Scheme_Object **target, Scheme_Object *s, int *_lenv) { $target = scheme_make_double(*$source); } */ + +/* Pass through Scheme_Object * */ + +%typemap (guile, in) Scheme_Object * "$target=$source;"; +%typemap (guile, out) Scheme_Object * "$target=$source;"; + diff --git a/SWIG/Lib/perl5/perl5.swg b/SWIG/Lib/perl5/perl5.swg index 80d33a496..b9e760082 100644 --- a/SWIG/Lib/perl5/perl5.swg +++ b/SWIG/Lib/perl5/perl5.swg @@ -153,19 +153,19 @@ SWIGRUNTIME(int *) _SWIG_MakePtr(CPerlObj *pPerl, SV *sv, void *ptr, swig_type_info *t) #endif { - sv_setref_pv(sv, t->name, ptr); + sv_setref_pv(sv, (char *) t->name, ptr); } /* Magic variable code */ #ifndef PERL_OBJECT #define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c) -static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) { +static void _swig_create_magic(SV *sv, const char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) { #else #define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c) -static void _swig_create_magic(CPerlObj *pPerl, SV *sv, char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) { +static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) { #endif MAGIC *mg; - sv_magic(sv,sv,'U',name,strlen(name)); + sv_magic(sv,sv,'U',(char *) name,strlen(name)); mg = mg_find(sv,'U'); mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL)); mg->mg_virtual->svt_get = get; diff --git a/SWIG/Lib/perl5/ptrlang.i b/SWIG/Lib/perl5/ptrlang.i index e0cee9cf4..56cfe5b14 100644 --- a/SWIG/Lib/perl5/ptrlang.i +++ b/SWIG/Lib/perl5/ptrlang.i @@ -50,10 +50,10 @@ static swig_type_info *SWIG_POINTER_void_p = 0; ------------------------------------------------------------------ */ #ifdef PERL_OBJECT -static SV *_ptrvalue(CPerlObj *pPerl,SV *_PTRVALUE, int index, char *type) { +static SV *_ptrvalue(CPerlObj *pPerl,SV *_PTRVALUE, int index, const char *type) { #define ptrvalue(a,b,c) _ptrvalue(pPerl,a,b,c) #else -static SV *_ptrvalue(SV *_PTRVALUE, int index, char *type) { +static SV *_ptrvalue(SV *_PTRVALUE, int index, const char *type) { #define ptrvalue(a,b,c) _ptrvalue(a,b,c) #endif @@ -258,10 +258,10 @@ static SV *_ptrcreate(char *type, SV *value, int numelements) { ------------------------------------------------------------------ */ #ifdef PERL_OBJECT -static void _ptrset(CPerlObj *pPerl,SV *_PTRVALUE, SV *value, int index, char *type) { +static void _ptrset(CPerlObj *pPerl,SV *_PTRVALUE, SV *value, int index, const char *type) { #define ptrset(a,b,c,d) _ptrset(pPerl,a,b,c,d) #else -static void _ptrset(SV *_PTRVALUE, SV *value, int index, char *type) { +static void _ptrset(SV *_PTRVALUE, SV *value, int index, const char *type) { #define ptrset(a,b,c,d) _ptrset(a,b,c,d) #endif void *ptr; diff --git a/SWIG/Lib/ruby/rubydec.swg b/SWIG/Lib/ruby/rubydec.swg index fe1fc2780..8f3a3d08a 100644 --- a/SWIG/Lib/ruby/rubydec.swg +++ b/SWIG/Lib/ruby/rubydec.swg @@ -3,7 +3,7 @@ extern "C" { #endif -SWIGEXPORT(void) SWIG_define_class(VALUE, swig_type_info *) +SWIGEXPORT(void) SWIG_define_class(swig_type_info *); SWIGEXPORT(VALUE) SWIG_NewPointerObj(void *, swig_type_info *); SWIGEXPORT(char *) SWIG_MangleStr(VALUE); SWIGEXPORT(void *) SWIG_ConvertPtr(VALUE, swig_type_info *); diff --git a/SWIG/Lib/tcl/object.swg b/SWIG/Lib/tcl/object.swg index 7e806c65d..b087f36c6 100644 --- a/SWIG/Lib/tcl/object.swg +++ b/SWIG/Lib/tcl/object.swg @@ -57,7 +57,7 @@ SwigMethodCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS objv = (Tcl_Obj **) _objv; if (objc < 2) { - Tcl_SetResult(interp,"wrong # args.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); return TCL_ERROR; } meth = inst->classptr->methods; @@ -79,7 +79,7 @@ SwigMethodCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS /* Check class methods for a match */ if (strcmp(method,"cget") == 0) { if (objc < 3) { - Tcl_SetResult(interp,"wrong # args.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); return TCL_ERROR; } attrname = Tcl_GetStringFromObj(objv[2],NULL); @@ -100,12 +100,12 @@ SwigMethodCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS Tcl_SetObjResult(interp, Tcl_DuplicateObj(inst->thisptr)); return TCL_OK; } - Tcl_SetResult(interp,"Invalid attribute.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Invalid attribute.", TCL_STATIC); return TCL_ERROR; } else if (strcmp(method, "configure") == 0) { int i; if (objc < 4) { - Tcl_SetResult(interp,"wrong # args.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); return TCL_ERROR; } i = 2; @@ -127,16 +127,16 @@ SwigMethodCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS attr++; } if (inst->classptr->attributes && !(attr->name)) { - Tcl_SetResult(interp,"Invalid attribute name.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Invalid attribute name.", TCL_STATIC); return TCL_ERROR; } } return TCL_OK; } else { - Tcl_SetResult(interp,"Invalid method. Must be one of: configure cget ", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Invalid method. Must be one of: configure cget ", TCL_STATIC); meth = inst->classptr->methods; while (meth && meth->name) { - Tcl_AppendElement(interp, meth->name); + Tcl_AppendElement(interp, (char *) meth->name); meth++; } return TCL_ERROR; @@ -161,7 +161,7 @@ SwigObjectCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS Tcl_CmdInfo ci; if (!classptr) { - Tcl_SetResult(interp,"swig: internal runtime error. No class object defined.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "swig: internal runtime error. No class object defined.", TCL_STATIC); return TCL_ERROR; } cons = classptr->constructor; @@ -201,11 +201,11 @@ SwigObjectCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS newObj = Tcl_DuplicateObj(objv[thisarg]); if (!name) name = Tcl_GetStringFromObj(newObj,NULL); } else { - Tcl_SetResult(interp,"wrong # args.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); return TCL_ERROR; } } else { - Tcl_SetResult(interp,"No constructor available.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "No constructor available.", TCL_STATIC); return TCL_ERROR; } if (!Tcl_GetCommandInfo(interp,name,&ci)) { @@ -222,7 +222,7 @@ SwigObjectCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONS Tcl_CreateObjCommand(interp,name, SwigMethodCmd, (ClientData) newinst, SwigObjectDelete); return TCL_OK; } else { - Tcl_SetResult(interp,"Object name already exists!", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Object name already exists!", TCL_STATIC); return TCL_ERROR; } } diff --git a/SWIG/Lib/tcl/swigtcl8.swg b/SWIG/Lib/tcl/swigtcl8.swg index 44087256d..13828588d 100644 --- a/SWIG/Lib/tcl/swigtcl8.swg +++ b/SWIG/Lib/tcl/swigtcl8.swg @@ -33,7 +33,7 @@ SWIG_ConvertPtrFromString(Tcl_Interp *interp, char *c, void **ptr, swig_type_inf if (*c != '_') { *ptr = (void *) 0; if (strcmp(c,"NULL") == 0) return TCL_OK; - Tcl_SetResult(interp,"Type error. Expected a pointer", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Type error. Expected a pointer", TCL_STATIC); return TCL_ERROR; } c++; @@ -51,8 +51,8 @@ SWIG_ConvertPtrFromString(Tcl_Interp *interp, char *c, void **ptr, swig_type_inf if (ty) { tc = SWIG_TypeCheck(c,ty); if (!tc) { - Tcl_SetResult(interp,"Type error. Expected ", TCL_STATIC); - Tcl_AppendElement(interp, ty->name); + Tcl_SetResult(interp, (char *) "Type error. Expected ", TCL_STATIC); + Tcl_AppendElement(interp, (char *) ty->name); return TCL_ERROR; } *ptr = SWIG_TypeCast(tc,(void *)p); @@ -139,7 +139,7 @@ SWIG_GetArgs(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], const char *fm } if (argno >= (objc-1)) { if (!opt) { - Tcl_SetResult(interp,"Wrong # args. ", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Wrong # args. ", TCL_STATIC); goto argerror; } else { va_end(ap); @@ -195,7 +195,7 @@ SWIG_GetArgs(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], const char *fm } } if ((objc-1) > argno) { - Tcl_SetResult(interp,"Wrong # args.", TCL_STATIC); + Tcl_SetResult(interp, (char *) "Wrong # args.", TCL_STATIC); goto argerror; } va_end(ap); diff --git a/SWIG/Lib/tcl/tclsh.i b/SWIG/Lib/tcl/tclsh.i index 839de3be9..6301b2024 100644 --- a/SWIG/Lib/tcl/tclsh.i +++ b/SWIG/Lib/tcl/tclsh.i @@ -48,12 +48,12 @@ int Tcl_AppInit(Tcl_Interp *interp){ if (SWIG_init(interp) == TCL_ERROR) return TCL_ERROR; #if TCL_MAJOR_VERSION > 7 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 5 - Tcl_SetVar(interp,"tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); + Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); #else tcl_RcFileName = SWIG_RcFileName; #endif #ifdef SWIG_RcRsrcName - Tcl_SetVar(interp,"tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL); + Tcl_SetVar(interp, (char *) "tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL); #endif return TCL_OK; diff --git a/SWIG/Lib/tcl/wish.i b/SWIG/Lib/tcl/wish.i index 201a438b9..6bef3ba7c 100644 --- a/SWIG/Lib/tcl/wish.i +++ b/SWIG/Lib/tcl/wish.i @@ -7,6 +7,9 @@ // /* Revision History * $Log$ + * Revision 1.1.2.1 2001/06/20 11:47:29 mkoeppe + * Portability fixes + * * Revision 1.1 2000/01/11 21:15:54 beazley * Added files * @@ -122,7 +125,7 @@ int Tcl_AppInit(Tcl_Interp *interp) */ #if TCL_MAJOR_VERSION >= 8 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 5 - Tcl_SetVar(interp,"tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); + Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); #else tcl_RcFileName = SWIG_RcFileName; #endif @@ -131,7 +134,7 @@ int Tcl_AppInit(Tcl_Interp *interp) #ifdef MAC_TCL #ifdef SWIG_RcRsrcName - Tcl_SetVar(interp,"tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL_ONLY); + Tcl_SetVar(interp, (char *) "tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL_ONLY); #endif #endif return TCL_OK; |