add getAsComplexType() for consistency

llvm-svn: 41229
This commit is contained in:
Chris Lattner 2007-08-21 16:54:08 +00:00
parent a9e7c4f827
commit f78c30f75d
2 changed files with 17 additions and 2 deletions

View File

@ -71,6 +71,10 @@ bool Type::isUnionType() const {
return false;
}
bool Type::isComplexType() const {
return isa<ComplexType>(CanonicalType);
}
const FunctionType *Type::getAsFunctionType() const {
// If this is directly a function type, return it.
if (const FunctionType *FTy = dyn_cast<FunctionType>(this))
@ -161,8 +165,17 @@ const RecordType *Type::getAsUnionType() const {
return 0;
}
bool Type::isComplexType() const {
return isa<ComplexType>(CanonicalType);
const ComplexType *Type::getAsComplexType() const {
// Are we directly a complex type?
if (const ComplexType *CTy = dyn_cast<ComplexType>(this))
return CTy;
// If this is a typedef for a complex type, strip the typedef off without
// losing all typedef information.
if (isa<ComplexType>(CanonicalType))
return cast<ComplexType>(cast<TypedefType>(this)->LookThroughTypedefs());
return 0;
}
const VectorType *Type::getAsVectorType() const {

View File

@ -37,6 +37,7 @@ namespace clang {
class VectorType;
class ArrayType;
class RecordType;
class ComplexType;
class TagType;
class FunctionType;
class OCUVectorType;
@ -269,6 +270,7 @@ public:
const RecordType *getAsStructureType() const;
const RecordType *getAsUnionType() const;
const VectorType *getAsVectorType() const; // GCC vector type.
const ComplexType *getAsComplexType() const;
const OCUVectorType *getAsOCUVectorType() const; // OCU vector type.
/// More type predicates useful for type checking/promotion