LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
any-decs.hh
Go to the documentation of this file.
1 
6 #ifndef AST_ANY_DECS_HH
7 # define AST_ANY_DECS_HH
8 
9 # include <list>
10 
11 # include <ast/decs.hh>
12 
13 namespace ast
14 {
15 
16  template <typename D>
18  class AnyDecs : public Decs
19  {
20  public:
22  typedef std::list<D*> Ds;
23 
26  public:
30  AnyDecs(const Location& location, Ds* decs);
31  AnyDecs(const Location& location);
32 
36  ~AnyDecs();
37 
43  public:
45  virtual void accept(Visitor& v) override;
46 
48  virtual void accept(ConstVisitor& v) const override;
49 
55  public:
58  AnyDecs<D>& push_front(D& d);
59 
62  AnyDecs<D>& push_back(D& d);
63 
65  Ds& decs_get();
66 
68  const Ds& decs_get() const;
69 
72  // SWIG 2 does not understand C++11 constructs, such as data
73  // member initializers.
74 # ifndef SWIG
75  private:
76  Ds* decs_ = new Ds();
77 # endif
78  };
79 
80 } // namespace ast
81 
82 # include <ast/any-decs.hxx>
83 
84 #endif // !AST_ANY_DECS_HH