X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=include%2Fllvm-c%2FCore.h;h=ee1f69f6111d22ebf271e0095d3b63426fb330c0;hp=d839e0c9cf5b18c903a9774d47b3aa5491d7adc8;hb=1cf08fddc7413076dedad58dbb8d8d67e69a490f;hpb=c0491ac8b6c24a7d0db8c0a60f76cfb1d66f84ab diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index d839e0c9cf5..ee1f69f6111 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(B); } + + /* Opaque type handle conversions. + */ + inline PATypeHolder *unwrap(LLVMTypeHandleRef B) { + return reinterpret_cast(B); + } + + inline LLVMTypeHandleRef wrap(PATypeHolder *B) { + return reinterpret_cast(B); + } } #endif /* !defined(__cplusplus) */