1 /****************************************************************************
3 ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
4 ** Copyright (C) 2002-2005 Roberto Raggi <roberto@kdevelop.org>
6 ** This file is part of the Qt Script Generator project on Trolltech Labs.
8 ** This file may be used under the terms of the GNU General Public
9 ** License version 2.0 as published by the Free Software Foundation
10 ** and appearing in the file LICENSE.GPL included in the packaging of
11 ** this file. Please review the following information to ensure GNU
12 ** General Public Licensing requirements will be met:
13 ** http://www.trolltech.com/products/qt/opensource.html
15 ** If you are unsure which license is appropriate for your use, please
16 ** review the following information:
17 ** http://www.trolltech.com/products/qt/licensing.html or contact the
18 ** sales department at sales@trolltech.com.
20 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
21 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
23 ****************************************************************************/
26 #include "default_visitor.h"
28 void DefaultVisitor::visitAccessSpecifier(AccessSpecifierAST
*)
33 void DefaultVisitor::visitAsmDefinition(AsmDefinitionAST
*)
38 void DefaultVisitor::visitBaseClause(BaseClauseAST
*node
)
40 visitNodes(this, node
->base_specifiers
);
43 void DefaultVisitor::visitBaseSpecifier(BaseSpecifierAST
*node
)
48 void DefaultVisitor::visitBinaryExpression(BinaryExpressionAST
*node
)
50 visit(node
->left_expression
);
51 visit(node
->right_expression
);
54 void DefaultVisitor::visitCastExpression(CastExpressionAST
*node
)
57 visit(node
->expression
);
60 void DefaultVisitor::visitClassMemberAccess(ClassMemberAccessAST
*node
)
65 void DefaultVisitor::visitClassSpecifier(ClassSpecifierAST
*node
)
67 visit(node
->win_decl_specifiers
);
69 visit(node
->base_clause
);
70 visitNodes(this, node
->member_specs
);
73 void DefaultVisitor::visitCompoundStatement(CompoundStatementAST
*node
)
75 visitNodes(this, node
->statements
);
78 void DefaultVisitor::visitCondition(ConditionAST
*node
)
80 visit(node
->type_specifier
);
81 visit(node
->declarator
);
82 visit(node
->expression
);
85 void DefaultVisitor::visitConditionalExpression(ConditionalExpressionAST
*node
)
87 visit(node
->condition
);
88 visit(node
->left_expression
);
89 visit(node
->right_expression
);
92 void DefaultVisitor::visitCppCastExpression(CppCastExpressionAST
*node
)
95 visit(node
->expression
);
96 visitNodes(this, node
->sub_expressions
);
99 void DefaultVisitor::visitCtorInitializer(CtorInitializerAST
*node
)
101 visitNodes(this, node
->member_initializers
);
104 void DefaultVisitor::visitDeclarationStatement(DeclarationStatementAST
*node
)
106 visit(node
->declaration
);
109 void DefaultVisitor::visitDeclarator(DeclaratorAST
*node
)
111 visit(node
->sub_declarator
);
112 visitNodes(this, node
->ptr_ops
);
114 visit(node
->bit_expression
);
115 visitNodes(this, node
->array_dimensions
);
116 visit(node
->parameter_declaration_clause
);
117 visit(node
->exception_spec
);
120 void DefaultVisitor::visitDeleteExpression(DeleteExpressionAST
*node
)
122 visit(node
->expression
);
125 void DefaultVisitor::visitDoStatement(DoStatementAST
*node
)
127 visit(node
->statement
);
128 visit(node
->expression
);
131 void DefaultVisitor::visitElaboratedTypeSpecifier(ElaboratedTypeSpecifierAST
*node
)
136 void DefaultVisitor::visitEnumSpecifier(EnumSpecifierAST
*node
)
139 visitNodes(this, node
->enumerators
);
142 void DefaultVisitor::visitEnumerator(EnumeratorAST
*node
)
144 visit(node
->expression
);
147 void DefaultVisitor::visitExceptionSpecification(ExceptionSpecificationAST
*node
)
149 visitNodes(this, node
->type_ids
);
152 void DefaultVisitor::visitExpressionOrDeclarationStatement(ExpressionOrDeclarationStatementAST
*node
)
154 visit(node
->expression
);
155 visit(node
->declaration
);
158 void DefaultVisitor::visitExpressionStatement(ExpressionStatementAST
*node
)
160 visit(node
->expression
);
163 void DefaultVisitor::visitForStatement(ForStatementAST
*node
)
165 visit(node
->init_statement
);
166 visit(node
->condition
);
167 visit(node
->expression
);
168 visit(node
->statement
);
171 void DefaultVisitor::visitFunctionCall(FunctionCallAST
*node
)
173 visit(node
->arguments
);
176 void DefaultVisitor::visitFunctionDefinition(FunctionDefinitionAST
*node
)
178 visit(node
->type_specifier
);
179 visit(node
->init_declarator
);
180 visit(node
->function_body
);
181 visit(node
->win_decl_specifiers
);
184 void DefaultVisitor::visitIfStatement(IfStatementAST
*node
)
186 visit(node
->condition
);
187 visit(node
->statement
);
188 visit(node
->else_statement
);
191 void DefaultVisitor::visitIncrDecrExpression(IncrDecrExpressionAST
*)
196 void DefaultVisitor::visitInitDeclarator(InitDeclaratorAST
*node
)
198 visit(node
->declarator
);
199 visit(node
->initializer
);
202 void DefaultVisitor::visitInitializer(InitializerAST
*node
)
204 visit(node
->initializer_clause
);
205 visit(node
->expression
);
208 void DefaultVisitor::visitInitializerClause(InitializerClauseAST
*node
)
210 visit(node
->expression
);
213 void DefaultVisitor::visitLabeledStatement(LabeledStatementAST
*)
218 void DefaultVisitor::visitLinkageBody(LinkageBodyAST
*node
)
220 visitNodes(this, node
->declarations
);
223 void DefaultVisitor::visitLinkageSpecification(LinkageSpecificationAST
*node
)
225 visit(node
->linkage_body
);
226 visit(node
->declaration
);
229 void DefaultVisitor::visitMemInitializer(MemInitializerAST
*node
)
231 visit(node
->initializer_id
);
232 visit(node
->expression
);
235 void DefaultVisitor::visitName(NameAST
*node
)
237 visitNodes(this, node
->qualified_names
);
238 visit(node
->unqualified_name
);
241 void DefaultVisitor::visitNamespace(NamespaceAST
*node
)
243 visit(node
->linkage_body
);
246 void DefaultVisitor::visitNamespaceAliasDefinition(NamespaceAliasDefinitionAST
*node
)
248 visit(node
->alias_name
);
251 void DefaultVisitor::visitNewDeclarator(NewDeclaratorAST
*node
)
254 visit(node
->sub_declarator
);
255 visitNodes(this, node
->expressions
);
258 void DefaultVisitor::visitNewExpression(NewExpressionAST
*node
)
260 visit(node
->expression
);
261 visit(node
->type_id
);
262 visit(node
->new_type_id
);
263 visit(node
->new_initializer
);
266 void DefaultVisitor::visitNewInitializer(NewInitializerAST
*node
)
268 visit(node
->expression
);
271 void DefaultVisitor::visitNewTypeId(NewTypeIdAST
*node
)
273 visit(node
->type_specifier
);
274 visit(node
->new_initializer
);
275 visit(node
->new_declarator
);
278 void DefaultVisitor::visitOperator(OperatorAST
*)
283 void DefaultVisitor::visitOperatorFunctionId(OperatorFunctionIdAST
*node
)
286 visit(node
->type_specifier
);
287 visitNodes(this, node
->ptr_ops
);
290 void DefaultVisitor::visitParameterDeclaration(ParameterDeclarationAST
*node
)
292 visit(node
->type_specifier
);
293 visit(node
->declarator
);
294 visit(node
->expression
);
297 void DefaultVisitor::visitParameterDeclarationClause(ParameterDeclarationClauseAST
*node
)
299 visitNodes(this, node
->parameter_declarations
);
302 void DefaultVisitor::visitPostfixExpression(PostfixExpressionAST
*node
)
304 visit(node
->type_specifier
);
305 visit(node
->expression
);
306 visitNodes(this, node
->sub_expressions
);
309 void DefaultVisitor::visitPrimaryExpression(PrimaryExpressionAST
*node
)
311 visit(node
->literal
);
312 visit(node
->expression_statement
);
313 visit(node
->sub_expression
);
317 void DefaultVisitor::visitPtrOperator(PtrOperatorAST
*node
)
319 visit(node
->mem_ptr
);
322 void DefaultVisitor::visitPtrToMember(PtrToMemberAST
*)
327 void DefaultVisitor::visitReturnStatement(ReturnStatementAST
*node
)
329 visit(node
->expression
);
332 void DefaultVisitor::visitSimpleDeclaration(SimpleDeclarationAST
*node
)
334 visit(node
->type_specifier
);
335 visitNodes(this, node
->init_declarators
);
336 visit(node
->win_decl_specifiers
);
339 void DefaultVisitor::visitSimpleTypeSpecifier(SimpleTypeSpecifierAST
*node
)
342 visit(node
->type_id
);
343 visit(node
->expression
);
346 void DefaultVisitor::visitSizeofExpression(SizeofExpressionAST
*node
)
348 visit(node
->type_id
);
349 visit(node
->expression
);
352 void DefaultVisitor::visitStringLiteral(StringLiteralAST
*)
357 void DefaultVisitor::visitSubscriptExpression(SubscriptExpressionAST
*node
)
359 visit(node
->subscript
);
362 void DefaultVisitor::visitSwitchStatement(SwitchStatementAST
*node
)
364 visit(node
->condition
);
365 visit(node
->statement
);
368 void DefaultVisitor::visitTemplateArgument(TemplateArgumentAST
*node
)
370 visit(node
->type_id
);
371 visit(node
->expression
);
374 void DefaultVisitor::visitTemplateDeclaration(TemplateDeclarationAST
*node
)
376 visitNodes(this, node
->template_parameters
);
377 visit(node
->declaration
);
380 void DefaultVisitor::visitTemplateParameter(TemplateParameterAST
*node
)
382 visit(node
->type_parameter
);
383 visit(node
->parameter_declaration
);
386 void DefaultVisitor::visitThrowExpression(ThrowExpressionAST
*node
)
388 visit(node
->expression
);
391 void DefaultVisitor::visitTranslationUnit(TranslationUnitAST
*node
)
393 visitNodes(this, node
->declarations
);
396 void DefaultVisitor::visitTryBlockStatement(TryBlockStatementAST
*)
401 void DefaultVisitor::visitTypeId(TypeIdAST
*node
)
403 visit(node
->type_specifier
);
404 visit(node
->declarator
);
407 void DefaultVisitor::visitTypeIdentification(TypeIdentificationAST
*node
)
410 visit(node
->expression
);
413 void DefaultVisitor::visitTypeParameter(TypeParameterAST
*node
)
416 visit(node
->type_id
);
417 visitNodes(this, node
->template_parameters
);
418 visit(node
->template_name
);
421 void DefaultVisitor::visitTypedef(TypedefAST
*node
)
423 visit(node
->type_specifier
);
424 visitNodes(this, node
->init_declarators
);
427 void DefaultVisitor::visitUnaryExpression(UnaryExpressionAST
*node
)
429 visit(node
->expression
);
432 void DefaultVisitor::visitUnqualifiedName(UnqualifiedNameAST
*node
)
434 visit(node
->operator_id
);
435 visitNodes(this, node
->template_arguments
);
438 void DefaultVisitor::visitUsing(UsingAST
*node
)
443 void DefaultVisitor::visitUsingDirective(UsingDirectiveAST
*node
)
448 void DefaultVisitor::visitWhileStatement(WhileStatementAST
*node
)
450 visit(node
->condition
);
451 visit(node
->statement
);
454 void DefaultVisitor::visitWinDeclSpec(WinDeclSpecAST
*)
459 // kate: space-indent on; indent-width 2; replace-tabs on;