aboutsummaryrefslogtreecommitdiffstats
path: root/bindings/ocaml/llvm/llvm.ml
diff options
context:
space:
mode:
authorGordon Henriksen <gordonhenriksen@mac.com>2007-12-19 22:30:40 +0000
committerGordon Henriksen <gordonhenriksen@mac.com>2007-12-19 22:30:40 +0000
commitda1435f86ebc9886dd7704294e01d192d79e069c (patch)
tree6bfc10578fca9bc86214295b290bec5b0821be8f /bindings/ocaml/llvm/llvm.ml
parent696f768daf61044abff279b20326cf0138d02e1a (diff)
downloadexternal_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.ml25
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 -------------------------------------------------------===*)