summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/ocaml/ocaml.i
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/ocaml/ocaml.i')
-rw-r--r--share/swig/2.0.11/ocaml/ocaml.i58
1 files changed, 58 insertions, 0 deletions
diff --git a/share/swig/2.0.11/ocaml/ocaml.i b/share/swig/2.0.11/ocaml/ocaml.i
new file mode 100644
index 0000000..e099f7c
--- /dev/null
+++ b/share/swig/2.0.11/ocaml/ocaml.i
@@ -0,0 +1,58 @@
+/* -----------------------------------------------------------------------------
+ * ocaml.i
+ *
+ * SWIG Configuration File for Ocaml
+ * ----------------------------------------------------------------------------- */
+
+%runtime %{
+#define SWIGSTATIC static
+%}
+
+/* Insert common stuff */
+%insert(runtime) "swigrun.swg"
+
+/* Include headers */
+%insert(runtime) "ocamldec.swg"
+
+/* Type registration */
+%insert(init) "swiginit.swg"
+%insert(init) "typeregister.swg"
+
+%insert(mlitail) %{
+ val swig_val : c_enum_type -> c_obj -> Swig.c_obj
+%}
+
+%insert(mltail) %{
+ let rec swig_val t v =
+ match v with
+ C_enum e -> enum_to_int t v
+ | C_list l -> Swig.C_list (List.map (swig_val t) l)
+ | C_array a -> Swig.C_array (Array.map (swig_val t) a)
+ | _ -> Obj.magic v
+%}
+
+/*#ifndef SWIG_NOINCLUDE*/
+%insert(runtime) "ocaml.swg"
+/*#endif*/
+
+%insert(classtemplate) "class.swg"
+
+/* Definitions */
+#define SWIG_malloc(size) swig_malloc(size, FUNC_NAME)
+#define SWIG_free(mem) free(mem)
+
+/* Read in standard typemaps. */
+%include <swig.swg>
+%include <typemaps.i>
+%include <typecheck.i>
+%include <exception.i>
+%include <preamble.swg>
+
+/* ocaml keywords */
+/* There's no need to use this, because of my rewriting machinery. C++
+ * words never collide with ocaml keywords */
+
+/* still we include the file, but the warning says that the offending
+ name will be properly renamed. Just to let the user to know about
+ it. */
+%include <ocamlkw.swg>