summaryrefslogtreecommitdiff
path: root/SWIG/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'SWIG/Lib')
-rw-r--r--SWIG/Lib/common.swg7
-rw-r--r--SWIG/Lib/guile/guile.i2
-rw-r--r--SWIG/Lib/guile/guile.swg62
-rw-r--r--SWIG/Lib/guile/guiledec.swg51
-rw-r--r--SWIG/Lib/guile/guilemain.i8
-rw-r--r--SWIG/Lib/guile/list-vector.i222
-rw-r--r--SWIG/Lib/guile/pointer-in-out.i68
-rw-r--r--SWIG/Lib/guile/ports.i3
-rw-r--r--SWIG/Lib/guile/typemaps.i77
-rw-r--r--SWIG/Lib/java/java_arrays.i11
-rw-r--r--SWIG/Lib/java/stl_string.i82
-rw-r--r--SWIG/Lib/java/typemaps.i84
-rw-r--r--SWIG/Lib/mzscheme/mzscheme.i14
-rw-r--r--SWIG/Lib/mzscheme/mzscheme.swg2
-rw-r--r--SWIG/Lib/mzscheme/mzschemedec.swg8
-rw-r--r--SWIG/Lib/mzscheme/typemaps.i28
-rw-r--r--SWIG/Lib/perl5/perl5.swg8
-rw-r--r--SWIG/Lib/perl5/ptrlang.i8
-rw-r--r--SWIG/Lib/ruby/rubydec.swg2
-rw-r--r--SWIG/Lib/tcl/object.swg22
-rw-r--r--SWIG/Lib/tcl/swigtcl8.swg10
-rw-r--r--SWIG/Lib/tcl/tclsh.i4
-rw-r--r--SWIG/Lib/tcl/wish.i7
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;