PUMA Library Reference Manual
Puma::CTypeClass Class Reference

#include <Puma/CTypeInfo.h>

+ Inheritance diagram for Puma::CTypeClass:

Description

Type of a class. Examples:

class X x; // x has type 'class X'
struct Y y; // y has type 'class Y'

Public Member Functions

 CTypeClass (CRecord *c)
 Constructor. More...
 
 ~CTypeClass ()
 Destructor. More...
 
CClassInfoClassInfo () const
 Get the semantic information about the class. More...
 
bool instantiate (CStructure *scope)
 If this is the type of a pseudo class instance, create a real instance of the corresponding template. More...
 
- Public Member Functions inherited from Puma::CTypeRecord
 ~CTypeRecord ()
 Destructor. More...
 
long int Size ()
 Get the size of the class or union in bits. More...
 
long int Align ()
 Get the alignment of the type. More...
 
void hasConstMember (bool v)
 Set whether the class or union has a const member and thus is not modifiable. More...
 
bool hasConstMember () const
 Check if the class or union type has a const member and thus is not modifiable. More...
 
bool isComplete (unsigned long pos=0) const
 Check if the class or union is complete. More...
 
CRecordRecord () const
 Get the class or union. More...
 
void Record (CRecord *)
 Set the class or union. More...
 
- Public Member Functions inherited from Puma::CTypeInfo
 CTypeInfo (CTypeInfo *base, TypeId id)
 Constructor. More...
 
 ~CTypeInfo ()
 Destructor. More...
 
bool operator== (const CTypeInfo &type) const
 Check if this type equals the given type. More...
 
bool operator!= (const CTypeInfo &type) const
 Check if this type not equals the given type. More...
 
bool equals (const CTypeInfo &type, bool matchTemplateParams=false, bool noDependentFctParams=false) const
 Check if this type equals the given type. More...
 
bool equalsUnqualified (const CTypeInfo &type) const
 Check if this type equals the given type if both types top-level qualifiers removed. More...
 
void print (std::ostream &os) const
 Print the textual representation of this type on the given stream. More...
 
void TypeText (std::ostream &os, const char *name=(const char *) 0, bool abs=false, bool tdef=false, bool elaborated_type_spec=false, bool unnamed=false) const
 Print the textual representation of this type on the given stream. More...
 
long int Dimension () const
 Get the dimension of an array type. More...
 
long int Size () const
 Get the size in bits of a type. More...
 
long int Align () const
 Get the alignment of a type. More...
 
TypeId Id () const
 Get the type identifier. More...
 
CTypeInfoBaseType () const
 Get the base type of a compound type. More...
 
void BaseType (CTypeInfo *base)
 Set the base type of a compount type. More...
 
bool isTypedef () const
 Check if this is a typedef type. More...
 
CObjectInfoTypedefInfo () const
 Get the typedef information if this is a typedef type. More...
 
CTypeInfoTypedefInfo (CObjectInfo *)
 Set the typedef information if this is a typedef type. More...
 
bool isComplete (unsigned long pos=0) const
 Check if this is a complete type. More...
 
bool isDependent (bool consider_unknown_t=true, bool is_named_type=false) const
 Check if this type or one of its base types depends on a template parameter. More...
 
bool isLocal () const
 Check if this is a local type. More...
 
bool isConst () const
 Check if this type is const qualified. More...
 
bool isVolatile () const
 Check if this type is volatile qualified. More...
 
bool isRestrict () const
 Check if this type is restrict qualified. More...
 
CRecordRecord () const
 Get the class or union of a class or union type. More...
 
CClassInfoClassInfo () const
 Get the class information if this is a class type. More...
 
CUnionInfoUnionInfo () const
 Get the union information if this is a union type. More...
 
CEnumInfoEnumInfo () const
 Get the enumeration information if this is an enumeration type. More...
 
CFunctionInfoFunctionInfo () const
 Get the function information if this is a function type. More...
 
CTypeInfoPtrBaseType () const
 Get the base type of a pointer type. More...
 
CTypeListArgTypes () const
 Get the argument type list of a function or qualified type. More...
 
CTypeInfoVirtualType () const
 Get the virtual type of this type. More...
 
CTypeInfoUnqualType () const
 Get the unqualified version of this type. More...
 
CTypeInfoNonReferenceType () const
 Get the non-reference type version of this type. More...
 
CTypeFunctionPtrToFct () const
 Get the function type of a pointer-to-function type. More...
 
CTypeArrayPtrToArray () const
 Get the array type of a pointer-to-array type. More...
 
CTypeQualifiedTypeQualified () const
 Get the pointer to CTypeQualified if this is a qualified type. More...
 
CTypeFunctionTypeFunction () const
 Get the pointer to CTypeFunction if this is a function type. More...
 
CTypeBitFieldTypeBitField () const
 Get the pointer to CTypeBitField if this is a bit-field type. More...
 
CTypePointerTypePointer () const
 Get the pointer to CTypePointer if this is a pointer type. More...
 
