PUMA Library Reference Manual
Puma::CTypePrimitive Class Reference

#include <Puma/CTypeInfo.h>

+ Inheritance diagram for Puma::CTypePrimitive:

Description

Primitive type. Fundamental arithmetic types and type void are called primitive types.

Public Member Functions

 CTypePrimitive (const char *name, TypeId id, long int size)
 Constructor. More...
 
 ~CTypePrimitive ()
 Destructor. More...
 
const char * TypeName () const
 Get the type name. More...
 
long int Size () const
 Get the size of the primitive type in bits. More...
 
void Size (long int size)
 Set the size of the primitive type in bits. 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...
 

Static Public Member Functions

template<typename T >
static long int SizeOfNumber (T number)
 Count the number of bits required for the given number. 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...
 

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 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...
 

Constructor & Destructor Documentation

◆ CTypePrimitive()

Puma::CTypePrimitive::CTypePrimitive ( const char *  name,
CTypeInfo::TypeId  id,
long int  size 
)
inline

Constructor.

Parameters
nameThe type name.
idThe type identifier.
sizeThe size of the type in bits.

◆ ~CTypePrimitive()

Puma::CTypePrimitive::~CTypePrimitive ( )
inline

Destructor.

Member Function Documentation

◆ Size() [1/2]

long int Puma::CTypePrimitive::Size ( ) const
inline

Get the size of the primitive type in bits.

◆ Size() [2/2]

void Puma::CTypePrimitive::Size ( long int  size)
inline

Set the size of the primitive type in bits.

Parameters
sizeThe size of the type in bits.

◆ SizeOfNumber()

template<typename T >
long int Puma::CTypePrimitive::SizeOfNumber ( number)
inlinestatic

Count the number of bits required for the given number.

Parameters
numberThe number.

◆ TypeName()

const char * Puma::CTypePrimitive::TypeName ( ) const
inline

Get the type name.