support for creating template instance classes
[lqt/mk.git] / cpptoxml / parser / visitor.h
blob34c41cf7b54d1d17b322f93a4bb51c7e35c593ee
1 /****************************************************************************
2 **
3 ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
4 ** Copyright (C) 2002-2005 Roberto Raggi <roberto@kdevelop.org>
5 **
6 ** This file is part of the Qt Script Generator project on Trolltech Labs.
7 **
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 #ifndef VISITOR_H
27 #define VISITOR_H
29 #include "ast.h"
31 class Visitor
33 public:
34 Visitor();
35 virtual ~Visitor();
37 virtual void visit(AST *node);
39 protected:
40 virtual void visitAccessSpecifier(AccessSpecifierAST *) {}
41 virtual void visitAsmDefinition(AsmDefinitionAST *) {}
42 virtual void visitBaseClause(BaseClauseAST *) {}
43 virtual void visitBaseSpecifier(BaseSpecifierAST *) {}
44 virtual void visitBinaryExpression(BinaryExpressionAST *) {}
45 virtual void visitCastExpression(CastExpressionAST *) {}
46 virtual void visitClassMemberAccess(ClassMemberAccessAST *) {}
47 virtual void visitClassSpecifier(ClassSpecifierAST *) {}
48 virtual void visitCompoundStatement(CompoundStatementAST *) {}
49 virtual void visitCondition(ConditionAST *) {}
50 virtual void visitConditionalExpression(ConditionalExpressionAST *) {}
51 virtual void visitCppCastExpression(CppCastExpressionAST *) {}
52 virtual void visitCtorInitializer(CtorInitializerAST *) {}
53 virtual void visitDeclarationStatement(DeclarationStatementAST *) {}
54 virtual void visitDeclarator(DeclaratorAST *) {}
55 virtual void visitDeleteExpression(DeleteExpressionAST *) {}
56 virtual void visitDoStatement(DoStatementAST *) {}
57 virtual void visitElaboratedTypeSpecifier(ElaboratedTypeSpecifierAST *) {}
58 virtual void visitEnumSpecifier(EnumSpecifierAST *) {}
59 virtual void visitEnumerator(EnumeratorAST *) {}
60 virtual void visitExceptionSpecification(ExceptionSpecificationAST *) {}
61 virtual void visitExpressionOrDeclarationStatement(ExpressionOrDeclarationStatementAST *) {}
62 virtual void visitExpressionStatement(ExpressionStatementAST *) {}
63 virtual void visitForStatement(ForStatementAST *) {}
64 virtual void visitFunctionCall(FunctionCallAST *) {}
65 virtual void visitFunctionDefinition(FunctionDefinitionAST *) {}
66 virtual void visitIfStatement(IfStatementAST *) {}
67 virtual void visitIncrDecrExpression(IncrDecrExpressionAST *) {}
68 virtual void visitInitDeclarator(InitDeclaratorAST *) {}
69 virtual void visitInitializer(InitializerAST *) {}
70 virtual void visitInitializerClause(InitializerClauseAST *) {}
71 virtual void visitLabeledStatement(LabeledStatementAST *) {}
72 virtual void visitLinkageBody(LinkageBodyAST *) {}
73 virtual void visitLinkageSpecification(LinkageSpecificationAST *) {}
74 virtual void visitMemInitializer(MemInitializerAST *) {}
75 virtual void visitName(NameAST *) {}
76 virtual void visitNamespace(NamespaceAST *) {}
77 virtual void visitNamespaceAliasDefinition(NamespaceAliasDefinitionAST *) {}
78 virtual void visitNewDeclarator(NewDeclaratorAST *) {}
79 virtual void visitNewExpression(NewExpressionAST *) {}
80 virtual void visitNewInitializer(NewInitializerAST *) {}
81 virtual void visitNewTypeId(NewTypeIdAST *) {}
82 virtual void visitOperator(OperatorAST *) {}
83 virtual void visitOperatorFunctionId(OperatorFunctionIdAST *) {}
84 virtual void visitParameterDeclaration(ParameterDeclarationAST *) {}
85 virtual void visitParameterDeclarationClause(ParameterDeclarationClauseAST *) {}
86 virtual void visitPostfixExpression(PostfixExpressionAST *) {}
87 virtual void visitPrimaryExpression(PrimaryExpressionAST *) {}
88 virtual void visitPtrOperator(PtrOperatorAST *) {}
89 virtual void visitPtrToMember(PtrToMemberAST *) {}
90 virtual void visitReturnStatement(ReturnStatementAST *) {}
91 virtual void visitSimpleDeclaration(SimpleDeclarationAST *) {}
92 virtual void visitSimpleTypeSpecifier(SimpleTypeSpecifierAST *) {}
93 virtual void visitSizeofExpression(SizeofExpressionAST *) {}
94 virtual void visitStringLiteral(StringLiteralAST *) {}
95 virtual void visitSubscriptExpression(SubscriptExpressionAST *) {}
96 virtual void visitSwitchStatement(SwitchStatementAST *) {}
97 virtual void visitTemplateArgument(TemplateArgumentAST *) {}
98 virtual void visitTemplateDeclaration(TemplateDeclarationAST *) {}
99 virtual void visitTemplateParameter(TemplateParameterAST *) {}
100 virtual void visitThrowExpression(ThrowExpressionAST *) {}
101 virtual void visitTranslationUnit(TranslationUnitAST *) {}
102 virtual void visitTryBlockStatement(TryBlockStatementAST *) {}
103 virtual void visitTypeId(TypeIdAST *) {}
104 virtual void visitTypeIdentification(TypeIdentificationAST *) {}
105 virtual void visitTypeParameter(TypeParameterAST *) {}
106 virtual void visitTypedef(TypedefAST *) {}
107 virtual void visitUnaryExpression(UnaryExpressionAST *) {}
108 virtual void visitUnqualifiedName(UnqualifiedNameAST *) {}
109 virtual void visitUsing(UsingAST *) {}
110 virtual void visitUsingDirective(UsingDirectiveAST *) {}
111 virtual void visitWhileStatement(WhileStatementAST *) {}
112 virtual void visitWinDeclSpec(WinDeclSpecAST *) {}
113 virtual void visitQProperty(QPropertyAST *) {}
114 virtual void visitForwardDeclarationSpecifier(ForwardDeclarationSpecifierAST *) {}
115 virtual void visitQEnums(QEnumsAST *) {}
117 private:
118 typedef void (Visitor::*visitor_fun_ptr)(AST *);
119 static visitor_fun_ptr _S_table[];
122 template <class _Tp>
123 void visitNodes(Visitor *v, const ListNode<_Tp> *nodes)
125 if (!nodes)
126 return;
128 const ListNode<_Tp>
129 *it = nodes->toFront(),
130 *end = it;
134 v->visit(it->element);
135 it = it->next;
137 while (it != end);
140 #endif // VISITOR_H
142 // kate: space-indent on; indent-width 2; replace-tabs on;