2
Copyright 2008 Hamish Rodda <rodda@kde.org>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Library General Public
6
License version 2 as published by the Free Software Foundation.
8
This library is distributed in the hope that it will be useful,
9
but WITHOUT ANY WARRANTY; without even the implied warranty of
10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
Library General Public License for more details.
13
You should have received a copy of the GNU Library General Public License
14
along with this library; see the file COPYING.LIB. If not, write to
15
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16
Boston, MA 02110-1301, USA.
19
#include "changevisitor.h"
21
ChangeVisitor::visitor_fun_ptr ChangeVisitor::_S_table[AST::NODE_KIND_COUNT] = {
23
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitAccessSpecifier),
24
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitAsmDefinition),
25
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitBaseClause),
26
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitBaseSpecifier),
27
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitBinaryExpression),
28
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitCastExpression),
29
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitClassMemberAccess),
30
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitClassSpecifier),
31
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitCompoundStatement),
32
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitCondition),
33
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitConditionalExpression),
34
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitCppCastExpression),
35
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitCtorInitializer),
36
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitDeclarationStatement),
37
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitDeclarator),
38
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitDeleteExpression),
39
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitDoStatement),
40
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitElaboratedTypeSpecifier),
41
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitEnumSpecifier),
42
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitEnumerator),
43
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitExceptionSpecification),
44
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitExpressionOrDeclarationStatement),
45
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitExpressionStatement),
46
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitForStatement),
47
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitFunctionCall),
48
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitFunctionDefinition),
49
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitIfStatement),
50
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitIncrDecrExpression),
51
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitInitDeclarator),
52
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitInitializer),
53
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitInitializerClause),
54
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitLabeledStatement),
55
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitLinkageBody),
56
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitLinkageSpecification),
57
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitMemInitializer),
58
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitName),
59
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitNamespace),
60
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitNamespaceAliasDefinition),
61
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitNewDeclarator),
62
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitNewExpression),
63
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitNewInitializer),
64
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitNewTypeId),
65
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitOperator),
66
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitOperatorFunctionId),
67
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitParameterDeclaration),
68
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitParameterDeclarationClause),
69
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitPostfixExpression),
70
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitPrimaryExpression),
71
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitPtrOperator),
72
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitPtrToMember),
73
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitReturnStatement),
74
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitSimpleDeclaration),
75
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitSimpleTypeSpecifier),
76
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitSizeofExpression),
77
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitStringLiteral),
78
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitSubscriptExpression),
79
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitSwitchStatement),
80
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTemplateArgument),
81
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTemplateDeclaration),
82
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTemplateParameter),
83
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitThrowExpression),
84
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTranslationUnit),
85
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTryBlockStatement),
86
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitCatchStatement),
87
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTypeId),
88
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTypeIdentification),
89
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTypeParameter),
90
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitTypedef),
91
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitUnaryExpression),
92
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitUnqualifiedName),
93
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitUsing),
94
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitUsingDirective),
95
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitWhileStatement),
96
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitWinDeclSpec),
98
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitJumpStatement),
99
reinterpret_cast<ChangeVisitor::visitor_fun_ptr>(&ChangeVisitor::visitSignalSlotExpression)
102
ChangeVisitor::ChangeVisitor()
106
ChangeVisitor::~ChangeVisitor()
110
void ChangeVisitor::visit(Change* change, AST *node)
113
(this->*_S_table[node->kind])(change, node);