Update to 1.3.6.

This commit is contained in:
Akinori MUSHA 2001-07-14 04:15:07 +00:00
parent 5a013b1484
commit 63bdc1039c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=45111
30 changed files with 30 additions and 1470 deletions

View file

@ -6,18 +6,16 @@
#
PORTNAME= swig
PORTVERSION= ${VER}a5
PORTREVISION= 6
PORTVERSION= 1.3.6
CATEGORIES= devel perl5 python ruby tcl82
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
ftp://ftp.rge.com/pub/languages/swig/ \
ftp://ftp.mcc.ac.uk/pub/mvc/swig/
MASTER_SITE_SUBDIR= ${PORTNAME}
DISTNAME= ${PORTNAME}${PORTVERSION}
MAINTAINER= knu@FreeBSD.org
VER= 1.3
VER= ${PORTVERSION:R}
SWIG_LANGUAGES?= guile perl python ruby tcl
.for lang in ${SWIG_LANGUAGES}
@ -48,7 +46,7 @@ CONFIGURE_ARGS+= --with-tclincl=${LOCALBASE}/include/tcl8.2/ \
.endif
INSTALLS_SHLIB= yes
WRKSRC= ${WRKDIR}/SWIG${PORTVERSION}
WRKSRC= ${WRKDIR}/${DISTNAME:U}
USE_LIBTOOL= yes
CONFIGURE_ENV= CFLAGS="${CFLAGS} -fpic -DPIC"
ALL_TARGET= swig runtime

View file

@ -1 +1 @@
MD5 (swig1.3a5.tar.gz) = 96249f9614ae31d328661d0e3d9cd615
MD5 (swig-1.3.6.tar.gz) = a1b704511d188221f7b293844a44f8a8

View file

@ -1,39 +0,0 @@
Index: SWIG/Lib/guile/guile.swg
diff -u SWIG/Lib/guile/guile.swg:1.11 SWIG/Lib/guile/guile.swg:1.11.2.2
--- Lib/guile/guile.swg:1.11 Sat Sep 2 11:25:27 2000
+++ Lib/guile/guile.swg Mon Feb 26 11:57:56 2001
@@ -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 */
@@ -140,7 +144,7 @@
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;
}
@@ -246,10 +250,11 @@
/* 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;
+ for (; *init; table++, init++) {
+ swig_type_info *type = *table = *init;
char *origname = type->name;
/* Register datatype itself and store pointer back */
type->tag = SWIG_RegisterType(origname, type->str);

View file

@ -1,56 +0,0 @@
Index: SWIG/Lib/guile/guiledec.swg
diff -u SWIG/Lib/guile/guiledec.swg:1.13 SWIG/Lib/guile/guiledec.swg:1.13.2.4
--- Lib/guile/guiledec.swg:1.13 Thu Sep 21 16:06:17 2000
+++ Lib/guile/guiledec.swg Fri Mar 2 07:53:02 2001
@@ -27,17 +27,29 @@
#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)
{
@@ -78,10 +90,9 @@
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

View file

@ -1,26 +0,0 @@
Index: SWIG/Lib/guile/guilemain.i
diff -u SWIG/Lib/guile/guilemain.i:1.4 SWIG/Lib/guile/guilemain.i:1.4.2.1
--- Lib/guile/guilemain.i:1.4 Sun Sep 3 15:06:32 2000
+++ Lib/guile/guilemain.i Mon Feb 26 11:57:56 2001
@@ -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>
@@ -43,6 +47,10 @@
scm_shell(argc, argv); /* scheme interpreter */
/* never reached: scm_shell will perform an exit */
}
+
+#ifdef __cplusplus
+}
+#endif
int
main(int argc, char **argv)

View file

@ -1,25 +0,0 @@
Index: SWIG/Lib/guile/typemaps.i
diff -u SWIG/Lib/guile/typemaps.i:1.17 SWIG/Lib/guile/typemaps.i:1.17.2.1
--- Lib/guile/typemaps.i:1.17 Thu Sep 21 16:06:17 2000
+++ Lib/guile/typemaps.i Mon Feb 26 08:51:10 2001
@@ -54,9 +54,20 @@
%typemap (guile, freearg) char *, const char * "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 "";
+
/* 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 */

View file

