diff options
Diffstat (limited to 'stub/ocaml.c')
-rwxr-xr-x | stub/ocaml.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/stub/ocaml.c b/stub/ocaml.c new file mode 100755 index 0000000..f811fe8 --- /dev/null +++ b/stub/ocaml.c @@ -0,0 +1,38 @@ +#include "ocaml.h" + +value +get_opt(value opt, int index) { + if (!opt || opt == Val_none) + return 0; + else + return Field(opt, index); +} + +char* +string_opt(const value opt) { + value content = get_opt(opt, 0); + if (!content) + return NULL; + else + return String_val(content); +} + +value +Val_some(value v ) { + CAMLparam1( v ); + CAMLlocal1( some ); + some = caml_alloc(1, 0); + Store_field( some, 0, v ); + + CAMLreturn( some ); +} + +value +Val_1field(value v) { + CAMLparam1( v ); + CAMLlocal1( field ); + field = caml_alloc(1, 0); + Store_field(field, 0, v); + + CAMLreturn( field ); +} |