diff options
Diffstat (limited to 'include/llvm-c/Core.h')
-rw-r--r-- | include/llvm-c/Core.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index d839e0c..ee1f69f 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -47,6 +47,7 @@ extern "C" { /* Opaque types. */ typedef struct LLVMOpaqueModule *LLVMModuleRef; typedef struct LLVMOpaqueType *LLVMTypeRef; +typedef struct LLVMOpaqueTypeHandle *LLVMTypeHandleRef; typedef struct LLVMOpaqueValue *LLVMValueRef; typedef struct LLVMOpaqueBasicBlock *LLVMBasicBlockRef; typedef struct LLVMOpaqueBuilder *LLVMBuilderRef; @@ -204,6 +205,12 @@ LLVMTypeRef LLVMVoidType(); LLVMTypeRef LLVMLabelType(); LLVMTypeRef LLVMOpaqueType(); +/* Operations on type handles */ +LLVMTypeHandleRef LLVMCreateTypeHandle(LLVMTypeRef PotentiallyAbstractTy); +void LLVMRefineType(LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy); +LLVMTypeRef LLVMResolveTypeHandle(LLVMTypeHandleRef TypeHandle); +void LLVMDisposeTypeHandle(LLVMTypeHandleRef TypeHandle); + /*===-- Values ------------------------------------------------------------===*/ @@ -558,6 +565,16 @@ namespace llvm { inline LLVMBuilderRef wrap(LLVMBuilder *B) { return reinterpret_cast<LLVMBuilderRef>(B); } + + /* Opaque type handle conversions. + */ + inline PATypeHolder *unwrap(LLVMTypeHandleRef B) { + return reinterpret_cast<PATypeHolder*>(B); + } + + inline LLVMTypeHandleRef wrap(PATypeHolder *B) { + return reinterpret_cast<LLVMTypeHandleRef>(B); + } } #endif /* !defined(__cplusplus) */ |