summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/AST.cpp1105
-rw-r--r--src/shared/cplusplus/ASTClone.cpp1087
-rw-r--r--src/shared/cplusplus/cplusplus.pri1
3 files changed, 1088 insertions, 1105 deletions
diff --git a/src/shared/cplusplus/AST.cpp b/src/shared/cplusplus/AST.cpp
index d1dcaa8e67..77461d53d9 100644
--- a/src/shared/cplusplus/AST.cpp
+++ b/src/shared/cplusplus/AST.cpp
@@ -89,19 +89,6 @@ unsigned AttributeSpecifierAST::lastToken() const
return attribute_token + 1;
}
-AttributeSpecifierAST *AttributeSpecifierAST::clone(MemoryPool *pool) const
-{
- AttributeSpecifierAST *ast = new (pool) AttributeSpecifierAST;
- ast->attribute_token = attribute_token;
- ast->first_lparen_token = first_lparen_token;
- ast->second_lparen_token = second_lparen_token;
- if (attributes)
- ast->attributes = attributes->clone(pool);
- ast->first_rparen_token = first_rparen_token;
- ast->second_rparen_token = second_rparen_token;
- return ast;
-}
-
void AttributeSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -137,21 +124,6 @@ unsigned AttributeAST::lastToken() const
return identifier_token + 1;
}
-AttributeAST *AttributeAST::clone(MemoryPool *pool) const
-{
- AttributeAST *ast = new (pool) AttributeAST;
- ast->identifier_token = identifier_token;
- ast->lparen_token = lparen_token;
- ast->tag_token = tag_token;
- if (expression_list)
- ast->expression_list = expression_list->clone(pool);
- ast->rparen_token = rparen_token;
- if (next)
- ast->next = next->clone(pool);
- ast->comma_token = comma_token;
- return ast;
-}
-
void AttributeAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -161,15 +133,6 @@ void AttributeAST::accept0(ASTVisitor *visitor)
visitor->endVisit(this);
}
-AccessDeclarationAST *AccessDeclarationAST::clone(MemoryPool *pool) const
-{
- AccessDeclarationAST *ast = new (pool) AccessDeclarationAST;
- ast->access_specifier_token = access_specifier_token;
- ast->slots_token = slots_token;
- ast->colon_token = colon_token;
- return ast;
-}
-
void AccessDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -191,16 +154,6 @@ unsigned AccessDeclarationAST::lastToken() const
return access_specifier_token + 1;
}
-ArrayAccessAST *ArrayAccessAST::clone(MemoryPool *pool) const
-{
- ArrayAccessAST *ast = new (pool) ArrayAccessAST;
- ast->lbracket_token = lbracket_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rbracket_token = rbracket_token;
- return ast;
-}
-
void ArrayAccessAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -223,16 +176,6 @@ unsigned ArrayAccessAST::lastToken() const
return lbracket_token + 1;
}
-ArrayDeclaratorAST *ArrayDeclaratorAST::clone(MemoryPool *pool) const
-{
- ArrayDeclaratorAST *ast = new (pool) ArrayDeclaratorAST;
- ast->lbracket_token = lbracket_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rbracket_token = rbracket_token;
- return ast;
-}
-
void ArrayDeclaratorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -255,16 +198,6 @@ unsigned ArrayDeclaratorAST::lastToken() const
return lbracket_token + 1;
}
-ArrayInitializerAST *ArrayInitializerAST::clone(MemoryPool *pool) const
-{
- ArrayInitializerAST *ast = new (pool) ArrayInitializerAST;
- ast->lbrace_token = lbrace_token;
- if (expression_list)
- ast->expression_list = expression_list->clone(pool);
- ast->rbrace_token = rbrace_token;
- return ast;
-}
-
void ArrayInitializerAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -292,17 +225,6 @@ unsigned ArrayInitializerAST::lastToken() const
return lbrace_token + 1;
}
-AsmDefinitionAST *AsmDefinitionAST::clone(MemoryPool *pool) const
-{
- AsmDefinitionAST *ast = new (pool) AsmDefinitionAST;
- ast->asm_token = asm_token;
- ast->volatile_token = volatile_token;
- ast->lparen_token = lparen_token;
- ast->rparen_token = rparen_token;
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void AsmDefinitionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -329,19 +251,6 @@ unsigned AsmDefinitionAST::lastToken() const
return asm_token + 1;
}
-BaseSpecifierAST *BaseSpecifierAST::clone(MemoryPool *pool) const
-{
- BaseSpecifierAST *ast = new (pool) BaseSpecifierAST;
- ast->comma_token = comma_token;
- ast->virtual_token = virtual_token;
- ast->access_specifier_token = access_specifier_token;
- if (name)
- ast->name = name->clone(pool);
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void BaseSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -385,17 +294,6 @@ unsigned QtMethodAST::lastToken() const
return method_token + 1;
}
-QtMethodAST *QtMethodAST::clone(MemoryPool *pool) const
-{
- QtMethodAST *ast = new (pool) QtMethodAST;
- ast->method_token = method_token;
- ast->lparen_token = lparen_token;
- if (declarator)
- ast->declarator = declarator->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void QtMethodAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -404,17 +302,6 @@ void QtMethodAST::accept0(ASTVisitor *visitor)
visitor->endVisit(this);
}
-BinaryExpressionAST *BinaryExpressionAST::clone(MemoryPool *pool) const
-{
- BinaryExpressionAST *ast = new (pool) BinaryExpressionAST;
- if (left_expression)
- ast->left_expression = left_expression->clone(pool);
- ast->binary_op_token = binary_op_token;
- if (right_expression)
- ast->right_expression = right_expression->clone(pool);
- return ast;
-}
-
void BinaryExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -438,13 +325,6 @@ unsigned BinaryExpressionAST::lastToken() const
return left_expression->lastToken();
}
-BoolLiteralAST *BoolLiteralAST::clone(MemoryPool *pool) const
-{
- BoolLiteralAST *ast = new (pool) BoolLiteralAST;
- ast->literal_token = literal_token;
- return ast;
-}
-
void BoolLiteralAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -462,18 +342,6 @@ unsigned BoolLiteralAST::lastToken() const
return literal_token + 1;
}
-CompoundLiteralAST *CompoundLiteralAST::clone(MemoryPool *pool) const
-{
- CompoundLiteralAST *ast = new (pool) CompoundLiteralAST;
- ast->lparen_token = lparen_token;
- if (type_id)
- ast->type_id = type_id->clone(pool);
- ast->rparen_token = rparen_token;
- if (initializer)
- ast->initializer = initializer->clone(pool);
- return ast;
-}
-
void CompoundLiteralAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -499,14 +367,6 @@ unsigned CompoundLiteralAST::lastToken() const
return lparen_token + 1;
}
-BreakStatementAST *BreakStatementAST::clone(MemoryPool *pool) const
-{
- BreakStatementAST *ast = new (pool) BreakStatementAST;
- ast->break_token = break_token;
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void BreakStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -526,16 +386,6 @@ unsigned BreakStatementAST::lastToken() const
return break_token + 1;
}
-CallAST *CallAST::clone(MemoryPool *pool) const
-{
- CallAST *ast = new (pool) CallAST;
- ast->lparen_token = lparen_token;
- if (expression_list)
- ast->expression_list = expression_list;
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void CallAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -562,18 +412,6 @@ unsigned CallAST::lastToken() const
return lparen_token + 1;
}
-CaseStatementAST *CaseStatementAST::clone(MemoryPool *pool) const
-{
- CaseStatementAST *ast = new (pool) CaseStatementAST;
- ast->case_token = case_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->colon_token = colon_token;
- if (statement)
- ast->statement = statement->clone(pool);
- return ast;
-}
-
void CaseStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -599,18 +437,6 @@ unsigned CaseStatementAST::lastToken() const
return case_token + 1;
}
-CastExpressionAST *CastExpressionAST::clone(MemoryPool *pool) const
-{
- CastExpressionAST *ast = new (pool) CastExpressionAST;
- ast->lparen_token = lparen_token;
- if (type_id)
- ast->type_id = type_id->clone(pool);
- ast->rparen_token = rparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- return ast;
-}
-
void CastExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -634,21 +460,6 @@ unsigned CastExpressionAST::lastToken() const
return lparen_token + 1;
}
-CatchClauseAST *CatchClauseAST::clone(MemoryPool *pool) const
-{
- CatchClauseAST *ast = new (pool) CatchClauseAST;
- ast->catch_token = catch_token;
- ast->lparen_token = lparen_token;
- if (exception_declaration)
- ast->exception_declaration = exception_declaration->clone(pool);
- ast->rparen_token = rparen_token;
- if (statement)
- ast->statement = statement->clone(pool);
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void CatchClauseAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -679,24 +490,6 @@ unsigned CatchClauseAST::lastToken() const
return catch_token + 1;
}
-ClassSpecifierAST *ClassSpecifierAST::clone(MemoryPool *pool) const
-{
- ClassSpecifierAST *ast = new (pool) ClassSpecifierAST;
- ast->classkey_token = classkey_token;
- if (attributes)
- ast->attributes = attributes->clone(pool);
- if (name)
- ast->name = name->clone(pool);
- ast->colon_token = colon_token;
- if (base_clause)
- ast->base_clause = base_clause->clone(pool);
- ast->lbrace_token = lbrace_token;
- if (member_specifiers)
- ast->member_specifiers = member_specifiers->clone(pool);
- ast->rbrace_token = rbrace_token;
- return ast;
-}
-
void ClassSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -748,16 +541,6 @@ unsigned ClassSpecifierAST::lastToken() const
return classkey_token + 1;
}
-CompoundStatementAST *CompoundStatementAST::clone(MemoryPool *pool) const
-{
- CompoundStatementAST *ast = new (pool) CompoundStatementAST;
- ast->lbrace_token = lbrace_token;
- if (statements)
- ast->statements = statements->clone(pool);
- ast->rbrace_token = rbrace_token;
- return ast;
-}
-
void CompoundStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -785,16 +568,6 @@ unsigned CompoundStatementAST::lastToken() const
return lbrace_token + 1;
}
-ConditionAST *ConditionAST::clone(MemoryPool *pool) const
-{
- ConditionAST *ast = new (pool) ConditionAST;
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- if (declarator)
- ast->declarator = declarator->clone(pool);
- return ast;
-}
-
void ConditionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -827,20 +600,6 @@ unsigned ConditionAST::lastToken() const
return 0;
}
-ConditionalExpressionAST *ConditionalExpressionAST::clone(MemoryPool *pool) const
-{
- ConditionalExpressionAST *ast = new (pool) ConditionalExpressionAST;
- if (condition)
- ast->condition = condition->clone(pool);
- ast->question_token = question_token;
- if (left_expression)
- ast->left_expression = left_expression->clone(pool);
- ast->colon_token = colon_token;
- if (right_expression)
- ast->right_expression = right_expression->clone(pool);
- return ast;
-}
-
void ConditionalExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -872,14 +631,6 @@ unsigned ConditionalExpressionAST::lastToken() const
return 0;
}
-ContinueStatementAST *ContinueStatementAST::clone(MemoryPool *pool) const
-{
- ContinueStatementAST *ast = new (pool) ContinueStatementAST;
- ast->continue_token = continue_token;
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void ContinueStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -899,17 +650,6 @@ unsigned ContinueStatementAST::lastToken() const
return continue_token + 1;
}
-ConversionFunctionIdAST *ConversionFunctionIdAST::clone(MemoryPool *pool) const
-{
- ConversionFunctionIdAST *ast = new (pool) ConversionFunctionIdAST;
- ast->operator_token = operator_token;
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- if (ptr_operators)
- ast->ptr_operators = ptr_operators->clone(pool);
- return ast;
-}
-
void ConversionFunctionIdAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -942,21 +682,6 @@ unsigned ConversionFunctionIdAST::lastToken() const
return operator_token + 1;
}
-CppCastExpressionAST *CppCastExpressionAST::clone(MemoryPool *pool) const
-{
- CppCastExpressionAST *ast = new (pool) CppCastExpressionAST;
- ast->cast_token = cast_token;
- ast->less_token = less_token;
- if (type_id)
- ast->type_id = type_id->clone(pool);
- ast->greater_token = greater_token;
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void CppCastExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -988,15 +713,6 @@ unsigned CppCastExpressionAST::lastToken() const
return cast_token + 1;
}
-CtorInitializerAST *CtorInitializerAST::clone(MemoryPool *pool) const
-{
- CtorInitializerAST *ast = new (pool) CtorInitializerAST;
- ast->colon_token = colon_token;
- if (member_initializers)
- ast->member_initializers = member_initializers->clone(pool);
- return ast;
-}
-
void CtorInitializerAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1021,22 +737,6 @@ unsigned CtorInitializerAST::lastToken() const
return colon_token + 1;
}
-DeclaratorAST *DeclaratorAST::clone(MemoryPool *pool) const
-{
- DeclaratorAST *ast = new (pool) DeclaratorAST;
- if (ptr_operators)
- ast->ptr_operators = ptr_operators->clone(pool);
- if (core_declarator)
- ast->core_declarator = core_declarator->clone(pool);
- if (postfix_declarators)
- ast->postfix_declarators = postfix_declarators->clone(pool);
- if (attributes)
- ast->attributes = attributes->clone(pool);
- if (initializer)
- ast->initializer = initializer->clone(pool);
- return ast;
-}
-
void DeclaratorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1096,14 +796,6 @@ unsigned DeclaratorAST::lastToken() const
return 0;
}
-DeclarationStatementAST *DeclarationStatementAST::clone(MemoryPool *pool) const
-{
- DeclarationStatementAST *ast = new (pool) DeclarationStatementAST;
- if (declaration)
- ast->declaration = declaration->clone(pool);
- return ast;
-}
-
void DeclarationStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1122,14 +814,6 @@ unsigned DeclarationStatementAST::lastToken() const
return declaration->lastToken();
}
-DeclaratorIdAST *DeclaratorIdAST::clone(MemoryPool *pool) const
-{
- DeclaratorIdAST *ast = new (pool) DeclaratorIdAST;
- if (name)
- ast->name = name->clone(pool);
- return ast;
-}
-
void DeclaratorIdAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1148,17 +832,6 @@ unsigned DeclaratorIdAST::lastToken() const
return name->lastToken();
}
-DeclaratorListAST *DeclaratorListAST::clone(MemoryPool *pool) const
-{
- DeclaratorListAST *ast = new (pool) DeclaratorListAST;
- ast->comma_token = comma_token;
- if (declarator)
- ast->declarator = declarator->clone(pool);
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void DeclaratorListAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1182,18 +855,6 @@ unsigned DeclaratorListAST::lastToken() const
return 0;
}
-DeleteExpressionAST *DeleteExpressionAST::clone(MemoryPool *pool) const
-{
- DeleteExpressionAST *ast = new (pool) DeleteExpressionAST;
- ast->scope_token = scope_token;
- ast->delete_token = delete_token;
- ast->lbracket_token = lbracket_token;
- ast->rbracket_token = rbracket_token;
- if (expression)
- ast->expression = expression->clone(pool);
- return ast;
-}
-
void DeleteExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1222,14 +883,6 @@ unsigned DeleteExpressionAST::lastToken() const
return scope_token + 1;
}
-DestructorNameAST *DestructorNameAST::clone(MemoryPool *pool) const
-{
- DestructorNameAST *ast = new (pool) DestructorNameAST;
- ast->tilde_token = tilde_token;
- ast->identifier_token = identifier_token;
- return ast;
-}
-
void DestructorNameAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1249,21 +902,6 @@ unsigned DestructorNameAST::lastToken() const
return tilde_token + 1;
}
-DoStatementAST *DoStatementAST::clone(MemoryPool *pool) const
-{
- DoStatementAST *ast = new (pool) DoStatementAST;
- ast->do_token = do_token;
- if (statement)
- ast->statement = statement->clone(pool);
- ast->while_token = while_token;
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void DoStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1295,15 +933,6 @@ unsigned DoStatementAST::lastToken() const
return do_token + 1;
}
-ElaboratedTypeSpecifierAST *ElaboratedTypeSpecifierAST::clone(MemoryPool *pool) const
-{
- ElaboratedTypeSpecifierAST *ast = new (pool) ElaboratedTypeSpecifierAST;
- ast->classkey_token = classkey_token;
- if (name)
- ast->name = name->clone(pool);
- return ast;
-}
-
void ElaboratedTypeSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1324,13 +953,6 @@ unsigned ElaboratedTypeSpecifierAST::lastToken() const
return classkey_token + 1;
}
-EmptyDeclarationAST *EmptyDeclarationAST::clone(MemoryPool *pool) const
-{
- EmptyDeclarationAST *ast = new (pool) EmptyDeclarationAST;
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void EmptyDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1348,19 +970,6 @@ unsigned EmptyDeclarationAST::lastToken() const
return semicolon_token + 1;
}
-EnumSpecifierAST *EnumSpecifierAST::clone(MemoryPool *pool) const
-{
- EnumSpecifierAST *ast = new (pool) EnumSpecifierAST;
- ast->enum_token = enum_token;
- if (name)
- ast->name = name->clone(pool);
- ast->lbrace_token = lbrace_token;
- if (enumerators)
- ast->enumerators = enumerators->clone(pool);
- ast->rbrace_token = rbrace_token;
- return ast;
-}
-
void EnumSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1395,19 +1004,6 @@ unsigned EnumSpecifierAST::lastToken() const
return enum_token + 1;
}
-EnumeratorAST *EnumeratorAST::clone(MemoryPool *pool) const
-{
- EnumeratorAST *ast = new (pool) EnumeratorAST;
- ast->comma_token = comma_token;
- ast->identifier_token = identifier_token;
- ast->equal_token = equal_token;
- if (expression)
- ast->expression = expression->clone(pool);
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void EnumeratorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1430,17 +1026,6 @@ unsigned EnumeratorAST::lastToken() const
return identifier_token + 1;
}
-ExceptionDeclarationAST *ExceptionDeclarationAST::clone(MemoryPool *pool) const
-{
- ExceptionDeclarationAST *ast = new (pool) ExceptionDeclarationAST;
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- if (declarator)
- ast->declarator = declarator->clone(pool);
- ast->dot_dot_dot_token = dot_dot_dot_token;
- return ast;
-}
-
void ExceptionDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1473,18 +1058,6 @@ unsigned ExceptionDeclarationAST::lastToken() const
return 0;
}
-ExceptionSpecificationAST *ExceptionSpecificationAST::clone(MemoryPool *pool) const
-{
- ExceptionSpecificationAST *ast = new (pool) ExceptionSpecificationAST;
- ast->throw_token = throw_token;
- ast->lparen_token = lparen_token;
- ast->dot_dot_dot_token = dot_dot_dot_token;
- if (type_ids)
- ast->type_ids = type_ids->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void ExceptionSpecificationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1518,17 +1091,6 @@ unsigned ExceptionSpecificationAST::lastToken() const
return throw_token + 1;
}
-ExpressionListAST *ExpressionListAST::clone(MemoryPool *pool) const
-{
- ExpressionListAST *ast = new (pool) ExpressionListAST;
- ast->comma_token = comma_token;
- if (expression)
- ast->expression = expression->clone(pool);
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void ExpressionListAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1553,16 +1115,6 @@ unsigned ExpressionListAST::lastToken() const
return 0;
}
-ExpressionOrDeclarationStatementAST *ExpressionOrDeclarationStatementAST::clone(MemoryPool *pool) const
-{
- ExpressionOrDeclarationStatementAST *ast = new (pool) ExpressionOrDeclarationStatementAST;
- if (expression)
- ast->expression = expression->clone(pool);
- if (declaration)
- ast->declaration = declaration->clone(pool);
- return ast;
-}
-
void ExpressionOrDeclarationStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1582,15 +1134,6 @@ unsigned ExpressionOrDeclarationStatementAST::lastToken() const
return declaration->lastToken();
}
-ExpressionStatementAST *ExpressionStatementAST::clone(MemoryPool *pool) const
-{
- ExpressionStatementAST *ast = new (pool) ExpressionStatementAST;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void ExpressionStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1616,24 +1159,6 @@ unsigned ExpressionStatementAST::lastToken() const
return 0;
}
-ForStatementAST *ForStatementAST::clone(MemoryPool *pool) const
-{
- ForStatementAST *ast = new (pool) ForStatementAST;
- ast->for_token = for_token;
- ast->lparen_token = lparen_token;
- if (initializer)
- ast->initializer = initializer->clone(pool);
- if (condition)
- ast->condition = condition->clone(pool);
- ast->semicolon_token = semicolon_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- if (statement)
- ast->statement = statement->clone(pool);
- return ast;
-}
-
void ForStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1670,20 +1195,6 @@ unsigned ForStatementAST::lastToken() const
return for_token + 1;
}
-FunctionDeclaratorAST *FunctionDeclaratorAST::clone(MemoryPool *pool) const
-{
- FunctionDeclaratorAST *ast = new (pool) FunctionDeclaratorAST;
- ast->lparen_token = lparen_token;
- if (parameters)
- ast->parameters = parameters->clone(pool);
- ast->rparen_token = rparen_token;
- if (cv_qualifier_seq)
- ast->cv_qualifier_seq = cv_qualifier_seq->clone(pool);
- if (exception_specification)
- ast->exception_specification = exception_specification->clone(pool);
- return ast;
-}
-
void FunctionDeclaratorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1718,20 +1229,6 @@ unsigned FunctionDeclaratorAST::lastToken() const
return lparen_token + 1;
}
-FunctionDefinitionAST *FunctionDefinitionAST::clone(MemoryPool *pool) const
-{
- FunctionDefinitionAST *ast = new (pool) FunctionDefinitionAST;
- if (decl_specifier_seq)
- ast->decl_specifier_seq = decl_specifier_seq->clone(pool);
- if (declarator)
- ast->declarator = declarator->clone(pool);
- if (ctor_initializer)
- ast->ctor_initializer = ctor_initializer->clone(pool);
- if (function_body)
- ast->function_body = function_body->clone(pool);
- return ast;
-}
-
void FunctionDefinitionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1774,15 +1271,6 @@ unsigned FunctionDefinitionAST::lastToken() const
return 0;
}
-GotoStatementAST *GotoStatementAST::clone(MemoryPool *pool) const
-{
- GotoStatementAST *ast = new (pool) GotoStatementAST;
- ast->goto_token = goto_token;
- ast->identifier_token = identifier_token;
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void GotoStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1806,22 +1294,6 @@ unsigned GotoStatementAST::lastToken() const
return 0;
}
-IfStatementAST *IfStatementAST::clone(MemoryPool *pool) const
-{
- IfStatementAST *ast = new (pool) IfStatementAST;
- ast->if_token = if_token;
- ast->lparen_token = lparen_token;
- if (condition)
- ast->condition = condition->clone(pool);
- ast->rparen_token = rparen_token;
- if (statement)
- ast->statement = statement->clone(pool);
- ast->else_token = else_token;
- if (else_statement)
- ast->else_statement = else_statement->clone(pool);
- return ast;
-}
-
void IfStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1854,16 +1326,6 @@ unsigned IfStatementAST::lastToken() const
return if_token + 1;
}
-LabeledStatementAST *LabeledStatementAST::clone(MemoryPool *pool) const
-{
- LabeledStatementAST *ast = new (pool) LabeledStatementAST;
- ast->label_token = label_token;
- ast->colon_token = colon_token;
- if (statement)
- ast->statement = statement->clone(pool);
- return ast;
-}
-
void LabeledStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1886,16 +1348,6 @@ unsigned LabeledStatementAST::lastToken() const
return label_token + 1;
}
-LinkageBodyAST *LinkageBodyAST::clone(MemoryPool *pool) const
-{
- LinkageBodyAST *ast = new (pool) LinkageBodyAST;
- ast->lbrace_token = lbrace_token;
- if (declarations)
- ast->declarations = declarations->clone(pool);
- ast->rbrace_token = rbrace_token;
- return ast;
-}
-
void LinkageBodyAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1924,16 +1376,6 @@ unsigned LinkageBodyAST::lastToken() const
return lbrace_token + 1;
}
-LinkageSpecificationAST *LinkageSpecificationAST::clone(MemoryPool *pool) const
-{
- LinkageSpecificationAST *ast = new (pool) LinkageSpecificationAST;
- ast->extern_token = extern_token;
- ast->extern_type_token = extern_type_token;
- if (declaration)
- ast->declaration = declaration->clone(pool);
- return ast;
-}
-
void LinkageSpecificationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1956,21 +1398,6 @@ unsigned LinkageSpecificationAST::lastToken() const
return extern_token + 1;
}
-MemInitializerAST *MemInitializerAST::clone(MemoryPool *pool) const
-{
- MemInitializerAST *ast = new (pool) MemInitializerAST;
- ast->comma_token = comma_token;
- if (name)
- ast->name = name->clone(pool);
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void MemInitializerAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1995,16 +1422,6 @@ unsigned MemInitializerAST::lastToken() const
return name->lastToken();
}
-MemberAccessAST *MemberAccessAST::clone(MemoryPool *pool) const
-{
- MemberAccessAST *ast = new (pool) MemberAccessAST;
- ast->access_token = access_token;
- ast->template_token = template_token;
- if (member_name)
- ast->member_name = member_name->clone(pool);
- return ast;
-}
-
void MemberAccessAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2027,14 +1444,6 @@ unsigned MemberAccessAST::lastToken() const
return access_token + 1;
}
-NamedTypeSpecifierAST *NamedTypeSpecifierAST::clone(MemoryPool *pool) const
-{
- NamedTypeSpecifierAST *ast = new (pool) NamedTypeSpecifierAST;
- if (name)
- ast->name = name->clone(pool);
- return ast;
-}
-
void NamedTypeSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2053,18 +1462,6 @@ unsigned NamedTypeSpecifierAST::lastToken() const
return name->lastToken();
}
-NamespaceAST *NamespaceAST::clone(MemoryPool *pool) const
-{
- NamespaceAST *ast = new (pool) NamespaceAST;
- ast->namespace_token = namespace_token;
- ast->identifier_token = identifier_token;
- if (attributes)
- ast->attributes = attributes->clone(pool);
- if (linkage_body)
- ast->linkage_body = linkage_body->clone(pool);
- return ast;
-}
-
void NamespaceAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2097,18 +1494,6 @@ unsigned NamespaceAST::lastToken() const
return namespace_token + 1;
}
-NamespaceAliasDefinitionAST *NamespaceAliasDefinitionAST::clone(MemoryPool *pool) const
-{
- NamespaceAliasDefinitionAST *ast = new (pool) NamespaceAliasDefinitionAST;
- ast->namespace_token = namespace_token;
- ast->namespace_name_token = namespace_name_token;
- ast->equal_token = equal_token;
- if (name)
- ast->name = name->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void NamespaceAliasDefinitionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2135,16 +1520,6 @@ unsigned NamespaceAliasDefinitionAST::lastToken() const
return namespace_token + 1;
}
-NestedDeclaratorAST *NestedDeclaratorAST::clone(MemoryPool *pool) const
-{
- NestedDeclaratorAST *ast = new (pool) NestedDeclaratorAST;
- ast->lparen_token = lparen_token;
- if (declarator)
- ast->declarator = declarator->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void NestedDeclaratorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2167,16 +1542,6 @@ unsigned NestedDeclaratorAST::lastToken() const
return lparen_token + 1;
}
-NestedExpressionAST *NestedExpressionAST::clone(MemoryPool *pool) const
-{
- NestedExpressionAST *ast = new (pool) NestedExpressionAST;
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void NestedExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2199,17 +1564,6 @@ unsigned NestedExpressionAST::lastToken() const
return lparen_token + 1;
}
-NestedNameSpecifierAST *NestedNameSpecifierAST::clone(MemoryPool *pool) const
-{
- NestedNameSpecifierAST *ast = new (pool) NestedNameSpecifierAST;
- if (class_or_namespace_name)
- ast->class_or_namespace_name = class_or_namespace_name->clone(pool);
- ast->scope_token = scope_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void NestedNameSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2231,16 +1585,6 @@ unsigned NestedNameSpecifierAST::lastToken() const
return class_or_namespace_name->lastToken();
}
-NewPlacementAST *NewPlacementAST::clone(MemoryPool *pool) const
-{
- NewPlacementAST *ast = new (pool) NewPlacementAST;
- ast->lparen_token = lparen_token;
- if (expression_list)
- ast->expression_list = expression_list->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void NewPlacementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2261,18 +1605,6 @@ unsigned NewPlacementAST::lastToken() const
return rparen_token + 1;
}
-NewArrayDeclaratorAST *NewArrayDeclaratorAST::clone(MemoryPool *pool) const
-{
- NewArrayDeclaratorAST *ast = new (pool) NewArrayDeclaratorAST;
- ast->lbracket_token = lbracket_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rbracket_token = rbracket_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void NewArrayDeclaratorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2292,25 +1624,6 @@ unsigned NewArrayDeclaratorAST::lastToken() const
return rbracket_token + 1;
}
-NewExpressionAST *NewExpressionAST::clone(MemoryPool *pool) const
-{
- NewExpressionAST *ast = new (pool) NewExpressionAST;
-
- ast->scope_token = scope_token;
- ast->new_token = new_token;
- if (new_placement)
- ast->new_placement = new_placement->clone(pool);
- ast->lparen_token = lparen_token;
- if (type_id)
- ast->type_id = type_id->clone(pool);
- ast->rparen_token = rparen_token;
- if (new_type_id)
- ast->new_type_id = new_type_id->clone(pool);
- if (new_initializer)
- ast->new_initializer = new_initializer->clone(pool);
- return ast;
-}
-
void NewExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2340,16 +1653,6 @@ unsigned NewExpressionAST::lastToken() const
return 0;
}
-NewInitializerAST *NewInitializerAST::clone(MemoryPool *pool) const
-{
- NewInitializerAST *ast = new (pool) NewInitializerAST;
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void NewInitializerAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2372,29 +1675,6 @@ unsigned NewInitializerAST::lastToken() const
return lparen_token + 1;
}
-TypeIdAST *TypeIdAST::clone(MemoryPool *pool) const
-{
- TypeIdAST *ast = new (pool) TypeIdAST;
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- if (declarator)
- ast->declarator = declarator->clone(pool);
- return ast;
-}
-
-NewTypeIdAST *NewTypeIdAST::clone(MemoryPool *pool) const
-{
- NewTypeIdAST *ast = new (pool) NewTypeIdAST;
-
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- if (ptr_operators)
- ast->ptr_operators = ptr_operators->clone(pool);
- if (new_array_declarators)
- ast->new_array_declarators = new_array_declarators->clone(pool);
- return ast;
-}
-
void NewTypeIdAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2435,13 +1715,6 @@ unsigned NewTypeIdAST::lastToken() const
return 0;
}
-NumericLiteralAST *NumericLiteralAST::clone(MemoryPool *pool) const
-{
- NumericLiteralAST *ast = new (pool) NumericLiteralAST;
- ast->literal_token = literal_token;
- return ast;
-}
-
void NumericLiteralAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2459,15 +1732,6 @@ unsigned NumericLiteralAST::lastToken() const
return literal_token + 1;
}
-OperatorAST *OperatorAST::clone(MemoryPool *pool) const
-{
- OperatorAST *ast = new (pool) OperatorAST;
- ast->op_token = op_token;
- ast->open_token = open_token;
- ast->close_token = close_token;
- return ast;
-}
-
void OperatorAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2489,15 +1753,6 @@ unsigned OperatorAST::lastToken() const
return op_token + 1;
}
-OperatorFunctionIdAST *OperatorFunctionIdAST::clone(MemoryPool *pool) const
-{
- OperatorFunctionIdAST *ast = new (pool) OperatorFunctionIdAST;
- ast->operator_token = operator_token;
- if (op)
- ast->op = op->clone(pool);
- return ast;
-}
-
void OperatorFunctionIdAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2518,19 +1773,6 @@ unsigned OperatorFunctionIdAST::lastToken() const
return operator_token + 1;
}
-ParameterDeclarationAST *ParameterDeclarationAST::clone(MemoryPool *pool) const
-{
- ParameterDeclarationAST *ast = new (pool) ParameterDeclarationAST;
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- if (declarator)
- ast->declarator = declarator->clone(pool);
- ast->equal_token = equal_token;
- if (expression)
- ast->expression = expression->clone(pool);
- return ast;
-}
-
void ParameterDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2563,15 +1805,6 @@ unsigned ParameterDeclarationAST::lastToken() const
return 0;
}
-ParameterDeclarationClauseAST *ParameterDeclarationClauseAST::clone(MemoryPool *pool) const
-{
- ParameterDeclarationClauseAST *ast = new (pool) ParameterDeclarationClauseAST;
- if (parameter_declarations)
- ast->parameter_declarations = parameter_declarations;
- ast->dot_dot_dot_token = dot_dot_dot_token;
- return ast;
-}
-
void ParameterDeclarationClauseAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2596,15 +1829,6 @@ unsigned ParameterDeclarationClauseAST::lastToken() const
return parameter_declarations->lastToken();
}
-PointerAST *PointerAST::clone(MemoryPool *pool) const
-{
- PointerAST *ast = new (pool) PointerAST;
- ast->star_token = star_token;
- if (cv_qualifier_seq)
- ast->cv_qualifier_seq = cv_qualifier_seq->clone(pool);
- return ast;
-}
-
void PointerAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2629,18 +1853,6 @@ unsigned PointerAST::lastToken() const
return star_token + 1;
}
-PointerToMemberAST *PointerToMemberAST::clone(MemoryPool *pool) const
-{
- PointerToMemberAST *ast = new (pool) PointerToMemberAST;
- ast->global_scope_token = global_scope_token;
- if (nested_name_specifier)
- ast->nested_name_specifier = nested_name_specifier->clone(pool);
- ast->star_token = star_token;
- if (cv_qualifier_seq)
- ast->cv_qualifier_seq = cv_qualifier_seq->clone(pool);
- return ast;
-}
-
void PointerToMemberAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2682,13 +1894,6 @@ unsigned PointerToMemberAST::lastToken() const
return 0;
}
-PostIncrDecrAST *PostIncrDecrAST::clone(MemoryPool *pool) const
-{
- PostIncrDecrAST *ast = new (pool) PostIncrDecrAST;
- ast->incr_decr_token = incr_decr_token;
- return ast;
-}
-
void PostIncrDecrAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2706,16 +1911,6 @@ unsigned PostIncrDecrAST::lastToken() const
return incr_decr_token + 1;
}
-PostfixExpressionAST *PostfixExpressionAST::clone(MemoryPool *pool) const
-{
- PostfixExpressionAST *ast = new (pool) PostfixExpressionAST;
- if (base_expression)
- ast->base_expression = base_expression->clone(pool);
- if (postfix_expressions)
- ast->postfix_expressions = postfix_expressions->clone(pool);
- return ast;
-}
-
void PostfixExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2740,17 +1935,6 @@ unsigned PostfixExpressionAST::lastToken() const
return base_expression->lastToken();
}
-QualifiedNameAST *QualifiedNameAST::clone(MemoryPool *pool) const
-{
- QualifiedNameAST *ast = new (pool) QualifiedNameAST;
- ast->global_scope_token = global_scope_token;
- if (nested_name_specifier)
- ast->nested_name_specifier = nested_name_specifier->clone(pool);
- if (unqualified_name)
- ast->unqualified_name = unqualified_name->clone(pool);
- return ast;
-}
-
void QualifiedNameAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2785,13 +1969,6 @@ unsigned QualifiedNameAST::lastToken() const
return 0;
}
-ReferenceAST *ReferenceAST::clone(MemoryPool *pool) const
-{
- ReferenceAST *ast = new (pool) ReferenceAST;
- ast->amp_token = amp_token;
- return ast;
-}
-
void ReferenceAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2809,16 +1986,6 @@ unsigned ReferenceAST::lastToken() const
return amp_token + 1;
}
-ReturnStatementAST *ReturnStatementAST::clone(MemoryPool *pool) const
-{
- ReturnStatementAST *ast = new (pool) ReturnStatementAST;
- ast->return_token = return_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void ReturnStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2841,17 +2008,6 @@ unsigned ReturnStatementAST::lastToken() const
return return_token + 1;
}
-SimpleDeclarationAST *SimpleDeclarationAST::clone(MemoryPool *pool) const
-{
- SimpleDeclarationAST *ast = new (pool) SimpleDeclarationAST;
- if (decl_specifier_seq)
- ast->decl_specifier_seq = decl_specifier_seq->clone(pool);
- if (declarators)
- ast->declarators = declarators->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void SimpleDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2890,13 +2046,6 @@ unsigned SimpleDeclarationAST::lastToken() const
return 0;
}
-SimpleNameAST *SimpleNameAST::clone(MemoryPool *pool) const
-{
- SimpleNameAST *ast = new (pool) SimpleNameAST;
- ast->identifier_token = identifier_token;
- return ast;
-}
-
void SimpleNameAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2921,15 +2070,6 @@ void SimpleSpecifierAST::accept0(ASTVisitor *visitor)
visitor->endVisit(this);
}
-SimpleSpecifierAST *SimpleSpecifierAST::clone(MemoryPool *pool) const
-{
- SimpleSpecifierAST *ast = new (pool) SimpleSpecifierAST;
- ast->specifier_token = specifier_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
unsigned SimpleSpecifierAST::firstToken() const
{
return specifier_token;
@@ -2940,19 +2080,6 @@ unsigned SimpleSpecifierAST::lastToken() const
return specifier_token + 1;
}
-TypeofSpecifierAST *TypeofSpecifierAST::clone(MemoryPool *pool) const
-{
- TypeofSpecifierAST *ast = new (pool) TypeofSpecifierAST;
- ast->typeof_token = typeof_token;
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void TypeofSpecifierAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -2973,15 +2100,6 @@ unsigned TypeofSpecifierAST::lastToken() const
return typeof_token + 1;
}
-SizeofExpressionAST *SizeofExpressionAST::clone(MemoryPool *pool) const
-{
- SizeofExpressionAST *ast = new (pool) SizeofExpressionAST;
- ast->sizeof_token = sizeof_token;
- if (expression)
- ast->expression = expression->clone(pool);
- return ast;
-}
-
void SizeofExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3002,15 +2120,6 @@ unsigned SizeofExpressionAST::lastToken() const
return sizeof_token + 1;
}
-StringLiteralAST *StringLiteralAST::clone(MemoryPool *pool) const
-{
- StringLiteralAST *ast = new (pool) StringLiteralAST;
- ast->literal_token = literal_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void StringLiteralAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3031,19 +2140,6 @@ unsigned StringLiteralAST::lastToken() const
return literal_token + 1;
}
-SwitchStatementAST *SwitchStatementAST::clone(MemoryPool *pool) const
-{
- SwitchStatementAST *ast = new (pool) SwitchStatementAST;
- ast->switch_token = switch_token;
- ast->lparen_token = lparen_token;
- if (condition)
- ast->condition = condition->clone(pool);
- ast->rparen_token = rparen_token;
- if (statement)
- ast->statement = statement->clone(pool);
- return ast;
-}
-
void SwitchStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3071,17 +2167,6 @@ unsigned SwitchStatementAST::lastToken() const
return switch_token + 1;
}
-TemplateArgumentListAST *TemplateArgumentListAST::clone(MemoryPool *pool) const
-{
- TemplateArgumentListAST *ast = new (pool) TemplateArgumentListAST;
- ast->comma_token = comma_token;
- if (template_argument)
- ast->template_argument = template_argument->clone(pool);
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void TemplateArgumentListAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3105,20 +2190,6 @@ unsigned TemplateArgumentListAST::lastToken() const
return 0;
}
-TemplateDeclarationAST *TemplateDeclarationAST::clone(MemoryPool *pool) const
-{
- TemplateDeclarationAST *ast = new (pool) TemplateDeclarationAST;
- ast->export_token = export_token;
- ast->template_token = template_token;
- ast->less_token = less_token;
- if (template_parameters)
- ast->template_parameters = template_parameters->clone(pool);
- ast->greater_token = greater_token;
- if (declaration)
- ast->declaration = declaration->clone(pool);
- return ast;
-}
-
void TemplateDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3159,17 +2230,6 @@ unsigned TemplateDeclarationAST::lastToken() const
return 0;
}
-TemplateIdAST *TemplateIdAST::clone(MemoryPool *pool) const
-{
- TemplateIdAST *ast = new (pool) TemplateIdAST;
- ast->identifier_token = identifier_token;
- ast->less_token = less_token;
- if (template_arguments)
- ast->template_arguments = template_arguments->clone(pool);
- ast->greater_token = greater_token;
- return ast;
-}
-
void TemplateIdAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3201,23 +2261,6 @@ unsigned TemplateIdAST::lastToken() const
return identifier_token + 1;
}
-TemplateTypeParameterAST *TemplateTypeParameterAST::clone(MemoryPool *pool) const
-{
- TemplateTypeParameterAST *ast = new (pool) TemplateTypeParameterAST;
- ast->template_token = template_token;
- ast->less_token = less_token;
- if (template_parameters)
- ast->template_parameters = template_parameters->clone(pool);
- ast->greater_token = greater_token;
- ast->class_token = class_token;
- if (name)
- ast->name = name->clone(pool);
- ast->equal_token = equal_token;
- if (type_id)
- ast->type_id = type_id->clone(pool);
- return ast;
-}
-
void TemplateTypeParameterAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3254,13 +2297,6 @@ unsigned TemplateTypeParameterAST::lastToken() const
return template_token + 1;
}
-ThisExpressionAST *ThisExpressionAST::clone(MemoryPool *pool) const
-{
- ThisExpressionAST *ast = new (pool) ThisExpressionAST;
- ast->this_token = this_token;
- return ast;
-}
-
void ThisExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3278,15 +2314,6 @@ unsigned ThisExpressionAST::lastToken() const
return this_token + 1;
}
-ThrowExpressionAST *ThrowExpressionAST::clone(MemoryPool *pool) const
-{
- ThrowExpressionAST *ast = new (pool) ThrowExpressionAST;
- ast->throw_token = throw_token;
- if (expression)
- ast->expression = expression->clone(pool);
- return ast;
-}
-
void ThrowExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3307,14 +2334,6 @@ unsigned ThrowExpressionAST::lastToken() const
return throw_token + 1;
}
-TranslationUnitAST *TranslationUnitAST::clone(MemoryPool *pool) const
-{
- TranslationUnitAST *ast = new (pool) TranslationUnitAST;
- if (declarations)
- ast->declarations = declarations->clone(pool);
- return ast;
-}
-
void TranslationUnitAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3339,17 +2358,6 @@ unsigned TranslationUnitAST::lastToken() const
return 0;
}
-TryBlockStatementAST *TryBlockStatementAST::clone(MemoryPool *pool) const
-{
- TryBlockStatementAST *ast = new (pool) TryBlockStatementAST;
- ast->try_token = try_token;
- if (statement)
- ast->statement = statement->clone(pool);
- if (catch_clause_seq)
- ast->catch_clause_seq = catch_clause_seq->clone(pool);
- return ast;
-}
-
void TryBlockStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3377,18 +2385,6 @@ unsigned TryBlockStatementAST::lastToken() const
return try_token + 1;
}
-TypeConstructorCallAST *TypeConstructorCallAST::clone(MemoryPool *pool) const
-{
- TypeConstructorCallAST *ast = new (pool) TypeConstructorCallAST;
- if (type_specifier)
- ast->type_specifier = type_specifier->clone(pool);
- ast->lparen_token = lparen_token;
- if (expression_list)
- ast->expression_list = expression_list;
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void TypeConstructorCallAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3456,17 +2452,6 @@ unsigned TypeIdAST::lastToken() const
return 0;
}
-TypeidExpressionAST *TypeidExpressionAST::clone(MemoryPool *pool) const
-{
- TypeidExpressionAST *ast = new (pool) TypeidExpressionAST;
- ast->typeid_token = typeid_token;
- ast->lparen_token = lparen_token;
- if (expression)
- ast->expression = expression->clone(pool);
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void TypeidExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3492,19 +2477,6 @@ unsigned TypeidExpressionAST::lastToken() const
return typeid_token + 1;
}
-TypenameCallExpressionAST *TypenameCallExpressionAST::clone(MemoryPool *pool) const
-{
- TypenameCallExpressionAST *ast = new (pool) TypenameCallExpressionAST;
- ast->typename_token = typename_token;
- if (name)
- ast->name = name->clone(pool);
- ast->lparen_token = lparen_token;
- if (expression_list)
- ast->expression_list = expression_list;
- ast->rparen_token = rparen_token;
- return ast;
-}
-
void TypenameCallExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3539,18 +2511,6 @@ unsigned TypenameCallExpressionAST::lastToken() const
return typename_token + 1;
}
-TypenameTypeParameterAST *TypenameTypeParameterAST::clone(MemoryPool *pool) const
-{
- TypenameTypeParameterAST *ast = new (pool) TypenameTypeParameterAST;
- ast->classkey_token = classkey_token;
- if (name)
- ast->name = name->clone(pool);
- ast->equal_token = equal_token;
- if (type_id)
- ast->type_id = type_id->clone(pool);
- return ast;
-}
-
void TypenameTypeParameterAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3576,15 +2536,6 @@ unsigned TypenameTypeParameterAST::lastToken() const
return classkey_token + 1;
}
-UnaryExpressionAST *UnaryExpressionAST::clone(MemoryPool *pool) const
-{
- UnaryExpressionAST *ast = new (pool) UnaryExpressionAST;
- ast->unary_op_token = unary_op_token;
- if (expression)
- ast->expression = expression->clone(pool);
- return ast;
-}
-
void UnaryExpressionAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3605,17 +2556,6 @@ unsigned UnaryExpressionAST::lastToken() const
return unary_op_token + 1;
}
-UsingAST *UsingAST::clone(MemoryPool *pool) const
-{
- UsingAST *ast = new (pool) UsingAST;
- ast->using_token = using_token;
- ast->typename_token = typename_token;
- if (name)
- ast->name = name->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void UsingAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3640,17 +2580,6 @@ unsigned UsingAST::lastToken() const
return using_token + 1;
}
-UsingDirectiveAST *UsingDirectiveAST::clone(MemoryPool *pool) const
-{
- UsingDirectiveAST *ast = new (pool) UsingDirectiveAST;
- ast->using_token = using_token;
- ast->namespace_token = namespace_token;
- if (name)
- ast->name = name->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void UsingDirectiveAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3675,19 +2604,6 @@ unsigned UsingDirectiveAST::lastToken() const
return using_token + 1;
}
-WhileStatementAST *WhileStatementAST::clone(MemoryPool *pool) const
-{
- WhileStatementAST *ast = new (pool) WhileStatementAST;
- ast->while_token = while_token;
- ast->lparen_token = lparen_token;
- if (condition)
- ast->condition = condition->clone(pool);
- ast->rparen_token = rparen_token;
- if (statement)
- ast->statement = statement->clone(pool);
- return ast;
-}
-
void WhileStatementAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3732,15 +2648,6 @@ unsigned IdentifierListAST::lastToken() const
return 0;
}
-IdentifierListAST *IdentifierListAST::clone(MemoryPool *pool) const
-{
- IdentifierListAST *ast = new (pool) IdentifierListAST;
- ast->identifier_token = identifier_token;
- if (next)
- ast->next = next->clone(pool);
- return ast;
-}
-
void IdentifierListAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -3773,18 +2680,6 @@ unsigned ObjCClassDeclarationAST::lastToken() const
return class_token + 1;
}
-ObjCClassDeclarationAST *ObjCClassDeclarationAST::clone(MemoryPool *pool) const
-{
- ObjCClassDeclarationAST *ast = new (pool) ObjCClassDeclarationAST;
- if (attributes)
- ast->attributes = attributes->clone(pool);
- ast->class_token = class_token;
- if (identifier_list)
- ast->identifier_list = identifier_list->clone(pool);
- ast->semicolon_token = semicolon_token;
- return ast;
-}
-
void ObjCClassDeclarationAST::accept0(ASTVisitor *visitor)
{
if (visitor->visit(this)) {
diff --git a/src/shared/cplusplus/ASTClone.cpp b/src/shared/cplusplus/ASTClone.cpp
new file mode 100644
index 0000000000..605c97c486
--- /dev/null
+++ b/src/shared/cplusplus/ASTClone.cpp
@@ -0,0 +1,1087 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Qt Software Information (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 qt-sales@nokia.com.
+**
+**************************************************************************/
+
+#include "AST.h"
+
+CPLUSPLUS_BEGIN_NAMESPACE
+
+SimpleSpecifierAST *SimpleSpecifierAST::clone(MemoryPool *pool) const
+{
+ SimpleSpecifierAST *ast = new (pool) SimpleSpecifierAST;
+ // copy SimpleSpecifierAST
+ ast->specifier_token = specifier_token;
+ return ast;
+}
+
+AttributeSpecifierAST *AttributeSpecifierAST::clone(MemoryPool *pool) const
+{
+ AttributeSpecifierAST *ast = new (pool) AttributeSpecifierAST;
+ // copy AttributeSpecifierAST
+ ast->attribute_token = attribute_token;
+ ast->first_lparen_token = first_lparen_token;
+ ast->second_lparen_token = second_lparen_token;
+ if (attributes) ast->attributes = attributes->clone(pool);
+ ast->first_rparen_token = first_rparen_token;
+ ast->second_rparen_token = second_rparen_token;
+ return ast;
+}
+
+AttributeAST *AttributeAST::clone(MemoryPool *pool) const
+{
+ AttributeAST *ast = new (pool) AttributeAST;
+ // copy AttributeAST
+ ast->identifier_token = identifier_token;
+ ast->lparen_token = lparen_token;
+ ast->tag_token = tag_token;
+ if (expression_list) ast->expression_list = expression_list->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (next) ast->next = next->clone(pool);
+ ast->comma_token = comma_token;
+ return ast;
+}
+
+TypeofSpecifierAST *TypeofSpecifierAST::clone(MemoryPool *pool) const
+{
+ TypeofSpecifierAST *ast = new (pool) TypeofSpecifierAST;
+ // copy TypeofSpecifierAST
+ ast->typeof_token = typeof_token;
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+DeclaratorAST *DeclaratorAST::clone(MemoryPool *pool) const
+{
+ DeclaratorAST *ast = new (pool) DeclaratorAST;
+ // copy DeclaratorAST
+ if (ptr_operators) ast->ptr_operators = ptr_operators->clone(pool);
+ if (core_declarator) ast->core_declarator = core_declarator->clone(pool);
+ if (postfix_declarators) ast->postfix_declarators = postfix_declarators->clone(pool);
+ if (attributes) ast->attributes = attributes->clone(pool);
+ ast->equals_token = equals_token;
+ if (initializer) ast->initializer = initializer->clone(pool);
+ return ast;
+}
+
+ExpressionListAST *ExpressionListAST::clone(MemoryPool *pool) const
+{
+ ExpressionListAST *ast = new (pool) ExpressionListAST;
+ // copy ExpressionListAST
+ ast->comma_token = comma_token;
+ if (expression) ast->expression = expression->clone(pool);
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+SimpleDeclarationAST *SimpleDeclarationAST::clone(MemoryPool *pool) const
+{
+ SimpleDeclarationAST *ast = new (pool) SimpleDeclarationAST;
+ // copy SimpleDeclarationAST
+ ast->qt_invokable_token = qt_invokable_token;
+ if (decl_specifier_seq) ast->decl_specifier_seq = decl_specifier_seq->clone(pool);
+ if (declarators) ast->declarators = declarators->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+EmptyDeclarationAST *EmptyDeclarationAST::clone(MemoryPool *pool) const
+{
+ EmptyDeclarationAST *ast = new (pool) EmptyDeclarationAST;
+ // copy EmptyDeclarationAST
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+AccessDeclarationAST *AccessDeclarationAST::clone(MemoryPool *pool) const
+{
+ AccessDeclarationAST *ast = new (pool) AccessDeclarationAST;
+ // copy AccessDeclarationAST
+ ast->access_specifier_token = access_specifier_token;
+ ast->slots_token = slots_token;
+ ast->colon_token = colon_token;
+ return ast;
+}
+
+AsmDefinitionAST *AsmDefinitionAST::clone(MemoryPool *pool) const
+{
+ AsmDefinitionAST *ast = new (pool) AsmDefinitionAST;
+ // copy AsmDefinitionAST
+ ast->asm_token = asm_token;
+ ast->volatile_token = volatile_token;
+ ast->lparen_token = lparen_token;
+ ast->rparen_token = rparen_token;
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+BaseSpecifierAST *BaseSpecifierAST::clone(MemoryPool *pool) const
+{
+ BaseSpecifierAST *ast = new (pool) BaseSpecifierAST;
+ // copy BaseSpecifierAST
+ ast->comma_token = comma_token;
+ ast->virtual_token = virtual_token;
+ ast->access_specifier_token = access_specifier_token;
+ if (name) ast->name = name->clone(pool);
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+CompoundLiteralAST *CompoundLiteralAST::clone(MemoryPool *pool) const
+{
+ CompoundLiteralAST *ast = new (pool) CompoundLiteralAST;
+ // copy CompoundLiteralAST
+ ast->lparen_token = lparen_token;
+ if (type_id) ast->type_id = type_id->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (initializer) ast->initializer = initializer->clone(pool);
+ return ast;
+}
+
+QtMethodAST *QtMethodAST::clone(MemoryPool *pool) const
+{
+ QtMethodAST *ast = new (pool) QtMethodAST;
+ // copy QtMethodAST
+ ast->method_token = method_token;
+ ast->lparen_token = lparen_token;
+ if (declarator) ast->declarator = declarator->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+BinaryExpressionAST *BinaryExpressionAST::clone(MemoryPool *pool) const
+{
+ BinaryExpressionAST *ast = new (pool) BinaryExpressionAST;
+ // copy BinaryExpressionAST
+ if (left_expression) ast->left_expression = left_expression->clone(pool);
+ ast->binary_op_token = binary_op_token;
+ if (right_expression) ast->right_expression = right_expression->clone(pool);
+ return ast;
+}
+
+CastExpressionAST *CastExpressionAST::clone(MemoryPool *pool) const
+{
+ CastExpressionAST *ast = new (pool) CastExpressionAST;
+ // copy CastExpressionAST
+ ast->lparen_token = lparen_token;
+ if (type_id) ast->type_id = type_id->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ return ast;
+}
+
+ClassSpecifierAST *ClassSpecifierAST::clone(MemoryPool *pool) const
+{
+ ClassSpecifierAST *ast = new (pool) ClassSpecifierAST;
+ // copy ClassSpecifierAST
+ ast->classkey_token = classkey_token;
+ if (attributes) ast->attributes = attributes->clone(pool);
+ if (name) ast->name = name->clone(pool);
+ ast->colon_token = colon_token;
+ if (base_clause) ast->base_clause = base_clause->clone(pool);
+ ast->lbrace_token = lbrace_token;
+ if (member_specifiers) ast->member_specifiers = member_specifiers->clone(pool);
+ ast->rbrace_token = rbrace_token;
+ return ast;
+}
+
+CaseStatementAST *CaseStatementAST::clone(MemoryPool *pool) const
+{
+ CaseStatementAST *ast = new (pool) CaseStatementAST;
+ // copy CaseStatementAST
+ ast->case_token = case_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->colon_token = colon_token;
+ if (statement) ast->statement = statement->clone(pool);
+ return ast;
+}
+
+CompoundStatementAST *CompoundStatementAST::clone(MemoryPool *pool) const
+{
+ CompoundStatementAST *ast = new (pool) CompoundStatementAST;
+ // copy CompoundStatementAST
+ ast->lbrace_token = lbrace_token;
+ if (statements) ast->statements = statements->clone(pool);
+ ast->rbrace_token = rbrace_token;
+ return ast;
+}
+
+ConditionAST *ConditionAST::clone(MemoryPool *pool) const
+{
+ ConditionAST *ast = new (pool) ConditionAST;
+ // copy ConditionAST
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ if (declarator) ast->declarator = declarator->clone(pool);
+ return ast;
+}
+
+ConditionalExpressionAST *ConditionalExpressionAST::clone(MemoryPool *pool) const
+{
+ ConditionalExpressionAST *ast = new (pool) ConditionalExpressionAST;
+ // copy ConditionalExpressionAST
+ if (condition) ast->condition = condition->clone(pool);
+ ast->question_token = question_token;
+ if (left_expression) ast->left_expression = left_expression->clone(pool);
+ ast->colon_token = colon_token;
+ if (right_expression) ast->right_expression = right_expression->clone(pool);
+ return ast;
+}
+
+CppCastExpressionAST *CppCastExpressionAST::clone(MemoryPool *pool) const
+{
+ CppCastExpressionAST *ast = new (pool) CppCastExpressionAST;
+ // copy CppCastExpressionAST
+ ast->cast_token = cast_token;
+ ast->less_token = less_token;
+ if (type_id) ast->type_id = type_id->clone(pool);
+ ast->greater_token = greater_token;
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+CtorInitializerAST *CtorInitializerAST::clone(MemoryPool *pool) const
+{
+ CtorInitializerAST *ast = new (pool) CtorInitializerAST;
+ // copy CtorInitializerAST
+ ast->colon_token = colon_token;
+ if (member_initializers) ast->member_initializers = member_initializers->clone(pool);
+ return ast;
+}
+
+DeclarationStatementAST *DeclarationStatementAST::clone(MemoryPool *pool) const
+{
+ DeclarationStatementAST *ast = new (pool) DeclarationStatementAST;
+ // copy DeclarationStatementAST
+ if (declaration) ast->declaration = declaration->clone(pool);
+ return ast;
+}
+
+DeclaratorIdAST *DeclaratorIdAST::clone(MemoryPool *pool) const
+{
+ DeclaratorIdAST *ast = new (pool) DeclaratorIdAST;
+ // copy DeclaratorIdAST
+ if (name) ast->name = name->clone(pool);
+ return ast;
+}
+
+NestedDeclaratorAST *NestedDeclaratorAST::clone(MemoryPool *pool) const
+{
+ NestedDeclaratorAST *ast = new (pool) NestedDeclaratorAST;
+ // copy NestedDeclaratorAST
+ ast->lparen_token = lparen_token;
+ if (declarator) ast->declarator = declarator->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+FunctionDeclaratorAST *FunctionDeclaratorAST::clone(MemoryPool *pool) const
+{
+ FunctionDeclaratorAST *ast = new (pool) FunctionDeclaratorAST;
+ // copy FunctionDeclaratorAST
+ ast->lparen_token = lparen_token;
+ if (parameters) ast->parameters = parameters->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (cv_qualifier_seq) ast->cv_qualifier_seq = cv_qualifier_seq->clone(pool);
+ if (exception_specification) ast->exception_specification = exception_specification->clone(pool);
+ if (as_cpp_initializer) ast->as_cpp_initializer = as_cpp_initializer->clone(pool);
+ return ast;
+}
+
+ArrayDeclaratorAST *ArrayDeclaratorAST::clone(MemoryPool *pool) const
+{
+ ArrayDeclaratorAST *ast = new (pool) ArrayDeclaratorAST;
+ // copy ArrayDeclaratorAST
+ ast->lbracket_token = lbracket_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rbracket_token = rbracket_token;
+ return ast;
+}
+
+DeclaratorListAST *DeclaratorListAST::clone(MemoryPool *pool) const
+{
+ DeclaratorListAST *ast = new (pool) DeclaratorListAST;
+ // copy DeclaratorListAST
+ ast->comma_token = comma_token;
+ if (declarator) ast->declarator = declarator->clone(pool);
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+DeleteExpressionAST *DeleteExpressionAST::clone(MemoryPool *pool) const
+{
+ DeleteExpressionAST *ast = new (pool) DeleteExpressionAST;
+ // copy DeleteExpressionAST
+ ast->scope_token = scope_token;
+ ast->delete_token = delete_token;
+ ast->lbracket_token = lbracket_token;
+ ast->rbracket_token = rbracket_token;
+ if (expression) ast->expression = expression->clone(pool);
+ return ast;
+}
+
+DoStatementAST *DoStatementAST::clone(MemoryPool *pool) const
+{
+ DoStatementAST *ast = new (pool) DoStatementAST;
+ // copy DoStatementAST
+ ast->do_token = do_token;
+ if (statement) ast->statement = statement->clone(pool);
+ ast->while_token = while_token;
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+NamedTypeSpecifierAST *NamedTypeSpecifierAST::clone(MemoryPool *pool) const
+{
+ NamedTypeSpecifierAST *ast = new (pool) NamedTypeSpecifierAST;
+ // copy NamedTypeSpecifierAST
+ if (name) ast->name = name->clone(pool);
+ return ast;
+}
+
+ElaboratedTypeSpecifierAST *ElaboratedTypeSpecifierAST::clone(MemoryPool *pool) const
+{
+ ElaboratedTypeSpecifierAST *ast = new (pool) ElaboratedTypeSpecifierAST;
+ // copy ElaboratedTypeSpecifierAST
+ ast->classkey_token = classkey_token;
+ if (name) ast->name = name->clone(pool);
+ return ast;
+}
+
+EnumSpecifierAST *EnumSpecifierAST::clone(MemoryPool *pool) const
+{
+ EnumSpecifierAST *ast = new (pool) EnumSpecifierAST;
+ // copy EnumSpecifierAST
+ ast->enum_token = enum_token;
+ if (name) ast->name = name->clone(pool);
+ ast->lbrace_token = lbrace_token;
+ if (enumerators) ast->enumerators = enumerators->clone(pool);
+ ast->rbrace_token = rbrace_token;
+ return ast;
+}
+
+EnumeratorAST *EnumeratorAST::clone(MemoryPool *pool) const
+{
+ EnumeratorAST *ast = new (pool) EnumeratorAST;
+ // copy EnumeratorAST
+ ast->comma_token = comma_token;
+ ast->identifier_token = identifier_token;
+ ast->equal_token = equal_token;
+ if (expression) ast->expression = expression->clone(pool);
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+ExceptionDeclarationAST *ExceptionDeclarationAST::clone(MemoryPool *pool) const
+{
+ ExceptionDeclarationAST *ast = new (pool) ExceptionDeclarationAST;
+ // copy ExceptionDeclarationAST
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ if (declarator) ast->declarator = declarator->clone(pool);
+ ast->dot_dot_dot_token = dot_dot_dot_token;
+ return ast;
+}
+
+ExceptionSpecificationAST *ExceptionSpecificationAST::clone(MemoryPool *pool) const
+{
+ ExceptionSpecificationAST *ast = new (pool) ExceptionSpecificationAST;
+ // copy ExceptionSpecificationAST
+ ast->throw_token = throw_token;
+ ast->lparen_token = lparen_token;
+ ast->dot_dot_dot_token = dot_dot_dot_token;
+ if (type_ids) ast->type_ids = type_ids->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+ExpressionOrDeclarationStatementAST *ExpressionOrDeclarationStatementAST::clone(MemoryPool *pool) const
+{
+ ExpressionOrDeclarationStatementAST *ast = new (pool) ExpressionOrDeclarationStatementAST;
+ // copy ExpressionOrDeclarationStatementAST
+ if (expression) ast->expression = expression->clone(pool);
+ if (declaration) ast->declaration = declaration->clone(pool);
+ return ast;
+}
+
+ExpressionStatementAST *ExpressionStatementAST::clone(MemoryPool *pool) const
+{
+ ExpressionStatementAST *ast = new (pool) ExpressionStatementAST;
+ // copy ExpressionStatementAST
+ if (expression) ast->expression = expression->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+FunctionDefinitionAST *FunctionDefinitionAST::clone(MemoryPool *pool) const
+{
+ FunctionDefinitionAST *ast = new (pool) FunctionDefinitionAST;
+ // copy FunctionDefinitionAST
+ ast->qt_invokable_token = qt_invokable_token;
+ if (decl_specifier_seq) ast->decl_specifier_seq = decl_specifier_seq->clone(pool);
+ if (declarator) ast->declarator = declarator->clone(pool);
+ if (ctor_initializer) ast->ctor_initializer = ctor_initializer->clone(pool);
+ if (function_body) ast->function_body = function_body->clone(pool);
+ return ast;
+}
+
+ForStatementAST *ForStatementAST::clone(MemoryPool *pool) const
+{
+ ForStatementAST *ast = new (pool) ForStatementAST;
+ // copy ForStatementAST
+ ast->for_token = for_token;
+ ast->lparen_token = lparen_token;
+ if (initializer) ast->initializer = initializer->clone(pool);
+ if (condition) ast->condition = condition->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (statement) ast->statement = statement->clone(pool);
+ return ast;
+}
+
+IfStatementAST *IfStatementAST::clone(MemoryPool *pool) const
+{
+ IfStatementAST *ast = new (pool) IfStatementAST;
+ // copy IfStatementAST
+ ast->if_token = if_token;
+ ast->lparen_token = lparen_token;
+ if (condition) ast->condition = condition->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (statement) ast->statement = statement->clone(pool);
+ ast->else_token = else_token;
+ if (else_statement) ast->else_statement = else_statement->clone(pool);
+ return ast;
+}
+
+ArrayInitializerAST *ArrayInitializerAST::clone(MemoryPool *pool) const
+{
+ ArrayInitializerAST *ast = new (pool) ArrayInitializerAST;
+ // copy ArrayInitializerAST
+ ast->lbrace_token = lbrace_token;
+ if (expression_list) ast->expression_list = expression_list->clone(pool);
+ ast->rbrace_token = rbrace_token;
+ return ast;
+}
+
+LabeledStatementAST *LabeledStatementAST::clone(MemoryPool *pool) const
+{
+ LabeledStatementAST *ast = new (pool) LabeledStatementAST;
+ // copy LabeledStatementAST
+ ast->label_token = label_token;
+ ast->colon_token = colon_token;
+ if (statement) ast->statement = statement->clone(pool);
+ return ast;
+}
+
+LinkageBodyAST *LinkageBodyAST::clone(MemoryPool *pool) const
+{
+ LinkageBodyAST *ast = new (pool) LinkageBodyAST;
+ // copy LinkageBodyAST
+ ast->lbrace_token = lbrace_token;
+ if (declarations) ast->declarations = declarations->clone(pool);
+ ast->rbrace_token = rbrace_token;
+ return ast;
+}
+
+LinkageSpecificationAST *LinkageSpecificationAST::clone(MemoryPool *pool) const
+{
+ LinkageSpecificationAST *ast = new (pool) LinkageSpecificationAST;
+ // copy LinkageSpecificationAST
+ ast->extern_token = extern_token;
+ ast->extern_type_token = extern_type_token;
+ if (declaration) ast->declaration = declaration->clone(pool);
+ return ast;
+}
+
+MemInitializerAST *MemInitializerAST::clone(MemoryPool *pool) const
+{
+ MemInitializerAST *ast = new (pool) MemInitializerAST;
+ // copy MemInitializerAST
+ ast->comma_token = comma_token;
+ if (name) ast->name = name->clone(pool);
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+NestedNameSpecifierAST *NestedNameSpecifierAST::clone(MemoryPool *pool) const
+{
+ NestedNameSpecifierAST *ast = new (pool) NestedNameSpecifierAST;
+ // copy NestedNameSpecifierAST
+ if (class_or_namespace_name) ast->class_or_namespace_name = class_or_namespace_name->clone(pool);
+ ast->scope_token = scope_token;
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+QualifiedNameAST *QualifiedNameAST::clone(MemoryPool *pool) const
+{
+ QualifiedNameAST *ast = new (pool) QualifiedNameAST;
+ // copy QualifiedNameAST
+ ast->global_scope_token = global_scope_token;
+ if (nested_name_specifier) ast->nested_name_specifier = nested_name_specifier->clone(pool);
+ if (unqualified_name) ast->unqualified_name = unqualified_name->clone(pool);
+ return ast;
+}
+
+OperatorFunctionIdAST *OperatorFunctionIdAST::clone(MemoryPool *pool) const
+{
+ OperatorFunctionIdAST *ast = new (pool) OperatorFunctionIdAST;
+ // copy OperatorFunctionIdAST
+ ast->operator_token = operator_token;
+ if (op) ast->op = op->clone(pool);
+ return ast;
+}
+
+ConversionFunctionIdAST *ConversionFunctionIdAST::clone(MemoryPool *pool) const
+{
+ ConversionFunctionIdAST *ast = new (pool) ConversionFunctionIdAST;
+ // copy ConversionFunctionIdAST
+ ast->operator_token = operator_token;
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ if (ptr_operators) ast->ptr_operators = ptr_operators->clone(pool);
+ return ast;
+}
+
+SimpleNameAST *SimpleNameAST::clone(MemoryPool *pool) const
+{
+ SimpleNameAST *ast = new (pool) SimpleNameAST;
+ // copy SimpleNameAST
+ ast->identifier_token = identifier_token;
+ return ast;
+}
+
+DestructorNameAST *DestructorNameAST::clone(MemoryPool *pool) const
+{
+ DestructorNameAST *ast = new (pool) DestructorNameAST;
+ // copy DestructorNameAST
+ ast->tilde_token = tilde_token;
+ ast->identifier_token = identifier_token;
+ return ast;
+}
+
+TemplateIdAST *TemplateIdAST::clone(MemoryPool *pool) const
+{
+ TemplateIdAST *ast = new (pool) TemplateIdAST;
+ // copy TemplateIdAST
+ ast->identifier_token = identifier_token;
+ ast->less_token = less_token;
+ if (template_arguments) ast->template_arguments = template_arguments->clone(pool);
+ ast->greater_token = greater_token;
+ return ast;
+}
+
+NamespaceAST *NamespaceAST::clone(MemoryPool *pool) const
+{
+ NamespaceAST *ast = new (pool) NamespaceAST;
+ // copy NamespaceAST
+ ast->namespace_token = namespace_token;
+ ast->identifier_token = identifier_token;
+ if (attributes) ast->attributes = attributes->clone(pool);
+ if (linkage_body) ast->linkage_body = linkage_body->clone(pool);
+ return ast;
+}
+
+NamespaceAliasDefinitionAST *NamespaceAliasDefinitionAST::clone(MemoryPool *pool) const
+{
+ NamespaceAliasDefinitionAST *ast = new (pool) NamespaceAliasDefinitionAST;
+ // copy NamespaceAliasDefinitionAST
+ ast->namespace_token = namespace_token;
+ ast->namespace_name_token = namespace_name_token;
+ ast->equal_token = equal_token;
+ if (name) ast->name = name->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+NewPlacementAST *NewPlacementAST::clone(MemoryPool *pool) const
+{
+ NewPlacementAST *ast = new (pool) NewPlacementAST;
+ // copy NewPlacementAST
+ ast->lparen_token = lparen_token;
+ if (expression_list) ast->expression_list = expression_list->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+NewArrayDeclaratorAST *NewArrayDeclaratorAST::clone(MemoryPool *pool) const
+{
+ NewArrayDeclaratorAST *ast = new (pool) NewArrayDeclaratorAST;
+ // copy NewArrayDeclaratorAST
+ ast->lbracket_token = lbracket_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rbracket_token = rbracket_token;
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+NewExpressionAST *NewExpressionAST::clone(MemoryPool *pool) const
+{
+ NewExpressionAST *ast = new (pool) NewExpressionAST;
+ // copy NewExpressionAST
+ ast->scope_token = scope_token;
+ ast->new_token = new_token;
+ if (new_placement) ast->new_placement = new_placement->clone(pool);
+ ast->lparen_token = lparen_token;
+ if (type_id) ast->type_id = type_id->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (new_type_id) ast->new_type_id = new_type_id->clone(pool);
+ if (new_initializer) ast->new_initializer = new_initializer->clone(pool);
+ return ast;
+}
+
+NewInitializerAST *NewInitializerAST::clone(MemoryPool *pool) const
+{
+ NewInitializerAST *ast = new (pool) NewInitializerAST;
+ // copy NewInitializerAST
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+NewTypeIdAST *NewTypeIdAST::clone(MemoryPool *pool) const
+{
+ NewTypeIdAST *ast = new (pool) NewTypeIdAST;
+ // copy NewTypeIdAST
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ if (ptr_operators) ast->ptr_operators = ptr_operators->clone(pool);
+ if (new_array_declarators) ast->new_array_declarators = new_array_declarators->clone(pool);
+ return ast;
+}
+
+OperatorAST *OperatorAST::clone(MemoryPool *pool) const
+{
+ OperatorAST *ast = new (pool) OperatorAST;
+ // copy OperatorAST
+ ast->op_token = op_token;
+ ast->open_token = open_token;
+ ast->close_token = close_token;
+ return ast;
+}
+
+ParameterDeclarationAST *ParameterDeclarationAST::clone(MemoryPool *pool) const
+{
+ ParameterDeclarationAST *ast = new (pool) ParameterDeclarationAST;
+ // copy ParameterDeclarationAST
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ if (declarator) ast->declarator = declarator->clone(pool);
+ ast->equal_token = equal_token;
+ if (expression) ast->expression = expression->clone(pool);
+ return ast;
+}
+
+ParameterDeclarationClauseAST *ParameterDeclarationClauseAST::clone(MemoryPool *pool) const
+{
+ ParameterDeclarationClauseAST *ast = new (pool) ParameterDeclarationClauseAST;
+ // copy ParameterDeclarationClauseAST
+ if (parameter_declarations) ast->parameter_declarations = parameter_declarations->clone(pool);
+ ast->dot_dot_dot_token = dot_dot_dot_token;
+ return ast;
+}
+
+CallAST *CallAST::clone(MemoryPool *pool) const
+{
+ CallAST *ast = new (pool) CallAST;
+ // copy CallAST
+ ast->lparen_token = lparen_token;
+ if (expression_list) ast->expression_list = expression_list->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+ArrayAccessAST *ArrayAccessAST::clone(MemoryPool *pool) const
+{
+ ArrayAccessAST *ast = new (pool) ArrayAccessAST;
+ // copy ArrayAccessAST
+ ast->lbracket_token = lbracket_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rbracket_token = rbracket_token;
+ return ast;
+}
+
+PostIncrDecrAST *PostIncrDecrAST::clone(MemoryPool *pool) const
+{
+ PostIncrDecrAST *ast = new (pool) PostIncrDecrAST;
+ // copy PostIncrDecrAST
+ ast->incr_decr_token = incr_decr_token;
+ return ast;
+}
+
+MemberAccessAST *MemberAccessAST::clone(MemoryPool *pool) const
+{
+ MemberAccessAST *ast = new (pool) MemberAccessAST;
+ // copy MemberAccessAST
+ ast->access_token = access_token;
+ ast->template_token = template_token;
+ if (member_name) ast->member_name = member_name->clone(pool);
+ return ast;
+}
+
+TypeidExpressionAST *TypeidExpressionAST::clone(MemoryPool *pool) const
+{
+ TypeidExpressionAST *ast = new (pool) TypeidExpressionAST;
+ // copy TypeidExpressionAST
+ ast->typeid_token = typeid_token;
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+TypenameCallExpressionAST *TypenameCallExpressionAST::clone(MemoryPool *pool) const
+{
+ TypenameCallExpressionAST *ast = new (pool) TypenameCallExpressionAST;
+ // copy TypenameCallExpressionAST
+ ast->typename_token = typename_token;
+ if (name) ast->name = name->clone(pool);
+ ast->lparen_token = lparen_token;
+ if (expression_list) ast->expression_list = expression_list->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+TypeConstructorCallAST *TypeConstructorCallAST::clone(MemoryPool *pool) const
+{
+ TypeConstructorCallAST *ast = new (pool) TypeConstructorCallAST;
+ // copy TypeConstructorCallAST
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ ast->lparen_token = lparen_token;
+ if (expression_list) ast->expression_list = expression_list->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+PostfixExpressionAST *PostfixExpressionAST::clone(MemoryPool *pool) const
+{
+ PostfixExpressionAST *ast = new (pool) PostfixExpressionAST;
+ // copy PostfixExpressionAST
+ if (base_expression) ast->base_expression = base_expression->clone(pool);
+ if (postfix_expressions) ast->postfix_expressions = postfix_expressions->clone(pool);
+ return ast;
+}
+
+PointerToMemberAST *PointerToMemberAST::clone(MemoryPool *pool) const
+{
+ PointerToMemberAST *ast = new (pool) PointerToMemberAST;
+ // copy PointerToMemberAST
+ ast->global_scope_token = global_scope_token;
+ if (nested_name_specifier) ast->nested_name_specifier = nested_name_specifier->clone(pool);
+ ast->star_token = star_token;
+ if (cv_qualifier_seq) ast->cv_qualifier_seq = cv_qualifier_seq->clone(pool);
+ return ast;
+}
+
+PointerAST *PointerAST::clone(MemoryPool *pool) const
+{
+ PointerAST *ast = new (pool) PointerAST;
+ // copy PointerAST
+ ast->star_token = star_token;
+ if (cv_qualifier_seq) ast->cv_qualifier_seq = cv_qualifier_seq->clone(pool);
+ return ast;
+}
+
+ReferenceAST *ReferenceAST::clone(MemoryPool *pool) const
+{
+ ReferenceAST *ast = new (pool) ReferenceAST;
+ // copy ReferenceAST
+ ast->amp_token = amp_token;
+ return ast;
+}
+
+BreakStatementAST *BreakStatementAST::clone(MemoryPool *pool) const
+{
+ BreakStatementAST *ast = new (pool) BreakStatementAST;
+ // copy BreakStatementAST
+ ast->break_token = break_token;
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+ContinueStatementAST *ContinueStatementAST::clone(MemoryPool *pool) const
+{
+ ContinueStatementAST *ast = new (pool) ContinueStatementAST;
+ // copy ContinueStatementAST
+ ast->continue_token = continue_token;
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+GotoStatementAST *GotoStatementAST::clone(MemoryPool *pool) const
+{
+ GotoStatementAST *ast = new (pool) GotoStatementAST;
+ // copy GotoStatementAST
+ ast->goto_token = goto_token;
+ ast->identifier_token = identifier_token;
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+ReturnStatementAST *ReturnStatementAST::clone(MemoryPool *pool) const
+{
+ ReturnStatementAST *ast = new (pool) ReturnStatementAST;
+ // copy ReturnStatementAST
+ ast->return_token = return_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+SizeofExpressionAST *SizeofExpressionAST::clone(MemoryPool *pool) const
+{
+ SizeofExpressionAST *ast = new (pool) SizeofExpressionAST;
+ // copy SizeofExpressionAST
+ ast->sizeof_token = sizeof_token;
+ if (expression) ast->expression = expression->clone(pool);
+ return ast;
+}
+
+NumericLiteralAST *NumericLiteralAST::clone(MemoryPool *pool) const
+{
+ NumericLiteralAST *ast = new (pool) NumericLiteralAST;
+ // copy NumericLiteralAST
+ ast->literal_token = literal_token;
+ return ast;
+}
+
+BoolLiteralAST *BoolLiteralAST::clone(MemoryPool *pool) const
+{
+ BoolLiteralAST *ast = new (pool) BoolLiteralAST;
+ // copy BoolLiteralAST
+ ast->literal_token = literal_token;
+ return ast;
+}
+
+ThisExpressionAST *ThisExpressionAST::clone(MemoryPool *pool) const
+{
+ ThisExpressionAST *ast = new (pool) ThisExpressionAST;
+ // copy ThisExpressionAST
+ ast->this_token = this_token;
+ return ast;
+}
+
+NestedExpressionAST *NestedExpressionAST::clone(MemoryPool *pool) const
+{
+ NestedExpressionAST *ast = new (pool) NestedExpressionAST;
+ // copy NestedExpressionAST
+ ast->lparen_token = lparen_token;
+ if (expression) ast->expression = expression->clone(pool);
+ ast->rparen_token = rparen_token;
+ return ast;
+}
+
+StringLiteralAST *StringLiteralAST::clone(MemoryPool *pool) const
+{
+ StringLiteralAST *ast = new (pool) StringLiteralAST;
+ // copy StringLiteralAST
+ ast->literal_token = literal_token;
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+SwitchStatementAST *SwitchStatementAST::clone(MemoryPool *pool) const
+{
+ SwitchStatementAST *ast = new (pool) SwitchStatementAST;
+ // copy SwitchStatementAST
+ ast->switch_token = switch_token;
+ ast->lparen_token = lparen_token;
+ if (condition) ast->condition = condition->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (statement) ast->statement = statement->clone(pool);
+ return ast;
+}
+
+TemplateArgumentListAST *TemplateArgumentListAST::clone(MemoryPool *pool) const
+{
+ TemplateArgumentListAST *ast = new (pool) TemplateArgumentListAST;
+ // copy TemplateArgumentListAST
+ ast->comma_token = comma_token;
+ if (template_argument) ast->template_argument = template_argument->clone(pool);
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+TemplateDeclarationAST *TemplateDeclarationAST::clone(MemoryPool *pool) const
+{
+ TemplateDeclarationAST *ast = new (pool) TemplateDeclarationAST;
+ // copy TemplateDeclarationAST
+ ast->export_token = export_token;
+ ast->template_token = template_token;
+ ast->less_token = less_token;
+ if (template_parameters) ast->template_parameters = template_parameters->clone(pool);
+ ast->greater_token = greater_token;
+ if (declaration) ast->declaration = declaration->clone(pool);
+ return ast;
+}
+
+ThrowExpressionAST *ThrowExpressionAST::clone(MemoryPool *pool) const
+{
+ ThrowExpressionAST *ast = new (pool) ThrowExpressionAST;
+ // copy ThrowExpressionAST
+ ast->throw_token = throw_token;
+ if (expression) ast->expression = expression->clone(pool);
+ return ast;
+}
+
+TranslationUnitAST *TranslationUnitAST::clone(MemoryPool *pool) const
+{
+ TranslationUnitAST *ast = new (pool) TranslationUnitAST;
+ // copy TranslationUnitAST
+ if (declarations) ast->declarations = declarations->clone(pool);
+ return ast;
+}
+
+TryBlockStatementAST *TryBlockStatementAST::clone(MemoryPool *pool) const
+{
+ TryBlockStatementAST *ast = new (pool) TryBlockStatementAST;
+ // copy TryBlockStatementAST
+ ast->try_token = try_token;
+ if (statement) ast->statement = statement->clone(pool);
+ if (catch_clause_seq) ast->catch_clause_seq = catch_clause_seq->clone(pool);
+ return ast;
+}
+
+CatchClauseAST *CatchClauseAST::clone(MemoryPool *pool) const
+{
+ CatchClauseAST *ast = new (pool) CatchClauseAST;
+ // copy CatchClauseAST
+ ast->catch_token = catch_token;
+ ast->lparen_token = lparen_token;
+ if (exception_declaration) ast->exception_declaration = exception_declaration->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (statement) ast->statement = statement->clone(pool);
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+TypeIdAST *TypeIdAST::clone(MemoryPool *pool) const
+{
+ TypeIdAST *ast = new (pool) TypeIdAST;
+ // copy TypeIdAST
+ if (type_specifier) ast->type_specifier = type_specifier->clone(pool);
+ if (declarator) ast->declarator = declarator->clone(pool);
+ return ast;
+}
+
+TypenameTypeParameterAST *TypenameTypeParameterAST::clone(MemoryPool *pool) const
+{
+ TypenameTypeParameterAST *ast = new (pool) TypenameTypeParameterAST;
+ // copy TypenameTypeParameterAST
+ ast->classkey_token = classkey_token;
+ if (name) ast->name = name->clone(pool);
+ ast->equal_token = equal_token;
+ if (type_id) ast->type_id = type_id->clone(pool);
+ return ast;
+}
+
+TemplateTypeParameterAST *TemplateTypeParameterAST::clone(MemoryPool *pool) const
+{
+ TemplateTypeParameterAST *ast = new (pool) TemplateTypeParameterAST;
+ // copy TemplateTypeParameterAST
+ ast->template_token = template_token;
+ ast->less_token = less_token;
+ if (template_parameters) ast->template_parameters = template_parameters->clone(pool);
+ ast->greater_token = greater_token;
+ ast->class_token = class_token;
+ if (name) ast->name = name->clone(pool);
+ ast->equal_token = equal_token;
+ if (type_id) ast->type_id = type_id->clone(pool);
+ return ast;
+}
+
+UnaryExpressionAST *UnaryExpressionAST::clone(MemoryPool *pool) const
+{
+ UnaryExpressionAST *ast = new (pool) UnaryExpressionAST;
+ // copy UnaryExpressionAST
+ ast->unary_op_token = unary_op_token;
+ if (expression) ast->expression = expression->clone(pool);
+ return ast;
+}
+
+UsingAST *UsingAST::clone(MemoryPool *pool) const
+{
+ UsingAST *ast = new (pool) UsingAST;
+ // copy UsingAST
+ ast->using_token = using_token;
+ ast->typename_token = typename_token;
+ if (name) ast->name = name->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+UsingDirectiveAST *UsingDirectiveAST::clone(MemoryPool *pool) const
+{
+ UsingDirectiveAST *ast = new (pool) UsingDirectiveAST;
+ // copy UsingDirectiveAST
+ ast->using_token = using_token;
+ ast->namespace_token = namespace_token;
+ if (name) ast->name = name->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+WhileStatementAST *WhileStatementAST::clone(MemoryPool *pool) const
+{
+ WhileStatementAST *ast = new (pool) WhileStatementAST;
+ // copy WhileStatementAST
+ ast->while_token = while_token;
+ ast->lparen_token = lparen_token;
+ if (condition) ast->condition = condition->clone(pool);
+ ast->rparen_token = rparen_token;
+ if (statement) ast->statement = statement->clone(pool);
+ return ast;
+}
+
+IdentifierListAST *IdentifierListAST::clone(MemoryPool *pool) const
+{
+ IdentifierListAST *ast = new (pool) IdentifierListAST;
+ // copy IdentifierListAST
+ ast->identifier_token = identifier_token;
+ if (next) ast->next = next->clone(pool);
+ return ast;
+}
+
+ObjCClassDeclarationAST *ObjCClassDeclarationAST::clone(MemoryPool *pool) const
+{
+ ObjCClassDeclarationAST *ast = new (pool) ObjCClassDeclarationAST;
+ // copy ObjCClassDeclarationAST
+ if (attributes) ast->attributes = attributes->clone(pool);
+ ast->class_token = class_token;
+ if (identifier_list) ast->identifier_list = identifier_list->clone(pool);
+ ast->semicolon_token = semicolon_token;
+ return ast;
+}
+
+CPLUSPLUS_END_NAMESPACE
diff --git a/src/shared/cplusplus/cplusplus.pri b/src/shared/cplusplus/cplusplus.pri
index 3a62ed6b7d..b3abaa545c 100644
--- a/src/shared/cplusplus/cplusplus.pri
+++ b/src/shared/cplusplus/cplusplus.pri
@@ -41,6 +41,7 @@ HEADERS += \
SOURCES += \
$$PWD/AST.cpp \
+ $$PWD/ASTClone.cpp \
$$PWD/ASTVisitor.cpp \
$$PWD/Array.cpp \
$$PWD/CheckDeclaration.cpp \