CTypeMemberPointerTypeMemberPointer () const
 Get the pointer to CTypeMemberPointer if this is a member pointer type. More...
 
CTypeAddressTypeAddress () const
 Get the pointer to CTypeAddress if this is a reference type. More...
 
CTypeArrayTypeArray () const
 Get the pointer to CTypeArray if this is an array type. More...
 
CTypeVarArrayTypeVarArray () const
 Get the pointer to CTypeVarArray if this is a variable length array type. More...
 
CTypeClassTypeClass () const
 Get the pointer to CTypeClass if this is a class type. More...
 
CTypeUnionTypeUnion () const
 Get the pointer to CTypeUnion if this is a union type. More...
 
CTypeRecordTypeRecord () const
 Get the pointer to CTypeRecord if this is a class or union type. More...
 
CTypeEnumTypeEnum () const
 Get the pointer to CTypeEnum if this is an enumeration type. More...
 
CTypePrimitiveTypePrimitive () const
 Get the pointer to CTypePrimitive if this is a primitive type. More...
 
CTypeInfoTypeEmpty () const
 Get the pointer to CTypeInfo if this is type Puma::CTYPE_EMPTY. More...
 
CTypeTemplateParamTypeTemplateParam () const
 Get the pointer to CTypeTemplateParam if this is a template parameter type. More...
 
bool isQualified () const
 Check if this is a qualified type. More...
 
bool isPointer () const
 Check if this is a pointer type. More...
 
bool isPointerOrArray () const
 Check if this is a pointer or array type. More...
 
bool isAddress () const
 Check if this is a reference type. More...
 
bool isRecord () const
 Check if this is a class or union type. More...
 
bool isClass () const
 Check if this is a class type. More...
 
bool isUnion () const
 Check if this is a union type. More...
 
bool isClassOrUnion () const
 Check if this is a class or union type. More...
 
bool isArray () const
 Check if this is an array type. More...
 
bool isFixedArray () const
 Check if this is a fixed length array type. More...
 
bool isVarArray () const
 Check if this is a variable length type. More...
 
bool isArithmetic () const
 Check if this is an arithmetic type. More...
 
bool isScalar () const
 Check if this is a pointer or arithmetic type. More...
 
bool isAggregate () const
 Check if this is an array, class, or union type. More...
 
bool isInteger () const
 Check if this is an integer type. More...
 
bool isVoid () const
 Check if this is type void. More...
 
bool isEnum () const
 Check if this is an enumeration type. More...
 
bool isReal () const
 Check if this is a floating point type. More...
 
bool isMemberPointer () const
 Check if this is a member pointer type. More...
 
bool isUndefined () const
 Check if this is an undefined type. More...
 
bool isFunction () const
 Check if this is a function type. More...
 
bool isBitField () const
 Check if this is a bit-field type. More...
 
bool isMethod () const
 Check if this is a class member function type. More...
 
bool isStdFunction () const
 Check if this is a non-class-member function type. More...
 
bool isTemplate () const
 Check if this is a template type. More...
 
bool isTemplateInstance () const
 Check if this is a template instance type. More...
 
bool isTemplateParam () const
 Check if this is a template parameter type. More...
 
bool isTypeParam () const
 Check if this is a type template parameter type. More...
 
bool isNonTypeParam () const
 Check if this is a non-type template parameter type. More...
 
bool isObject (unsigned long pos=0) const
 Check if this is an object type. More...
 
bool isPOD () const
 Check if this is a plain old data (POD) type. More...
 
bool isTrivial () const
 Check if this is a trivial type: (1) a scalar type (2) a trivial class type (3) an array of (1), (2), or (3) More...
 
bool is_bool () const
 Check if the ID of this type is CTypeInfo::TYPE_BOOL or CTypeInfo::TYPE_C_BOOL. More...
 
bool is_char () const
 Check if the ID of this type is CTypeInfo::TYPE_CHAR. More...
 
bool is_wchar_t () const
 Check if the ID of this type is CTypeInfo::TYPE_WCHAR_T. More...
 
bool is_short () const
 Check if the ID of this type is CTypeInfo::TYPE_SHORT. More...
 
bool is_int () const
 Check if the ID of this type is CTypeInfo::TYPE_INT. More...
 
bool is_long () const
 Check if the ID of this type is CTypeInfo::TYPE_LONG. More...
 
bool is_long_long () const
 Check if the ID of this type is CTypeInfo::TYPE_LONG_LONG. More...
 
bool is_int128 () const
 Check if the ID of this type is CTypeInfo::TYPE_INT128. More...
 
bool is_signed_char () const
 Check if the ID of this type is CTypeInfo::TYPE_SIGNED_CHAR. More...
 
bool is_unsigned_char () const
 Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_CHAR. More...
 
bool is_unsigned_short () const
 Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_SHORT. More...
 
bool is_unsigned_int () const
 Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_INT. More...
 
bool is_unsigned_long () const
 Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_LONG. More...
 
bool is_unsigned_long_long () const
 Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_LONG_LONG. More...
 
bool is_unsigned_int128 () const
 Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_INT128. More...
 
