LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
named.hh
Go to the documentation of this file.
1 
5 #ifndef TYPE_NAMED_HH
6 # define TYPE_NAMED_HH
7 
8 # include <misc/symbol.hh>
9 # include <type/type.hh>
10 # include <type/fwd.hh>
11 
12 namespace type
13 {
19  class Named : public Type
20  {
23  public:
26  Named(misc::symbol name);
30  Named(misc::symbol name, const Type* type);
32  ~Named();
38  public:
40  const Type* type_get() const;
41 
43  void type_set(const Type* type);
44 
49  void type_set(const Type* type) const;
50 
52  misc::symbol name_get() const;
53 
55  void name_set(const misc::symbol& name);
61  public:
63  const Type& actual() const;
64 
67  bool sound() const;
70  virtual bool compatible_with(const Type& other) const override;
71 
72  public:
74  virtual std::ostream& dump(std::ostream& ostr) const override;
75 
76  protected:
79 
91  mutable const Type* type_;
92  };
93 
94 
95 } // namespace type
96 
97 # include <type/named.hxx>
98 
99 #endif // !TYPE_NAMED_HH