Browse thread
camlp4 question
- Christophe Raffalli
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2005-09-08 (08:02) |
From: | Christophe Raffalli <christophe.raffalli@u...> |
Subject: | camlp4 question |
I am writing a tool to facilitate the use of callback of camlfunction from C. I have a first prototype running for lablGlut, but I want to make it nicer using camlp4 (this extension should produce automatically the C wrapper for each callback, the user will only have to compile the produced C file). The pb is that I need to retrieve information given in one module from another. The minimum I need to do is to search for the path given to ocamlc (the -I options) from camlp4 code, but I would prefer a better way, and I do not know how to retrive this PATH anyway. Here is an example to illustrate what I need (the type 'a callback is a type to a C wrapper for a function of type 'a) : -- file glut.ml, part of the lablGlut library -- ... let visibility_state_of_int = function 0 -> NOT_VISIBLE | 1 -> VISIBLE | _ -> raise (BadEnum "visibility_state") REGISTER_CONVERSION visibility_state_of_int external visibilityFunc : cb:(state:visibility_state_t->unit) callback->unit = "ml_glutVisibilityFunc" ... -- file test.ml an example using lablGlut -- open Glut ... let state_changed ~state = match value with NOT_VISIBLE -> printf "window not visible."; print_newline() | VISIBLE -> printf "window not visible."; print_newline() MAKE_WRAPPER state_changed state_changed_cb (* here I need to search for the convertion for the type visibility_state_of_int which was defined in glut.ml to make the C wrapper state_changed_cb : (visibility_state_of_int -> unit) callback *) let _ = Glut.visibilityFunc state_changed_cb ... Can someone help ?