diff options
| author | Peter Zotov <whitequark@whitequark.org> | 2013-11-03 08:27:45 +0000 |
|---|---|---|
| committer | Peter Zotov <whitequark@whitequark.org> | 2013-11-03 08:27:45 +0000 |
| commit | f00a9e0f79541538df7e3af2e83de37f40d904cc (patch) | |
| tree | 3252f086ab4f9d785465fe4d1344ecbba5b48c96 /bindings/ocaml/llvm/llvm_ocaml.c | |
| parent | 88d74c3093de563408ceb834d999613038195e98 (diff) | |
| download | external_llvm-f00a9e0f79541538df7e3af2e83de37f40d904cc.zip external_llvm-f00a9e0f79541538df7e3af2e83de37f40d904cc.tar.gz external_llvm-f00a9e0f79541538df7e3af2e83de37f40d904cc.tar.bz2 | |
[OCaml] Implement Llvm.MemoryBuffer.{of_string,as_string}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193953 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/llvm/llvm_ocaml.c')
| -rw-r--r-- | bindings/ocaml/llvm/llvm_ocaml.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index 80fa8c3..bd269ac 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -1996,6 +1996,30 @@ CAMLprim LLVMMemoryBufferRef llvm_memorybuffer_of_stdin(value Unit) { return MemBuf; } +/* ?name:string -> string -> llmemorybuffer */ +CAMLprim LLVMMemoryBufferRef llvm_memorybuffer_of_string(value Name, value String) { + const char *NameCStr; + if(Name == Val_int(0)) + NameCStr = ""; + else + NameCStr = String_val(Field(Name, 0)); + + LLVMMemoryBufferRef MemBuf; + MemBuf = LLVMCreateMemoryBufferWithMemoryRangeCopy( + String_val(String), caml_string_length(String), NameCStr); + + return MemBuf; +} + +/* llmemorybuffer -> string */ +CAMLprim value llvm_memorybuffer_as_string(LLVMMemoryBufferRef MemBuf) { + value String = caml_alloc_string(LLVMGetBufferSize(MemBuf)); + memcpy(String_val(String), LLVMGetBufferStart(MemBuf), + LLVMGetBufferSize(MemBuf)); + + return String; +} + /* llmemorybuffer -> unit */ CAMLprim value llvm_memorybuffer_dispose(LLVMMemoryBufferRef MemBuf) { LLVMDisposeMemoryBuffer(MemBuf); |
