Add wrappers for type construction to LLVMContext.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74542 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson 2009-06-30 17:50:28 +00:00
parent 2c6f9f7227
commit 72bf4473a6
2 changed files with 88 additions and 0 deletions

View File

@ -35,6 +35,8 @@ class PointerType;
class StructType;
class ArrayType;
class VectorType;
class OpaqueType;
class FunctionType;
class Type;
class APInt;
class APFloat;
@ -165,6 +167,34 @@ public:
Constant* getConstantVector(const std::vector<Constant*>& V);
Constant* getConstantVector(Constant* const* Vals, unsigned NumVals);
ConstantVector* getConstantVectorAllOnes(const VectorType* Ty);
// FunctionType accessors
FunctionType* getFunctionType(const Type* Result,
const std::vector<const Type*>& Params,
bool isVarArg);
// IntegerType accessors
const IntegerType* getIntegerType(unsigned NumBits);
// OpaqueType accessors
OpaqueType* getOpaqueType();
// StructType accessors
StructType* getStructType(const std::vector<const Type*>& Params,
bool isPacked = false);
// ArrayType accessors
ArrayType* getArrayType(const Type* ElementType, uint64_t NumElements);
// PointerType accessors
PointerType* getPointerType(const Type* ElementType, unsigned AddressSpace);
PointerType* getPointerTypeUnqualified(const Type* ElementType);
// VectorType accessors
VectorType* getVectorType(const Type* ElementType, unsigned NumElements);
VectorType* getVectorTypeInteger(const VectorType* VTy);
VectorType* getVectorTypeExtendedElement(const VectorType* VTy);
VectorType* getVectorTypeTruncatedElement(const VectorType* VTy);
};
}

View File

@ -14,6 +14,7 @@
#include "llvm/LLVMContext.h"
#include "llvm/Constants.h"
#include "llvm/DerivedTypes.h"
#include "LLVMContextImpl.h"
using namespace llvm;
@ -382,3 +383,60 @@ Constant* LLVMContext::getConstantVector(Constant* const* Vals,
ConstantVector* LLVMContext::getConstantVectorAllOnes(const VectorType* Ty) {
return ConstantVector::getAllOnesValue(Ty);
}
// FunctionType accessors
FunctionType* LLVMContext::getFunctionType(const Type* Result,
const std::vector<const Type*>& Params,
bool isVarArg) {
return FunctionType::get(Result, Params, isVarArg);
}
// IntegerType accessors
const IntegerType* LLVMContext::getIntegerType(unsigned NumBits) {
return IntegerType::get(NumBits);
}
// OpaqueType accessors
OpaqueType* LLVMContext::getOpaqueType() {
return OpaqueType::get();
}
// StructType accessors
StructType* LLVMContext::getStructType(const std::vector<const Type*>& Params,
bool isPacked) {
return StructType::get(Params, isPacked);
}
// ArrayType accessors
ArrayType* LLVMContext::getArrayType(const Type* ElementType,
uint64_t NumElements) {
return ArrayType::get(ElementType, NumElements);
}
// PointerType accessors
PointerType* LLVMContext::getPointerType(const Type* ElementType,
unsigned AddressSpace) {
return PointerType::get(ElementType, AddressSpace);
}
PointerType* LLVMContext::getPointerTypeUnqualified(const Type* ElementType) {
return PointerType::getUnqual(ElementType);
}
// VectorType accessors
VectorType* LLVMContext::getVectorType(const Type* ElementType,
unsigned NumElements) {
return VectorType::get(ElementType, NumElements);
}
VectorType* LLVMContext::getVectorTypeInteger(const VectorType* VTy) {
return VectorType::getInteger(VTy);
}
VectorType* LLVMContext::getVectorTypeExtendedElement(const VectorType* VTy) {
return VectorType::getExtendedElementVectorType(VTy);
}
VectorType* LLVMContext::getVectorTypeTruncatedElement(const VectorType* VTy) {
return VectorType::getTruncatedElementVectorType(VTy);
}