mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-23 00:43:28 +00:00
Update to 1.3.6.
This commit is contained in:
parent
5a013b1484
commit
63bdc1039c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=45111
@ -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
|
||||
|
@ -1 +1 @@
|
||||
MD5 (swig1.3a5.tar.gz) = 96249f9614ae31d328661d0e3d9cd615
|
||||
MD5 (swig-1.3.6.tar.gz) = a1b704511d188221f7b293844a44f8a8
|
||||
|
@ -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);
|
@ -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
|
@ -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)
|
@ -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 */
|
@ -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);
|
||||
+ }
|
||||
}
|
||||
}
|
@ -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 */
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
MD5 (swig1.3a5.tar.gz) = 96249f9614ae31d328661d0e3d9cd615
|
||||
MD5 (swig-1.3.6.tar.gz) = a1b704511d188221f7b293844a44f8a8
|
||||
|
@ -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);
|
@ -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
|
@ -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)
|
@ -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 */
|
@ -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);
|
||||
+ }
|
||||
}
|
||||
}
|
@ -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 */
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
MD5 (swig1.3a5.tar.gz) = 96249f9614ae31d328661d0e3d9cd615
|
||||
MD5 (swig-1.3.6.tar.gz) = a1b704511d188221f7b293844a44f8a8
|
||||
|
@ -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);
|
@ -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
|
@ -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)
|
@ -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 */
|
@ -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);
|
||||
+ }
|
||||
}
|
||||
}
|
@ -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 */
|
@ -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
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user