aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/IR/LLVMContext.h
diff options
context:
space:
mode:
authorFilip Pizlo <fpizlo@apple.com>2013-05-01 20:59:00 +0000
committerFilip Pizlo <fpizlo@apple.com>2013-05-01 20:59:00 +0000
commit40be1e85665d10f5444186f0e7106e368dd735b8 (patch)
treeb1053eb6cdd279717801022d45d5e79d70b81b7f /include/llvm/IR/LLVMContext.h
parentfee6969463d455201a5179620ccd8c3171effaa6 (diff)
downloadexternal_llvm-40be1e85665d10f5444186f0e7106e368dd735b8.tar.gz
external_llvm-40be1e85665d10f5444186f0e7106e368dd735b8.tar.bz2
external_llvm-40be1e85665d10f5444186f0e7106e368dd735b8.zip
This patch breaks up Wrap.h so that it does not have to include all of
the things, and renames it to CBindingWrapping.h. I also moved CBindingWrapping.h into Support/. This new file just contains the macros for defining different wrap/unwrap methods. The calls to those macros, as well as any custom wrap/unwrap definitions (like for array of Values for example), are put into corresponding C++ headers. Doing this required some #include surgery, since some .cpp files relied on the fact that including Wrap.h implicitly caused the inclusion of a bunch of other things. This also now means that the C++ headers will include their corresponding C API headers; for example Value.h must include llvm-c/Core.h. I think this is harmless, since the C API headers contain just external function declarations and some C types, so I don't believe there should be any nasty dependency issues here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180881 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/IR/LLVMContext.h')
-rw-r--r--include/llvm/IR/LLVMContext.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/llvm/IR/LLVMContext.h b/include/llvm/IR/LLVMContext.h
index ae81e5b1c3..f25d820c2b 100644
--- a/include/llvm/IR/LLVMContext.h
+++ b/include/llvm/IR/LLVMContext.h
@@ -15,7 +15,9 @@
#ifndef LLVM_IR_LLVMCONTEXT_H
#define LLVM_IR_LLVMCONTEXT_H
+#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/Compiler.h"
+#include "llvm-c/Core.h"
namespace llvm {
@@ -109,6 +111,19 @@ private:
/// only care about operating on a single thread.
extern LLVMContext &getGlobalContext();
+// Create wrappers for C Binding types (see CBindingWrapping.h).
+DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLVMContext, LLVMContextRef)
+
+/* Specialized opaque context conversions.
+ */
+inline LLVMContext **unwrap(LLVMContextRef* Tys) {
+ return reinterpret_cast<LLVMContext**>(Tys);
+}
+
+inline LLVMContextRef *wrap(const LLVMContext **Tys) {
+ return reinterpret_cast<LLVMContextRef*>(const_cast<LLVMContext**>(Tys));
+}
+
}
#endif