source: src/AST/Visitor.hpp @ db27767

ADTarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since db27767 was db27767, checked in by Andrew Beach <ajbeach@…>, 5 years ago

Filled out the declaration of the ast::Visitor class.

  • Property mode set to 100644
File size: 7.4 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// Visitor.hpp -- Interface of a class that visits ast nodes.
8//
9// Author           : Andrew Beach
10// Created On       : Thr May 9 15:28:00 2019
11// Last Modified By : Andrew Beach
12// Last Modified On : Thr May 9 15:33:00 2019
13// Update Count     : 0
14//
15
16#pragma once
17
18#include "Fwd.hpp"
19
20namespace ast {
21
22class Visitor {
23public:
24    virtual DeclWithType *     visit( const ObjectDecl           * ) = 0;
25    virtual DeclWithType *     visit( const FunctionDecl         * ) = 0;
26    virtual Decl *             visit( const StructDecl           * ) = 0;
27    virtual Decl *             visit( const UnionDecl            * ) = 0;
28    virtual Decl *             visit( const EnumDecl             * ) = 0;
29    virtual Decl *             visit( const TraitDecl            * ) = 0;
30    virtual Decl *             visit( const TypeDecl             * ) = 0;
31    virtual Decl *             visit( const TypedefDecl          * ) = 0;
32    virtual AsmDecl *          visit( const AsmDecl              * ) = 0;
33    virtual StaticAssertDecl * visit( const StaticAssertDecl     * ) = 0;
34    virtual CompoundStmt *     visit( const CompoundStmt         * ) = 0;
35    virtual Stmt *             visit( const ExprStmt             * ) = 0;
36    virtual Stmt *             visit( const AsmStmt              * ) = 0;
37    virtual Stmt *             visit( const DirectiveStmt        * ) = 0;
38    virtual Stmt *             visit( const IfStmt               * ) = 0;
39    virtual Stmt *             visit( const WhileStmt            * ) = 0;
40    virtual Stmt *             visit( const ForStmt              * ) = 0;
41    virtual Stmt *             visit( const SwitchStmt           * ) = 0;
42    virtual Stmt *             visit( const CaseStmt             * ) = 0;
43    virtual Stmt *             visit( const BranchStmt           * ) = 0;
44    virtual Stmt *             visit( const ReturnStmt           * ) = 0;
45    virtual Stmt *             visit( const ThrowStmt            * ) = 0;
46    virtual Stmt *             visit( const TryStmt              * ) = 0;
47    virtual Stmt *             visit( const CatchStmt            * ) = 0;
48    virtual Stmt *             visit( const FinallyStmt          * ) = 0;
49    virtual Stmt *             visit( const WaitForStmt          * ) = 0;
50    virtual Stmt *             visit( const WithStmt             * ) = 0;
51    virtual NullStmt *         visit( const NullStmt             * ) = 0;
52    virtual Stmt *             visit( const DeclStmt             * ) = 0;
53    virtual Stmt *             visit( const ImplicitCtorDtorStmt * ) = 0;
54    virtual Expr *             visit( const ApplicationExpr      * ) = 0;
55    virtual Expr *             visit( const UntypedExpr          * ) = 0;
56    virtual Expr *             visit( const NameExpr             * ) = 0;
57    virtual Expr *             visit( const AddressExpr          * ) = 0;
58    virtual Expr *             visit( const LabelAddressExpr     * ) = 0;
59    virtual Expr *             visit( const CastExpr             * ) = 0;
60    virtual Expr *             visit( const KeywordCastExpr      * ) = 0;
61    virtual Expr *             visit( const VirtualCastExpr      * ) = 0;
62    virtual Expr *             visit( const UntypedMemberExpr    * ) = 0;
63    virtual Expr *             visit( const MemberExpr           * ) = 0;
64    virtual Expr *             visit( const VariableExpr         * ) = 0;
65    virtual Expr *             visit( const ConstantExpr         * ) = 0;
66    virtual Expr *             visit( const SizeofExpr           * ) = 0;
67    virtual Expr *             visit( const AlignofExpr          * ) = 0;
68    virtual Expr *             visit( const UntypedOffsetofExpr  * ) = 0;
69    virtual Expr *             visit( const OffsetofExpr         * ) = 0;
70    virtual Expr *             visit( const OffsetPackExpr       * ) = 0;
71    virtual Expr *             visit( const AttrExpr             * ) = 0;
72    virtual Expr *             visit( const LogicalExpr          * ) = 0;
73    virtual Expr *             visit( const ConditionalExpr      * ) = 0;
74    virtual Expr *             visit( const CommaExpr            * ) = 0;
75    virtual Expr *             visit( const TypeExpr             * ) = 0;
76    virtual Expr *             visit( const AsmExpr              * ) = 0;
77    virtual Expr *             visit( const ImplicitCopyCtorExpr * ) = 0;
78    virtual Expr *             visit( const ConstructorExpr      * ) = 0;
79    virtual Expr *             visit( const CompoundLiteralExpr  * ) = 0;
80    virtual Expr *             visit( const RangeExpr            * ) = 0;
81    virtual Expr *             visit( const UntypedTupleExpr     * ) = 0;
82    virtual Expr *             visit( const TupleExpr            * ) = 0;
83    virtual Expr *             visit( const TupleIndexExpr       * ) = 0;
84    virtual Expr *             visit( const TupleAssignExpr      * ) = 0;
85    virtual Expr *             visit( const StmtExpr             * ) = 0;
86    virtual Expr *             visit( const UniqueExpr           * ) = 0;
87    virtual Expr *             visit( const UntypedInitExpr      * ) = 0;
88    virtual Expr *             visit( const InitExpr             * ) = 0;
89    virtual Expr *             visit( const DeletedExpr          * ) = 0;
90    virtual Expr *             visit( const DefaultArgExpr       * ) = 0;
91    virtual Expr *             visit( const GenericExpr          * ) = 0;
92    virtual Type *             visit( const VoidType             * ) = 0;
93    virtual Type *             visit( const BasicType            * ) = 0;
94    virtual Type *             visit( const PointerType          * ) = 0;
95    virtual Type *             visit( const ArrayType            * ) = 0;
96    virtual Type *             visit( const ReferenceType        * ) = 0;
97    virtual Type *             visit( const QualifiedType        * ) = 0;
98    virtual Type *             visit( const FunctionType         * ) = 0;
99    virtual Type *             visit( const StructInstType       * ) = 0;
100    virtual Type *             visit( const UnionInstType        * ) = 0;
101    virtual Type *             visit( const EnumInstType         * ) = 0;
102    virtual Type *             visit( const TraitInstType        * ) = 0;
103    virtual Type *             visit( const TypeInstType         * ) = 0;
104    virtual Type *             visit( const TupleType            * ) = 0;
105    virtual Type *             visit( const TypeofType           * ) = 0;
106    virtual Type *             visit( const AttrType             * ) = 0;
107    virtual Type *             visit( const VarArgsType          * ) = 0;
108    virtual Type *             visit( const ZeroType             * ) = 0;
109    virtual Type *             visit( const OneType              * ) = 0;
110    virtual Type *             visit( const GlobalScopeType      * ) = 0;
111    virtual Designation *      visit( const Designation          * ) = 0;
112    virtual Init *             visit( const SingleInit           * ) = 0;
113    virtual Init *             visit( const ListInit             * ) = 0;
114    virtual Init *             visit( const ConstructorInit      * ) = 0;
115    virtual Constant *         visit( const Constant             * ) = 0;
116    virtual Attribute *        visit( const Attribute            * ) = 0;
117    virtual TypeSubstitution * visit( const TypeSubstitution     * ) = 0;
118};
119
120}
121
122// Local Variables: //
123// tab-width: 4 //
124// mode: c++ //
125// compile-command: "make install" //
126// End: //
Note: See TracBrowser for help on using the repository browser.