Line data Source code
1 : // Copyright (C) 2020-2026 Free Software Foundation, Inc.
2 :
3 : // This file is part of GCC.
4 :
5 : // GCC is free software; you can redistribute it and/or modify it under
6 : // the terms of the GNU General Public License as published by the Free
7 : // Software Foundation; either version 3, or (at your option) any later
8 : // version.
9 :
10 : // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11 : // WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 : // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 : // for more details.
14 :
15 : // You should have received a copy of the GNU General Public License
16 : // along with GCC; see the file COPYING3. If not see
17 : // <http://www.gnu.org/licenses/>.
18 :
19 : #ifndef RUST_TYTY_VISITOR
20 : #define RUST_TYTY_VISITOR
21 :
22 : #include "rust-tyty.h"
23 :
24 : namespace Rust {
25 : namespace TyTy {
26 :
27 111401 : class TyVisitor
28 : {
29 : public:
30 : virtual void visit (InferType &type) = 0;
31 : virtual void visit (ADTType &type) = 0;
32 : virtual void visit (TupleType &type) = 0;
33 : virtual void visit (FnType &type) = 0;
34 : virtual void visit (FnPtr &type) = 0;
35 : virtual void visit (ArrayType &type) = 0;
36 : virtual void visit (SliceType &type) = 0;
37 : virtual void visit (BoolType &type) = 0;
38 : virtual void visit (IntType &type) = 0;
39 : virtual void visit (UintType &type) = 0;
40 : virtual void visit (FloatType &type) = 0;
41 : virtual void visit (USizeType &type) = 0;
42 : virtual void visit (ISizeType &type) = 0;
43 : virtual void visit (ErrorType &type) = 0;
44 : virtual void visit (CharType &type) = 0;
45 : virtual void visit (ReferenceType &type) = 0;
46 : virtual void visit (PointerType &type) = 0;
47 : virtual void visit (ParamType &type) = 0;
48 : virtual void visit (ConstParamType &type) = 0;
49 : virtual void visit (ConstValueType &type) = 0;
50 : virtual void visit (ConstInferType &type) = 0;
51 : virtual void visit (ConstErrorType &type) = 0;
52 : virtual void visit (StrType &type) = 0;
53 : virtual void visit (NeverType &type) = 0;
54 : virtual void visit (PlaceholderType &type) = 0;
55 : virtual void visit (ProjectionType &type) = 0;
56 : virtual void visit (DynamicObjectType &type) = 0;
57 : virtual void visit (ClosureType &type) = 0;
58 : virtual void visit (OpaqueType &type) = 0;
59 : };
60 :
61 345764 : class TyConstVisitor
62 : {
63 : public:
64 : virtual void visit (const InferType &type) = 0;
65 : virtual void visit (const ADTType &type) = 0;
66 : virtual void visit (const TupleType &type) = 0;
67 : virtual void visit (const FnType &type) = 0;
68 : virtual void visit (const FnPtr &type) = 0;
69 : virtual void visit (const ArrayType &type) = 0;
70 : virtual void visit (const SliceType &type) = 0;
71 : virtual void visit (const BoolType &type) = 0;
72 : virtual void visit (const IntType &type) = 0;
73 : virtual void visit (const UintType &type) = 0;
74 : virtual void visit (const FloatType &type) = 0;
75 : virtual void visit (const USizeType &type) = 0;
76 : virtual void visit (const ISizeType &type) = 0;
77 : virtual void visit (const ErrorType &type) = 0;
78 : virtual void visit (const CharType &type) = 0;
79 : virtual void visit (const ReferenceType &type) = 0;
80 : virtual void visit (const PointerType &type) = 0;
81 : virtual void visit (const ParamType &type) = 0;
82 : virtual void visit (const ConstParamType &type) = 0;
83 : virtual void visit (const ConstValueType &type) = 0;
84 : virtual void visit (const ConstInferType &type) = 0;
85 : virtual void visit (const ConstErrorType &type) = 0;
86 : virtual void visit (const StrType &type) = 0;
87 : virtual void visit (const NeverType &type) = 0;
88 : virtual void visit (const PlaceholderType &type) = 0;
89 : virtual void visit (const ProjectionType &type) = 0;
90 : virtual void visit (const DynamicObjectType &type) = 0;
91 : virtual void visit (const ClosureType &type) = 0;
92 : virtual void visit (const OpaqueType &type) = 0;
93 : };
94 :
95 : } // namespace TyTy
96 : } // namespace Rust
97 :
98 : #endif // RUST_TYTY_VISITOR
|