summaryrefslogtreecommitdiff
path: root/linux-x86/share/swig/guile/guile_scm.swg
diff options
context:
space:
mode:
Diffstat (limited to 'linux-x86/share/swig/guile/guile_scm.swg')
-rw-r--r--linux-x86/share/swig/guile/guile_scm.swg46
1 files changed, 46 insertions, 0 deletions
diff --git a/linux-x86/share/swig/guile/guile_scm.swg b/linux-x86/share/swig/guile/guile_scm.swg
new file mode 100644
index 0000000..16dc8aa
--- /dev/null
+++ b/linux-x86/share/swig/guile/guile_scm.swg
@@ -0,0 +1,46 @@
+/* -----------------------------------------------------------------------------
+ * guile_scm.swg
+ *
+ * This SWIG interface file is processed if the Guile module is run
+ * with SCM_ flavor.
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGGUILE_SCM
+
+%runtime "swigrun.swg" // Common C API type-checking code
+%runtime "swigerrors.swg" // SWIG errors
+
+%runtime "guile_scm_run.swg"
+%include <guile.i>
+
+%runtime %{
+
+#define GUILE_MAYBE_VALUES \
+ if (gswig_list_p) gswig_result = scm_values(gswig_result);
+
+#define GUILE_MAYBE_VECTOR \
+ if (gswig_list_p) gswig_result = scm_vector(gswig_result);
+
+#define SWIG_APPEND_VALUE(object) \
+ if (gswig_result == SCM_UNSPECIFIED) \
+ gswig_result = object; \
+ else { \
+ if (!gswig_list_p) { \
+ gswig_list_p = 1; \
+ gswig_result = scm_list_n(gswig_result, object, SCM_UNDEFINED); \
+ } \
+ else \
+ gswig_result = scm_append(scm_list_n(gswig_result, scm_list_n(object, SCM_UNDEFINED), SCM_UNDEFINED)); \
+ }
+
+%}
+
+%insert(init) "swiginit.swg"
+
+%init %{
+SWIG_GUILE_INIT_STATIC void
+SWIG_init(void)
+{
+ SWIG_InitializeModule(0);
+ SWIG_PropagateClientData();
+%}