diff options
author | Zackery Spytz <zspytz@gmail.com> | 2019-02-18 23:02:20 -0700 |
---|---|---|
committer | Zackery Spytz <zspytz@gmail.com> | 2019-02-18 23:02:20 -0700 |
commit | 1eb9cd3211ef646aa4683dd976eb2d06d6826bcc (patch) | |
tree | deee4e5362b32c71022f3844122c453bac8825fc /Lib/ocaml | |
parent | 092c51c06e87a5b2a15efc1eb488414302a3e375 (diff) | |
download | swig-1eb9cd3211ef646aa4683dd976eb2d06d6826bcc.tar.gz |
[OCaml] Move INPUT, OUTPUT, and INOUT typemaps to typemaps.i
Diffstat (limited to 'Lib/ocaml')
-rw-r--r-- | Lib/ocaml/typecheck.i | 38 | ||||
-rw-r--r-- | Lib/ocaml/typemaps.i | 44 |
2 files changed, 44 insertions, 38 deletions
diff --git a/Lib/ocaml/typecheck.i b/Lib/ocaml/typecheck.i index 74d2727e1..0c0a600a0 100644 --- a/Lib/ocaml/typecheck.i +++ b/Lib/ocaml/typecheck.i @@ -172,44 +172,6 @@ %typecheck(SWIG_TYPECHECK_SWIGOBJECT) CAML_VALUE "$1 = 1;" -%define INPUT_OUTPUT_INOUT_TYPEMAPS(type, c_to_ocaml, ocaml_to_c) -%typemap(in) type *INPUT(type temp), type &INPUT(type temp) { - temp = (type)ocaml_to_c($input); - $1 = &temp; -} -%typemap(typecheck) type *INPUT = type; -%typemap(typecheck) type &INPUT = type; - -%typemap(in, numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;" -%typemap(argout) type *OUTPUT, type &OUTPUT { - swig_result = caml_list_append(swig_result, c_to_ocaml(*$1)); -} -%typemap(in) type *INOUT = type *INPUT; -%typemap(in) type &INOUT = type &INPUT; - -%typemap(argout) type *INOUT = type *OUTPUT; -%typemap(argout) type &INOUT = type &OUTPUT; - -%typemap(typecheck) type *INOUT = type; -%typemap(typecheck) type &INOUT = type; -%enddef - -INPUT_OUTPUT_INOUT_TYPEMAPS(bool, caml_val_bool, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(int, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(short, caml_val_int, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(signed char, caml_val_char, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(float, caml_val_float, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(double, caml_val_double, caml_double_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned int, caml_val_uint, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long, caml_val_ulong, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned short, caml_val_ushort, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned char, caml_val_uchar, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(long long, caml_val_long, caml_long_val); -INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long long, caml_val_ulong, caml_long_val); -#undef INPUT_OUTPUT_INOUT_TYPEMAPS - /* ------------------------------------------------------------ * Exception handling * ------------------------------------------------------------ */ diff --git a/Lib/ocaml/typemaps.i b/Lib/ocaml/typemaps.i new file mode 100644 index 000000000..39231e221 --- /dev/null +++ b/Lib/ocaml/typemaps.i @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * typemaps.i + * + * These typemaps provide support for input/output arguments for C/C++ pointers + * and C++ references. +* ---------------------------------------------------------------------------- */ + +%define INPUT_OUTPUT_INOUT_TYPEMAPS(type, c_to_ocaml, ocaml_to_c) +%typemap(in) type *INPUT(type temp), type &INPUT(type temp) { + temp = (type)ocaml_to_c($input); + $1 = &temp; +} +%typemap(typecheck) type *INPUT = type; +%typemap(typecheck) type &INPUT = type; + +%typemap(in, numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;" +%typemap(argout) type *OUTPUT, type &OUTPUT { + swig_result = caml_list_append(swig_result, c_to_ocaml(*$1)); +} +%typemap(in) type *INOUT = type *INPUT; +%typemap(in) type &INOUT = type &INPUT; + +%typemap(argout) type *INOUT = type *OUTPUT; +%typemap(argout) type &INOUT = type &OUTPUT; + +%typemap(typecheck) type *INOUT = type; +%typemap(typecheck) type &INOUT = type; +%enddef + +INPUT_OUTPUT_INOUT_TYPEMAPS(bool, caml_val_bool, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(int, caml_val_int, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(long, caml_val_long, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(short, caml_val_int, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(char, caml_val_char, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(signed char, caml_val_char, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(float, caml_val_float, caml_double_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(double, caml_val_double, caml_double_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned int, caml_val_uint, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long, caml_val_ulong, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned short, caml_val_ushort, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned char, caml_val_uchar, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(long long, caml_val_long, caml_long_val); +INPUT_OUTPUT_INOUT_TYPEMAPS(unsigned long long, caml_val_ulong, caml_long_val); +#undef INPUT_OUTPUT_INOUT_TYPEMAPS |