Remove outermost loop parameter.
[official-gcc/graphite-test-results.git] / libpcp / pcp_visitor.h
blob99fd2fedc3d67c3a2c4a3f13ddb43adbc5ce2b10
1 // Copyright (C) 2009 Free Software Foundation, Inc.
2 // Contributed by Jan Sjodin <jan.sjodin@amd.com>.
4 // This file is part of the Polyhedral Compilation Package Library (libpcp).
6 // Libpcp is free software; you can redistribute it and/or modify it
7 // under the terms of the GNU Lesser General Public License as published by
8 // the Free Software Foundation; either version 2.1 of the License, or
9 // (at your option) any later version.
11 // Libpcp is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
14 // more details.
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with libpcp; see the file COPYING.LIB. If not, write to the
18 // Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 // MA 02110-1301, USA.
21 // As a special exception, if you link this library with other files, some
22 // of which are compiled with GCC, to produce an executable, this library
23 // does not by itself cause the resulting executable to be covered by the
24 // GNU General Public License. This exception does not however invalidate
25 // any other reasons why the executable file might be covered by the GNU
26 // General Public License.
28 #ifndef _PCP_VISITOR_H_
29 #define _PCP_VISITOR_H_
31 #include "pcp.h"
33 class PcpVisitor
35 // Default implementation is to call superclass visitor
36 // Top level (PcpObject, PcpAnnot, PcpAnnotSet should generally be an error.
37 // Default traversal had been implented, but has to be enabled.
39 protected:
41 // Default implementations of visiting children of container objects
42 virtual void visitChildren(PcpArrayType* arrayType);
43 virtual void visitChildren(PcpArith* arith);
44 virtual void visitChildren(PcpArrayAccess* arrayAccess);
45 virtual void visitChildren(PcpCopy* copy);
46 virtual void visitChildren(PcpUserStmt* userStmt);
47 virtual void visitChildren(PcpSequence* sequence);
48 virtual void visitChildren(PcpGuard* guard);
49 virtual void visitChildren(PcpLoop* loop);
50 virtual void visitChildren(PcpScop* scop);
51 virtual void visitChildren(PcpCompare* compare);
53 public:
54 virtual void visit(PcpObject* object);
55 virtual void visit(PcpArrayType* arrayType);
56 virtual void visit(PcpArith* arith);
57 virtual void visit(PcpConstant* constant);
58 virtual void visit(PcpIv* iv);
59 virtual void visit(PcpParameter* parameter);
60 virtual void visit(PcpVariable* variable);
61 virtual void visit(PcpArrayAccess* arrayAccess);
62 virtual void visit(PcpStmt* stmt);
63 virtual void visit(PcpCopy* copy);
64 virtual void visit(PcpUserStmt* userStmt);
65 virtual void visit(PcpSequence* sequence);
66 virtual void visit(PcpGuard* guard);
67 virtual void visit(PcpLoop* loop);
68 virtual void visit(PcpScop* scop);
69 virtual void visit(PcpExpr* expr);
70 virtual void visit(PcpBoolExpr* boolExpr);
71 virtual void visit(PcpCompare* compare);
72 virtual void visit(PcpBoolArith* boolArith);
75 virtual void visit(PcpAnnotSet* annot);
77 virtual void visit(PcpAnnot* annot);
78 virtual void visit(PcpAnnotInt* annotInt);
79 virtual void visit(PcpAnnotTerm* annotTerm);
80 virtual void visit(PcpAnnotString* annotString);
81 virtual void visit(PcpAnnotObject* annotObject);
83 PcpVisitor();
84 // Extended components
87 #endif // _PCP_VISITOR_H_