summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/AST.h
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2009-02-09 15:55:01 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-02-09 15:55:01 +0100
commitd782ce27fb859b2386f62aedadee0250f3e72d9c (patch)
treecc80885ad2303c825f1c791c9e4d4493f44207fd /src/shared/cplusplus/AST.h
parentcd9e752ae41c8a1a2475b7bad035fdeaed6b5129 (diff)
downloadqt-creator-d782ce27fb859b2386f62aedadee0250f3e72d9c.tar.gz
Reimplemented the AST::as*AST() methods as virtual functions (as suggested by andre).
Diffstat (limited to 'src/shared/cplusplus/AST.h')
-rw-r--r--src/shared/cplusplus/AST.h532
1 files changed, 426 insertions, 106 deletions
diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h
index 6beae2db5d..26f0a6692b 100644
--- a/src/shared/cplusplus/AST.h
+++ b/src/shared/cplusplus/AST.h
@@ -91,112 +91,114 @@ public:
virtual unsigned firstToken() const = 0;
virtual unsigned lastToken() const = 0;
- AccessDeclarationAST *asAccessDeclaration();
- ArrayAccessAST *asArrayAccess();
- ArrayDeclaratorAST *asArrayDeclarator();
- ArrayInitializerAST *asArrayInitializer();
- AsmDefinitionAST *asAsmDefinition();
- AttributeAST *asAttribute();
- AttributeSpecifierAST *asAttributeSpecifier();
- BaseSpecifierAST *asBaseSpecifier();
- QtMethodAST *asQtMethod();
- BinaryExpressionAST *asBinaryExpression();
- BoolLiteralAST *asBoolLiteral();
- BreakStatementAST *asBreakStatement();
- CallAST *asCall();
- CaseStatementAST *asCaseStatement();
- CastExpressionAST *asCastExpression();
- CatchClauseAST *asCatchClause();
- ClassSpecifierAST *asClassSpecifier();
- CompoundLiteralAST *asCompoundLiteral();
- CompoundStatementAST *asCompoundStatement();
- ConditionAST *asCondition();
- ConditionalExpressionAST *asConditionalExpression();
- ContinueStatementAST *asContinueStatement();
- ConversionFunctionIdAST *asConversionFunctionId();
- CoreDeclaratorAST *asCoreDeclarator();
- CppCastExpressionAST *asCppCastExpression();
- CtorInitializerAST *asCtorInitializer();
- DeclarationAST *asDeclaration();
- DeclarationStatementAST *asDeclarationStatement();
- DeclaratorAST *asDeclarator();
- DeclaratorIdAST *asDeclaratorId();
- DeclaratorListAST *asDeclaratorList();
- DeleteExpressionAST *asDeleteExpression();
- DestructorNameAST *asDestructorName();
- DoStatementAST *asDoStatement();
- ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier();
- EmptyDeclarationAST *asEmptyDeclaration();
- EnumSpecifierAST *asEnumSpecifier();
- EnumeratorAST *asEnumerator();
- ExceptionDeclarationAST *asExceptionDeclaration();
- ExceptionSpecificationAST *asExceptionSpecification();
- ExpressionAST *asExpression();
- ExpressionListAST *asExpressionList();
- ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement();
- ExpressionStatementAST *asExpressionStatement();
- ForStatementAST *asForStatement();
- FunctionDeclaratorAST *asFunctionDeclarator();
- FunctionDefinitionAST *asFunctionDefinition();
- GotoStatementAST *asGotoStatement();
- IfStatementAST *asIfStatement();
- LabeledStatementAST *asLabeledStatement();
- LinkageBodyAST *asLinkageBody();
- LinkageSpecificationAST *asLinkageSpecification();
- MemInitializerAST *asMemInitializer();
- MemberAccessAST *asMemberAccess();
- NameAST *asName();
- NamedTypeSpecifierAST *asNamedTypeSpecifier();
- NamespaceAST *asNamespace();
- NamespaceAliasDefinitionAST *asNamespaceAliasDefinition();
- NestedDeclaratorAST *asNestedDeclarator();
- NestedExpressionAST *asNestedExpression();
- NestedNameSpecifierAST *asNestedNameSpecifier();
- NewDeclaratorAST *asNewDeclarator();
- NewExpressionAST *asNewExpression();
- NewInitializerAST *asNewInitializer();
- NewTypeIdAST *asNewTypeId();
- NumericLiteralAST *asNumericLiteral();
- OperatorAST *asOperator();
- OperatorFunctionIdAST *asOperatorFunctionId();
- ParameterDeclarationAST *asParameterDeclaration();
- ParameterDeclarationClauseAST *asParameterDeclarationClause();
- PointerAST *asPointer();
- PointerToMemberAST *asPointerToMember();
- PostIncrDecrAST *asPostIncrDecr();
- PostfixAST *asPostfix();
- PostfixDeclaratorAST *asPostfixDeclarator();
- PostfixExpressionAST *asPostfixExpression();
- PtrOperatorAST *asPtrOperator();
- QualifiedNameAST *asQualifiedName();
- ReferenceAST *asReference();
- ReturnStatementAST *asReturnStatement();
- SimpleDeclarationAST *asSimpleDeclaration();
- SimpleNameAST *asSimpleName();
- SimpleSpecifierAST *asSimpleSpecifier();
- SizeofExpressionAST *asSizeofExpression();
- SpecifierAST *asSpecifier();
- StatementAST *asStatement();
- StringLiteralAST *asStringLiteral();
- SwitchStatementAST *asSwitchStatement();
- TemplateArgumentListAST *asTemplateArgumentList();
- TemplateDeclarationAST *asTemplateDeclaration();
- TemplateIdAST *asTemplateId();
- TemplateTypeParameterAST *asTemplateTypeParameter();
- ThisExpressionAST *asThisExpression();
- ThrowExpressionAST *asThrowExpression();
- TranslationUnitAST *asTranslationUnit();
- TryBlockStatementAST *asTryBlockStatement();
- TypeConstructorCallAST *asTypeConstructorCall();
- TypeIdAST *asTypeId();
- TypeidExpressionAST *asTypeidExpression();
- TypenameCallExpressionAST *asTypenameCallExpression();
- TypenameTypeParameterAST *asTypenameTypeParameter();
- TypeofSpecifierAST *asTypeofSpecifier();
- UnaryExpressionAST *asUnaryExpression();
- UsingAST *asUsing();
- UsingDirectiveAST *asUsingDirective();
- WhileStatementAST *asWhileStatement();
+ virtual AccessDeclarationAST *asAccessDeclaration() { return 0; }
+ virtual ArrayAccessAST *asArrayAccess() { return 0; }
+ virtual ArrayDeclaratorAST *asArrayDeclarator() { return 0; }
+ virtual ArrayInitializerAST *asArrayInitializer() { return 0; }
+ virtual AsmDefinitionAST *asAsmDefinition() { return 0; }
+ virtual AttributeAST *asAttribute() { return 0; }
+ virtual AttributeSpecifierAST *asAttributeSpecifier() { return 0; }
+ virtual BaseSpecifierAST *asBaseSpecifier() { return 0; }
+ virtual QtMethodAST *asQtMethod() { return 0; }
+ virtual BinaryExpressionAST *asBinaryExpression() { return 0; }
+ virtual BoolLiteralAST *asBoolLiteral() { return 0; }
+ virtual BreakStatementAST *asBreakStatement() { return 0; }
+ virtual CallAST *asCall() { return 0; }
+ virtual CaseStatementAST *asCaseStatement() { return 0; }
+ virtual CastExpressionAST *asCastExpression() { return 0; }
+ virtual CatchClauseAST *asCatchClause() { return 0; }
+ virtual ClassSpecifierAST *asClassSpecifier() { return 0; }
+ virtual CompoundLiteralAST *asCompoundLiteral() { return 0; }
+ virtual CompoundStatementAST *asCompoundStatement() { return 0; }
+ virtual ConditionAST *asCondition() { return 0; }
+ virtual ConditionalExpressionAST *asConditionalExpression() { return 0; }
+ virtual ContinueStatementAST *asContinueStatement() { return 0; }
+ virtual ConversionFunctionIdAST *asConversionFunctionId() { return 0; }
+ virtual CoreDeclaratorAST *asCoreDeclarator() { return 0; }
+ virtual CppCastExpressionAST *asCppCastExpression() { return 0; }
+ virtual CtorInitializerAST *asCtorInitializer() { return 0; }
+ virtual DeclarationAST *asDeclaration() { return 0; }
+ virtual DeclarationStatementAST *asDeclarationStatement() { return 0; }
+ virtual DeclaratorAST *asDeclarator() { return 0; }
+ virtual DeclaratorIdAST *asDeclaratorId() { return 0; }
+ virtual DeclaratorListAST *asDeclaratorList() { return 0; }
+ virtual DeleteExpressionAST *asDeleteExpression() { return 0; }
+ virtual DestructorNameAST *asDestructorName() { return 0; }
+ virtual DoStatementAST *asDoStatement() { return 0; }
+ virtual ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier() { return 0; }
+ virtual EmptyDeclarationAST *asEmptyDeclaration() { return 0; }
+ virtual EnumSpecifierAST *asEnumSpecifier() { return 0; }
+ virtual EnumeratorAST *asEnumerator() { return 0; }
+ virtual ExceptionDeclarationAST *asExceptionDeclaration() { return 0; }
+ virtual ExceptionSpecificationAST *asExceptionSpecification() { return 0; }
+ virtual ExpressionAST *asExpression() { return 0; }
+ virtual ExpressionListAST *asExpressionList() { return 0; }
+ virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() { return 0; }
+ virtual ExpressionStatementAST *asExpressionStatement() { return 0; }
+ virtual ForStatementAST *asForStatement() { return 0; }
+ virtual FunctionDeclaratorAST *asFunctionDeclarator() { return 0; }
+ virtual FunctionDefinitionAST *asFunctionDefinition() { return 0; }
+ virtual GotoStatementAST *asGotoStatement() { return 0; }
+ virtual IfStatementAST *asIfStatement() { return 0; }
+ virtual LabeledStatementAST *asLabeledStatement() { return 0; }
+ virtual LinkageBodyAST *asLinkageBody() { return 0; }
+ virtual LinkageSpecificationAST *asLinkageSpecification() { return 0; }
+ virtual MemInitializerAST *asMemInitializer() { return 0; }
+ virtual MemberAccessAST *asMemberAccess() { return 0; }
+ virtual NameAST *asName() { return 0; }
+ virtual NamedTypeSpecifierAST *asNamedTypeSpecifier() { return 0; }
+ virtual NamespaceAST *asNamespace() { return 0; }
+ virtual NamespaceAliasDefinitionAST *asNamespaceAliasDefinition() { return 0; }
+ virtual NestedDeclaratorAST *asNestedDeclarator() { return 0; }
+ virtual NestedExpressionAST *asNestedExpression() { return 0; }
+ virtual NestedNameSpecifierAST *asNestedNameSpecifier() { return 0; }
+ virtual NewDeclaratorAST *asNewDeclarator() { return 0; }
+ virtual NewExpressionAST *asNewExpression() { return 0; }
+ virtual NewInitializerAST *asNewInitializer() { return 0; }
+ virtual NewTypeIdAST *asNewTypeId() { return 0; }
+ virtual NumericLiteralAST *asNumericLiteral() { return 0; }
+ virtual OperatorAST *asOperator() { return 0; }
+ virtual OperatorFunctionIdAST *asOperatorFunctionId() { return 0; }
+ virtual ParameterDeclarationAST *asParameterDeclaration() { return 0; }
+ virtual ParameterDeclarationClauseAST *asParameterDeclarationClause() { return 0; }
+ virtual PointerAST *asPointer() { return 0; }
+ virtual PointerToMemberAST *asPointerToMember() { return 0; }
+ virtual PostIncrDecrAST *asPostIncrDecr() { return 0; }
+ virtual PostfixAST *asPostfix() { return 0; }
+ virtual PostfixDeclaratorAST *asPostfixDeclarator() { return 0; }
+ virtual PostfixExpressionAST *asPostfixExpression() { return 0; }
+ virtual PtrOperatorAST *asPtrOperator() { return 0; }
+ virtual QualifiedNameAST *asQualifiedName() { return 0; }
+ virtual ReferenceAST *asReference() { return 0; }
+ virtual ReturnStatementAST *asReturnStatement() { return 0; }
+ virtual SimpleDeclarationAST *asSimpleDeclaration() { return 0; }
+ virtual SimpleNameAST *asSimpleName() { return 0; }
+ virtual SimpleSpecifierAST *asSimpleSpecifier() { return 0; }
+ virtual SizeofExpressionAST *asSizeofExpression() { return 0; }
+ virtual SpecifierAST *asSpecifier() { return 0; }
+ virtual StatementAST *asStatement() { return 0; }
+ virtual StringLiteralAST *asStringLiteral() { return 0; }
+ virtual SwitchStatementAST *asSwitchStatement() { return 0; }
+ virtual TemplateArgumentListAST *asTemplateArgumentList() { return 0; }
+ virtual TemplateDeclarationAST *asTemplateDeclaration() { return 0; }
+ virtual TemplateIdAST *asTemplateId() { return 0; }
+ virtual TemplateTypeParameterAST *asTemplateTypeParameter() { return 0; }
+ virtual ThisExpressionAST *asThisExpression() { return 0; }
+ virtual ThrowExpressionAST *asThrowExpression() { return 0; }
+ virtual TranslationUnitAST *asTranslationUnit() { return 0; }
+ virtual TryBlockStatementAST *asTryBlockStatement() { return 0; }
+ virtual TypeConstructorCallAST *asTypeConstructorCall() { return 0; }
+ virtual TypeIdAST *asTypeId() { return 0; }
+ virtual TypeidExpressionAST *asTypeidExpression() { return 0; }
+ virtual TypenameCallExpressionAST *asTypenameCallExpression() { return 0; }
+ virtual TypenameTypeParameterAST *asTypenameTypeParameter() { return 0; }
+ virtual TypeofSpecifierAST *asTypeofSpecifier() { return 0; }
+ virtual UnaryExpressionAST *asUnaryExpression() { return 0; }
+ virtual UsingAST *asUsing() { return 0; }
+ virtual UsingDirectiveAST *asUsingDirective() { return 0; }
+ virtual WhileStatementAST *asWhileStatement() { return 0; }
+ virtual IdentifierListAST *asIdentifierList() { return 0; }
+ virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return 0; }
virtual AST *clone(MemoryPool *pool) const = 0;
@@ -210,6 +212,9 @@ public:
SpecifierAST *next;
public:
+ virtual SpecifierAST *asSpecifier()
+ { return this; }
+
virtual SpecifierAST *clone(MemoryPool *pool) const = 0;
};
@@ -219,6 +224,9 @@ public:
unsigned specifier_token;
public:
+ virtual SimpleSpecifierAST *asSimpleSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -239,6 +247,9 @@ public:
unsigned second_rparen_token;
public:
+ virtual AttributeSpecifierAST *asAttributeSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -259,6 +270,9 @@ public:
AttributeAST *next;
public:
+ virtual AttributeAST *asAttribute()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -275,6 +289,9 @@ public:
ExpressionAST *expression;
public:
+ virtual TypeofSpecifierAST *asTypeofSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -290,12 +307,18 @@ public:
StatementAST *next;
public:
+ virtual StatementAST *asStatement()
+ { return this; }
+
virtual StatementAST *clone(MemoryPool *pool) const = 0;
};
class CPLUSPLUS_EXPORT ExpressionAST: public AST
{
public:
+ virtual ExpressionAST *asExpression()
+ { return this; }
+
virtual ExpressionAST *clone(MemoryPool *pool) const = 0;
};
@@ -305,12 +328,18 @@ public:
DeclarationAST *next;
public:
+ virtual DeclarationAST *asDeclaration()
+ { return this; }
+
virtual DeclarationAST *clone(MemoryPool *pool) const = 0;
};
class CPLUSPLUS_EXPORT CoreDeclaratorAST: public AST
{
public:
+ virtual CoreDeclaratorAST *asCoreDeclarator()
+ { return this; }
+
virtual CoreDeclaratorAST *clone(MemoryPool *pool) const = 0;
};
@@ -320,6 +349,9 @@ public:
PostfixDeclaratorAST *next;
public:
+ virtual PostfixDeclaratorAST *asPostfixDeclarator()
+ { return this; }
+
virtual PostfixDeclaratorAST *clone(MemoryPool *pool) const = 0;
};
@@ -333,6 +365,9 @@ public:
ExpressionAST *initializer;
public:
+ virtual DeclaratorAST *asDeclarator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -349,6 +384,9 @@ public:
ExpressionListAST *next;
public:
+ virtual ExpressionListAST *asExpressionList()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -369,6 +407,9 @@ public:
List<Declaration *> *symbols;
public:
+ virtual SimpleDeclarationAST *asSimpleDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -384,6 +425,9 @@ public:
unsigned semicolon_token;
public:
+ virtual EmptyDeclarationAST *asEmptyDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -401,6 +445,9 @@ public:
unsigned colon_token;
public:
+ virtual AccessDeclarationAST *asAccessDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -422,6 +469,9 @@ public:
unsigned semicolon_token;
public:
+ virtual AsmDefinitionAST *asAsmDefinition()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -443,6 +493,9 @@ public: // annotations
BaseClass *symbol;
public:
+ virtual BaseSpecifierAST *asBaseSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -461,6 +514,9 @@ public:
ExpressionAST *initializer;
public:
+ virtual CompoundLiteralAST *asCompoundLiteral()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -479,6 +535,9 @@ public:
unsigned rparen_token;
public:
+ virtual QtMethodAST *asQtMethod()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -496,6 +555,9 @@ public:
ExpressionAST *right_expression;
public:
+ virtual BinaryExpressionAST *asBinaryExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -514,6 +576,9 @@ public:
ExpressionAST *expression;
public:
+ virtual CastExpressionAST *asCastExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -539,6 +604,9 @@ public: // annotations
Class *symbol;
public:
+ virtual ClassSpecifierAST *asClassSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -557,6 +625,9 @@ public:
StatementAST *statement;
public:
+ virtual CaseStatementAST *asCaseStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -577,6 +648,9 @@ public: // annotations
Block *symbol;
public:
+ virtual CompoundStatementAST *asCompoundStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -593,6 +667,9 @@ public:
DeclaratorAST *declarator;
public:
+ virtual ConditionAST *asCondition()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -612,6 +689,9 @@ public:
ExpressionAST *right_expression;
public:
+ virtual ConditionalExpressionAST *asConditionalExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -633,6 +713,9 @@ public:
unsigned rparen_token;
public:
+ virtual CppCastExpressionAST *asCppCastExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -649,6 +732,9 @@ public:
MemInitializerAST *member_initializers;
public:
+ virtual CtorInitializerAST *asCtorInitializer()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -664,6 +750,9 @@ public:
DeclarationAST *declaration;
public:
+ virtual DeclarationStatementAST *asDeclarationStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -679,6 +768,9 @@ public:
NameAST *name;
public:
+ virtual DeclaratorIdAST *asDeclaratorId()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -696,6 +788,9 @@ public:
unsigned rparen_token;
public:
+ virtual NestedDeclaratorAST *asNestedDeclarator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -718,6 +813,9 @@ public: // annotations
Function *symbol;
public:
+ virtual FunctionDeclaratorAST *asFunctionDeclarator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -735,6 +833,9 @@ public:
unsigned rbracket_token;
public:
+ virtual ArrayDeclaratorAST *asArrayDeclarator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -751,6 +852,9 @@ public:
DeclaratorListAST *next;
public:
+ virtual DeclaratorListAST *asDeclaratorList()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -770,6 +874,9 @@ public:
ExpressionAST *expression;
public:
+ virtual DeleteExpressionAST *asDeleteExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -791,6 +898,9 @@ public:
unsigned semicolon_token;
public:
+ virtual DoStatementAST *asDoStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -806,6 +916,9 @@ public:
NameAST *name;
public:
+ virtual NamedTypeSpecifierAST *asNamedTypeSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -822,6 +935,9 @@ public:
NameAST *name;
public:
+ virtual ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -841,6 +957,9 @@ public:
unsigned rbrace_token;
public:
+ virtual EnumSpecifierAST *asEnumSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -859,6 +978,9 @@ public:
EnumeratorAST *next;
public:
+ virtual EnumeratorAST *asEnumerator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -876,6 +998,9 @@ public:
unsigned dot_dot_dot_token;
public:
+ virtual ExceptionDeclarationAST *asExceptionDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -895,6 +1020,9 @@ public:
unsigned rparen_token;
public:
+ virtual ExceptionSpecificationAST *asExceptionSpecification()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -911,6 +1039,9 @@ public:
StatementAST *declaration;
public:
+ virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -927,6 +1058,9 @@ public:
unsigned semicolon_token;
public:
+ virtual ExpressionStatementAST *asExpressionStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -948,6 +1082,9 @@ public: // annotations
Function *symbol;
public:
+ virtual FunctionDefinitionAST *asFunctionDefinition()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -973,6 +1110,9 @@ public: // annotations
Block *symbol;
public:
+ virtual ForStatementAST *asForStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -997,6 +1137,9 @@ public: // annotations
Block *symbol;
public:
+ virtual IfStatementAST *asIfStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1014,6 +1157,9 @@ public:
unsigned rbrace_token;
public:
+ virtual ArrayInitializerAST *asArrayInitializer()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1031,6 +1177,9 @@ public:
StatementAST *statement;
public:
+ virtual LabeledStatementAST *asLabeledStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1065,6 +1214,9 @@ public:
DeclarationAST *declaration;
public:
+ virtual LinkageSpecificationAST *asLinkageSpecification()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1084,6 +1236,9 @@ public:
MemInitializerAST *next;
public:
+ virtual MemInitializerAST *asMemInitializer()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1110,6 +1265,9 @@ public:
NestedNameSpecifierAST *next;
public:
+ virtual NestedNameSpecifierAST *asNestedNameSpecifier()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1127,6 +1285,9 @@ public:
NameAST *unqualified_name;
public:
+ virtual QualifiedNameAST *asQualifiedName()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1143,6 +1304,9 @@ public:
OperatorAST *op;
public:
+ virtual OperatorFunctionIdAST *asOperatorFunctionId()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1160,6 +1324,9 @@ public:
PtrOperatorAST *ptr_operators;
public:
+ virtual ConversionFunctionIdAST *asConversionFunctionId()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1175,6 +1342,9 @@ public:
unsigned identifier_token;
public:
+ virtual SimpleNameAST *asSimpleName()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1191,6 +1361,9 @@ public:
unsigned identifier_token;
public:
+ virtual DestructorNameAST *asDestructorName()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1209,6 +1382,9 @@ public:
unsigned greater_token;
public:
+ virtual TemplateIdAST *asTemplateId()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1230,6 +1406,9 @@ public: // annotations
Namespace *symbol;
public:
+ virtual NamespaceAST *asNamespace()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1249,6 +1428,9 @@ public:
unsigned semicolon_token;
public:
+ virtual NamespaceAliasDefinitionAST *asNamespaceAliasDefinition()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1265,6 +1447,9 @@ public:
NewDeclaratorAST *declarator;
public:
+ virtual NewDeclaratorAST *asNewDeclarator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1285,6 +1470,9 @@ public:
NewInitializerAST *new_initializer;
public:
+ virtual NewExpressionAST *asNewExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1302,6 +1490,9 @@ public:
unsigned rparen_token;
public:
+ virtual NewInitializerAST *asNewInitializer()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1319,6 +1510,9 @@ public:
NewDeclaratorAST *new_declarator;
public:
+ virtual NewTypeIdAST *asNewTypeId()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1336,6 +1530,9 @@ public:
unsigned close_token;
public:
+ virtual OperatorAST *asOperator()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1357,6 +1554,9 @@ public: // annotations
Argument *symbol;
public:
+ virtual ParameterDeclarationAST *asParameterDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1373,6 +1573,9 @@ public:
unsigned dot_dot_dot_token;
public:
+ virtual ParameterDeclarationClauseAST *asParameterDeclarationClause()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1388,6 +1591,9 @@ public:
PostfixAST *next;
public:
+ virtual PostfixAST *asPostfix()
+ { return this; }
+
virtual PostfixAST *clone(MemoryPool *pool) const = 0;
};
@@ -1399,6 +1605,9 @@ public:
unsigned rparen_token;
public:
+ virtual CallAST *asCall()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1416,6 +1625,9 @@ public:
unsigned rbracket_token;
public:
+ virtual ArrayAccessAST *asArrayAccess()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1431,6 +1643,9 @@ public:
unsigned incr_decr_token;
public:
+ virtual PostIncrDecrAST *asPostIncrDecr()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1448,6 +1663,9 @@ public:
NameAST *member_name;
public:
+ virtual MemberAccessAST *asMemberAccess()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1466,6 +1684,9 @@ public:
unsigned rparen_token;
public:
+ virtual TypeidExpressionAST *asTypeidExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1485,6 +1706,9 @@ public:
unsigned rparen_token;
public:
+ virtual TypenameCallExpressionAST *asTypenameCallExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1503,6 +1727,9 @@ public:
unsigned rparen_token;
public:
+ virtual TypeConstructorCallAST *asTypeConstructorCall()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1519,6 +1746,9 @@ public:
PostfixAST *postfix_expressions;
public:
+ virtual PostfixExpressionAST *asPostfixExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1534,6 +1764,9 @@ public:
PtrOperatorAST *next;
public:
+ virtual PtrOperatorAST *asPtrOperator()
+ { return this; }
+
virtual PtrOperatorAST *clone(MemoryPool *pool) const = 0;
};
@@ -1546,6 +1779,9 @@ public:
SpecifierAST *cv_qualifier_seq;
public:
+ virtual PointerToMemberAST *asPointerToMember()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1562,6 +1798,9 @@ public:
SpecifierAST *cv_qualifier_seq;
public:
+ virtual PointerAST *asPointer()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1577,6 +1816,9 @@ public:
unsigned amp_token;
public:
+ virtual ReferenceAST *asReference()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1593,6 +1835,9 @@ public:
unsigned semicolon_token;
public:
+ virtual BreakStatementAST *asBreakStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1609,6 +1854,9 @@ public:
unsigned semicolon_token;
public:
+ virtual ContinueStatementAST *asContinueStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1626,6 +1874,9 @@ public:
unsigned semicolon_token;
public:
+ virtual GotoStatementAST *asGotoStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1643,6 +1894,9 @@ public:
unsigned semicolon_token;
public:
+ virtual ReturnStatementAST *asReturnStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1659,6 +1913,9 @@ public:
ExpressionAST *expression;
public:
+ virtual SizeofExpressionAST *asSizeofExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1674,6 +1931,9 @@ public:
unsigned token;
public:
+ virtual NumericLiteralAST *asNumericLiteral()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1689,6 +1949,9 @@ public:
unsigned token;
public:
+ virtual BoolLiteralAST *asBoolLiteral()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1704,6 +1967,9 @@ public:
unsigned this_token;
public:
+ virtual ThisExpressionAST *asThisExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1721,6 +1987,9 @@ public:
unsigned rparen_token;
public:
+ virtual NestedExpressionAST *asNestedExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1737,6 +2006,9 @@ public:
StringLiteralAST *next;
public:
+ virtual StringLiteralAST *asStringLiteral()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1759,6 +2031,9 @@ public: // annotations
Block *symbol;
public:
+ virtual SwitchStatementAST *asSwitchStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1775,6 +2050,9 @@ public:
TemplateArgumentListAST *next;
public:
+ virtual TemplateArgumentListAST *asTemplateArgumentList()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1795,6 +2073,9 @@ public:
DeclarationAST *declaration;
public:
+ virtual TemplateDeclarationAST *asTemplateDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1811,6 +2092,9 @@ public:
ExpressionAST *expression;
public:
+ virtual ThrowExpressionAST *asThrowExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1826,6 +2110,9 @@ public:
DeclarationAST *declarations;
public:
+ virtual TranslationUnitAST *asTranslationUnit()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1843,6 +2130,9 @@ public:
CatchClauseAST *catch_clause_seq;
public:
+ virtual TryBlockStatementAST *asTryBlockStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1866,6 +2156,9 @@ public: // annotations
Block *symbol;
public:
+ virtual CatchClauseAST *asCatchClause()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1882,6 +2175,9 @@ public:
DeclaratorAST *declarator;
public:
+ virtual TypeIdAST *asTypeId()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1903,6 +2199,9 @@ public: // annotations
Argument *symbol;
public:
+ virtual TypenameTypeParameterAST *asTypenameTypeParameter()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1928,6 +2227,9 @@ public:
Argument *symbol;
public:
+ virtual TemplateTypeParameterAST *asTemplateTypeParameter()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1944,6 +2246,9 @@ public:
ExpressionAST *expression;
public:
+ virtual UnaryExpressionAST *asUnaryExpression()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1965,6 +2270,9 @@ public: // annotations
UsingDeclaration *symbol;
public:
+ virtual UsingAST *asUsing()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -1986,6 +2294,9 @@ public:
UsingNamespaceDirective *symbol;
public:
+ virtual UsingDirectiveAST *asUsingDirective()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -2008,6 +2319,9 @@ public: // annotations
Block *symbol;
public:
+ virtual WhileStatementAST *asWhileStatement()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -2026,6 +2340,9 @@ public:
IdentifierListAST *next;
public:
+ virtual IdentifierListAST *asIdentifierList()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
@@ -2044,6 +2361,9 @@ public:
unsigned semicolon_token;
public:
+ virtual ObjCClassDeclarationAST *asObjCClassDeclaration()
+ { return this; }
+
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;