summaryrefslogtreecommitdiff
path: root/omegalib/code_gen/include/code_gen/CG_suifRepr.h
blob: ce7c6cd7ece2a82ac33247c902afac1f2771026b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef CG_suifRepr_h
#define CG_suifRepr_h

#include <code_gen/CG_outputRepr.h>
#include <suif1.h>

namespace omega {

class CG_suifRepr : public CG_outputRepr {
  friend class CG_suifBuilder;
public:
  CG_suifRepr();
  CG_suifRepr(tree_node_list *tnl);
  CG_suifRepr(operand op);
  virtual ~CG_suifRepr();
  virtual CG_outputRepr *clone();
  virtual void clear();

  tree_node_list* GetCode() const;
  operand GetExpression() const;

  //---------------------------------------------------------------------------
  // Dump operations
  //---------------------------------------------------------------------------
  virtual void Dump() const;
  virtual void DumpToFile(FILE *fp = stderr) const;
private:
  // only one of _tnl and _op would be active at any time, depending on
  // whether it is building a statement list or an expression tree
  tree_node_list *tnl_;
  operand op_;
};

} // namespace

#endif