LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
frame.hh
Go to the documentation of this file.
1 
6 #ifndef FRAME_FRAME_HH
7 # define FRAME_FRAME_HH
8 
9 # include <iosfwd>
10 
11 # include <temp/fwd.hh>
12 # include <frame/fwd.hh>
13 # include <temp/label.hh>
14 
15 namespace frame
16 {
17 
41  class Frame
42  {
43  public:
44  Frame(const temp::Label& label);
49  Frame(const temp::Label& label, const bool_list_type& escapes);
51  Frame(const Frame& src);
52 
54  ~Frame();
55 
56  Frame& operator= (const Frame& src);
57 
60  public:
61  temp::Label label_get() const;
62  const access_list_type& formals_get() const;
63  int get_current_frame_size() const;
69  public:
71  const In_Frame* frame_alloc();
72 
76  const Access* local_alloc(bool escapes);
77 
81  const Access* formal_alloc(bool escapes);
82 
84  void formal_alloc(const bool_list_type& escapes);
85 
90  void arg_add(size_t n);
91 
92 
93  protected:
94  const Access* alloc(bool escapes);
95 
96  protected:
99 
111 
113  size_t offset_ = 0;
115  size_t arg_offset_ = 0;
116  };
117 
119  std::ostream& operator<< (std::ostream& o, const Frame& f);
120 
121 } // namespace frame
122 
123 #endif // !FRAME_FRAME_HH