/* Copyright 2008 Hamish Rodda This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef CHANGEVISITOR_H #define CHANGEVISITOR_H #include "astchange.h" class ChangeVisitor { public: ChangeVisitor(); virtual ~ChangeVisitor(); virtual void visit(Change* change, AST *node); protected: virtual void visitAccessSpecifier(AccessSpecifierChange*, AccessSpecifierAST *) {} virtual void visitAsmDefinition(AsmDefinitionChange*, AsmDefinitionAST *) {} virtual void visitBaseClause(BaseClauseChange*, BaseClauseAST *) {} virtual void visitBaseSpecifier(BaseSpecifierChange*, BaseSpecifierAST *) {} virtual void visitBinaryExpression(BinaryExpressionChange*, BinaryExpressionAST *) {} virtual void visitCastExpression(CastExpressionChange*, CastExpressionAST *) {} virtual void visitClassMemberAccess(ClassMemberAccessChange*, ClassMemberAccessAST *) {} virtual void visitClassSpecifier(ClassSpecifierChange*, ClassSpecifierAST *) {} virtual void visitCompoundStatement(CompoundStatementChange*, CompoundStatementAST *) {} virtual void visitCondition(ConditionChange*, ConditionAST *) {} virtual void visitConditionalExpression(ConditionalExpressionChange*, ConditionalExpressionAST *) {} virtual void visitCppCastExpression(CppCastExpressionChange*, CppCastExpressionAST *) {} virtual void visitCtorInitializer(CtorInitializerChange*, CtorInitializerAST *) {} virtual void visitDeclarationStatement(DeclarationStatementChange*, DeclarationStatementAST *) {} virtual void visitDeclarator(DeclaratorChange*, DeclaratorAST *) {} virtual void visitDeleteExpression(DeleteExpressionChange*, DeleteExpressionAST *) {} virtual void visitDoStatement(DoStatementChange*, DoStatementAST *) {} virtual void visitElaboratedTypeSpecifier(ElaboratedTypeSpecifierChange*, ElaboratedTypeSpecifierAST *) {} virtual void visitEnumSpecifier(EnumSpecifierChange*, EnumSpecifierAST *) {} virtual void visitEnumerator(EnumeratorChange*, EnumeratorAST *) {} virtual void visitExceptionSpecification(ExceptionSpecificationChange*, ExceptionSpecificationAST *) {} virtual void visitExpressionOrDeclarationStatement(ExpressionOrDeclarationStatementChange*, ExpressionOrDeclarationStatementAST *) {} virtual void visitExpressionStatement(ExpressionStatementChange*, ExpressionStatementAST *) {} virtual void visitForStatement(ForStatementChange*, ForStatementAST *) {} virtual void visitFunctionCall(FunctionCallChange*, FunctionCallAST *) {} virtual void visitFunctionDefinition(FunctionDefinitionChange*, FunctionDefinitionAST *) {} virtual void visitIfStatement(IfStatementChange*, IfStatementAST *) {} virtual void visitIncrDecrExpression(IncrDecrExpressionChange*, IncrDecrExpressionAST *) {} virtual void visitInitDeclarator(InitDeclaratorChange*, InitDeclaratorAST *) {} virtual void visitInitializer(InitializerChange*, InitializerAST *) {} virtual void visitInitializerClause(InitializerClauseChange*, InitializerClauseAST *) {} virtual void visitJumpStatement(JumpStatementChange*, JumpStatementAST *) {} virtual void visitLabeledStatement(LabeledStatementChange*, LabeledStatementAST *) {} virtual void visitLinkageBody(LinkageBodyChange*, LinkageBodyAST *) {} virtual void visitLinkageSpecification(LinkageSpecificationChange*, LinkageSpecificationAST *) {} virtual void visitMemInitializer(MemInitializerChange*, MemInitializerAST *) {} virtual void visitName(NameChange*, NameAST *) {} virtual void visitNamespace(NamespaceChange*, NamespaceAST *) {} virtual void visitNamespaceAliasDefinition(NamespaceAliasDefinitionChange*, NamespaceAliasDefinitionAST *) {} virtual void visitNewDeclarator(NewDeclaratorChange*, NewDeclaratorAST *) {} virtual void visitNewExpression(NewExpressionChange*, NewExpressionAST *) {} virtual void visitNewInitializer(NewInitializerChange*, NewInitializerAST *) {} virtual void visitNewTypeId(NewTypeIdChange*, NewTypeIdAST *) {} virtual void visitOperator(OperatorChange*, OperatorAST *) {} virtual void visitOperatorFunctionId(OperatorFunctionIdChange*, OperatorFunctionIdAST *) {} virtual void visitParameterDeclaration(ParameterDeclarationChange*, ParameterDeclarationAST *) {} virtual void visitParameterDeclarationClause(ParameterDeclarationClauseChange*, ParameterDeclarationClauseAST *) {} virtual void visitPostfixExpression(PostfixExpressionChange*, PostfixExpressionAST *) {} virtual void visitPrimaryExpression(PrimaryExpressionChange*, PrimaryExpressionAST *) {} virtual void visitPtrOperator(PtrOperatorChange*, PtrOperatorAST *) {} virtual void visitPtrToMember(PtrToMemberChange*, PtrToMemberAST *) {} virtual void visitReturnStatement(ReturnStatementChange*, ReturnStatementAST *) {} virtual void visitSimpleDeclaration(SimpleDeclarationChange*, SimpleDeclarationAST *) {} virtual void visitSimpleTypeSpecifier(SimpleTypeSpecifierChange*, SimpleTypeSpecifierAST *) {} virtual void visitSizeofExpression(SizeofExpressionChange*, SizeofExpressionAST *) {} virtual void visitStringLiteral(StringLiteralChange*, StringLiteralAST *) {} virtual void visitSubscriptExpression(SubscriptExpressionChange*, SubscriptExpressionAST *) {} virtual void visitSwitchStatement(SwitchStatementChange*, SwitchStatementAST *) {} virtual void visitTemplateArgument(TemplateArgumentChange*, TemplateArgumentAST *) {} virtual void visitTemplateDeclaration(TemplateDeclarationChange*, TemplateDeclarationAST *) {} virtual void visitTemplateParameter(TemplateParameterChange*, TemplateParameterAST *) {} virtual void visitThrowExpression(ThrowExpressionChange*, ThrowExpressionAST *) {} virtual void visitTranslationUnit(TranslationUnitChange*, TranslationUnitAST *) {} virtual void visitTryBlockStatement(TryBlockStatementChange*, TryBlockStatementAST *) {} virtual void visitCatchStatement(CatchStatementChange*, CatchStatementAST *) {} virtual void visitTypeId(TypeIdChange*, TypeIdAST *) {} virtual void visitTypeIdentification(TypeIdentificationChange*, TypeIdentificationAST *) {} virtual void visitTypeParameter(TypeParameterChange*, TypeParameterAST *) {} virtual void visitTypedef(TypedefChange*, TypedefAST *) {} virtual void visitUnaryExpression(UnaryExpressionChange*, UnaryExpressionAST *) {} virtual void visitUnqualifiedName(UnqualifiedNameChange*, UnqualifiedNameAST *) {} virtual void visitUsing(UsingChange*, UsingAST *) {} virtual void visitUsingDirective(UsingDirectiveChange*, UsingDirectiveAST *) {} virtual void visitWhileStatement(WhileStatementChange*, WhileStatementAST *) {} virtual void visitWinDeclSpec(WinDeclSpecChange*, WinDeclSpecAST *) {} virtual void visitSignalSlotExpression(SignalSlotExpressionChange*, SignalSlotExpressionAST *) {} private: typedef void (ChangeVisitor::*visitor_fun_ptr)(Change*, AST *); static visitor_fun_ptr _S_table[]; }; #endif // CHANGEVISITOR_H