diff options
| author | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-19 22:30:40 +0000 |
|---|---|---|
| committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-19 22:30:40 +0000 |
| commit | da1435f86ebc9886dd7704294e01d192d79e069c (patch) | |
| tree | 6bfc10578fca9bc86214295b290bec5b0821be8f /bindings/ocaml/llvm/llvm.ml | |
| parent | 696f768daf61044abff279b20326cf0138d02e1a (diff) | |
| download | external_llvm-da1435f86ebc9886dd7704294e01d192d79e069c.zip external_llvm-da1435f86ebc9886dd7704294e01d192d79e069c.tar.gz external_llvm-da1435f86ebc9886dd7704294e01d192d79e069c.tar.bz2 | |
Adding bindings for memory buffers and module providers. Switching
to exceptions rather than variants for error handling in Ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45226 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/llvm/llvm.ml')
| -rw-r--r-- | bindings/ocaml/llvm/llvm.ml | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/bindings/ocaml/llvm/llvm.ml b/bindings/ocaml/llvm/llvm.ml index 5a5f4e7..58d9d50 100644 --- a/bindings/ocaml/llvm/llvm.ml +++ b/bindings/ocaml/llvm/llvm.ml @@ -15,6 +15,7 @@ type llvalue type llbasicblock type llbuilder type llmoduleprovider +type llmemorybuffer type type_kind = Void_type @@ -84,6 +85,11 @@ type real_predicate = | Fcmp_une | Fcmp_true +exception IoError of string + +external register_exns : exn -> unit = "llvm_register_core_exns" +let _ = register_exns (IoError "") + (*===-- Modules -----------------------------------------------------------===*) @@ -432,10 +438,21 @@ external build_shufflevector : llvalue -> llvalue -> llvalue -> string -> (*===-- Module providers --------------------------------------------------===*) -external create_module_provider : llmodule -> llmoduleprovider - = "LLVMCreateModuleProviderForExistingModule" -external dispose_module_provider : llmoduleprovider -> unit - = "llvm_dispose_module_provider" + +module ModuleProvider = struct + external create : llmodule -> llmoduleprovider + = "LLVMCreateModuleProviderForExistingModule" + external dispose : llmoduleprovider -> unit = "llvm_dispose_module_provider" +end + + +(*===-- Memory buffers ----------------------------------------------------===*) + +module MemoryBuffer = struct + external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file" + external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin" + external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose" +end (*===-- Non-Externs -------------------------------------------------------===*) |
