diff options
Diffstat (limited to 'otherlibs/labltk/support')
-rw-r--r-- | otherlibs/labltk/support/slave.ml | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/otherlibs/labltk/support/slave.ml b/otherlibs/labltk/support/slave.ml new file mode 100644 index 000000000..2539e2426 --- /dev/null +++ b/otherlibs/labltk/support/slave.ml @@ -0,0 +1,49 @@ +(*************************************************************************) +(* *) +(* Objective Caml LablTk library *) +(* *) +(* Francois Rouaix, Francois Pessaux and Jun Furuse *) +(* projet Cristal, INRIA Rocquencourt *) +(* Jacques Garrigue, Kyoto University RIMS *) +(* *) +(* Copyright 1999 Institut National de Recherche en Informatique et *) +(* en Automatique and Kyoto University. All rights reserved. *) +(* This file is distributed under the terms of the GNU Library *) +(* General Public License. *) +(* *) +(*************************************************************************) + +(* $Id$ *) + +(* The code run on initialisation, in addition to normal Tk code + * NOTE: camltk has not fully been initialised yet + *) +external tcl_eval : string -> string + = "camltk_tcl_eval" +let tcl_command s = ignore (tcl_eval s);; +open Printf + +let dynload args = + List.iter Dynlink.loadfile args + +(* Default modules include everything from +let default_modules = [] + +(* [caml::run foo.cmo .. bar.cmo] is now available from Tcl *) +let init () = + Dynlink.init(); + (* Make it unsafe by default, with everything available *) + Dynlink.allow_unsafe_modules true; + Dynlink.add_interfaces [] [] + let s = register_callback Widget.dummy dynload in + tcl_command (sprintf "proc caml::run {l} {camlcb %s l}" s) + +let _ = + Printexc.print init () + +(* A typical master program would then + * caml::run foo.cmo + * # during initialisation, "foo" was registered as a tcl procedure + * foo x y z + * # proceed with some Tcl code calling foo + *) |