LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
fragment.hh
Go to the documentation of this file.
1 
6 #ifndef ASSEM_FRAGMENT_HH
7 # define ASSEM_FRAGMENT_HH
8 
9 # include <tree/fragment.hh>
10 
11 # include <assem/fwd.hh>
12 # include <assem/instrs.hh>
13 # include <temp/label.hh>
14 
15 namespace assem
16 {
17 
18  /*-----------.
19  | Fragment. |
20  `-----------*/
21 
23  class Fragment
24  {
25  public:
26  Fragment();
27  virtual ~Fragment();
28 
29  virtual std::ostream& dump(std::ostream& os) const = 0;
30 
33  public:
35  virtual void accept(Visitor& v) = 0;
36  virtual void accept(ConstVisitor& v) const = 0;
38  }; // class Fragment
39 
41  std::ostream& operator<< (std::ostream& ostr, const Fragment& fragment);
42 
43 
44  /*-----------.
45  | DataFrag. |
46  `-----------*/
47 
49  class DataFrag: public Fragment
50  {
51  public:
52  DataFrag(const tree::DataFrag& frag);
53  ~DataFrag();
54 
55  virtual std::ostream& dump(std::ostream& ostr) const override;
56 
59  public:
61  virtual void accept(Visitor& v) override;
62  virtual void accept(ConstVisitor& v) const override;
65  public:
66  const tree::DataFrag& data_get() const;
67 
68  protected:
70  };
71 
72 
73 
74  /*-----------.
75  | ProcFrag. |
76  `-----------*/
77 
78 
80  class ProcFrag: public Fragment
81  {
82  public:
83  ProcFrag(const tree::ProcFrag& frag);
84  ~ProcFrag();
85 
86  virtual std::ostream& dump(std::ostream& ostr) const override;
87 
91  const misc::symbol& name_get() const;
93  temp::Label label_get() const;
97  std::string file_name(const std::string& p = "",
98  const std::string& s = "") const;
99 
102  void instrs_set(assem::Instrs& instrs);
106  const assem::Instrs& instrs_get() const;
107 
110  public:
112  virtual void accept(Visitor& v) override;
113  virtual void accept(ConstVisitor& v) const override;
116  protected:
125  }; // class DataFrag
126 
127 
128 } // namespace assem
129 
130 # include <assem/fragment.hxx>
131 
132 #endif // !ASSEM_FRAGMENT_HH