1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights. These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
32 **************************************************************************/
38 // This file is automatically generated.
39 // Changes will be lost.
43 #include "MemoryPool.h"
45 using namespace CPlusPlus;
47 ObjCSelectorArgumentAST *ObjCSelectorArgumentAST::clone(MemoryPool *pool) const
49 ObjCSelectorArgumentAST *ast = new (pool) ObjCSelectorArgumentAST;
50 ast->name_token = name_token;
51 ast->colon_token = colon_token;
55 ObjCSelectorAST *ObjCSelectorAST::clone(MemoryPool *pool) const
57 ObjCSelectorAST *ast = new (pool) ObjCSelectorAST;
58 for (ObjCSelectorArgumentListAST *iter = selector_argument_list, **ast_iter = &ast->selector_argument_list;
59 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
60 *ast_iter = new (pool) ObjCSelectorArgumentListAST((iter->value) ? iter->value->clone(pool) : 0);
64 SimpleSpecifierAST *SimpleSpecifierAST::clone(MemoryPool *pool) const
66 SimpleSpecifierAST *ast = new (pool) SimpleSpecifierAST;
67 ast->specifier_token = specifier_token;
71 AttributeSpecifierAST *AttributeSpecifierAST::clone(MemoryPool *pool) const
73 AttributeSpecifierAST *ast = new (pool) AttributeSpecifierAST;
74 ast->attribute_token = attribute_token;
75 ast->first_lparen_token = first_lparen_token;
76 ast->second_lparen_token = second_lparen_token;
77 for (AttributeListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
78 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
79 *ast_iter = new (pool) AttributeListAST((iter->value) ? iter->value->clone(pool) : 0);
80 ast->first_rparen_token = first_rparen_token;
81 ast->second_rparen_token = second_rparen_token;
85 AttributeAST *AttributeAST::clone(MemoryPool *pool) const
87 AttributeAST *ast = new (pool) AttributeAST;
88 ast->identifier_token = identifier_token;
89 ast->lparen_token = lparen_token;
90 ast->tag_token = tag_token;
91 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
92 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
93 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
94 ast->rparen_token = rparen_token;
98 TypeofSpecifierAST *TypeofSpecifierAST::clone(MemoryPool *pool) const
100 TypeofSpecifierAST *ast = new (pool) TypeofSpecifierAST;
101 ast->typeof_token = typeof_token;
102 ast->lparen_token = lparen_token;
104 ast->expression = expression->clone(pool);
105 ast->rparen_token = rparen_token;
109 DeclaratorAST *DeclaratorAST::clone(MemoryPool *pool) const
111 DeclaratorAST *ast = new (pool) DeclaratorAST;
112 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
113 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
114 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
115 for (PtrOperatorListAST *iter = ptr_operator_list, **ast_iter = &ast->ptr_operator_list;
116 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
117 *ast_iter = new (pool) PtrOperatorListAST((iter->value) ? iter->value->clone(pool) : 0);
119 ast->core_declarator = core_declarator->clone(pool);
120 for (PostfixDeclaratorListAST *iter = postfix_declarator_list, **ast_iter = &ast->postfix_declarator_list;
121 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
122 *ast_iter = new (pool) PostfixDeclaratorListAST((iter->value) ? iter->value->clone(pool) : 0);
123 for (SpecifierListAST *iter = post_attribute_list, **ast_iter = &ast->post_attribute_list;
124 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
125 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
126 ast->equal_token = equal_token;
128 ast->initializer = initializer->clone(pool);
132 SimpleDeclarationAST *SimpleDeclarationAST::clone(MemoryPool *pool) const
134 SimpleDeclarationAST *ast = new (pool) SimpleDeclarationAST;
135 ast->qt_invokable_token = qt_invokable_token;
136 for (SpecifierListAST *iter = decl_specifier_list, **ast_iter = &ast->decl_specifier_list;
137 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
138 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
139 for (DeclaratorListAST *iter = declarator_list, **ast_iter = &ast->declarator_list;
140 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
141 *ast_iter = new (pool) DeclaratorListAST((iter->value) ? iter->value->clone(pool) : 0);
142 ast->semicolon_token = semicolon_token;
146 EmptyDeclarationAST *EmptyDeclarationAST::clone(MemoryPool *pool) const
148 EmptyDeclarationAST *ast = new (pool) EmptyDeclarationAST;
149 ast->semicolon_token = semicolon_token;
153 AccessDeclarationAST *AccessDeclarationAST::clone(MemoryPool *pool) const
155 AccessDeclarationAST *ast = new (pool) AccessDeclarationAST;
156 ast->access_specifier_token = access_specifier_token;
157 ast->slots_token = slots_token;
158 ast->colon_token = colon_token;
162 QtObjectTagAST *QtObjectTagAST::clone(MemoryPool *pool) const
164 QtObjectTagAST *ast = new (pool) QtObjectTagAST;
165 ast->q_object_token = q_object_token;
169 QtPrivateSlotAST *QtPrivateSlotAST::clone(MemoryPool *pool) const
171 QtPrivateSlotAST *ast = new (pool) QtPrivateSlotAST;
172 ast->q_private_slot_token = q_private_slot_token;
173 ast->lparen_token = lparen_token;
174 ast->dptr_token = dptr_token;
175 ast->dptr_lparen_token = dptr_lparen_token;
176 ast->dptr_rparen_token = dptr_rparen_token;
177 ast->comma_token = comma_token;
178 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
179 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
180 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
182 ast->declarator = declarator->clone(pool);
183 ast->rparen_token = rparen_token;
187 QtPropertyDeclarationItemAST *QtPropertyDeclarationItemAST::clone(MemoryPool *pool) const
189 QtPropertyDeclarationItemAST *ast = new (pool) QtPropertyDeclarationItemAST;
190 ast->item_name_token = item_name_token;
192 ast->expression = expression->clone(pool);
196 QtPropertyDeclarationAST *QtPropertyDeclarationAST::clone(MemoryPool *pool) const
198 QtPropertyDeclarationAST *ast = new (pool) QtPropertyDeclarationAST;
199 ast->property_specifier_token = property_specifier_token;
200 ast->lparen_token = lparen_token;
202 ast->expression = expression->clone(pool);
203 ast->comma_token = comma_token;
205 ast->type_id = type_id->clone(pool);
207 ast->property_name = property_name->clone(pool);
208 for (QtPropertyDeclarationItemListAST *iter = property_declaration_item_list, **ast_iter = &ast->property_declaration_item_list;
209 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
210 *ast_iter = new (pool) QtPropertyDeclarationItemListAST((iter->value) ? iter->value->clone(pool) : 0);
211 ast->rparen_token = rparen_token;
215 QtEnumDeclarationAST *QtEnumDeclarationAST::clone(MemoryPool *pool) const
217 QtEnumDeclarationAST *ast = new (pool) QtEnumDeclarationAST;
218 ast->enum_specifier_token = enum_specifier_token;
219 ast->lparen_token = lparen_token;
220 for (NameListAST *iter = enumerator_list, **ast_iter = &ast->enumerator_list;
221 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
222 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
223 ast->rparen_token = rparen_token;
227 QtFlagsDeclarationAST *QtFlagsDeclarationAST::clone(MemoryPool *pool) const
229 QtFlagsDeclarationAST *ast = new (pool) QtFlagsDeclarationAST;
230 ast->flags_specifier_token = flags_specifier_token;
231 ast->lparen_token = lparen_token;
232 for (NameListAST *iter = flag_enums_list, **ast_iter = &ast->flag_enums_list;
233 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
234 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
235 ast->rparen_token = rparen_token;
239 QtInterfaceNameAST *QtInterfaceNameAST::clone(MemoryPool *pool) const
241 QtInterfaceNameAST *ast = new (pool) QtInterfaceNameAST;
243 ast->interface_name = interface_name->clone(pool);
244 for (NameListAST *iter = constraint_list, **ast_iter = &ast->constraint_list;
245 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
246 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
250 QtInterfacesDeclarationAST *QtInterfacesDeclarationAST::clone(MemoryPool *pool) const
252 QtInterfacesDeclarationAST *ast = new (pool) QtInterfacesDeclarationAST;
253 ast->interfaces_token = interfaces_token;
254 ast->lparen_token = lparen_token;
255 for (QtInterfaceNameListAST *iter = interface_name_list, **ast_iter = &ast->interface_name_list;
256 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
257 *ast_iter = new (pool) QtInterfaceNameListAST((iter->value) ? iter->value->clone(pool) : 0);
258 ast->rparen_token = rparen_token;
262 AsmDefinitionAST *AsmDefinitionAST::clone(MemoryPool *pool) const
264 AsmDefinitionAST *ast = new (pool) AsmDefinitionAST;
265 ast->asm_token = asm_token;
266 ast->volatile_token = volatile_token;
267 ast->lparen_token = lparen_token;
268 ast->rparen_token = rparen_token;
269 ast->semicolon_token = semicolon_token;
273 BaseSpecifierAST *BaseSpecifierAST::clone(MemoryPool *pool) const
275 BaseSpecifierAST *ast = new (pool) BaseSpecifierAST;
276 ast->virtual_token = virtual_token;
277 ast->access_specifier_token = access_specifier_token;
279 ast->name = name->clone(pool);
283 IdExpressionAST *IdExpressionAST::clone(MemoryPool *pool) const
285 IdExpressionAST *ast = new (pool) IdExpressionAST;
287 ast->name = name->clone(pool);
291 CompoundExpressionAST *CompoundExpressionAST::clone(MemoryPool *pool) const
293 CompoundExpressionAST *ast = new (pool) CompoundExpressionAST;
294 ast->lparen_token = lparen_token;
296 ast->statement = statement->clone(pool);
297 ast->rparen_token = rparen_token;
301 CompoundLiteralAST *CompoundLiteralAST::clone(MemoryPool *pool) const
303 CompoundLiteralAST *ast = new (pool) CompoundLiteralAST;
304 ast->lparen_token = lparen_token;
306 ast->type_id = type_id->clone(pool);
307 ast->rparen_token = rparen_token;
309 ast->initializer = initializer->clone(pool);
313 QtMethodAST *QtMethodAST::clone(MemoryPool *pool) const
315 QtMethodAST *ast = new (pool) QtMethodAST;
316 ast->method_token = method_token;
317 ast->lparen_token = lparen_token;
319 ast->declarator = declarator->clone(pool);
320 ast->rparen_token = rparen_token;
324 QtMemberDeclarationAST *QtMemberDeclarationAST::clone(MemoryPool *pool) const
326 QtMemberDeclarationAST *ast = new (pool) QtMemberDeclarationAST;
327 ast->q_token = q_token;
328 ast->lparen_token = lparen_token;
330 ast->type_id = type_id->clone(pool);
331 ast->rparen_token = rparen_token;
335 BinaryExpressionAST *BinaryExpressionAST::clone(MemoryPool *pool) const
337 BinaryExpressionAST *ast = new (pool) BinaryExpressionAST;
339 ast->left_expression = left_expression->clone(pool);
340 ast->binary_op_token = binary_op_token;
341 if (right_expression)
342 ast->right_expression = right_expression->clone(pool);
346 CastExpressionAST *CastExpressionAST::clone(MemoryPool *pool) const
348 CastExpressionAST *ast = new (pool) CastExpressionAST;
349 ast->lparen_token = lparen_token;
351 ast->type_id = type_id->clone(pool);
352 ast->rparen_token = rparen_token;
354 ast->expression = expression->clone(pool);
358 ClassSpecifierAST *ClassSpecifierAST::clone(MemoryPool *pool) const
360 ClassSpecifierAST *ast = new (pool) ClassSpecifierAST;
361 ast->classkey_token = classkey_token;
362 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
363 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
364 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
366 ast->name = name->clone(pool);
367 ast->colon_token = colon_token;
368 for (BaseSpecifierListAST *iter = base_clause_list, **ast_iter = &ast->base_clause_list;
369 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
370 *ast_iter = new (pool) BaseSpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
371 ast->dot_dot_dot_token = dot_dot_dot_token;
372 ast->lbrace_token = lbrace_token;
373 for (DeclarationListAST *iter = member_specifier_list, **ast_iter = &ast->member_specifier_list;
374 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
375 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
376 ast->rbrace_token = rbrace_token;
380 CaseStatementAST *CaseStatementAST::clone(MemoryPool *pool) const
382 CaseStatementAST *ast = new (pool) CaseStatementAST;
383 ast->case_token = case_token;
385 ast->expression = expression->clone(pool);
386 ast->colon_token = colon_token;
388 ast->statement = statement->clone(pool);
392 CompoundStatementAST *CompoundStatementAST::clone(MemoryPool *pool) const
394 CompoundStatementAST *ast = new (pool) CompoundStatementAST;
395 ast->lbrace_token = lbrace_token;
396 for (StatementListAST *iter = statement_list, **ast_iter = &ast->statement_list;
397 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
398 *ast_iter = new (pool) StatementListAST((iter->value) ? iter->value->clone(pool) : 0);
399 ast->rbrace_token = rbrace_token;
403 ConditionAST *ConditionAST::clone(MemoryPool *pool) const
405 ConditionAST *ast = new (pool) ConditionAST;
406 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
407 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
408 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
410 ast->declarator = declarator->clone(pool);
414 ConditionalExpressionAST *ConditionalExpressionAST::clone(MemoryPool *pool) const
416 ConditionalExpressionAST *ast = new (pool) ConditionalExpressionAST;
418 ast->condition = condition->clone(pool);
419 ast->question_token = question_token;
421 ast->left_expression = left_expression->clone(pool);
422 ast->colon_token = colon_token;
423 if (right_expression)
424 ast->right_expression = right_expression->clone(pool);
428 CppCastExpressionAST *CppCastExpressionAST::clone(MemoryPool *pool) const
430 CppCastExpressionAST *ast = new (pool) CppCastExpressionAST;
431 ast->cast_token = cast_token;
432 ast->less_token = less_token;
434 ast->type_id = type_id->clone(pool);
435 ast->greater_token = greater_token;
436 ast->lparen_token = lparen_token;
438 ast->expression = expression->clone(pool);
439 ast->rparen_token = rparen_token;
443 CtorInitializerAST *CtorInitializerAST::clone(MemoryPool *pool) const
445 CtorInitializerAST *ast = new (pool) CtorInitializerAST;
446 ast->colon_token = colon_token;
447 for (MemInitializerListAST *iter = member_initializer_list, **ast_iter = &ast->member_initializer_list;
448 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
449 *ast_iter = new (pool) MemInitializerListAST((iter->value) ? iter->value->clone(pool) : 0);
450 ast->dot_dot_dot_token = dot_dot_dot_token;
454 DeclarationStatementAST *DeclarationStatementAST::clone(MemoryPool *pool) const
456 DeclarationStatementAST *ast = new (pool) DeclarationStatementAST;
458 ast->declaration = declaration->clone(pool);
462 DeclaratorIdAST *DeclaratorIdAST::clone(MemoryPool *pool) const
464 DeclaratorIdAST *ast = new (pool) DeclaratorIdAST;
465 ast->dot_dot_dot_token = dot_dot_dot_token;
467 ast->name = name->clone(pool);
471 NestedDeclaratorAST *NestedDeclaratorAST::clone(MemoryPool *pool) const
473 NestedDeclaratorAST *ast = new (pool) NestedDeclaratorAST;
474 ast->lparen_token = lparen_token;
476 ast->declarator = declarator->clone(pool);
477 ast->rparen_token = rparen_token;
481 FunctionDeclaratorAST *FunctionDeclaratorAST::clone(MemoryPool *pool) const
483 FunctionDeclaratorAST *ast = new (pool) FunctionDeclaratorAST;
484 ast->lparen_token = lparen_token;
485 if (parameter_declaration_clause)
486 ast->parameter_declaration_clause = parameter_declaration_clause->clone(pool);
487 ast->rparen_token = rparen_token;
488 for (SpecifierListAST *iter = cv_qualifier_list, **ast_iter = &ast->cv_qualifier_list;
489 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
490 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
491 if (exception_specification)
492 ast->exception_specification = exception_specification->clone(pool);
493 if (trailing_return_type)
494 ast->trailing_return_type = trailing_return_type->clone(pool);
495 if (as_cpp_initializer)
496 ast->as_cpp_initializer = as_cpp_initializer->clone(pool);
500 ArrayDeclaratorAST *ArrayDeclaratorAST::clone(MemoryPool *pool) const
502 ArrayDeclaratorAST *ast = new (pool) ArrayDeclaratorAST;
503 ast->lbracket_token = lbracket_token;
505 ast->expression = expression->clone(pool);
506 ast->rbracket_token = rbracket_token;
510 DeleteExpressionAST *DeleteExpressionAST::clone(MemoryPool *pool) const
512 DeleteExpressionAST *ast = new (pool) DeleteExpressionAST;
513 ast->scope_token = scope_token;
514 ast->delete_token = delete_token;
515 ast->lbracket_token = lbracket_token;
516 ast->rbracket_token = rbracket_token;
518 ast->expression = expression->clone(pool);
522 DoStatementAST *DoStatementAST::clone(MemoryPool *pool) const
524 DoStatementAST *ast = new (pool) DoStatementAST;
525 ast->do_token = do_token;
527 ast->statement = statement->clone(pool);
528 ast->while_token = while_token;
529 ast->lparen_token = lparen_token;
531 ast->expression = expression->clone(pool);
532 ast->rparen_token = rparen_token;
533 ast->semicolon_token = semicolon_token;
537 NamedTypeSpecifierAST *NamedTypeSpecifierAST::clone(MemoryPool *pool) const
539 NamedTypeSpecifierAST *ast = new (pool) NamedTypeSpecifierAST;
541 ast->name = name->clone(pool);
545 ElaboratedTypeSpecifierAST *ElaboratedTypeSpecifierAST::clone(MemoryPool *pool) const
547 ElaboratedTypeSpecifierAST *ast = new (pool) ElaboratedTypeSpecifierAST;
548 ast->classkey_token = classkey_token;
549 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
550 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
551 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
553 ast->name = name->clone(pool);
557 EnumSpecifierAST *EnumSpecifierAST::clone(MemoryPool *pool) const
559 EnumSpecifierAST *ast = new (pool) EnumSpecifierAST;
560 ast->enum_token = enum_token;
562 ast->name = name->clone(pool);
563 ast->lbrace_token = lbrace_token;
564 for (EnumeratorListAST *iter = enumerator_list, **ast_iter = &ast->enumerator_list;
565 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
566 *ast_iter = new (pool) EnumeratorListAST((iter->value) ? iter->value->clone(pool) : 0);
567 ast->stray_comma_token = stray_comma_token;
568 ast->rbrace_token = rbrace_token;
572 EnumeratorAST *EnumeratorAST::clone(MemoryPool *pool) const
574 EnumeratorAST *ast = new (pool) EnumeratorAST;
575 ast->identifier_token = identifier_token;
576 ast->equal_token = equal_token;
578 ast->expression = expression->clone(pool);
582 ExceptionDeclarationAST *ExceptionDeclarationAST::clone(MemoryPool *pool) const
584 ExceptionDeclarationAST *ast = new (pool) ExceptionDeclarationAST;
585 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
586 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
587 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
589 ast->declarator = declarator->clone(pool);
590 ast->dot_dot_dot_token = dot_dot_dot_token;
594 ExceptionSpecificationAST *ExceptionSpecificationAST::clone(MemoryPool *pool) const
596 ExceptionSpecificationAST *ast = new (pool) ExceptionSpecificationAST;
597 ast->throw_token = throw_token;
598 ast->lparen_token = lparen_token;
599 ast->dot_dot_dot_token = dot_dot_dot_token;
600 for (ExpressionListAST *iter = type_id_list, **ast_iter = &ast->type_id_list;
601 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
602 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
603 ast->rparen_token = rparen_token;
607 ExpressionOrDeclarationStatementAST *ExpressionOrDeclarationStatementAST::clone(MemoryPool *pool) const
609 ExpressionOrDeclarationStatementAST *ast = new (pool) ExpressionOrDeclarationStatementAST;
611 ast->expression = expression->clone(pool);
613 ast->declaration = declaration->clone(pool);
617 ExpressionStatementAST *ExpressionStatementAST::clone(MemoryPool *pool) const
619 ExpressionStatementAST *ast = new (pool) ExpressionStatementAST;
621 ast->expression = expression->clone(pool);
622 ast->semicolon_token = semicolon_token;
626 FunctionDefinitionAST *FunctionDefinitionAST::clone(MemoryPool *pool) const
628 FunctionDefinitionAST *ast = new (pool) FunctionDefinitionAST;
629 ast->qt_invokable_token = qt_invokable_token;
630 for (SpecifierListAST *iter = decl_specifier_list, **ast_iter = &ast->decl_specifier_list;
631 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
632 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
634 ast->declarator = declarator->clone(pool);
635 if (ctor_initializer)
636 ast->ctor_initializer = ctor_initializer->clone(pool);
638 ast->function_body = function_body->clone(pool);
642 ForeachStatementAST *ForeachStatementAST::clone(MemoryPool *pool) const
644 ForeachStatementAST *ast = new (pool) ForeachStatementAST;
645 ast->foreach_token = foreach_token;
646 ast->lparen_token = lparen_token;
647 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
648 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
649 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
651 ast->declarator = declarator->clone(pool);
653 ast->initializer = initializer->clone(pool);
654 ast->comma_token = comma_token;
656 ast->expression = expression->clone(pool);
657 ast->rparen_token = rparen_token;
659 ast->statement = statement->clone(pool);
663 ForStatementAST *ForStatementAST::clone(MemoryPool *pool) const
665 ForStatementAST *ast = new (pool) ForStatementAST;
666 ast->for_token = for_token;
667 ast->lparen_token = lparen_token;
669 ast->initializer = initializer->clone(pool);
671 ast->condition = condition->clone(pool);
672 ast->semicolon_token = semicolon_token;
674 ast->expression = expression->clone(pool);
675 ast->rparen_token = rparen_token;
677 ast->statement = statement->clone(pool);
681 IfStatementAST *IfStatementAST::clone(MemoryPool *pool) const
683 IfStatementAST *ast = new (pool) IfStatementAST;
684 ast->if_token = if_token;
685 ast->lparen_token = lparen_token;
687 ast->condition = condition->clone(pool);
688 ast->rparen_token = rparen_token;
690 ast->statement = statement->clone(pool);
691 ast->else_token = else_token;
693 ast->else_statement = else_statement->clone(pool);
697 ArrayInitializerAST *ArrayInitializerAST::clone(MemoryPool *pool) const
699 ArrayInitializerAST *ast = new (pool) ArrayInitializerAST;
700 ast->lbrace_token = lbrace_token;
701 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
702 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
703 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
704 ast->rbrace_token = rbrace_token;
708 LabeledStatementAST *LabeledStatementAST::clone(MemoryPool *pool) const
710 LabeledStatementAST *ast = new (pool) LabeledStatementAST;
711 ast->label_token = label_token;
712 ast->colon_token = colon_token;
714 ast->statement = statement->clone(pool);
718 LinkageBodyAST *LinkageBodyAST::clone(MemoryPool *pool) const
720 LinkageBodyAST *ast = new (pool) LinkageBodyAST;
721 ast->lbrace_token = lbrace_token;
722 for (DeclarationListAST *iter = declaration_list, **ast_iter = &ast->declaration_list;
723 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
724 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
725 ast->rbrace_token = rbrace_token;
729 LinkageSpecificationAST *LinkageSpecificationAST::clone(MemoryPool *pool) const
731 LinkageSpecificationAST *ast = new (pool) LinkageSpecificationAST;
732 ast->extern_token = extern_token;
733 ast->extern_type_token = extern_type_token;
735 ast->declaration = declaration->clone(pool);
739 MemInitializerAST *MemInitializerAST::clone(MemoryPool *pool) const
741 MemInitializerAST *ast = new (pool) MemInitializerAST;
743 ast->name = name->clone(pool);
744 ast->lparen_token = lparen_token;
745 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
746 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
747 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
748 ast->rparen_token = rparen_token;
752 NestedNameSpecifierAST *NestedNameSpecifierAST::clone(MemoryPool *pool) const
754 NestedNameSpecifierAST *ast = new (pool) NestedNameSpecifierAST;
755 if (class_or_namespace_name)
756 ast->class_or_namespace_name = class_or_namespace_name->clone(pool);
757 ast->scope_token = scope_token;
761 QualifiedNameAST *QualifiedNameAST::clone(MemoryPool *pool) const
763 QualifiedNameAST *ast = new (pool) QualifiedNameAST;
764 ast->global_scope_token = global_scope_token;
765 for (NestedNameSpecifierListAST *iter = nested_name_specifier_list, **ast_iter = &ast->nested_name_specifier_list;
766 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
767 *ast_iter = new (pool) NestedNameSpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
768 if (unqualified_name)
769 ast->unqualified_name = unqualified_name->clone(pool);
773 OperatorFunctionIdAST *OperatorFunctionIdAST::clone(MemoryPool *pool) const
775 OperatorFunctionIdAST *ast = new (pool) OperatorFunctionIdAST;
776 ast->operator_token = operator_token;
778 ast->op = op->clone(pool);
782 ConversionFunctionIdAST *ConversionFunctionIdAST::clone(MemoryPool *pool) const
784 ConversionFunctionIdAST *ast = new (pool) ConversionFunctionIdAST;
785 ast->operator_token = operator_token;
786 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
787 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
788 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
789 for (PtrOperatorListAST *iter = ptr_operator_list, **ast_iter = &ast->ptr_operator_list;
790 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
791 *ast_iter = new (pool) PtrOperatorListAST((iter->value) ? iter->value->clone(pool) : 0);
795 SimpleNameAST *SimpleNameAST::clone(MemoryPool *pool) const
797 SimpleNameAST *ast = new (pool) SimpleNameAST;
798 ast->identifier_token = identifier_token;
802 DestructorNameAST *DestructorNameAST::clone(MemoryPool *pool) const
804 DestructorNameAST *ast = new (pool) DestructorNameAST;
805 ast->tilde_token = tilde_token;
806 ast->identifier_token = identifier_token;
810 TemplateIdAST *TemplateIdAST::clone(MemoryPool *pool) const
812 TemplateIdAST *ast = new (pool) TemplateIdAST;
813 ast->template_token = template_token;
814 ast->identifier_token = identifier_token;
815 ast->less_token = less_token;
816 for (ExpressionListAST *iter = template_argument_list, **ast_iter = &ast->template_argument_list;
817 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
818 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
819 ast->greater_token = greater_token;
823 NamespaceAST *NamespaceAST::clone(MemoryPool *pool) const
825 NamespaceAST *ast = new (pool) NamespaceAST;
826 ast->namespace_token = namespace_token;
827 ast->identifier_token = identifier_token;
828 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
829 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
830 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
832 ast->linkage_body = linkage_body->clone(pool);
836 NamespaceAliasDefinitionAST *NamespaceAliasDefinitionAST::clone(MemoryPool *pool) const
838 NamespaceAliasDefinitionAST *ast = new (pool) NamespaceAliasDefinitionAST;
839 ast->namespace_token = namespace_token;
840 ast->namespace_name_token = namespace_name_token;
841 ast->equal_token = equal_token;
843 ast->name = name->clone(pool);
844 ast->semicolon_token = semicolon_token;
848 NewPlacementAST *NewPlacementAST::clone(MemoryPool *pool) const
850 NewPlacementAST *ast = new (pool) NewPlacementAST;
851 ast->lparen_token = lparen_token;
852 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
853 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
854 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
855 ast->rparen_token = rparen_token;
859 NewArrayDeclaratorAST *NewArrayDeclaratorAST::clone(MemoryPool *pool) const
861 NewArrayDeclaratorAST *ast = new (pool) NewArrayDeclaratorAST;
862 ast->lbracket_token = lbracket_token;
864 ast->expression = expression->clone(pool);
865 ast->rbracket_token = rbracket_token;
869 NewExpressionAST *NewExpressionAST::clone(MemoryPool *pool) const
871 NewExpressionAST *ast = new (pool) NewExpressionAST;
872 ast->scope_token = scope_token;
873 ast->new_token = new_token;
875 ast->new_placement = new_placement->clone(pool);
876 ast->lparen_token = lparen_token;
878 ast->type_id = type_id->clone(pool);
879 ast->rparen_token = rparen_token;
881 ast->new_type_id = new_type_id->clone(pool);
883 ast->new_initializer = new_initializer->clone(pool);
887 NewInitializerAST *NewInitializerAST::clone(MemoryPool *pool) const
889 NewInitializerAST *ast = new (pool) NewInitializerAST;
890 ast->lparen_token = lparen_token;
892 ast->expression = expression->clone(pool);
893 ast->rparen_token = rparen_token;
897 NewTypeIdAST *NewTypeIdAST::clone(MemoryPool *pool) const
899 NewTypeIdAST *ast = new (pool) NewTypeIdAST;
900 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
901 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
902 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
903 for (PtrOperatorListAST *iter = ptr_operator_list, **ast_iter = &ast->ptr_operator_list;
904 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
905 *ast_iter = new (pool) PtrOperatorListAST((iter->value) ? iter->value->clone(pool) : 0);
906 for (NewArrayDeclaratorListAST *iter = new_array_declarator_list, **ast_iter = &ast->new_array_declarator_list;
907 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
908 *ast_iter = new (pool) NewArrayDeclaratorListAST((iter->value) ? iter->value->clone(pool) : 0);
912 OperatorAST *OperatorAST::clone(MemoryPool *pool) const
914 OperatorAST *ast = new (pool) OperatorAST;
915 ast->op_token = op_token;
916 ast->open_token = open_token;
917 ast->close_token = close_token;
921 ParameterDeclarationAST *ParameterDeclarationAST::clone(MemoryPool *pool) const
923 ParameterDeclarationAST *ast = new (pool) ParameterDeclarationAST;
924 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
925 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
926 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
928 ast->declarator = declarator->clone(pool);
929 ast->equal_token = equal_token;
931 ast->expression = expression->clone(pool);
935 ParameterDeclarationClauseAST *ParameterDeclarationClauseAST::clone(MemoryPool *pool) const
937 ParameterDeclarationClauseAST *ast = new (pool) ParameterDeclarationClauseAST;
938 for (ParameterDeclarationListAST *iter = parameter_declaration_list, **ast_iter = &ast->parameter_declaration_list;
939 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
940 *ast_iter = new (pool) ParameterDeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
941 ast->dot_dot_dot_token = dot_dot_dot_token;
945 CallAST *CallAST::clone(MemoryPool *pool) const
947 CallAST *ast = new (pool) CallAST;
949 ast->base_expression = base_expression->clone(pool);
950 ast->lparen_token = lparen_token;
951 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
952 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
953 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
954 ast->rparen_token = rparen_token;
958 ArrayAccessAST *ArrayAccessAST::clone(MemoryPool *pool) const
960 ArrayAccessAST *ast = new (pool) ArrayAccessAST;
962 ast->base_expression = base_expression->clone(pool);
963 ast->lbracket_token = lbracket_token;
965 ast->expression = expression->clone(pool);
966 ast->rbracket_token = rbracket_token;
970 PostIncrDecrAST *PostIncrDecrAST::clone(MemoryPool *pool) const
972 PostIncrDecrAST *ast = new (pool) PostIncrDecrAST;
974 ast->base_expression = base_expression->clone(pool);
975 ast->incr_decr_token = incr_decr_token;
979 MemberAccessAST *MemberAccessAST::clone(MemoryPool *pool) const
981 MemberAccessAST *ast = new (pool) MemberAccessAST;
983 ast->base_expression = base_expression->clone(pool);
984 ast->access_token = access_token;
985 ast->template_token = template_token;
987 ast->member_name = member_name->clone(pool);
991 TypeidExpressionAST *TypeidExpressionAST::clone(MemoryPool *pool) const
993 TypeidExpressionAST *ast = new (pool) TypeidExpressionAST;
994 ast->typeid_token = typeid_token;
995 ast->lparen_token = lparen_token;
997 ast->expression = expression->clone(pool);
998 ast->rparen_token = rparen_token;
1002 TypenameCallExpressionAST *TypenameCallExpressionAST::clone(MemoryPool *pool) const
1004 TypenameCallExpressionAST *ast = new (pool) TypenameCallExpressionAST;
1005 ast->typename_token = typename_token;
1007 ast->name = name->clone(pool);
1008 ast->lparen_token = lparen_token;
1009 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
1010 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1011 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
1012 ast->rparen_token = rparen_token;
1016 TypeConstructorCallAST *TypeConstructorCallAST::clone(MemoryPool *pool) const
1018 TypeConstructorCallAST *ast = new (pool) TypeConstructorCallAST;
1019 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
1020 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1021 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1022 ast->lparen_token = lparen_token;
1023 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
1024 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1025 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
1026 ast->rparen_token = rparen_token;
1030 PointerToMemberAST *PointerToMemberAST::clone(MemoryPool *pool) const
1032 PointerToMemberAST *ast = new (pool) PointerToMemberAST;
1033 ast->global_scope_token = global_scope_token;
1034 for (NestedNameSpecifierListAST *iter = nested_name_specifier_list, **ast_iter = &ast->nested_name_specifier_list;
1035 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1036 *ast_iter = new (pool) NestedNameSpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1037 ast->star_token = star_token;
1038 for (SpecifierListAST *iter = cv_qualifier_list, **ast_iter = &ast->cv_qualifier_list;
1039 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1040 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1044 PointerAST *PointerAST::clone(MemoryPool *pool) const
1046 PointerAST *ast = new (pool) PointerAST;
1047 ast->star_token = star_token;
1048 for (SpecifierListAST *iter = cv_qualifier_list, **ast_iter = &ast->cv_qualifier_list;
1049 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1050 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1054 ReferenceAST *ReferenceAST::clone(MemoryPool *pool) const
1056 ReferenceAST *ast = new (pool) ReferenceAST;
1057 ast->reference_token = reference_token;
1061 BreakStatementAST *BreakStatementAST::clone(MemoryPool *pool) const
1063 BreakStatementAST *ast = new (pool) BreakStatementAST;
1064 ast->break_token = break_token;
1065 ast->semicolon_token = semicolon_token;
1069 ContinueStatementAST *ContinueStatementAST::clone(MemoryPool *pool) const
1071 ContinueStatementAST *ast = new (pool) ContinueStatementAST;
1072 ast->continue_token = continue_token;
1073 ast->semicolon_token = semicolon_token;
1077 GotoStatementAST *GotoStatementAST::clone(MemoryPool *pool) const
1079 GotoStatementAST *ast = new (pool) GotoStatementAST;
1080 ast->goto_token = goto_token;
1081 ast->identifier_token = identifier_token;
1082 ast->semicolon_token = semicolon_token;
1086 ReturnStatementAST *ReturnStatementAST::clone(MemoryPool *pool) const
1088 ReturnStatementAST *ast = new (pool) ReturnStatementAST;
1089 ast->return_token = return_token;
1091 ast->expression = expression->clone(pool);
1092 ast->semicolon_token = semicolon_token;
1096 SizeofExpressionAST *SizeofExpressionAST::clone(MemoryPool *pool) const
1098 SizeofExpressionAST *ast = new (pool) SizeofExpressionAST;
1099 ast->sizeof_token = sizeof_token;
1100 ast->dot_dot_dot_token = dot_dot_dot_token;
1101 ast->lparen_token = lparen_token;
1103 ast->expression = expression->clone(pool);
1104 ast->rparen_token = rparen_token;
1108 NumericLiteralAST *NumericLiteralAST::clone(MemoryPool *pool) const
1110 NumericLiteralAST *ast = new (pool) NumericLiteralAST;
1111 ast->literal_token = literal_token;
1115 BoolLiteralAST *BoolLiteralAST::clone(MemoryPool *pool) const
1117 BoolLiteralAST *ast = new (pool) BoolLiteralAST;
1118 ast->literal_token = literal_token;
1122 ThisExpressionAST *ThisExpressionAST::clone(MemoryPool *pool) const
1124 ThisExpressionAST *ast = new (pool) ThisExpressionAST;
1125 ast->this_token = this_token;
1129 NestedExpressionAST *NestedExpressionAST::clone(MemoryPool *pool) const
1131 NestedExpressionAST *ast = new (pool) NestedExpressionAST;
1132 ast->lparen_token = lparen_token;
1134 ast->expression = expression->clone(pool);
1135 ast->rparen_token = rparen_token;
1139 StringLiteralAST *StringLiteralAST::clone(MemoryPool *pool) const
1141 StringLiteralAST *ast = new (pool) StringLiteralAST;
1142 ast->literal_token = literal_token;
1144 ast->next = next->clone(pool);
1148 SwitchStatementAST *SwitchStatementAST::clone(MemoryPool *pool) const
1150 SwitchStatementAST *ast = new (pool) SwitchStatementAST;
1151 ast->switch_token = switch_token;
1152 ast->lparen_token = lparen_token;
1154 ast->condition = condition->clone(pool);
1155 ast->rparen_token = rparen_token;
1157 ast->statement = statement->clone(pool);
1161 TemplateDeclarationAST *TemplateDeclarationAST::clone(MemoryPool *pool) const
1163 TemplateDeclarationAST *ast = new (pool) TemplateDeclarationAST;
1164 ast->export_token = export_token;
1165 ast->template_token = template_token;
1166 ast->less_token = less_token;
1167 for (DeclarationListAST *iter = template_parameter_list, **ast_iter = &ast->template_parameter_list;
1168 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1169 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1170 ast->greater_token = greater_token;
1172 ast->declaration = declaration->clone(pool);
1176 ThrowExpressionAST *ThrowExpressionAST::clone(MemoryPool *pool) const
1178 ThrowExpressionAST *ast = new (pool) ThrowExpressionAST;
1179 ast->throw_token = throw_token;
1181 ast->expression = expression->clone(pool);
1185 TranslationUnitAST *TranslationUnitAST::clone(MemoryPool *pool) const
1187 TranslationUnitAST *ast = new (pool) TranslationUnitAST;
1188 for (DeclarationListAST *iter = declaration_list, **ast_iter = &ast->declaration_list;
1189 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1190 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1194 TryBlockStatementAST *TryBlockStatementAST::clone(MemoryPool *pool) const
1196 TryBlockStatementAST *ast = new (pool) TryBlockStatementAST;
1197 ast->try_token = try_token;
1199 ast->statement = statement->clone(pool);
1200 for (CatchClauseListAST *iter = catch_clause_list, **ast_iter = &ast->catch_clause_list;
1201 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1202 *ast_iter = new (pool) CatchClauseListAST((iter->value) ? iter->value->clone(pool) : 0);
1206 CatchClauseAST *CatchClauseAST::clone(MemoryPool *pool) const
1208 CatchClauseAST *ast = new (pool) CatchClauseAST;
1209 ast->catch_token = catch_token;
1210 ast->lparen_token = lparen_token;
1211 if (exception_declaration)
1212 ast->exception_declaration = exception_declaration->clone(pool);
1213 ast->rparen_token = rparen_token;
1215 ast->statement = statement->clone(pool);
1219 TypeIdAST *TypeIdAST::clone(MemoryPool *pool) const
1221 TypeIdAST *ast = new (pool) TypeIdAST;
1222 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
1223 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1224 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1226 ast->declarator = declarator->clone(pool);
1230 TypenameTypeParameterAST *TypenameTypeParameterAST::clone(MemoryPool *pool) const
1232 TypenameTypeParameterAST *ast = new (pool) TypenameTypeParameterAST;
1233 ast->classkey_token = classkey_token;
1234 ast->dot_dot_dot_token = dot_dot_dot_token;
1236 ast->name = name->clone(pool);
1237 ast->equal_token = equal_token;
1239 ast->type_id = type_id->clone(pool);
1243 TemplateTypeParameterAST *TemplateTypeParameterAST::clone(MemoryPool *pool) const
1245 TemplateTypeParameterAST *ast = new (pool) TemplateTypeParameterAST;
1246 ast->template_token = template_token;
1247 ast->less_token = less_token;
1248 for (DeclarationListAST *iter = template_parameter_list, **ast_iter = &ast->template_parameter_list;
1249 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1250 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1251 ast->greater_token = greater_token;
1252 ast->class_token = class_token;
1253 ast->dot_dot_dot_token = dot_dot_dot_token;
1255 ast->name = name->clone(pool);
1256 ast->equal_token = equal_token;
1258 ast->type_id = type_id->clone(pool);
1262 UnaryExpressionAST *UnaryExpressionAST::clone(MemoryPool *pool) const
1264 UnaryExpressionAST *ast = new (pool) UnaryExpressionAST;
1265 ast->unary_op_token = unary_op_token;
1267 ast->expression = expression->clone(pool);
1271 UsingAST *UsingAST::clone(MemoryPool *pool) const
1273 UsingAST *ast = new (pool) UsingAST;
1274 ast->using_token = using_token;
1275 ast->typename_token = typename_token;
1277 ast->name = name->clone(pool);
1278 ast->semicolon_token = semicolon_token;
1282 UsingDirectiveAST *UsingDirectiveAST::clone(MemoryPool *pool) const
1284 UsingDirectiveAST *ast = new (pool) UsingDirectiveAST;
1285 ast->using_token = using_token;
1286 ast->namespace_token = namespace_token;
1288 ast->name = name->clone(pool);
1289 ast->semicolon_token = semicolon_token;
1293 WhileStatementAST *WhileStatementAST::clone(MemoryPool *pool) const
1295 WhileStatementAST *ast = new (pool) WhileStatementAST;
1296 ast->while_token = while_token;
1297 ast->lparen_token = lparen_token;
1299 ast->condition = condition->clone(pool);
1300 ast->rparen_token = rparen_token;
1302 ast->statement = statement->clone(pool);
1306 ObjCClassForwardDeclarationAST *ObjCClassForwardDeclarationAST::clone(MemoryPool *pool) const
1308 ObjCClassForwardDeclarationAST *ast = new (pool) ObjCClassForwardDeclarationAST;
1309 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1310 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1311 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1312 ast->class_token = class_token;
1313 for (NameListAST *iter = identifier_list, **ast_iter = &ast->identifier_list;
1314 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1315 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
1316 ast->semicolon_token = semicolon_token;
1320 ObjCClassDeclarationAST *ObjCClassDeclarationAST::clone(MemoryPool *pool) const
1322 ObjCClassDeclarationAST *ast = new (pool) ObjCClassDeclarationAST;
1323 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1324 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1325 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1326 ast->interface_token = interface_token;
1327 ast->implementation_token = implementation_token;
1329 ast->class_name = class_name->clone(pool);
1330 ast->lparen_token = lparen_token;
1332 ast->category_name = category_name->clone(pool);
1333 ast->rparen_token = rparen_token;
1334 ast->colon_token = colon_token;
1336 ast->superclass = superclass->clone(pool);
1338 ast->protocol_refs = protocol_refs->clone(pool);
1340 ast->inst_vars_decl = inst_vars_decl->clone(pool);
1341 for (DeclarationListAST *iter = member_declaration_list, **ast_iter = &ast->member_declaration_list;
1342 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1343 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1344 ast->end_token = end_token;
1348 ObjCProtocolForwardDeclarationAST *ObjCProtocolForwardDeclarationAST::clone(MemoryPool *pool) const
1350 ObjCProtocolForwardDeclarationAST *ast = new (pool) ObjCProtocolForwardDeclarationAST;
1351 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1352 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1353 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1354 ast->protocol_token = protocol_token;
1355 for (NameListAST *iter = identifier_list, **ast_iter = &ast->identifier_list;
1356 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1357 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
1358 ast->semicolon_token = semicolon_token;
1362 ObjCProtocolDeclarationAST *ObjCProtocolDeclarationAST::clone(MemoryPool *pool) const
1364 ObjCProtocolDeclarationAST *ast = new (pool) ObjCProtocolDeclarationAST;
1365 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1366 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1367 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1368 ast->protocol_token = protocol_token;
1370 ast->name = name->clone(pool);
1372 ast->protocol_refs = protocol_refs->clone(pool);
1373 for (DeclarationListAST *iter = member_declaration_list, **ast_iter = &ast->member_declaration_list;
1374 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1375 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1376 ast->end_token = end_token;
1380 ObjCProtocolRefsAST *ObjCProtocolRefsAST::clone(MemoryPool *pool) const
1382 ObjCProtocolRefsAST *ast = new (pool) ObjCProtocolRefsAST;
1383 ast->less_token = less_token;
1384 for (NameListAST *iter = identifier_list, **ast_iter = &ast->identifier_list;
1385 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1386 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
1387 ast->greater_token = greater_token;
1391 ObjCMessageArgumentAST *ObjCMessageArgumentAST::clone(MemoryPool *pool) const
1393 ObjCMessageArgumentAST *ast = new (pool) ObjCMessageArgumentAST;
1394 if (parameter_value_expression)
1395 ast->parameter_value_expression = parameter_value_expression->clone(pool);
1399 ObjCMessageExpressionAST *ObjCMessageExpressionAST::clone(MemoryPool *pool) const
1401 ObjCMessageExpressionAST *ast = new (pool) ObjCMessageExpressionAST;
1402 ast->lbracket_token = lbracket_token;
1403 if (receiver_expression)
1404 ast->receiver_expression = receiver_expression->clone(pool);
1406 ast->selector = selector->clone(pool);
1407 for (ObjCMessageArgumentListAST *iter = argument_list, **ast_iter = &ast->argument_list;
1408 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1409 *ast_iter = new (pool) ObjCMessageArgumentListAST((iter->value) ? iter->value->clone(pool) : 0);
1410 ast->rbracket_token = rbracket_token;
1414 ObjCProtocolExpressionAST *ObjCProtocolExpressionAST::clone(MemoryPool *pool) const
1416 ObjCProtocolExpressionAST *ast = new (pool) ObjCProtocolExpressionAST;
1417 ast->protocol_token = protocol_token;
1418 ast->lparen_token = lparen_token;
1419 ast->identifier_token = identifier_token;
1420 ast->rparen_token = rparen_token;
1424 ObjCTypeNameAST *ObjCTypeNameAST::clone(MemoryPool *pool) const
1426 ObjCTypeNameAST *ast = new (pool) ObjCTypeNameAST;
1427 ast->lparen_token = lparen_token;
1428 ast->type_qualifier_token = type_qualifier_token;
1430 ast->type_id = type_id->clone(pool);
1431 ast->rparen_token = rparen_token;
1435 ObjCEncodeExpressionAST *ObjCEncodeExpressionAST::clone(MemoryPool *pool) const
1437 ObjCEncodeExpressionAST *ast = new (pool) ObjCEncodeExpressionAST;
1438 ast->encode_token = encode_token;
1440 ast->type_name = type_name->clone(pool);
1444 ObjCSelectorExpressionAST *ObjCSelectorExpressionAST::clone(MemoryPool *pool) const
1446 ObjCSelectorExpressionAST *ast = new (pool) ObjCSelectorExpressionAST;
1447 ast->selector_token = selector_token;
1448 ast->lparen_token = lparen_token;
1450 ast->selector = selector->clone(pool);
1451 ast->rparen_token = rparen_token;
1455 ObjCInstanceVariablesDeclarationAST *ObjCInstanceVariablesDeclarationAST::clone(MemoryPool *pool) const
1457 ObjCInstanceVariablesDeclarationAST *ast = new (pool) ObjCInstanceVariablesDeclarationAST;
1458 ast->lbrace_token = lbrace_token;
1459 for (DeclarationListAST *iter = instance_variable_list, **ast_iter = &ast->instance_variable_list;
1460 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1461 *ast_iter = new (pool) DeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1462 ast->rbrace_token = rbrace_token;
1466 ObjCVisibilityDeclarationAST *ObjCVisibilityDeclarationAST::clone(MemoryPool *pool) const
1468 ObjCVisibilityDeclarationAST *ast = new (pool) ObjCVisibilityDeclarationAST;
1469 ast->visibility_token = visibility_token;
1473 ObjCPropertyAttributeAST *ObjCPropertyAttributeAST::clone(MemoryPool *pool) const
1475 ObjCPropertyAttributeAST *ast = new (pool) ObjCPropertyAttributeAST;
1476 ast->attribute_identifier_token = attribute_identifier_token;
1477 ast->equals_token = equals_token;
1478 if (method_selector)
1479 ast->method_selector = method_selector->clone(pool);
1483 ObjCPropertyDeclarationAST *ObjCPropertyDeclarationAST::clone(MemoryPool *pool) const
1485 ObjCPropertyDeclarationAST *ast = new (pool) ObjCPropertyDeclarationAST;
1486 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1487 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1488 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1489 ast->property_token = property_token;
1490 ast->lparen_token = lparen_token;
1491 for (ObjCPropertyAttributeListAST *iter = property_attribute_list, **ast_iter = &ast->property_attribute_list;
1492 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1493 *ast_iter = new (pool) ObjCPropertyAttributeListAST((iter->value) ? iter->value->clone(pool) : 0);
1494 ast->rparen_token = rparen_token;
1495 if (simple_declaration)
1496 ast->simple_declaration = simple_declaration->clone(pool);
1500 ObjCMessageArgumentDeclarationAST *ObjCMessageArgumentDeclarationAST::clone(MemoryPool *pool) const
1502 ObjCMessageArgumentDeclarationAST *ast = new (pool) ObjCMessageArgumentDeclarationAST;
1504 ast->type_name = type_name->clone(pool);
1505 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1506 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1507 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1509 ast->param_name = param_name->clone(pool);
1513 ObjCMethodPrototypeAST *ObjCMethodPrototypeAST::clone(MemoryPool *pool) const
1515 ObjCMethodPrototypeAST *ast = new (pool) ObjCMethodPrototypeAST;
1516 ast->method_type_token = method_type_token;
1518 ast->type_name = type_name->clone(pool);
1520 ast->selector = selector->clone(pool);
1521 for (ObjCMessageArgumentDeclarationListAST *iter = argument_list, **ast_iter = &ast->argument_list;
1522 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1523 *ast_iter = new (pool) ObjCMessageArgumentDeclarationListAST((iter->value) ? iter->value->clone(pool) : 0);
1524 ast->dot_dot_dot_token = dot_dot_dot_token;
1525 for (SpecifierListAST *iter = attribute_list, **ast_iter = &ast->attribute_list;
1526 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1527 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1531 ObjCMethodDeclarationAST *ObjCMethodDeclarationAST::clone(MemoryPool *pool) const
1533 ObjCMethodDeclarationAST *ast = new (pool) ObjCMethodDeclarationAST;
1534 if (method_prototype)
1535 ast->method_prototype = method_prototype->clone(pool);
1537 ast->function_body = function_body->clone(pool);
1538 ast->semicolon_token = semicolon_token;
1542 ObjCSynthesizedPropertyAST *ObjCSynthesizedPropertyAST::clone(MemoryPool *pool) const
1544 ObjCSynthesizedPropertyAST *ast = new (pool) ObjCSynthesizedPropertyAST;
1545 ast->property_identifier_token = property_identifier_token;
1546 ast->equals_token = equals_token;
1547 ast->alias_identifier_token = alias_identifier_token;
1551 ObjCSynthesizedPropertiesDeclarationAST *ObjCSynthesizedPropertiesDeclarationAST::clone(MemoryPool *pool) const
1553 ObjCSynthesizedPropertiesDeclarationAST *ast = new (pool) ObjCSynthesizedPropertiesDeclarationAST;
1554 ast->synthesized_token = synthesized_token;
1555 for (ObjCSynthesizedPropertyListAST *iter = property_identifier_list, **ast_iter = &ast->property_identifier_list;
1556 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1557 *ast_iter = new (pool) ObjCSynthesizedPropertyListAST((iter->value) ? iter->value->clone(pool) : 0);
1558 ast->semicolon_token = semicolon_token;
1562 ObjCDynamicPropertiesDeclarationAST *ObjCDynamicPropertiesDeclarationAST::clone(MemoryPool *pool) const
1564 ObjCDynamicPropertiesDeclarationAST *ast = new (pool) ObjCDynamicPropertiesDeclarationAST;
1565 ast->dynamic_token = dynamic_token;
1566 for (NameListAST *iter = property_identifier_list, **ast_iter = &ast->property_identifier_list;
1567 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1568 *ast_iter = new (pool) NameListAST((iter->value) ? iter->value->clone(pool) : 0);
1569 ast->semicolon_token = semicolon_token;
1573 ObjCFastEnumerationAST *ObjCFastEnumerationAST::clone(MemoryPool *pool) const
1575 ObjCFastEnumerationAST *ast = new (pool) ObjCFastEnumerationAST;
1576 ast->for_token = for_token;
1577 ast->lparen_token = lparen_token;
1578 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
1579 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1580 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1582 ast->declarator = declarator->clone(pool);
1584 ast->initializer = initializer->clone(pool);
1585 ast->in_token = in_token;
1586 if (fast_enumeratable_expression)
1587 ast->fast_enumeratable_expression = fast_enumeratable_expression->clone(pool);
1588 ast->rparen_token = rparen_token;
1590 ast->statement = statement->clone(pool);
1594 ObjCSynchronizedStatementAST *ObjCSynchronizedStatementAST::clone(MemoryPool *pool) const
1596 ObjCSynchronizedStatementAST *ast = new (pool) ObjCSynchronizedStatementAST;
1597 ast->synchronized_token = synchronized_token;
1598 ast->lparen_token = lparen_token;
1599 if (synchronized_object)
1600 ast->synchronized_object = synchronized_object->clone(pool);
1601 ast->rparen_token = rparen_token;
1603 ast->statement = statement->clone(pool);
1607 LambdaExpressionAST *LambdaExpressionAST::clone(MemoryPool *pool) const
1609 LambdaExpressionAST *ast = new (pool) LambdaExpressionAST;
1610 if (lambda_introducer)
1611 ast->lambda_introducer = lambda_introducer->clone(pool);
1612 if (lambda_declarator)
1613 ast->lambda_declarator = lambda_declarator->clone(pool);
1615 ast->statement = statement->clone(pool);
1619 LambdaIntroducerAST *LambdaIntroducerAST::clone(MemoryPool *pool) const
1621 LambdaIntroducerAST *ast = new (pool) LambdaIntroducerAST;
1622 ast->lbracket_token = lbracket_token;
1624 ast->lambda_capture = lambda_capture->clone(pool);
1625 ast->rbracket_token = rbracket_token;
1629 LambdaCaptureAST *LambdaCaptureAST::clone(MemoryPool *pool) const
1631 LambdaCaptureAST *ast = new (pool) LambdaCaptureAST;
1632 ast->default_capture_token = default_capture_token;
1633 for (CaptureListAST *iter = capture_list, **ast_iter = &ast->capture_list;
1634 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1635 *ast_iter = new (pool) CaptureListAST((iter->value) ? iter->value->clone(pool) : 0);
1639 CaptureAST *CaptureAST::clone(MemoryPool *pool) const
1641 CaptureAST *ast = new (pool) CaptureAST;
1645 LambdaDeclaratorAST *LambdaDeclaratorAST::clone(MemoryPool *pool) const
1647 LambdaDeclaratorAST *ast = new (pool) LambdaDeclaratorAST;
1648 ast->lparen_token = lparen_token;
1649 if (parameter_declaration_clause)
1650 ast->parameter_declaration_clause = parameter_declaration_clause->clone(pool);
1651 ast->rparen_token = rparen_token;
1652 for (SpecifierListAST *iter = attributes, **ast_iter = &ast->attributes;
1653 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1654 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1655 ast->mutable_token = mutable_token;
1656 if (exception_specification)
1657 ast->exception_specification = exception_specification->clone(pool);
1658 if (trailing_return_type)
1659 ast->trailing_return_type = trailing_return_type->clone(pool);
1663 TrailingReturnTypeAST *TrailingReturnTypeAST::clone(MemoryPool *pool) const
1665 TrailingReturnTypeAST *ast = new (pool) TrailingReturnTypeAST;
1666 ast->arrow_token = arrow_token;
1667 for (SpecifierListAST *iter = attributes, **ast_iter = &ast->attributes;
1668 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1669 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1670 for (SpecifierListAST *iter = type_specifier_list, **ast_iter = &ast->type_specifier_list;
1671 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1672 *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0);
1674 ast->declarator = declarator->clone(pool);
1678 BracedInitializerAST *BracedInitializerAST::clone(MemoryPool *pool) const
1680 BracedInitializerAST *ast = new (pool) BracedInitializerAST;
1681 ast->lbrace_token = lbrace_token;
1682 for (ExpressionListAST *iter = expression_list, **ast_iter = &ast->expression_list;
1683 iter; iter = iter->next, ast_iter = &(*ast_iter)->next)
1684 *ast_iter = new (pool) ExpressionListAST((iter->value) ? iter->value->clone(pool) : 0);
1685 ast->comma_token = comma_token;
1686 ast->rbrace_token = rbrace_token;