bool is_float () const
 Check if the ID of this type is CTypeInfo::TYPE_FLOAT. More...
 
bool is_double () const
 Check if the ID of this type is CTypeInfo::TYPE_DOUBLE. More...
 
bool is_long_double () const
 Check if the ID of this type is CTypeInfo::TYPE_LONG_DOUBLE. More...
 
bool is_void () const
 Check if the ID of this type is CTypeInfo::TYPE_VOID. More...
 
bool is_undefined () const
 Check if the ID of this type is CTypeInfo::TYPE_UNDEFINED. More...
 
bool is_unknown_t () const
 Check if the ID of this type is CTypeInfo::TYPE_UNKNOWN_T. More...
 
bool is_ellipsis () const
 Check if the ID of this type is CTypeInfo::TYPE_ELLIPSIS. More...
 
bool is_signed () const
 Check if this is a signed integer type. More...
 
bool is_unsigned () const
 Check if this is an unsigned integer type. More...
 
unsigned conv_rank () const
 Get the arithmetic conversion rank of the type. More...
 
bool operator> (const CTypeInfo &type) const
 Check if the conversion rank of this type is greater than the conversion rank of the given type. More...
 
bool operator>= (const CTypeInfo &type) const
 Check if the conversion rank of this type equals or is greater than the conversion rank of the given type. More...
 
bool operator<= (const CTypeInfo &type) const
 Check if the conversion rank of this type equals or is greater than the conversion rank of the given type. More...
 
bool operator< (const CTypeInfo &type) const
 Check if the conversion rank of this type is less than the conversion rank of the given type. More...
 
unsigned rank () const
 Get the rank of this type if it is an arithmetic type. More...
 
bool isTemplateInstanceArg () const
 Check if this is the type of a template instance argument declaration. More...
 
CTypeInfoDuplicate () const
 Maka a duplicate of this type. More...
 
void Mangled (std::ostream &os) const
 Print the mangled textual representation of the type on the given stream. More...
 
- Public Member Functions inherited from Puma::Printable
virtual ~Printable ()
 Destructor. More...
 

Additional Inherited Members

- Public Types inherited from Puma::CTypeInfo
enum  TypeId {
  TYPE_BOOL,
  TYPE_C_BOOL,
  TYPE_SIGNED_CHAR,
  TYPE_UNSIGNED_CHAR,
  TYPE_CHAR,
  TYPE_UNSIGNED_SHORT,
  TYPE_SHORT,
  TYPE_UNSIGNED_INT,
  TYPE_WCHAR_T,
  TYPE_INT,
  TYPE_UNSIGNED_LONG,
  TYPE_LONG,
  TYPE_UNSIGNED_LONG_LONG,
  TYPE_LONG_LONG,
  TYPE_UNSIGNED_INT128,
  TYPE_INT128,
  TYPE_FLOAT,
  TYPE_DOUBLE,
  TYPE_LONG_DOUBLE,
  TYPE_VOID,
  TYPE_UNDEFINED,
  TYPE_UNKNOWN_T,
  TYPE_ELLIPSIS,
  TYPE_CLASS,
  TYPE_UNION,
  TYPE_ENUM,
  TYPE_POINTER,
  TYPE_ADDRESS,
  TYPE_MEMBER_POINTER,
  TYPE_FUNCTION,
  TYPE_ARRAY,
  TYPE_VAR_ARRAY,
  TYPE_QUALIFIED,
  TYPE_BIT_FIELD,
  TYPE_TEMPLATE_PARAM,
  TYPE_EMPTY
}
 Type identifiers. More...
 
- Static Public Member Functions inherited from Puma::CTypeInfo
static CTypeInfoDuplicate (const CTypeInfo *type)
 Make a duplicate of the given type. More...
 
static void Destroy (CTypeInfo *type)
 Destroy the given type. More...
 
- Static Public Attributes inherited from Puma::CTypeInfo
static CTypeInfoCTYPE_SIZE_T
 Internal representation of size_t. More...
 
static CTypeInfoCTYPE_PTRDIFF_T
 Internal representation of ptrdiff_t. More...
 
- Protected Member Functions inherited from Puma::CTypeRecord
 CTypeRecord (TypeId id, CRecord *cu)
 Constructor. More...
 

Constructor & Destructor Documentation

◆ CTypeClass()

Puma::CTypeClass::CTypeClass ( CRecord c)
inline

Constructor.

Type has id CTypeInfo::TYPE_CLASS.

Parameters
cThe semantic information about the class.

◆ ~CTypeClass()

Puma::CTypeClass::~CTypeClass ( )
inline

Destructor.

Member Function Documentation

◆ ClassInfo()

CClassInfo* Puma::CTypeClass::ClassInfo ( ) const

Get the semantic information about the class.

◆ instantiate()

bool Puma::CTypeClass::instantiate ( CStructure scope)

If this is the type of a pseudo class instance, create a real instance of the corresponding template.

Parameters
scopeThe scope in which to instantiate the template.
Returns
true if instantiation succeeded.