summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-16 14:46:07 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-16 14:54:45 +0100
commitbc96850dedc605367a6d6e5cb730cee2f4491727 (patch)
treefc46eb8c0961958d1d937198fa8b23e8995bd205 /src/shared/cplusplus
parentbef4ed8917ad7e9a762672841befa01e56752285 (diff)
downloadqt-creator-bc96850dedc605367a6d6e5cb730cee2f4491727.tar.gz
Introduced ASTPatternBuilder
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/ASTPatternBuilder.h904
-rw-r--r--src/shared/cplusplus/cplusplus.pri1
2 files changed, 905 insertions, 0 deletions
diff --git a/src/shared/cplusplus/ASTPatternBuilder.h b/src/shared/cplusplus/ASTPatternBuilder.h
new file mode 100644
index 0000000000..8a85b72b1c
--- /dev/null
+++ b/src/shared/cplusplus/ASTPatternBuilder.h
@@ -0,0 +1,904 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+#ifndef CPLUSPLUS_AST_PATTERN_BUILDER_H
+#define CPLUSPLUS_AST_PATTERN_BUILDER_H
+
+#include "CPlusPlusForwardDeclarations.h"
+#include "AST.h"
+#include "MemoryPool.h"
+
+namespace CPlusPlus {
+
+class CPLUSPLUS_EXPORT ASTPatternBuilder
+{
+ MemoryPool pool;
+ MemoryPool::State state;
+
+public:
+ ASTPatternBuilder(): state(pool.state()) {}
+
+ void reset() { pool.rewind(state); };
+
+ SimpleSpecifierAST *SimpleSpecifier()
+ {
+ SimpleSpecifierAST *__ast = new (&pool) SimpleSpecifierAST;
+ return __ast;
+ }
+
+ AttributeSpecifierAST *AttributeSpecifier()
+ {
+ AttributeSpecifierAST *__ast = new (&pool) AttributeSpecifierAST;
+ return __ast;
+ }
+
+ AttributeAST *Attribute()
+ {
+ AttributeAST *__ast = new (&pool) AttributeAST;
+ return __ast;
+ }
+
+ TypeofSpecifierAST *TypeofSpecifier(ExpressionAST *expression = 0)
+ {
+ TypeofSpecifierAST *__ast = new (&pool) TypeofSpecifierAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ DeclaratorAST *Declarator(CoreDeclaratorAST *core_declarator = 0, ExpressionAST *initializer = 0)
+ {
+ DeclaratorAST *__ast = new (&pool) DeclaratorAST;
+ __ast->core_declarator = core_declarator;
+ __ast->initializer = initializer;
+ return __ast;
+ }
+
+ SimpleDeclarationAST *SimpleDeclaration()
+ {
+ SimpleDeclarationAST *__ast = new (&pool) SimpleDeclarationAST;
+ return __ast;
+ }
+
+ EmptyDeclarationAST *EmptyDeclaration()
+ {
+ EmptyDeclarationAST *__ast = new (&pool) EmptyDeclarationAST;
+ return __ast;
+ }
+
+ AccessDeclarationAST *AccessDeclaration()
+ {
+ AccessDeclarationAST *__ast = new (&pool) AccessDeclarationAST;
+ return __ast;
+ }
+
+ AsmDefinitionAST *AsmDefinition()
+ {
+ AsmDefinitionAST *__ast = new (&pool) AsmDefinitionAST;
+ return __ast;
+ }
+
+ BaseSpecifierAST *BaseSpecifier(NameAST *name = 0)
+ {
+ BaseSpecifierAST *__ast = new (&pool) BaseSpecifierAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ CompoundLiteralAST *CompoundLiteral(ExpressionAST *type_id = 0, ExpressionAST *initializer = 0)
+ {
+ CompoundLiteralAST *__ast = new (&pool) CompoundLiteralAST;
+ __ast->type_id = type_id;
+ __ast->initializer = initializer;
+ return __ast;
+ }
+
+ QtMethodAST *QtMethod(DeclaratorAST *declarator = 0)
+ {
+ QtMethodAST *__ast = new (&pool) QtMethodAST;
+ __ast->declarator = declarator;
+ return __ast;
+ }
+
+ BinaryExpressionAST *BinaryExpression(ExpressionAST *left_expression = 0, ExpressionAST *right_expression = 0)
+ {
+ BinaryExpressionAST *__ast = new (&pool) BinaryExpressionAST;
+ __ast->left_expression = left_expression;
+ __ast->right_expression = right_expression;
+ return __ast;
+ }
+
+ CastExpressionAST *CastExpression(ExpressionAST *type_id = 0, ExpressionAST *expression = 0)
+ {
+ CastExpressionAST *__ast = new (&pool) CastExpressionAST;
+ __ast->type_id = type_id;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ ClassSpecifierAST *ClassSpecifier(NameAST *name = 0)
+ {
+ ClassSpecifierAST *__ast = new (&pool) ClassSpecifierAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ CaseStatementAST *CaseStatement(ExpressionAST *expression = 0, StatementAST *statement = 0)
+ {
+ CaseStatementAST *__ast = new (&pool) CaseStatementAST;
+ __ast->expression = expression;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ CompoundStatementAST *CompoundStatement()
+ {
+ CompoundStatementAST *__ast = new (&pool) CompoundStatementAST;
+ return __ast;
+ }
+
+ ConditionAST *Condition(DeclaratorAST *declarator = 0)
+ {
+ ConditionAST *__ast = new (&pool) ConditionAST;
+ __ast->declarator = declarator;
+ return __ast;
+ }
+
+ ConditionalExpressionAST *ConditionalExpression(ExpressionAST *condition = 0, ExpressionAST *left_expression = 0, ExpressionAST *right_expression = 0)
+ {
+ ConditionalExpressionAST *__ast = new (&pool) ConditionalExpressionAST;
+ __ast->condition = condition;
+ __ast->left_expression = left_expression;
+ __ast->right_expression = right_expression;
+ return __ast;
+ }
+
+ CppCastExpressionAST *CppCastExpression(ExpressionAST *type_id = 0, ExpressionAST *expression = 0)
+ {
+ CppCastExpressionAST *__ast = new (&pool) CppCastExpressionAST;
+ __ast->type_id = type_id;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ CtorInitializerAST *CtorInitializer()
+ {
+ CtorInitializerAST *__ast = new (&pool) CtorInitializerAST;
+ return __ast;
+ }
+
+ DeclarationStatementAST *DeclarationStatement(DeclarationAST *declaration = 0)
+ {
+ DeclarationStatementAST *__ast = new (&pool) DeclarationStatementAST;
+ __ast->declaration = declaration;
+ return __ast;
+ }
+
+ DeclaratorIdAST *DeclaratorId(NameAST *name = 0)
+ {
+ DeclaratorIdAST *__ast = new (&pool) DeclaratorIdAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ NestedDeclaratorAST *NestedDeclarator(DeclaratorAST *declarator = 0)
+ {
+ NestedDeclaratorAST *__ast = new (&pool) NestedDeclaratorAST;
+ __ast->declarator = declarator;
+ return __ast;
+ }
+
+ FunctionDeclaratorAST *FunctionDeclarator(ParameterDeclarationClauseAST *parameters = 0, ExceptionSpecificationAST *exception_specification = 0, ExpressionAST *as_cpp_initializer = 0)
+ {
+ FunctionDeclaratorAST *__ast = new (&pool) FunctionDeclaratorAST;
+ __ast->parameters = parameters;
+ __ast->exception_specification = exception_specification;
+ __ast->as_cpp_initializer = as_cpp_initializer;
+ return __ast;
+ }
+
+ ArrayDeclaratorAST *ArrayDeclarator(ExpressionAST *expression = 0)
+ {
+ ArrayDeclaratorAST *__ast = new (&pool) ArrayDeclaratorAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ DeleteExpressionAST *DeleteExpression(ExpressionAST *expression = 0)
+ {
+ DeleteExpressionAST *__ast = new (&pool) DeleteExpressionAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ DoStatementAST *DoStatement(StatementAST *statement = 0, ExpressionAST *expression = 0)
+ {
+ DoStatementAST *__ast = new (&pool) DoStatementAST;
+ __ast->statement = statement;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ NamedTypeSpecifierAST *NamedTypeSpecifier(NameAST *name = 0)
+ {
+ NamedTypeSpecifierAST *__ast = new (&pool) NamedTypeSpecifierAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ ElaboratedTypeSpecifierAST *ElaboratedTypeSpecifier(NameAST *name = 0)
+ {
+ ElaboratedTypeSpecifierAST *__ast = new (&pool) ElaboratedTypeSpecifierAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ EnumSpecifierAST *EnumSpecifier(NameAST *name = 0)
+ {
+ EnumSpecifierAST *__ast = new (&pool) EnumSpecifierAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ EnumeratorAST *Enumerator(ExpressionAST *expression = 0)
+ {
+ EnumeratorAST *__ast = new (&pool) EnumeratorAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ ExceptionDeclarationAST *ExceptionDeclaration(DeclaratorAST *declarator = 0)
+ {
+ ExceptionDeclarationAST *__ast = new (&pool) ExceptionDeclarationAST;
+ __ast->declarator = declarator;
+ return __ast;
+ }
+
+ ExceptionSpecificationAST *ExceptionSpecification()
+ {
+ ExceptionSpecificationAST *__ast = new (&pool) ExceptionSpecificationAST;
+ return __ast;
+ }
+
+ ExpressionOrDeclarationStatementAST *ExpressionOrDeclarationStatement(StatementAST *expression = 0, StatementAST *declaration = 0)
+ {
+ ExpressionOrDeclarationStatementAST *__ast = new (&pool) ExpressionOrDeclarationStatementAST;
+ __ast->expression = expression;
+ __ast->declaration = declaration;
+ return __ast;
+ }
+
+ ExpressionStatementAST *ExpressionStatement(ExpressionAST *expression = 0)
+ {
+ ExpressionStatementAST *__ast = new (&pool) ExpressionStatementAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ FunctionDefinitionAST *FunctionDefinition(DeclaratorAST *declarator = 0, CtorInitializerAST *ctor_initializer = 0, StatementAST *function_body = 0)
+ {
+ FunctionDefinitionAST *__ast = new (&pool) FunctionDefinitionAST;
+ __ast->declarator = declarator;
+ __ast->ctor_initializer = ctor_initializer;
+ __ast->function_body = function_body;
+ return __ast;
+ }
+
+ ForeachStatementAST *ForeachStatement(DeclaratorAST *declarator = 0, ExpressionAST *initializer = 0, ExpressionAST *expression = 0, StatementAST *statement = 0)
+ {
+ ForeachStatementAST *__ast = new (&pool) ForeachStatementAST;
+ __ast->declarator = declarator;
+ __ast->initializer = initializer;
+ __ast->expression = expression;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ ForStatementAST *ForStatement(StatementAST *initializer = 0, ExpressionAST *condition = 0, ExpressionAST *expression = 0, StatementAST *statement = 0)
+ {
+ ForStatementAST *__ast = new (&pool) ForStatementAST;
+ __ast->initializer = initializer;
+ __ast->condition = condition;
+ __ast->expression = expression;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ IfStatementAST *IfStatement(ExpressionAST *condition = 0, StatementAST *statement = 0, StatementAST *else_statement = 0)
+ {
+ IfStatementAST *__ast = new (&pool) IfStatementAST;
+ __ast->condition = condition;
+ __ast->statement = statement;
+ __ast->else_statement = else_statement;
+ return __ast;
+ }
+
+ ArrayInitializerAST *ArrayInitializer()
+ {
+ ArrayInitializerAST *__ast = new (&pool) ArrayInitializerAST;
+ return __ast;
+ }
+
+ LabeledStatementAST *LabeledStatement(StatementAST *statement = 0)
+ {
+ LabeledStatementAST *__ast = new (&pool) LabeledStatementAST;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ LinkageBodyAST *LinkageBody()
+ {
+ LinkageBodyAST *__ast = new (&pool) LinkageBodyAST;
+ return __ast;
+ }
+
+ LinkageSpecificationAST *LinkageSpecification(DeclarationAST *declaration = 0)
+ {
+ LinkageSpecificationAST *__ast = new (&pool) LinkageSpecificationAST;
+ __ast->declaration = declaration;
+ return __ast;
+ }
+
+ MemInitializerAST *MemInitializer(NameAST *name = 0)
+ {
+ MemInitializerAST *__ast = new (&pool) MemInitializerAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ NestedNameSpecifierAST *NestedNameSpecifier(NameAST *class_or_namespace_name = 0)
+ {
+ NestedNameSpecifierAST *__ast = new (&pool) NestedNameSpecifierAST;
+ __ast->class_or_namespace_name = class_or_namespace_name;
+ return __ast;
+ }
+
+ QualifiedNameAST *QualifiedName(NameAST *unqualified_name = 0)
+ {
+ QualifiedNameAST *__ast = new (&pool) QualifiedNameAST;
+ __ast->unqualified_name = unqualified_name;
+ return __ast;
+ }
+
+ OperatorFunctionIdAST *OperatorFunctionId(OperatorAST *op = 0)
+ {
+ OperatorFunctionIdAST *__ast = new (&pool) OperatorFunctionIdAST;
+ __ast->op = op;
+ return __ast;
+ }
+
+ ConversionFunctionIdAST *ConversionFunctionId()
+ {
+ ConversionFunctionIdAST *__ast = new (&pool) ConversionFunctionIdAST;
+ return __ast;
+ }
+
+ SimpleNameAST *SimpleName()
+ {
+ SimpleNameAST *__ast = new (&pool) SimpleNameAST;
+ return __ast;
+ }
+
+ DestructorNameAST *DestructorName()
+ {
+ DestructorNameAST *__ast = new (&pool) DestructorNameAST;
+ return __ast;
+ }
+
+ TemplateIdAST *TemplateId()
+ {
+ TemplateIdAST *__ast = new (&pool) TemplateIdAST;
+ return __ast;
+ }
+
+ NamespaceAST *Namespace(DeclarationAST *linkage_body = 0)
+ {
+ NamespaceAST *__ast = new (&pool) NamespaceAST;
+ __ast->linkage_body = linkage_body;
+ return __ast;
+ }
+
+ NamespaceAliasDefinitionAST *NamespaceAliasDefinition(NameAST *name = 0)
+ {
+ NamespaceAliasDefinitionAST *__ast = new (&pool) NamespaceAliasDefinitionAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ NewPlacementAST *NewPlacement()
+ {
+ NewPlacementAST *__ast = new (&pool) NewPlacementAST;
+ return __ast;
+ }
+
+ NewArrayDeclaratorAST *NewArrayDeclarator(ExpressionAST *expression = 0)
+ {
+ NewArrayDeclaratorAST *__ast = new (&pool) NewArrayDeclaratorAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ NewExpressionAST *NewExpression(NewPlacementAST *new_placement = 0, ExpressionAST *type_id = 0, NewTypeIdAST *new_type_id = 0, NewInitializerAST *new_initializer = 0)
+ {
+ NewExpressionAST *__ast = new (&pool) NewExpressionAST;
+ __ast->new_placement = new_placement;
+ __ast->type_id = type_id;
+ __ast->new_type_id = new_type_id;
+ __ast->new_initializer = new_initializer;
+ return __ast;
+ }
+
+ NewInitializerAST *NewInitializer(ExpressionAST *expression = 0)
+ {
+ NewInitializerAST *__ast = new (&pool) NewInitializerAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ NewTypeIdAST *NewTypeId()
+ {
+ NewTypeIdAST *__ast = new (&pool) NewTypeIdAST;
+ return __ast;
+ }
+
+ OperatorAST *Operator()
+ {
+ OperatorAST *__ast = new (&pool) OperatorAST;
+ return __ast;
+ }
+
+ ParameterDeclarationAST *ParameterDeclaration(DeclaratorAST *declarator = 0, ExpressionAST *expression = 0)
+ {
+ ParameterDeclarationAST *__ast = new (&pool) ParameterDeclarationAST;
+ __ast->declarator = declarator;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ ParameterDeclarationClauseAST *ParameterDeclarationClause()
+ {
+ ParameterDeclarationClauseAST *__ast = new (&pool) ParameterDeclarationClauseAST;
+ return __ast;
+ }
+
+ CallAST *Call()
+ {
+ CallAST *__ast = new (&pool) CallAST;
+ return __ast;
+ }
+
+ ArrayAccessAST *ArrayAccess(ExpressionAST *expression = 0)
+ {
+ ArrayAccessAST *__ast = new (&pool) ArrayAccessAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ PostIncrDecrAST *PostIncrDecr()
+ {
+ PostIncrDecrAST *__ast = new (&pool) PostIncrDecrAST;
+ return __ast;
+ }
+
+ MemberAccessAST *MemberAccess(NameAST *member_name = 0)
+ {
+ MemberAccessAST *__ast = new (&pool) MemberAccessAST;
+ __ast->member_name = member_name;
+ return __ast;
+ }
+
+ TypeidExpressionAST *TypeidExpression(ExpressionAST *expression = 0)
+ {
+ TypeidExpressionAST *__ast = new (&pool) TypeidExpressionAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ TypenameCallExpressionAST *TypenameCallExpression(NameAST *name = 0)
+ {
+ TypenameCallExpressionAST *__ast = new (&pool) TypenameCallExpressionAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ TypeConstructorCallAST *TypeConstructorCall()
+ {
+ TypeConstructorCallAST *__ast = new (&pool) TypeConstructorCallAST;
+ return __ast;
+ }
+
+ PostfixExpressionAST *PostfixExpression(ExpressionAST *base_expression = 0)
+ {
+ PostfixExpressionAST *__ast = new (&pool) PostfixExpressionAST;
+ __ast->base_expression = base_expression;
+ return __ast;
+ }
+
+ PointerToMemberAST *PointerToMember()
+ {
+ PointerToMemberAST *__ast = new (&pool) PointerToMemberAST;
+ return __ast;
+ }
+
+ PointerAST *Pointer()
+ {
+ PointerAST *__ast = new (&pool) PointerAST;
+ return __ast;
+ }
+
+ ReferenceAST *Reference()
+ {
+ ReferenceAST *__ast = new (&pool) ReferenceAST;
+ return __ast;
+ }
+
+ BreakStatementAST *BreakStatement()
+ {
+ BreakStatementAST *__ast = new (&pool) BreakStatementAST;
+ return __ast;
+ }
+
+ ContinueStatementAST *ContinueStatement()
+ {
+ ContinueStatementAST *__ast = new (&pool) ContinueStatementAST;
+ return __ast;
+ }
+
+ GotoStatementAST *GotoStatement()
+ {
+ GotoStatementAST *__ast = new (&pool) GotoStatementAST;
+ return __ast;
+ }
+
+ ReturnStatementAST *ReturnStatement(ExpressionAST *expression = 0)
+ {
+ ReturnStatementAST *__ast = new (&pool) ReturnStatementAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ SizeofExpressionAST *SizeofExpression(ExpressionAST *expression = 0)
+ {
+ SizeofExpressionAST *__ast = new (&pool) SizeofExpressionAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ NumericLiteralAST *NumericLiteral()
+ {
+ NumericLiteralAST *__ast = new (&pool) NumericLiteralAST;
+ return __ast;
+ }
+
+ BoolLiteralAST *BoolLiteral()
+ {
+ BoolLiteralAST *__ast = new (&pool) BoolLiteralAST;
+ return __ast;
+ }
+
+ ThisExpressionAST *ThisExpression()
+ {
+ ThisExpressionAST *__ast = new (&pool) ThisExpressionAST;
+ return __ast;
+ }
+
+ NestedExpressionAST *NestedExpression(ExpressionAST *expression = 0)
+ {
+ NestedExpressionAST *__ast = new (&pool) NestedExpressionAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ StringLiteralAST *StringLiteral(StringLiteralAST *next = 0)
+ {
+ StringLiteralAST *__ast = new (&pool) StringLiteralAST;
+ __ast->next = next;
+ return __ast;
+ }
+
+ SwitchStatementAST *SwitchStatement(ExpressionAST *condition = 0, StatementAST *statement = 0)
+ {
+ SwitchStatementAST *__ast = new (&pool) SwitchStatementAST;
+ __ast->condition = condition;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ TemplateDeclarationAST *TemplateDeclaration(DeclarationAST *declaration = 0)
+ {
+ TemplateDeclarationAST *__ast = new (&pool) TemplateDeclarationAST;
+ __ast->declaration = declaration;
+ return __ast;
+ }
+
+ ThrowExpressionAST *ThrowExpression(ExpressionAST *expression = 0)
+ {
+ ThrowExpressionAST *__ast = new (&pool) ThrowExpressionAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ TranslationUnitAST *TranslationUnit()
+ {
+ TranslationUnitAST *__ast = new (&pool) TranslationUnitAST;
+ return __ast;
+ }
+
+ TryBlockStatementAST *TryBlockStatement(StatementAST *statement = 0)
+ {
+ TryBlockStatementAST *__ast = new (&pool) TryBlockStatementAST;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ CatchClauseAST *CatchClause(ExceptionDeclarationAST *exception_declaration = 0, StatementAST *statement = 0)
+ {
+ CatchClauseAST *__ast = new (&pool) CatchClauseAST;
+ __ast->exception_declaration = exception_declaration;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ TypeIdAST *TypeId(DeclaratorAST *declarator = 0)
+ {
+ TypeIdAST *__ast = new (&pool) TypeIdAST;
+ __ast->declarator = declarator;
+ return __ast;
+ }
+
+ TypenameTypeParameterAST *TypenameTypeParameter(NameAST *name = 0, ExpressionAST *type_id = 0)
+ {
+ TypenameTypeParameterAST *__ast = new (&pool) TypenameTypeParameterAST;
+ __ast->name = name;
+ __ast->type_id = type_id;
+ return __ast;
+ }
+
+ TemplateTypeParameterAST *TemplateTypeParameter(NameAST *name = 0, ExpressionAST *type_id = 0)
+ {
+ TemplateTypeParameterAST *__ast = new (&pool) TemplateTypeParameterAST;
+ __ast->name = name;
+ __ast->type_id = type_id;
+ return __ast;
+ }
+
+ UnaryExpressionAST *UnaryExpression(ExpressionAST *expression = 0)
+ {
+ UnaryExpressionAST *__ast = new (&pool) UnaryExpressionAST;
+ __ast->expression = expression;
+ return __ast;
+ }
+
+ UsingAST *Using(NameAST *name = 0)
+ {
+ UsingAST *__ast = new (&pool) UsingAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ UsingDirectiveAST *UsingDirective(NameAST *name = 0)
+ {
+ UsingDirectiveAST *__ast = new (&pool) UsingDirectiveAST;
+ __ast->name = name;
+ return __ast;
+ }
+
+ WhileStatementAST *WhileStatement(ExpressionAST *condition = 0, StatementAST *statement = 0)
+ {
+ WhileStatementAST *__ast = new (&pool) WhileStatementAST;
+ __ast->condition = condition;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+ ObjCClassForwardDeclarationAST *ObjCClassForwardDeclaration()
+ {
+ ObjCClassForwardDeclarationAST *__ast = new (&pool) ObjCClassForwardDeclarationAST;
+ return __ast;
+ }
+
+ ObjCClassDeclarationAST *ObjCClassDeclaration(NameAST *class_name = 0, NameAST *category_name = 0, NameAST *superclass = 0, ObjCProtocolRefsAST *protocol_refs = 0, ObjCInstanceVariablesDeclarationAST *inst_vars_decl = 0)
+ {
+ ObjCClassDeclarationAST *__ast = new (&pool) ObjCClassDeclarationAST;
+ __ast->class_name = class_name;
+ __ast->category_name = category_name;
+ __ast->superclass = superclass;
+ __ast->protocol_refs = protocol_refs;
+ __ast->inst_vars_decl = inst_vars_decl;
+ return __ast;
+ }
+
+ ObjCProtocolForwardDeclarationAST *ObjCProtocolForwardDeclaration()
+ {
+ ObjCProtocolForwardDeclarationAST *__ast = new (&pool) ObjCProtocolForwardDeclarationAST;
+ return __ast;
+ }
+
+ ObjCProtocolDeclarationAST *ObjCProtocolDeclaration(NameAST *name = 0, ObjCProtocolRefsAST *protocol_refs = 0)
+ {
+ ObjCProtocolDeclarationAST *__ast = new (&pool) ObjCProtocolDeclarationAST;
+ __ast->name = name;
+ __ast->protocol_refs = protocol_refs;
+ return __ast;
+ }
+
+ ObjCProtocolRefsAST *ObjCProtocolRefs()
+ {
+ ObjCProtocolRefsAST *__ast = new (&pool) ObjCProtocolRefsAST;
+ return __ast;
+ }
+
+ ObjCMessageArgumentAST *ObjCMessageArgument(ExpressionAST *parameter_value_expression = 0)
+ {
+ ObjCMessageArgumentAST *__ast = new (&pool) ObjCMessageArgumentAST;
+ __ast->parameter_value_expression = parameter_value_expression;
+ return __ast;
+ }
+
+ ObjCMessageExpressionAST *ObjCMessageExpression(ExpressionAST *receiver_expression = 0, ObjCSelectorAST *selector = 0)
+ {
+ ObjCMessageExpressionAST *__ast = new (&pool) ObjCMessageExpressionAST;
+ __ast->receiver_expression = receiver_expression;
+ __ast->selector = selector;
+ return __ast;
+ }
+
+ ObjCProtocolExpressionAST *ObjCProtocolExpression()
+ {
+ ObjCProtocolExpressionAST *__ast = new (&pool) ObjCProtocolExpressionAST;
+ return __ast;
+ }
+
+ ObjCTypeNameAST *ObjCTypeName(ExpressionAST *type_id = 0)
+ {
+ ObjCTypeNameAST *__ast = new (&pool) ObjCTypeNameAST;
+ __ast->type_id = type_id;
+ return __ast;
+ }
+
+ ObjCEncodeExpressionAST *ObjCEncodeExpression(ObjCTypeNameAST *type_name = 0)
+ {
+ ObjCEncodeExpressionAST *__ast = new (&pool) ObjCEncodeExpressionAST;
+ __ast->type_name = type_name;
+ return __ast;
+ }
+
+ ObjCSelectorWithoutArgumentsAST *ObjCSelectorWithoutArguments()
+ {
+ ObjCSelectorWithoutArgumentsAST *__ast = new (&pool) ObjCSelectorWithoutArgumentsAST;
+ return __ast;
+ }
+
+ ObjCSelectorArgumentAST *ObjCSelectorArgument()
+ {
+ ObjCSelectorArgumentAST *__ast = new (&pool) ObjCSelectorArgumentAST;
+ return __ast;
+ }
+
+ ObjCSelectorWithArgumentsAST *ObjCSelectorWithArguments()
+ {
+ ObjCSelectorWithArgumentsAST *__ast = new (&pool) ObjCSelectorWithArgumentsAST;
+ return __ast;
+ }
+
+ ObjCSelectorExpressionAST *ObjCSelectorExpression(ObjCSelectorAST *selector = 0)
+ {
+ ObjCSelectorExpressionAST *__ast = new (&pool) ObjCSelectorExpressionAST;
+ __ast->selector = selector;
+ return __ast;
+ }
+
+ ObjCInstanceVariablesDeclarationAST *ObjCInstanceVariablesDeclaration()
+ {
+ ObjCInstanceVariablesDeclarationAST *__ast = new (&pool) ObjCInstanceVariablesDeclarationAST;
+ return __ast;
+ }
+
+ ObjCVisibilityDeclarationAST *ObjCVisibilityDeclaration()
+ {
+ ObjCVisibilityDeclarationAST *__ast = new (&pool) ObjCVisibilityDeclarationAST;
+ return __ast;
+ }
+
+ ObjCPropertyAttributeAST *ObjCPropertyAttribute(ObjCSelectorAST *method_selector = 0)
+ {
+ ObjCPropertyAttributeAST *__ast = new (&pool) ObjCPropertyAttributeAST;
+ __ast->method_selector = method_selector;
+ return __ast;
+ }
+
+ ObjCPropertyDeclarationAST *ObjCPropertyDeclaration(DeclarationAST *simple_declaration = 0)
+ {
+ ObjCPropertyDeclarationAST *__ast = new (&pool) ObjCPropertyDeclarationAST;
+ __ast->simple_declaration = simple_declaration;
+ return __ast;
+ }
+
+ ObjCMessageArgumentDeclarationAST *ObjCMessageArgumentDeclaration(ObjCTypeNameAST *type_name = 0)
+ {
+ ObjCMessageArgumentDeclarationAST *__ast = new (&pool) ObjCMessageArgumentDeclarationAST;
+ __ast->type_name = type_name;
+ return __ast;
+ }
+
+ ObjCMethodPrototypeAST *ObjCMethodPrototype(ObjCTypeNameAST *type_name = 0, ObjCSelectorAST *selector = 0)
+ {
+ ObjCMethodPrototypeAST *__ast = new (&pool) ObjCMethodPrototypeAST;
+ __ast->type_name = type_name;
+ __ast->selector = selector;
+ return __ast;
+ }
+
+ ObjCMethodDeclarationAST *ObjCMethodDeclaration(ObjCMethodPrototypeAST *method_prototype = 0, StatementAST *function_body = 0)
+ {
+ ObjCMethodDeclarationAST *__ast = new (&pool) ObjCMethodDeclarationAST;
+ __ast->method_prototype = method_prototype;
+ __ast->function_body = function_body;
+ return __ast;
+ }
+
+ ObjCSynthesizedPropertyAST *ObjCSynthesizedProperty()
+ {
+ ObjCSynthesizedPropertyAST *__ast = new (&pool) ObjCSynthesizedPropertyAST;
+ return __ast;
+ }
+
+ ObjCSynthesizedPropertiesDeclarationAST *ObjCSynthesizedPropertiesDeclaration()
+ {
+ ObjCSynthesizedPropertiesDeclarationAST *__ast = new (&pool) ObjCSynthesizedPropertiesDeclarationAST;
+ return __ast;
+ }
+
+ ObjCDynamicPropertiesDeclarationAST *ObjCDynamicPropertiesDeclaration()
+ {
+ ObjCDynamicPropertiesDeclarationAST *__ast = new (&pool) ObjCDynamicPropertiesDeclarationAST;
+ return __ast;
+ }
+
+ ObjCFastEnumerationAST *ObjCFastEnumeration(DeclaratorAST *declarator = 0, ExpressionAST *initializer = 0, ExpressionAST *fast_enumeratable_expression = 0, StatementAST *body_statement = 0)
+ {
+ ObjCFastEnumerationAST *__ast = new (&pool) ObjCFastEnumerationAST;
+ __ast->declarator = declarator;
+ __ast->initializer = initializer;
+ __ast->fast_enumeratable_expression = fast_enumeratable_expression;
+ __ast->body_statement = body_statement;
+ return __ast;
+ }
+
+ ObjCSynchronizedStatementAST *ObjCSynchronizedStatement(ExpressionAST *synchronized_object = 0, StatementAST *statement = 0)
+ {
+ ObjCSynchronizedStatementAST *__ast = new (&pool) ObjCSynchronizedStatementAST;
+ __ast->synchronized_object = synchronized_object;
+ __ast->statement = statement;
+ return __ast;
+ }
+
+};
+
+} // end of namespace CPlusPlus
+
+#endif // CPLUSPLUS_AST_PATTERN_BUILDER_H
diff --git a/src/shared/cplusplus/cplusplus.pri b/src/shared/cplusplus/cplusplus.pri
index 8977a6fa44..c55e9b7c3d 100644
--- a/src/shared/cplusplus/cplusplus.pri
+++ b/src/shared/cplusplus/cplusplus.pri
@@ -6,6 +6,7 @@ HEADERS += \
$$PWD/AST.h \
$$PWD/ASTVisitor.h \
$$PWD/ASTMatcher.h \
+ $$PWD/ASTPatternBuilder.h \
$$PWD/ASTfwd.h \
$$PWD/Array.h \
$$PWD/CPlusPlusForwardDeclarations.h \