#include <AstResource.h>
Public Member Functions | |
AstResource (TextProvider &txtProvider, IdentifierPool &idPool) | |
TextProvider & | getTextProvider () |
IdentifierPool & | getIdentifierPool () |
IdentifierInfo * | getIdentifierInfo (const char *name) const |
IdentifierInfo * | getIdentifierInfo (const char *name, unsigned len) const |
IdentifierInfo * | getIdentifierInfo (const std::string &name) const |
FunctionType * | getFunctionType (Type **argTypes, unsigned numArgs, Type *returnType) |
Returns a uniqued FunctionType. | |
ProcedureType * | getProcedureType (Type **argTypes, unsigned numArgs) |
Returns a uniqued ProcedureType. | |
DiscreteType * | createDiscreteSubtype (DiscreteType *base, Expr *low, Expr *high, TypeDecl *decl=0) |
ExceptionDecl * | createExceptionDecl (IdentifierInfo *name, Location loc, DeclRegion *region) |
Creates an exception declaration. | |
FunctionDecl * | createPrimitiveDecl (PO::PrimitiveID ID, Location loc, Type *type, DeclRegion *region) |
Domain type constructors. | |
DomainType * | createDomainType (DomainTypeDecl *decl) |
DomainType * | createDomainSubtype (DomainType *rootTy, IdentifierInfo *name) |
Creates a subtype of the given domain type node. | |
Enumeration declaration and type constructors. | |
EnumerationDecl * | createEnumDecl (IdentifierInfo *name, Location loc, std::pair< IdentifierInfo *, Location > *elems, unsigned numElems, DeclRegion *parent) |
Creates an enumeration declaration node. | |
EnumerationDecl * | createEnumSubtypeDecl (IdentifierInfo *name, Location loc, EnumerationType *subtype, Expr *low, Expr *high, DeclRegion *parent) |
Creates a constrained enumeration subtype declaration node. | |
EnumerationDecl * | createEnumSubtypeDecl (IdentifierInfo *name, Location loc, EnumerationType *subtype, DeclRegion *parent) |
Creates an unconstrained enumeration subtype declaration node. | |
EnumerationType * | createEnumType (EnumerationDecl *decl) |
Returns an EnumerationType node. | |
EnumerationType * | createEnumSubtype (EnumerationType *base, EnumerationDecl *decl=0) |
Returns an unconstrained subtype of the given EnumerationType. | |
EnumerationType * | createEnumSubtype (EnumerationType *base, Expr *low, Expr *high, EnumerationDecl *decl=0) |
Returns a constrained enumeration subtype. | |
Integer declaration and type constructors. | |
IntegerDecl * | createIntegerDecl (IdentifierInfo *name, Location loc, Expr *lowRange, Expr *highRange, DeclRegion *parent) |
Creates an integer declaration node. | |
IntegerDecl * | createIntegerSubtypeDecl (IdentifierInfo *name, Location loc, IntegerType *subtype, Expr *lower, Expr *upper, DeclRegion *parent) |
Creates a constrained integer subtype declaration node. | |
IntegerDecl * | createIntegerSubtypeDecl (IdentifierInfo *name, Location loc, IntegerType *subtype, DeclRegion *parent) |
Creates an unconstrained integer subtype declaration node. | |
IntegerType * | createIntegerType (IntegerDecl *decl, const llvm::APInt &low, const llvm::APInt &high) |
Returns an IntegerType node with the given static bounds. | |
IntegerType * | createIntegerSubtype (IntegerType *base, Expr *low, Expr *high, IntegerDecl *decl=0) |
IntegerType * | createIntegerSubtype (IntegerType *base, const llvm::APInt &low, const llvm::APInt &high, IntegerDecl *decl=0) |
IntegerType * | createIntegerSubtype (IntegerType *base, IntegerDecl *decl=0) |
Returns an unconstrained integer subtype. | |
Array declaration and type constructors. | |
ArrayDecl * | createArrayDecl (IdentifierInfo *name, Location loc, unsigned rank, DSTDefinition **indices, Type *component, bool isConstrained, DeclRegion *parent) |
Creates an Array declaration node. | |
ArrayType * | createArrayType (ArrayDecl *decl, unsigned rank, DiscreteType **indices, Type *component, bool isConstrained) |
ArrayType * | createArraySubtype (IdentifierInfo *name, ArrayType *base, DiscreteType **indices) |
Returns a constrained array subtype node. | |
ArrayType * | createArraySubtype (IdentifierInfo *name, ArrayType *base) |
Returns an unconstrained array subtype node. | |
Record declaration and type constructors. | |
RecordDecl * | createRecordDecl (IdentifierInfo *name, Location loc, DeclRegion *parent) |
Creates a Record declaration node. | |
RecordType * | createRecordType (RecordDecl *decl) |
Returns a record type corresponding to the given declaration. | |
RecordType * | createRecordSubtype (IdentifierInfo *name, RecordType *base) |
Returns a subtype of the given record type. | |
Access declaration and type constructors. | |
AccessDecl * | createAccessDecl (IdentifierInfo *name, Location loc, Type *targetType, DeclRegion *parent) |
Creates an access type declaration node. | |
AccessType * | createAccessType (AccessDecl *decl, Type *targetType) |
AccessType * | createAccessSubtype (IdentifierInfo *name, AccessType *baseType) |
Creates an access subtype using the given access type as a base. | |
Incomplete declaration and type constructors. | |
IncompleteTypeDecl * | createIncompleteTypeDecl (IdentifierInfo *name, Location loc, DeclRegion *parent) |
Creates an incomplete type declaration node. | |
IncompleteType * | createIncompleteType (IncompleteTypeDecl *decl) |
Returns an incomplete type corresponding to the given declaration. | |
IncompleteType * | createIncompleteSubtype (IdentifierInfo *name, IncompleteType *base) |
Returns a subtype of the given incomplete type. | |
Language Defined AST Nodes. | |
Provides access to basic nodes which represent the various language defined type and exception declarations. Eventually this interface will be superseded by a set of standard packages defining these nodes. | |
EnumerationDecl * | getTheBooleanDecl () const |
EnumerationType * | getTheBooleanType () const |
EnumerationDecl * | getTheCharacterDecl () const |
EnumerationType * | getTheCharacterType () const |
IntegerDecl * | getTheRootIntegerDecl () const |
IntegerType * | getTheRootIntegerType () const |
IntegerDecl * | getTheIntegerDecl () const |
IntegerType * | getTheIntegerType () const |
IntegerDecl * | getTheNaturalDecl () const |
IntegerType * | getTheNaturalType () const |
IntegerDecl * | getThePositiveDecl () const |
IntegerType * | getThePositiveType () const |
ArrayDecl * | getTheStringDecl () const |
ArrayType * | getTheStringType () const |
ExceptionDecl * | getTheProgramError () const |
ExceptionDecl * | getTheConstraintError () const |
ExceptionDecl * | getTheAssertionError () const |
Definition at line 39 of file AstResource.h.
AstResource::AstResource | ( | TextProvider & | txtProvider, | |
IdentifierPool & | idPool | |||
) |
Definition at line 21 of file AstResource.cpp.
AccessDecl * AstResource::createAccessDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
Type * | targetType, | |||
DeclRegion * | parent | |||
) |
Creates an access type declaration node.
Definition at line 481 of file AstResource.cpp.
AccessType * AstResource::createAccessSubtype | ( | IdentifierInfo * | name, | |
AccessType * | baseType | |||
) |
Creates an access subtype using the given access type as a base.
Definition at line 496 of file AstResource.cpp.
AccessType * AstResource::createAccessType | ( | AccessDecl * | decl, | |
Type * | targetType | |||
) |
Creates an access type corresponding to the given declaration and target type node.
Definition at line 489 of file AstResource.cpp.
ArrayDecl * AstResource::createArrayDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
unsigned | rank, | |||
DSTDefinition ** | indices, | |||
Type * | component, | |||
bool | isConstrained, | |||
DeclRegion * | parent | |||
) |
Creates an Array declaration node.
Definition at line 420 of file AstResource.cpp.
ArrayType * AstResource::createArraySubtype | ( | IdentifierInfo * | name, | |
ArrayType * | base | |||
) |
Returns an unconstrained array subtype node.
Definition at line 450 of file AstResource.cpp.
ArrayType * AstResource::createArraySubtype | ( | IdentifierInfo * | name, | |
ArrayType * | base, | |||
DiscreteType ** | indices | |||
) |
Returns a constrained array subtype node.
Definition at line 441 of file AstResource.cpp.
ArrayType * AstResource::createArrayType | ( | ArrayDecl * | decl, | |
unsigned | rank, | |||
DiscreteType ** | indices, | |||
Type * | component, | |||
bool | isConstrained | |||
) |
Returns an ArrayType node with the given index and component types.
Definition at line 431 of file AstResource.cpp.
DiscreteType * AstResource::createDiscreteSubtype | ( | DiscreteType * | base, | |
Expr * | low, | |||
Expr * | high, | |||
TypeDecl * | decl = 0 | |||
) |
Creates a discrete subtype with the given bounds as constraints.
The actual type returned depends on the actual type of the given base.
Definition at line 404 of file AstResource.cpp.
DomainType * AstResource::createDomainSubtype | ( | DomainType * | rootTy, | |
IdentifierInfo * | name | |||
) |
Creates a subtype of the given domain type node.
Definition at line 270 of file AstResource.cpp.
DomainType * AstResource::createDomainType | ( | DomainTypeDecl * | decl | ) |
Creates a DomainType node.
Constructs a root domain type and its first subtype. Returns the first subtype.
Definition at line 256 of file AstResource.cpp.
EnumerationDecl * AstResource::createEnumDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
std::pair< IdentifierInfo *, Location > * | elems, | |||
unsigned | numElems, | |||
DeclRegion * | parent | |||
) |
Creates an enumeration declaration node.
Definition at line 277 of file AstResource.cpp.
EnumerationType * AstResource::createEnumSubtype | ( | EnumerationType * | base, | |
Expr * | low, | |||
Expr * | high, | |||
EnumerationDecl * | decl = 0 | |||
) |
Returns a constrained enumeration subtype.
Definition at line 325 of file AstResource.cpp.
EnumerationType * AstResource::createEnumSubtype | ( | EnumerationType * | base, | |
EnumerationDecl * | decl = 0 | |||
) |
Returns an unconstrained subtype of the given EnumerationType.
Definition at line 317 of file AstResource.cpp.
EnumerationDecl * AstResource::createEnumSubtypeDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
EnumerationType * | subtype, | |||
DeclRegion * | parent | |||
) |
Creates an unconstrained enumeration subtype declaration node.
Definition at line 300 of file AstResource.cpp.
EnumerationDecl * AstResource::createEnumSubtypeDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
EnumerationType * | subtype, | |||
Expr * | low, | |||
Expr * | high, | |||
DeclRegion * | parent | |||
) |
Creates a constrained enumeration subtype declaration node.
Definition at line 288 of file AstResource.cpp.
EnumerationType * AstResource::createEnumType | ( | EnumerationDecl * | decl | ) |
Returns an EnumerationType node.
Definition at line 310 of file AstResource.cpp.
ExceptionDecl * AstResource::createExceptionDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
DeclRegion * | region | |||
) |
Creates an exception declaration.
name | The name of this exception. | |
loc | The location of name in the source code. | |
region | The declarative region this exception was declared in. |
Definition at line 528 of file AstResource.cpp.
IncompleteType * AstResource::createIncompleteSubtype | ( | IdentifierInfo * | name, | |
IncompleteType * | base | |||
) |
Returns a subtype of the given incomplete type.
Definition at line 520 of file AstResource.cpp.
IncompleteType * AstResource::createIncompleteType | ( | IncompleteTypeDecl * | decl | ) |
Returns an incomplete type corresponding to the given declaration.
Definition at line 513 of file AstResource.cpp.
IncompleteTypeDecl * AstResource::createIncompleteTypeDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
DeclRegion * | parent | |||
) |
Creates an incomplete type declaration node.
Definition at line 505 of file AstResource.cpp.
IntegerDecl * AstResource::createIntegerDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
Expr * | lowRange, | |||
Expr * | highRange, | |||
DeclRegion * | parent | |||
) |
Creates an integer declaration node.
Definition at line 335 of file AstResource.cpp.
IntegerType * AstResource::createIntegerSubtype | ( | IntegerType * | base, | |
IntegerDecl * | decl = 0 | |||
) |
Returns an unconstrained integer subtype.
Definition at line 396 of file AstResource.cpp.
IntegerType * AstResource::createIntegerSubtype | ( | IntegerType * | base, | |
const llvm::APInt & | low, | |||
const llvm::APInt & | high, | |||
IntegerDecl * | decl = 0 | |||
) |
Returns an anonymous integer subtype node constrained over the given bounds.
The resulting subtype will have IntegerLiteral expressions generated to encapsulate the provided constants.
If decl is null an anonymous integer subtype is created. Otherwise the subtype is associated with the given integer subtype declaration.
Definition at line 386 of file AstResource.cpp.
IntegerType * AstResource::createIntegerSubtype | ( | IntegerType * | base, | |
Expr * | low, | |||
Expr * | high, | |||
IntegerDecl * | decl = 0 | |||
) |
Returns an integer subtype node constrained over the given bounds.
If decl
is null an anonymous integer subtype is created. Otherwise the subtype is associated with the given integer subtype declaration.
Definition at line 376 of file AstResource.cpp.
IntegerDecl * AstResource::createIntegerSubtypeDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
IntegerType * | subtype, | |||
DeclRegion * | parent | |||
) |
Creates an unconstrained integer subtype declaration node.
Definition at line 358 of file AstResource.cpp.
IntegerDecl * AstResource::createIntegerSubtypeDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
IntegerType * | subtype, | |||
Expr * | lower, | |||
Expr * | upper, | |||
DeclRegion * | parent | |||
) |
Creates a constrained integer subtype declaration node.
Definition at line 346 of file AstResource.cpp.
IntegerType * AstResource::createIntegerType | ( | IntegerDecl * | decl, | |
const llvm::APInt & | low, | |||
const llvm::APInt & | high | |||
) |
Returns an IntegerType node with the given static bounds.
Definition at line 367 of file AstResource.cpp.
FunctionDecl * AstResource::createPrimitiveDecl | ( | PO::PrimitiveID | ID, | |
Location | loc, | |||
Type * | type, | |||
DeclRegion * | region | |||
) |
Creates a function declaration corresponding to the given primitive operation.
ID | The primitive operator ID this declaration should support. | |
type | The argument types of this function. If the operator is Boolean valued, the return type is Boolean. If the operator is the exponentiation operator, the right hand type is Natural. Otherwise, this is an arithmetic operation and the return type matches the argument types. | |
loc | The location this operator is considered to be defined. | |
region | The decalarative region the function should be declared in. |
Definition at line 537 of file AstResource.cpp.
RecordDecl * AstResource::createRecordDecl | ( | IdentifierInfo * | name, | |
Location | loc, | |||
DeclRegion * | parent | |||
) |
Creates a Record declaration node.
Definition at line 458 of file AstResource.cpp.
RecordType * AstResource::createRecordSubtype | ( | IdentifierInfo * | name, | |
RecordType * | base | |||
) |
Returns a subtype of the given record type.
Definition at line 473 of file AstResource.cpp.
RecordType * AstResource::createRecordType | ( | RecordDecl * | decl | ) |
Returns a record type corresponding to the given declaration.
Definition at line 466 of file AstResource.cpp.
FunctionType * AstResource::getFunctionType | ( | Type ** | argTypes, | |
unsigned | numArgs, | |||
Type * | returnType | |||
) |
Returns a uniqued FunctionType.
Definition at line 227 of file AstResource.cpp.
IdentifierInfo* comma::AstResource::getIdentifierInfo | ( | const std::string & | name | ) | const [inline] |
Definition at line 61 of file AstResource.h.
IdentifierInfo* comma::AstResource::getIdentifierInfo | ( | const char * | name, | |
unsigned | len | |||
) | const [inline] |
Definition at line 58 of file AstResource.h.
IdentifierInfo* comma::AstResource::getIdentifierInfo | ( | const char * | name | ) | const [inline] |
Definition at line 55 of file AstResource.h.
IdentifierPool& comma::AstResource::getIdentifierPool | ( | ) | [inline] |
Definition at line 51 of file AstResource.h.
ProcedureType * AstResource::getProcedureType | ( | Type ** | argTypes, | |
unsigned | numArgs | |||
) |
Returns a uniqued ProcedureType.
Definition at line 242 of file AstResource.cpp.
TextProvider& comma::AstResource::getTextProvider | ( | ) | [inline] |
Definition at line 49 of file AstResource.h.
ExceptionDecl* comma::AstResource::getTheAssertionError | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 294 of file AstResource.h.
EnumerationDecl* comma::AstResource::getTheBooleanDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 271 of file AstResource.h.
EnumerationType * AstResource::getTheBooleanType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 192 of file AstResource.cpp.
EnumerationDecl* comma::AstResource::getTheCharacterDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 274 of file AstResource.h.
EnumerationType * AstResource::getTheCharacterType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 217 of file AstResource.cpp.
ExceptionDecl* comma::AstResource::getTheConstraintError | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 293 of file AstResource.h.
IntegerDecl* comma::AstResource::getTheIntegerDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 280 of file AstResource.h.
IntegerType * AstResource::getTheIntegerType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 202 of file AstResource.cpp.
IntegerDecl* comma::AstResource::getTheNaturalDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 283 of file AstResource.h.
IntegerType * AstResource::getTheNaturalType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 207 of file AstResource.cpp.
IntegerDecl* comma::AstResource::getThePositiveDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 286 of file AstResource.h.
IntegerType * AstResource::getThePositiveType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 212 of file AstResource.cpp.
ExceptionDecl* comma::AstResource::getTheProgramError | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 292 of file AstResource.h.
IntegerDecl* comma::AstResource::getTheRootIntegerDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 277 of file AstResource.h.
IntegerType * AstResource::getTheRootIntegerType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 197 of file AstResource.cpp.
ArrayDecl* comma::AstResource::getTheStringDecl | ( | ) | const [inline] |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 289 of file AstResource.h.
ArrayType * AstResource::getTheStringType | ( | ) | const |
Accessors to the language defined types. We keep these out of line since we do not want a dependence on Decl.h in AstResource.h.
Definition at line 222 of file AstResource.cpp.