@ -1,284 +0,0 @@
Index: SWIG/Source/Modules1.1/guile.cxx
diff -u SWIG/Source/Modules1.1/guile.cxx:1.68 SWIG/Source/Modules1.1/guile.cxx:1.68.2.6
--- Source/Modules1.1/guile.cxx:1.68 Wed Sep 20 09:00:56 2000
+++ Source/Modules1.1/guile.cxx Fri Mar 2 07:53:02 2001
@@ -32,8 +32,10 @@
-prefix name - Use NAME as prefix [default \"gswig_\"]\n\
-package name - Set the path of the module [default NULL]\n\
-Linkage lstyle - Use linkage protocol LSTYLE [default `ltdlmod']\n\
- -procdoc file - Output procedure documentation to file\n\
+ -procdoc file - Output procedure documentation to FILE\n\
\n\
+ -procdocformat format - Output procedure documentation in FORMAT;\n\
+ one of `guile-1.4', `plain', `texinfo'\n\
The module option does not create a guile module with a separate name\n\
space. It specifies the name of the initialization function and is\n\
called a module here so that it is compadible with the rest of SWIG.\n\
@@ -59,8 +61,10 @@
package = NULL;
linkage = GUILE_LSTYLE_SIMPLE;
procdoc = NULL;
+ docformat = GUILE_1_4;
emit_setters = 0;
struct_member = 0;
+ before_return = NULL;
}
// ---------------------------------------------------------------------
@@ -143,6 +147,18 @@
Swig_arg_error();
}
}
+ else if (strcmp (argv[i], "-procdocformat") == 0) {
+ if (strcmp(argv[i+1], "guile-1.4") == 0)
+ docformat = GUILE_1_4;
+ else if (strcmp(argv[i+1], "plain") == 0)
+ docformat = PLAIN;
+ else if (strcmp(argv[i+1], "texinfo") == 0)
+ docformat = TEXINFO;
+ else Swig_arg_error();
+ Swig_mark_arg(i);
+ Swig_mark_arg(i+1);
+ i++;
+ }
else if (strcmp (argv[i], "-emit-setters") == 0) {
emit_setters = 1;
Swig_mark_arg (i);
@@ -252,6 +268,9 @@
void
GUILE::initialize (void)
{
+ if (CPlusPlus) {
+ Printf(f_runtime, "extern \"C\" {\n\n");
+ }
switch (linkage) {
case GUILE_LSTYLE_SIMPLE:
/* Simple linkage; we have to export the SWIG_init function. The user can
@@ -328,7 +347,7 @@
{
SwigType_emit_type_table (f_runtime, f_wrappers);
- Printf (f_init, "SWIG_Guile_RegisterTypes(swig_types);\n");
+ Printf (f_init, "SWIG_Guile_RegisterTypes(swig_types, swig_types_initial);\n");
Printf (f_init, "}\n\n");
char module_name[256];
@@ -341,7 +360,10 @@
strcpy(module_name,module);
}
emit_linkage (module_name);
-
+ if (CPlusPlus) {
+ Printf(f_init, "\n}\n");
+ }
+
if (procdoc) {
Delete(procdoc);
procdoc = NULL;
@@ -460,6 +482,35 @@
error_count++;
}
+
+/* Write out procedure documentation */
+
+void
+GUILE::write_doc(const String *proc_name,
+ const String *signature,
+ const String *doc)
+{
+ switch (docformat) {
+ case GUILE_1_4:
+ Printv(procdoc, "\f\n", 0);
+ Printv(procdoc, "(", signature, ")\n", 0);
+ Printv(procdoc, doc, "\n", 0);
+ break;
+ case PLAIN:
+ Printv(procdoc, "\f", proc_name, "\n\n", 0);
+ Printv(procdoc, "(", signature, ")\n", 0);
+ Printv(procdoc, doc, "\n\n", 0);
+ break;
+ case TEXINFO:
+ Printv(procdoc, "\f", proc_name, "\n", 0);
+ Printv(procdoc, "@deffn primitive ", signature, "\n", 0);
+ Printv(procdoc, doc, "\n", 0);
+ Printv(procdoc, "@end deffn\n\n", 0);
+ break;
+ }
+}
+
+
// ----------------------------------------------------------------------
// GUILE::create_function(char *name, char *iname, SwigType *d,
// ParmList *l)
@@ -498,6 +549,7 @@
/* Declare return variable */
Wrapper_add_local (f,"gswig_result", "SCM gswig_result");
+ Wrapper_add_local (f,"gswig_list_p", "SCM gswig_list_p = 0");
if (procdoc)
guile_do_doc_typemap(returns, "outdoc", d, NULL,
@@ -506,7 +558,7 @@
/* Open prototype and signature */
Printv(f->def, "static SCM\n", wname," (", 0);
- Printv(signature, "(", proc_name, 0);
+ Printv(signature, proc_name, 0);
/* Now write code to extract the parameters */
@@ -583,9 +635,8 @@
source, target, numargs, proc_name, f, 0);
}
- /* Close prototype and signature */
+ /* Close prototype */
- Printv(signature, ")\n", 0);
Printf(f->def, ")\n{\n");
/* Define the scheme name in C. This define is used by several Guile
@@ -637,6 +688,8 @@
// Wrap things up (in a manner of speaking)
+ if (before_return)
+ Printv(f->code, before_return, "\n", 0);
Printv(f->code, "return gswig_result;\n", 0);
// Undefine the scheme name
@@ -662,7 +715,7 @@
Printv(f_wrappers, ");\n", 0);
Printv(f_wrappers, "}\n", 0);
/* Register it */
- Printf (f_init, "gh_new_procedure(\"%s\", %s_rest, 0, 0, 1);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s_rest, 0, 0, 1);\n",
proc_name, wname, numargs-numopt, numopt);
}
else if (emit_setters && struct_member && strlen(Char(proc_name))>3) {
@@ -675,7 +728,7 @@
struct_member = 2; /* have a setter */
}
else Printf(f_init, "SCM getter = ");
- Printf (f_init, "gh_new_procedure(\"%s\", %s, %d, %d, 0);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s, %d, %d, 0);\n",
proc_name, wname, numargs-numopt, numopt);
if (!is_setter) {
/* Strip off "-get" */
@@ -698,17 +751,17 @@
}
else {
/* Register the function */
- Printf (f_init, "gh_new_procedure(\"%s\", %s, %d, %d, 0);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s, %d, %d, 0);\n",
proc_name, wname, numargs-numopt, numopt);
}
if (procdoc) {
- /* Write out procedure documentation */
- Printv(signature, "Returns ", 0);
- if (Len(returns)==0) Printv(signature, "unspecified", 0);
- else if (returns_list) Printv(signature, "list (", returns, ")", 0);
- else Printv(signature, returns, 0);
- Printv(signature, "\n", 0);
- Printv(procdoc, "\f\n", signature, 0);
+ String *returns_text = NewString("");
+ Printv(returns_text, "Returns ", 0);
+ if (Len(returns)==0) Printv(returns_text, "unspecified", 0);
+ else if (returns_list) Printv(returns_text, "list (", returns, ")", 0);
+ else Printv(returns_text, returns, 0);
+ write_doc(proc_name, signature, returns_text);
+ Delete(returns_text);
}
Delete(proc_name);
@@ -751,7 +804,7 @@
if ((SwigType_type(t) != T_USER) || (is_a_pointer(t))) {
- Printf (f_wrappers, "SCM %s(SCM s_0) {\n", var_name);
+ Printf (f_wrappers, "static SCM %s(SCM s_0)\n{\n", var_name);
if (!(Status & STAT_READONLY) && SwigType_type(t) == T_STRING) {
Printf (f_wrappers, "\t char *_temp;\n");
@@ -821,7 +874,7 @@
throw_unhandled_guile_type_error (t);
}
Printf (f_wrappers, "\t return gswig_result;\n");
- Printf (f_wrappers, "}\n");
+ Printf (f_wrappers, "}\n\n");
// Now add symbol to the Guile interpreter
@@ -829,12 +882,12 @@
|| Status & STAT_READONLY) {
/* Read-only variables become a simple procedure returning the
value. */
- Printf (f_init, "\t gh_new_procedure(\"%s\", %s, 0, 1, 0);\n",
+ Printf (f_init, "\t gh_new_procedure(\"%s\", (SCM (*) ()) %s, 0, 1, 0);\n",
proc_name, var_name);
}
else {
/* Read/write variables become a procedure with setter. */
- Printf (f_init, "\t{ SCM p = gh_new_procedure(\"%s\", %s, 0, 1, 0);\n",
+ Printf (f_init, "\t{ SCM p = gh_new_procedure(\"%s\", (SCM (*) ()) %s, 0, 1, 0);\n",
proc_name, var_name);
Printf (f_init, "\t gh_define(\"%s\", "
"scm_make_procedure_with_setter(p, p)); }\n",
@@ -844,29 +897,28 @@
if (procdoc) {
/* Compute documentation */
String *signature = NewString("");
+ String *doc = NewString("");
if (Status & STAT_READONLY) {
- Printv(signature, "(", proc_name, ")\n", 0);
- Printv(signature, "Returns constant ", 0);
- guile_do_doc_typemap(signature, "varoutdoc", t, NULL,
+ Printv(signature, proc_name, 0);
+ Printv(doc, "Returns constant ", 0);
+ guile_do_doc_typemap(doc, "varoutdoc", t, NULL,
0, proc_name, f);
- Printv(signature, "\n", 0);
}
else {
- Printv(signature, "(", proc_name,
+ Printv(signature, proc_name,
" #:optional ", 0);
guile_do_doc_typemap(signature, "varindoc", t, "new-value",
1, proc_name, f);
- Printv(signature, ")\n", 0);
- Printv(signature, "If NEW-VALUE is provided, "
+ Printv(doc, "If NEW-VALUE is provided, "
"set C variable to this value.\n", 0);
- Printv(signature, "Returns variable value ", 0);
- guile_do_doc_typemap(signature, "varoutdoc", t, NULL,
+ Printv(doc, "Returns variable value ", 0);
+ guile_do_doc_typemap(doc, "varoutdoc", t, NULL,
0, proc_name, f);
- Printv(signature, "\n", 0);
}
- Printv(procdoc, "\f\n", signature, 0);
+ write_doc(proc_name, signature, doc);
Delete(signature);
+ Delete(doc);
}
} else {
@@ -957,5 +1009,16 @@
else {
/* Only emit traditional VAR-get and VAR-set procedures */
Language::cpp_variable(name, iname, t);
+ }
+}
+
+void GUILE::pragma(char *lang, char *cmd, char *value)
+{
+ if (strcmp(lang,(char*)"guile") == 0) {
+ if (strcmp(cmd, (char*)"beforereturn")==0) {
+ if (before_return)
+ Delete(before_return);
+ before_return = NewString(value);
+ }
}
}

View file

@ -1,32 +0,0 @@
Index: SWIG/Source/Modules1.1/guile.h
diff -u SWIG/Source/Modules1.1/guile.h:1.15 SWIG/Source/Modules1.1/guile.h:1.15.2.2
--- Source/Modules1.1/guile.h:1.15 Tue Sep 19 09:50:15 2000
+++ Source/Modules1.1/guile.h Thu Mar 1 18:28:02 2001
@@ -36,10 +36,18 @@
GUILE_LSTYLE_HOBBIT // use (hobbit4d link)
} linkage;
File *procdoc;
+ enum {
+ GUILE_1_4,
+ PLAIN,
+ TEXINFO
+ } docformat;
int emit_setters;
int struct_member;
+ String *before_return;
void emit_linkage(char *module_name);
-
+ void write_doc(const String *proc_name,
+ const String *signature,
+ const String *doc);
public :
GUILE ();
void parse_args (int, char *argv[]);
@@ -54,6 +62,7 @@
void set_init (char *);
void create_command (char *, char *) { };
void cpp_variable(char *name, char *iname, SwigType *t);
+ void pragma(char *lang, char *cmd, char *value);
};
/* guile.h ends here */

View file

@ -1,22 +0,0 @@
--- configure.orig Sat Sep 23 02:14:04 2000
+++ configure Sat Jun 9 12:08:08 2001
@@ -2684,7 +2684,7 @@
echo $ac_n "checking for Ruby header files""... $ac_c" 1>&6
echo "configure:2686: checking for Ruby header files" >&5
if test -n "$RUBY"; then
- RUBYDIR=`($RUBY -rmkmf -e 'print $archdir') 2>/dev/null`
+ RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG["archdir"] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none
--- configure.in.orig Sat Sep 23 02:14:03 2000
+++ configure.in Sat Jun 9 11:55:20 2001
@@ -631,7 +631,7 @@
fi
AC_MSG_CHECKING(for Ruby header files)
if test -n "$RUBY"; then
- RUBYDIR=`($RUBY -rmkmf -e 'print $archdir') 2>/dev/null`
+ RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG[["archdir"]] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none

View file

@ -24,14 +24,20 @@ lib/swig%%VER%%/guile/guile.swg
lib/swig%%VER%%/guile/guiledec.swg
lib/swig%%VER%%/guile/guilemain.i
lib/swig%%VER%%/guile/interpreter.i
lib/swig%%VER%%/guile/list-vector.i
lib/swig%%VER%%/guile/pointer-in-out.i
lib/swig%%VER%%/guile/ports.i
lib/swig%%VER%%/guile/typemaps.i
lib/swig%%VER%%/java/java.swg
lib/swig%%VER%%/java/java_arrays.i
lib/swig%%VER%%/java/stl_string.i
lib/swig%%VER%%/java/typemaps.i
lib/swig%%VER%%/malloc.i
lib/swig%%VER%%/math.i
lib/swig%%VER%%/memory.i
lib/swig%%VER%%/mzscheme/mzscheme.i
lib/swig%%VER%%/mzscheme/mzscheme.swg
lib/swig%%VER%%/mzscheme/mzschemedec.swg
lib/swig%%VER%%/mzscheme/typemaps.i
lib/swig%%VER%%/objc.i
lib/swig%%VER%%/perl5/Makefile.pl

View file

@ -6,18 +6,16 @@
#
PORTNAME= swig
PORTVERSION= ${VER}a5
PORTREVISION= 6
PORTVERSION= 1.3.6
CATEGORIES= devel perl5 python ruby tcl82
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
ftp://ftp.rge.com/pub/languages/swig/ \
ftp://ftp.mcc.ac.uk/pub/mvc/swig/
MASTER_SITE_SUBDIR= ${PORTNAME}
DISTNAME= ${PORTNAME}${PORTVERSION}
MAINTAINER= knu@FreeBSD.org
VER= 1.3
VER= ${PORTVERSION:R}
SWIG_LANGUAGES?= guile perl python ruby tcl
.for lang in ${SWIG_LANGUAGES}
@ -48,7 +46,7 @@ CONFIGURE_ARGS+= --with-tclincl=${LOCALBASE}/include/tcl8.2/ \
.endif
INSTALLS_SHLIB= yes
WRKSRC= ${WRKDIR}/SWIG${PORTVERSION}
WRKSRC= ${WRKDIR}/${DISTNAME:U}
USE_LIBTOOL= yes
CONFIGURE_ENV= CFLAGS="${CFLAGS} -fpic -DPIC"
ALL_TARGET= swig runtime

View file

@ -1 +1 @@
MD5 (swig1.3a5.tar.gz) = 96249f9614ae31d328661d0e3d9cd615
MD5 (swig-1.3.6.tar.gz) = a1b704511d188221f7b293844a44f8a8

View file

@ -1,39 +0,0 @@
Index: SWIG/Lib/guile/guile.swg
diff -u SWIG/Lib/guile/guile.swg:1.11 SWIG/Lib/guile/guile.swg:1.11.2.2
--- Lib/guile/guile.swg:1.11 Sat Sep 2 11:25:27 2000
+++ Lib/guile/guile.swg Mon Feb 26 11:57:56 2001
@@ -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 */
@@ -140,7 +144,7 @@
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;
}
@@ -246,10 +250,11 @@
/* 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;
+ for (; *init; table++, init++) {
+ swig_type_info *type = *table = *init;
char *origname = type->name;
/* Register datatype itself and store pointer back */
type->tag = SWIG_RegisterType(origname, type->str);

View file

@ -1,56 +0,0 @@
Index: SWIG/Lib/guile/guiledec.swg
diff -u SWIG/Lib/guile/guiledec.swg:1.13 SWIG/Lib/guile/guiledec.swg:1.13.2.4
--- Lib/guile/guiledec.swg:1.13 Thu Sep 21 16:06:17 2000
+++ Lib/guile/guiledec.swg Fri Mar 2 07:53:02 2001
@@ -27,17 +27,29 @@
#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)
{
@@ -78,10 +90,9 @@
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

View file

@ -1,26 +0,0 @@
Index: SWIG/Lib/guile/guilemain.i
diff -u SWIG/Lib/guile/guilemain.i:1.4 SWIG/Lib/guile/guilemain.i:1.4.2.1
--- Lib/guile/guilemain.i:1.4 Sun Sep 3 15:06:32 2000
+++ Lib/guile/guilemain.i Mon Feb 26 11:57:56 2001
@@ -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>
@@ -43,6 +47,10 @@
scm_shell(argc, argv); /* scheme interpreter */
/* never reached: scm_shell will perform an exit */
}
+
+#ifdef __cplusplus
+}
+#endif
int
main(int argc, char **argv)

View file

@ -1,25 +0,0 @@
Index: SWIG/Lib/guile/typemaps.i
diff -u SWIG/Lib/guile/typemaps.i:1.17 SWIG/Lib/guile/typemaps.i:1.17.2.1
--- Lib/guile/typemaps.i:1.17 Thu Sep 21 16:06:17 2000
+++ Lib/guile/typemaps.i Mon Feb 26 08:51:10 2001
@@ -54,9 +54,20 @@
%typemap (guile, freearg) char *, const char * "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 "";
+
/* 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 */

View file

@ -1,284 +0,0 @@
Index: SWIG/Source/Modules1.1/guile.cxx
diff -u SWIG/Source/Modules1.1/guile.cxx:1.68 SWIG/Source/Modules1.1/guile.cxx:1.68.2.6
--- Source/Modules1.1/guile.cxx:1.68 Wed Sep 20 09:00:56 2000
+++ Source/Modules1.1/guile.cxx Fri Mar 2 07:53:02 2001
@@ -32,8 +32,10 @@
-prefix name - Use NAME as prefix [default \"gswig_\"]\n\
-package name - Set the path of the module [default NULL]\n\
-Linkage lstyle - Use linkage protocol LSTYLE [default `ltdlmod']\n\
- -procdoc file - Output procedure documentation to file\n\
+ -procdoc file - Output procedure documentation to FILE\n\
\n\
+ -procdocformat format - Output procedure documentation in FORMAT;\n\
+ one of `guile-1.4', `plain', `texinfo'\n\
The module option does not create a guile module with a separate name\n\
space. It specifies the name of the initialization function and is\n\
called a module here so that it is compadible with the rest of SWIG.\n\
@@ -59,8 +61,10 @@
package = NULL;
linkage = GUILE_LSTYLE_SIMPLE;
procdoc = NULL;
+ docformat = GUILE_1_4;
emit_setters = 0;
struct_member = 0;
+ before_return = NULL;
}
// ---------------------------------------------------------------------
@@ -143,6 +147,18 @@
Swig_arg_error();
}
}
+ else if (strcmp (argv[i], "-procdocformat") == 0) {
+ if (strcmp(argv[i+1], "guile-1.4") == 0)
+ docformat = GUILE_1_4;
+ else if (strcmp(argv[i+1], "plain") == 0)
+ docformat = PLAIN;
+ else if (strcmp(argv[i+1], "texinfo") == 0)
+ docformat = TEXINFO;
+ else Swig_arg_error();
+ Swig_mark_arg(i);
+ Swig_mark_arg(i+1);
+ i++;
+ }
else if (strcmp (argv[i], "-emit-setters") == 0) {
emit_setters = 1;
Swig_mark_arg (i);
@@ -252,6 +268,9 @@
void
GUILE::initialize (void)
{
+ if (CPlusPlus) {
+ Printf(f_runtime, "extern \"C\" {\n\n");
+ }
switch (linkage) {
case GUILE_LSTYLE_SIMPLE:
/* Simple linkage; we have to export the SWIG_init function. The user can
@@ -328,7 +347,7 @@
{
SwigType_emit_type_table (f_runtime, f_wrappers);
- Printf (f_init, "SWIG_Guile_RegisterTypes(swig_types);\n");
+ Printf (f_init, "SWIG_Guile_RegisterTypes(swig_types, swig_types_initial);\n");
Printf (f_init, "}\n\n");
char module_name[256];
@@ -341,7 +360,10 @@
strcpy(module_name,module);
}
emit_linkage (module_name);
-
+ if (CPlusPlus) {
+ Printf(f_init, "\n}\n");
+ }
+
if (procdoc) {
Delete(procdoc);
procdoc = NULL;
@@ -460,6 +482,35 @@
error_count++;
}
+
+/* Write out procedure documentation */
+
+void
+GUILE::write_doc(const String *proc_name,
+ const String *signature,
+ const String *doc)
+{
+ switch (docformat) {
+ case GUILE_1_4:
+ Printv(procdoc, "\f\n", 0);
+ Printv(procdoc, "(", signature, ")\n", 0);
+ Printv(procdoc, doc, "\n", 0);
+ break;
+ case PLAIN:
+ Printv(procdoc, "\f", proc_name, "\n\n", 0);
+ Printv(procdoc, "(", signature, ")\n", 0);
+ Printv(procdoc, doc, "\n\n", 0);
+ break;
+ case TEXINFO:
+ Printv(procdoc, "\f", proc_name, "\n", 0);
+ Printv(procdoc, "@deffn primitive ", signature, "\n", 0);
+ Printv(procdoc, doc, "\n", 0);
+ Printv(procdoc, "@end deffn\n\n", 0);
+ break;
+ }
+}
+
+
// ----------------------------------------------------------------------
// GUILE::create_function(char *name, char *iname, SwigType *d,
// ParmList *l)
@@ -498,6 +549,7 @@
/* Declare return variable */
Wrapper_add_local (f,"gswig_result", "SCM gswig_result");
+ Wrapper_add_local (f,"gswig_list_p", "SCM gswig_list_p = 0");
if (procdoc)
guile_do_doc_typemap(returns, "outdoc", d, NULL,
@@ -506,7 +558,7 @@
/* Open prototype and signature */
Printv(f->def, "static SCM\n", wname," (", 0);
- Printv(signature, "(", proc_name, 0);
+ Printv(signature, proc_name, 0);
/* Now write code to extract the parameters */
@@ -583,9 +635,8 @@
source, target, numargs, proc_name, f, 0);
}
- /* Close prototype and signature */
+ /* Close prototype */
- Printv(signature, ")\n", 0);
Printf(f->def, ")\n{\n");
/* Define the scheme name in C. This define is used by several Guile
@@ -637,6 +688,8 @@
// Wrap things up (in a manner of speaking)
+ if (before_return)
+ Printv(f->code, before_return, "\n", 0);
Printv(f->code, "return gswig_result;\n", 0);
// Undefine the scheme name
@@ -662,7 +715,7 @@
Printv(f_wrappers, ");\n", 0);
Printv(f_wrappers, "}\n", 0);
/* Register it */
- Printf (f_init, "gh_new_procedure(\"%s\", %s_rest, 0, 0, 1);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s_rest, 0, 0, 1);\n",
proc_name, wname, numargs-numopt, numopt);
}
else if (emit_setters && struct_member && strlen(Char(proc_name))>3) {
@@ -675,7 +728,7 @@
struct_member = 2; /* have a setter */
}
else Printf(f_init, "SCM getter = ");
- Printf (f_init, "gh_new_procedure(\"%s\", %s, %d, %d, 0);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s, %d, %d, 0);\n",
proc_name, wname, numargs-numopt, numopt);
if (!is_setter) {
/* Strip off "-get" */
@@ -698,17 +751,17 @@
}
else {
/* Register the function */
- Printf (f_init, "gh_new_procedure(\"%s\", %s, %d, %d, 0);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s, %d, %d, 0);\n",
proc_name, wname, numargs-numopt, numopt);
}
if (procdoc) {
- /* Write out procedure documentation */
- Printv(signature, "Returns ", 0);
- if (Len(returns)==0) Printv(signature, "unspecified", 0);
- else if (returns_list) Printv(signature, "list (", returns, ")", 0);
- else Printv(signature, returns, 0);
- Printv(signature, "\n", 0);
- Printv(procdoc, "\f\n", signature, 0);
+ String *returns_text = NewString("");
+ Printv(returns_text, "Returns ", 0);
+ if (Len(returns)==0) Printv(returns_text, "unspecified", 0);
+ else if (returns_list) Printv(returns_text, "list (", returns, ")", 0);
+ else Printv(returns_text, returns, 0);
+ write_doc(proc_name, signature, returns_text);
+ Delete(returns_text);
}
Delete(proc_name);
@@ -751,7 +804,7 @@
if ((SwigType_type(t) != T_USER) || (is_a_pointer(t))) {
- Printf (f_wrappers, "SCM %s(SCM s_0) {\n", var_name);
+ Printf (f_wrappers, "static SCM %s(SCM s_0)\n{\n", var_name);
if (!(Status & STAT_READONLY) && SwigType_type(t) == T_STRING) {
Printf (f_wrappers, "\t char *_temp;\n");
@@ -821,7 +874,7 @@
throw_unhandled_guile_type_error (t);
}
Printf (f_wrappers, "\t return gswig_result;\n");
- Printf (f_wrappers, "}\n");
+ Printf (f_wrappers, "}\n\n");
// Now add symbol to the Guile interpreter
@@ -829,12 +882,12 @@
|| Status & STAT_READONLY) {
/* Read-only variables become a simple procedure returning the
value. */
- Printf (f_init, "\t gh_new_procedure(\"%s\", %s, 0, 1, 0);\n",
+ Printf (f_init, "\t gh_new_procedure(\"%s\", (SCM (*) ()) %s, 0, 1, 0);\n",
proc_name, var_name);
}
else {
/* Read/write variables become a procedure with setter. */
- Printf (f_init, "\t{ SCM p = gh_new_procedure(\"%s\", %s, 0, 1, 0);\n",
+ Printf (f_init, "\t{ SCM p = gh_new_procedure(\"%s\", (SCM (*) ()) %s, 0, 1, 0);\n",
proc_name, var_name);
Printf (f_init, "\t gh_define(\"%s\", "
"scm_make_procedure_with_setter(p, p)); }\n",
@@ -844,29 +897,28 @@
if (procdoc) {
/* Compute documentation */
String *signature = NewString("");
+ String *doc = NewString("");
if (Status & STAT_READONLY) {
- Printv(signature, "(", proc_name, ")\n", 0);
- Printv(signature, "Returns constant ", 0);
- guile_do_doc_typemap(signature, "varoutdoc", t, NULL,
+ Printv(signature, proc_name, 0);
+ Printv(doc, "Returns constant ", 0);
+ guile_do_doc_typemap(doc, "varoutdoc", t, NULL,
0, proc_name, f);
- Printv(signature, "\n", 0);
}
else {
- Printv(signature, "(", proc_name,
+ Printv(signature, proc_name,
" #:optional ", 0);
guile_do_doc_typemap(signature, "varindoc", t, "new-value",
1, proc_name, f);
- Printv(signature, ")\n", 0);
- Printv(signature, "If NEW-VALUE is provided, "
+ Printv(doc, "If NEW-VALUE is provided, "
"set C variable to this value.\n", 0);
- Printv(signature, "Returns variable value ", 0);
- guile_do_doc_typemap(signature, "varoutdoc", t, NULL,
+ Printv(doc, "Returns variable value ", 0);
+ guile_do_doc_typemap(doc, "varoutdoc", t, NULL,
0, proc_name, f);
- Printv(signature, "\n", 0);
}
- Printv(procdoc, "\f\n", signature, 0);
+ write_doc(proc_name, signature, doc);
Delete(signature);
+ Delete(doc);
}
} else {
@@ -957,5 +1009,16 @@
else {
/* Only emit traditional VAR-get and VAR-set procedures */
Language::cpp_variable(name, iname, t);
+ }
+}
+
+void GUILE::pragma(char *lang, char *cmd, char *value)
+{
+ if (strcmp(lang,(char*)"guile") == 0) {
+ if (strcmp(cmd, (char*)"beforereturn")==0) {
+ if (before_return)
+ Delete(before_return);
+ before_return = NewString(value);
+ }
}
}

View file

@ -1,32 +0,0 @@
Index: SWIG/Source/Modules1.1/guile.h
diff -u SWIG/Source/Modules1.1/guile.h:1.15 SWIG/Source/Modules1.1/guile.h:1.15.2.2
--- Source/Modules1.1/guile.h:1.15 Tue Sep 19 09:50:15 2000
+++ Source/Modules1.1/guile.h Thu Mar 1 18:28:02 2001
@@ -36,10 +36,18 @@
GUILE_LSTYLE_HOBBIT // use (hobbit4d link)
} linkage;
File *procdoc;
+ enum {
+ GUILE_1_4,
+ PLAIN,
+ TEXINFO
+ } docformat;
int emit_setters;
int struct_member;
+ String *before_return;
void emit_linkage(char *module_name);
-
+ void write_doc(const String *proc_name,
+ const String *signature,
+ const String *doc);
public :
GUILE ();
void parse_args (int, char *argv[]);
@@ -54,6 +62,7 @@
void set_init (char *);
void create_command (char *, char *) { };
void cpp_variable(char *name, char *iname, SwigType *t);
+ void pragma(char *lang, char *cmd, char *value);
};
/* guile.h ends here */

View file

@ -1,22 +0,0 @@
--- configure.orig Sat Sep 23 02:14:04 2000
+++ configure Sat Jun 9 12:08:08 2001
@@ -2684,7 +2684,7 @@
echo $ac_n "checking for Ruby header files""... $ac_c" 1>&6
echo "configure:2686: checking for Ruby header files" >&5
if test -n "$RUBY"; then
- RUBYDIR=`($RUBY -rmkmf -e 'print $archdir') 2>/dev/null`
+ RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG["archdir"] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none
--- configure.in.orig Sat Sep 23 02:14:03 2000
+++ configure.in Sat Jun 9 11:55:20 2001
@@ -631,7 +631,7 @@
fi
AC_MSG_CHECKING(for Ruby header files)
if test -n "$RUBY"; then
- RUBYDIR=`($RUBY -rmkmf -e 'print $archdir') 2>/dev/null`
+ RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG[["archdir"]] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none

View file

@ -24,14 +24,20 @@ lib/swig%%VER%%/guile/guile.swg
lib/swig%%VER%%/guile/guiledec.swg
lib/swig%%VER%%/guile/guilemain.i
lib/swig%%VER%%/guile/interpreter.i
lib/swig%%VER%%/guile/list-vector.i
lib/swig%%VER%%/guile/pointer-in-out.i
lib/swig%%VER%%/guile/ports.i
lib/swig%%VER%%/guile/typemaps.i
lib/swig%%VER%%/java/java.swg
lib/swig%%VER%%/java/java_arrays.i
lib/swig%%VER%%/java/stl_string.i
lib/swig%%VER%%/java/typemaps.i
lib/swig%%VER%%/malloc.i
lib/swig%%VER%%/math.i
lib/swig%%VER%%/memory.i
lib/swig%%VER%%/mzscheme/mzscheme.i
lib/swig%%VER%%/mzscheme/mzscheme.swg
lib/swig%%VER%%/mzscheme/mzschemedec.swg
lib/swig%%VER%%/mzscheme/typemaps.i
lib/swig%%VER%%/objc.i
lib/swig%%VER%%/perl5/Makefile.pl

View file

@ -6,18 +6,16 @@
#
PORTNAME= swig
PORTVERSION= ${VER}a5
PORTREVISION= 6
PORTVERSION= 1.3.6
CATEGORIES= devel perl5 python ruby tcl82
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
ftp://ftp.rge.com/pub/languages/swig/ \
ftp://ftp.mcc.ac.uk/pub/mvc/swig/
MASTER_SITE_SUBDIR= ${PORTNAME}
DISTNAME= ${PORTNAME}${PORTVERSION}
MAINTAINER= knu@FreeBSD.org
VER= 1.3
VER= ${PORTVERSION:R}
SWIG_LANGUAGES?= guile perl python ruby tcl
.for lang in ${SWIG_LANGUAGES}
@ -48,7 +46,7 @@ CONFIGURE_ARGS+= --with-tclincl=${LOCALBASE}/include/tcl8.2/ \
.endif
INSTALLS_SHLIB= yes
WRKSRC= ${WRKDIR}/SWIG${PORTVERSION}
WRKSRC= ${WRKDIR}/${DISTNAME:U}
USE_LIBTOOL= yes
CONFIGURE_ENV= CFLAGS="${CFLAGS} -fpic -DPIC"
ALL_TARGET= swig runtime

View file

@ -1 +1 @@
MD5 (swig1.3a5.tar.gz) = 96249f9614ae31d328661d0e3d9cd615
MD5 (swig-1.3.6.tar.gz) = a1b704511d188221f7b293844a44f8a8

View file

@ -1,39 +0,0 @@
Index: SWIG/Lib/guile/guile.swg
diff -u SWIG/Lib/guile/guile.swg:1.11 SWIG/Lib/guile/guile.swg:1.11.2.2
--- Lib/guile/guile.swg:1.11 Sat Sep 2 11:25:27 2000
+++ Lib/guile/guile.swg Mon Feb 26 11:57:56 2001
@@ -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 */
@@ -140,7 +144,7 @@
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;
}
@@ -246,10 +250,11 @@
/* 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;
+ for (; *init; table++, init++) {
+ swig_type_info *type = *table = *init;
char *origname = type->name;
/* Register datatype itself and store pointer back */
type->tag = SWIG_RegisterType(origname, type->str);

View file

@ -1,56 +0,0 @@
Index: SWIG/Lib/guile/guiledec.swg
diff -u SWIG/Lib/guile/guiledec.swg:1.13 SWIG/Lib/guile/guiledec.swg:1.13.2.4
--- Lib/guile/guiledec.swg:1.13 Thu Sep 21 16:06:17 2000
+++ Lib/guile/guiledec.swg Fri Mar 2 07:53:02 2001
@@ -27,17 +27,29 @@
#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)
{
@@ -78,10 +90,9 @@
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

View file

@ -1,26 +0,0 @@
Index: SWIG/Lib/guile/guilemain.i
diff -u SWIG/Lib/guile/guilemain.i:1.4 SWIG/Lib/guile/guilemain.i:1.4.2.1
--- Lib/guile/guilemain.i:1.4 Sun Sep 3 15:06:32 2000
+++ Lib/guile/guilemain.i Mon Feb 26 11:57:56 2001
@@ -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>
@@ -43,6 +47,10 @@
scm_shell(argc, argv); /* scheme interpreter */
/* never reached: scm_shell will perform an exit */
}
+
+#ifdef __cplusplus
+}
+#endif
int
main(int argc, char **argv)

View file

@ -1,25 +0,0 @@
Index: SWIG/Lib/guile/typemaps.i
diff -u SWIG/Lib/guile/typemaps.i:1.17 SWIG/Lib/guile/typemaps.i:1.17.2.1
--- Lib/guile/typemaps.i:1.17 Thu Sep 21 16:06:17 2000
+++ Lib/guile/typemaps.i Mon Feb 26 08:51:10 2001
@@ -54,9 +54,20 @@
%typemap (guile, freearg) char *, const char * "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 "";
+
/* 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 */

View file

@ -1,284 +0,0 @@
Index: SWIG/Source/Modules1.1/guile.cxx
diff -u SWIG/Source/Modules1.1/guile.cxx:1.68 SWIG/Source/Modules1.1/guile.cxx:1.68.2.6
--- Source/Modules1.1/guile.cxx:1.68 Wed Sep 20 09:00:56 2000
+++ Source/Modules1.1/guile.cxx Fri Mar 2 07:53:02 2001
@@ -32,8 +32,10 @@
-prefix name - Use NAME as prefix [default \"gswig_\"]\n\
-package name - Set the path of the module [default NULL]\n\
-Linkage lstyle - Use linkage protocol LSTYLE [default `ltdlmod']\n\
- -procdoc file - Output procedure documentation to file\n\
+ -procdoc file - Output procedure documentation to FILE\n\
\n\
+ -procdocformat format - Output procedure documentation in FORMAT;\n\
+ one of `guile-1.4', `plain', `texinfo'\n\
The module option does not create a guile module with a separate name\n\
space. It specifies the name of the initialization function and is\n\
called a module here so that it is compadible with the rest of SWIG.\n\
@@ -59,8 +61,10 @@
package = NULL;
linkage = GUILE_LSTYLE_SIMPLE;
procdoc = NULL;
+ docformat = GUILE_1_4;
emit_setters = 0;
struct_member = 0;
+ before_return = NULL;
}
// ---------------------------------------------------------------------
@@ -143,6 +147,18 @@
Swig_arg_error();
}
}
+ else if (strcmp (argv[i], "-procdocformat") == 0) {
+ if (strcmp(argv[i+1], "guile-1.4") == 0)
+ docformat = GUILE_1_4;
+ else if (strcmp(argv[i+1], "plain") == 0)
+ docformat = PLAIN;
+ else if (strcmp(argv[i+1], "texinfo") == 0)
+ docformat = TEXINFO;
+ else Swig_arg_error();
+ Swig_mark_arg(i);
+ Swig_mark_arg(i+1);
+ i++;
+ }
else if (strcmp (argv[i], "-emit-setters") == 0) {
emit_setters = 1;
Swig_mark_arg (i);
@@ -252,6 +268,9 @@
void
GUILE::initialize (void)
{
+ if (CPlusPlus) {
+ Printf(f_runtime, "extern \"C\" {\n\n");
+ }
switch (linkage) {
case GUILE_LSTYLE_SIMPLE:
/* Simple linkage; we have to export the SWIG_init function. The user can
@@ -328,7 +347,7 @@
{
SwigType_emit_type_table (f_runtime, f_wrappers);
- Printf (f_init, "SWIG_Guile_RegisterTypes(swig_types);\n");
+ Printf (f_init, "SWIG_Guile_RegisterTypes(swig_types, swig_types_initial);\n");
Printf (f_init, "}\n\n");
char module_name[256];
@@ -341,7 +360,10 @@
strcpy(module_name,module);
}
emit_linkage (module_name);
-
+ if (CPlusPlus) {
+ Printf(f_init, "\n}\n");
+ }
+
if (procdoc) {
Delete(procdoc);
procdoc = NULL;
@@ -460,6 +482,35 @@
error_count++;
}
+
+/* Write out procedure documentation */
+
+void
+GUILE::write_doc(const String *proc_name,
+ const String *signature,
+ const String *doc)
+{
+ switch (docformat) {
+ case GUILE_1_4:
+ Printv(procdoc, "\f\n", 0);
+ Printv(procdoc, "(", signature, ")\n", 0);
+ Printv(procdoc, doc, "\n", 0);
+ break;
+ case PLAIN:
+ Printv(procdoc, "\f", proc_name, "\n\n", 0);
+ Printv(procdoc, "(", signature, ")\n", 0);
+ Printv(procdoc, doc, "\n\n", 0);
+ break;
+ case TEXINFO:
+ Printv(procdoc, "\f", proc_name, "\n", 0);
+ Printv(procdoc, "@deffn primitive ", signature, "\n", 0);
+ Printv(procdoc, doc, "\n", 0);
+ Printv(procdoc, "@end deffn\n\n", 0);
+ break;
+ }
+}
+
+
// ----------------------------------------------------------------------
// GUILE::create_function(char *name, char *iname, SwigType *d,
// ParmList *l)
@@ -498,6 +549,7 @@
/* Declare return variable */
Wrapper_add_local (f,"gswig_result", "SCM gswig_result");
+ Wrapper_add_local (f,"gswig_list_p", "SCM gswig_list_p = 0");
if (procdoc)
guile_do_doc_typemap(returns, "outdoc", d, NULL,
@@ -506,7 +558,7 @@
/* Open prototype and signature */
Printv(f->def, "static SCM\n", wname," (", 0);
- Printv(signature, "(", proc_name, 0);
+ Printv(signature, proc_name, 0);
/* Now write code to extract the parameters */
@@ -583,9 +635,8 @@
source, target, numargs, proc_name, f, 0);
}
- /* Close prototype and signature */
+ /* Close prototype */
- Printv(signature, ")\n", 0);
Printf(f->def, ")\n{\n");
/* Define the scheme name in C. This define is used by several Guile
@@ -637,6 +688,8 @@
// Wrap things up (in a manner of speaking)
+ if (before_return)
+ Printv(f->code, before_return, "\n", 0);
Printv(f->code, "return gswig_result;\n", 0);
// Undefine the scheme name
@@ -662,7 +715,7 @@
Printv(f_wrappers, ");\n", 0);
Printv(f_wrappers, "}\n", 0);
/* Register it */
- Printf (f_init, "gh_new_procedure(\"%s\", %s_rest, 0, 0, 1);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s_rest, 0, 0, 1);\n",
proc_name, wname, numargs-numopt, numopt);
}
else if (emit_setters && struct_member && strlen(Char(proc_name))>3) {
@@ -675,7 +728,7 @@
struct_member = 2; /* have a setter */
}
else Printf(f_init, "SCM getter = ");
- Printf (f_init, "gh_new_procedure(\"%s\", %s, %d, %d, 0);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s, %d, %d, 0);\n",
proc_name, wname, numargs-numopt, numopt);
if (!is_setter) {
/* Strip off "-get" */
@@ -698,17 +751,17 @@
}
else {
/* Register the function */
- Printf (f_init, "gh_new_procedure(\"%s\", %s, %d, %d, 0);\n",
+ Printf (f_init, "gh_new_procedure(\"%s\", (SCM (*) ()) %s, %d, %d, 0);\n",
proc_name, wname, numargs-numopt, numopt);
}
if (procdoc) {
- /* Write out procedure documentation */
- Printv(signature, "Returns ", 0);
- if (Len(returns)==0) Printv(signature, "unspecified", 0);
- else if (returns_list) Printv(signature, "list (", returns, ")", 0);
- else Printv(signature, returns, 0);
- Printv(signature, "\n", 0);
- Printv(procdoc, "\f\n", signature, 0);
+ String *returns_text = NewString("");
+ Printv(returns_text, "Returns ", 0);
+ if (Len(returns)==0) Printv(returns_text, "unspecified", 0);
+ else if (returns_list) Printv(returns_text, "list (", returns, ")", 0);
+ else Printv(returns_text, returns, 0);
+ write_doc(proc_name, signature, returns_text);
+ Delete(returns_text);
}
Delete(proc_name);
@@ -751,7 +804,7 @@
if ((SwigType_type(t) != T_USER) || (is_a_pointer(t))) {
- Printf (f_wrappers, "SCM %s(SCM s_0) {\n", var_name);
+ Printf (f_wrappers, "static SCM %s(SCM s_0)\n{\n", var_name);
if (!(Status & STAT_READONLY) && SwigType_type(t) == T_STRING) {
Printf (f_wrappers, "\t char *_temp;\n");
@@ -821,7 +874,7 @@
throw_unhandled_guile_type_error (t);
}
Printf (f_wrappers, "\t return gswig_result;\n");
- Printf (f_wrappers, "}\n");
+ Printf (f_wrappers, "}\n\n");
// Now add symbol to the Guile interpreter
@@ -829,12 +882,12 @@
|| Status & STAT_READONLY) {
/* Read-only variables become a simple procedure returning the
value. */
- Printf (f_init, "\t gh_new_procedure(\"%s\", %s, 0, 1, 0);\n",
+ Printf (f_init, "\t gh_new_procedure(\"%s\", (SCM (*) ()) %s, 0, 1, 0);\n",
proc_name, var_name);
}
else {
/* Read/write variables become a procedure with setter. */
- Printf (f_init, "\t{ SCM p = gh_new_procedure(\"%s\", %s, 0, 1, 0);\n",
+ Printf (f_init, "\t{ SCM p = gh_new_procedure(\"%s\", (SCM (*) ()) %s, 0, 1, 0);\n",
proc_name, var_name);
Printf (f_init, "\t gh_define(\"%s\", "
"scm_make_procedure_with_setter(p, p)); }\n",
@@ -844,29 +897,28 @@
if (procdoc) {
/* Compute documentation */
String *signature = NewString("");
+ String *doc = NewString("");
if (Status & STAT_READONLY) {
- Printv(signature, "(", proc_name, ")\n", 0);
- Printv(signature, "Returns constant ", 0);
- guile_do_doc_typemap(signature, "varoutdoc", t, NULL,
+ Printv(signature, proc_name, 0);
+ Printv(doc, "Returns constant ", 0);
+ guile_do_doc_typemap(doc, "varoutdoc", t, NULL,
0, proc_name, f);
- Printv(signature, "\n", 0);
}
else {
- Printv(signature, "(", proc_name,
+ Printv(signature, proc_name,
" #:optional ", 0);
guile_do_doc_typemap(signature, "varindoc", t, "new-value",
1, proc_name, f);
- Printv(signature, ")\n", 0);
- Printv(signature, "If NEW-VALUE is provided, "
+ Printv(doc, "If NEW-VALUE is provided, "
"set C variable to this value.\n", 0);
- Printv(signature, "Returns variable value ", 0);
- guile_do_doc_typemap(signature, "varoutdoc", t, NULL,
+ Printv(doc, "Returns variable value ", 0);
+ guile_do_doc_typemap(doc, "varoutdoc", t, NULL,
0, proc_name, f);
- Printv(signature, "\n", 0);
}
- Printv(procdoc, "\f\n", signature, 0);
+ write_doc(proc_name, signature, doc);
Delete(signature);
+ Delete(doc);
}
} else {
@@ -957,5 +1009,16 @@
else {
/* Only emit traditional VAR-get and VAR-set procedures */
Language::cpp_variable(name, iname, t);
+ }
+}
+
+void GUILE::pragma(char *lang, char *cmd, char *value)
+{
+ if (strcmp(lang,(char*)"guile") == 0) {
+ if (strcmp(cmd, (char*)"beforereturn")==0) {
+ if (before_return)
+ Delete(before_return);
+ before_return = NewString(value);
+ }
}
}

View file

@ -1,32 +0,0 @@
Index: SWIG/Source/Modules1.1/guile.h
diff -u SWIG/Source/Modules1.1/guile.h:1.15 SWIG/Source/Modules1.1/guile.h:1.15.2.2
--- Source/Modules1.1/guile.h:1.15 Tue Sep 19 09:50:15 2000
+++ Source/Modules1.1/guile.h Thu Mar 1 18:28:02 2001
@@ -36,10 +36,18 @@
GUILE_LSTYLE_HOBBIT // use (hobbit4d link)
} linkage;
File *procdoc;
+ enum {
+ GUILE_1_4,
+ PLAIN,
+ TEXINFO
+ } docformat;
int emit_setters;
int struct_member;
+ String *before_return;
void emit_linkage(char *module_name);
-
+ void write_doc(const String *proc_name,
+ const String *signature,
+ const String *doc);
public :
GUILE ();
void parse_args (int, char *argv[]);
@@ -54,6 +62,7 @@
void set_init (char *);
void create_command (char *, char *) { };
void cpp_variable(char *name, char *iname, SwigType *t);
+ void pragma(char *lang, char *cmd, char *value);
};
/* guile.h ends here */

View file

@ -1,22 +0,0 @@
--- configure.orig Sat Sep 23 02:14:04 2000
+++ configure Sat Jun 9 12:08:08 2001
@@ -2684,7 +2684,7 @@
echo $ac_n "checking for Ruby header files""... $ac_c" 1>&6
echo "configure:2686: checking for Ruby header files" >&5
if test -n "$RUBY"; then
- RUBYDIR=`($RUBY -rmkmf -e 'print $archdir') 2>/dev/null`
+ RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG["archdir"] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none
--- configure.in.orig Sat Sep 23 02:14:03 2000
+++ configure.in Sat Jun 9 11:55:20 2001
@@ -631,7 +631,7 @@
fi
AC_MSG_CHECKING(for Ruby header files)
if test -n "$RUBY"; then
- RUBYDIR=`($RUBY -rmkmf -e 'print $archdir') 2>/dev/null`
+ RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG[["archdir"]] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none

View file

@ -24,14 +24,20 @@ lib/swig%%VER%%/guile/guile.swg
lib/swig%%VER%%/guile/guiledec.swg
lib/swig%%VER%%/guile/guilemain.i
lib/swig%%VER%%/guile/interpreter.i
lib/swig%%VER%%/guile/list-vector.i
lib/swig%%VER%%/guile/pointer-in-out.i
lib/swig%%VER%%/guile/ports.i
lib/swig%%VER%%/guile/typemaps.i
lib/swig%%VER%%/java/java.swg
lib/swig%%VER%%/java/java_arrays.i
lib/swig%%VER%%/java/stl_string.i
lib/swig%%VER%%/java/typemaps.i
lib/swig%%VER%%/malloc.i
lib/swig%%VER%%/math.i
lib/swig%%VER%%/memory.i
lib/swig%%VER%%/mzscheme/mzscheme.i
lib/swig%%VER%%/mzscheme/mzscheme.swg
lib/swig%%VER%%/mzscheme/mzschemedec.swg
lib/swig%%VER%%/mzscheme/typemaps.i
lib/swig%%VER%%/objc.i
lib/swig%%VER%%/perl5/Makefile.pl