Changes in src/SynTree/Initializer.h [4d2434a:843054c2]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Initializer.h
r4d2434a r843054c2 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Initializer.h -- 7 // Initializer.h -- 8 8 // 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Apr 12 13:49:13 201613 // Update Count : 1 911 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 09:03:48 2015 13 // Update Count : 1 14 14 // 15 15 … … 20 20 #include "Visitor.h" 21 21 #include "Mutator.h" 22 #include "Type.h"23 22 24 23 #include <cassert> … … 28 27 public: 29 28 // Initializer( std::string _name = std::string(""), int _pos = 0 ); 30 Initializer( bool maybeConstructed ); 31 Initializer( const Initializer & other ); 29 Initializer( ); 32 30 virtual ~Initializer(); 33 31 … … 45 43 } 46 44 47 bool get_maybeConstructed() { return maybeConstructed; }48 49 45 virtual Initializer *clone() const = 0; 50 46 virtual void accept( Visitor &v ) = 0; … … 54 50 // std::string name; 55 51 // int pos; 56 bool maybeConstructed;57 52 }; 58 53 … … 60 55 class SingleInit : public Initializer { 61 56 public: 62 SingleInit( Expression *value, const std::list< Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false);57 SingleInit( Expression *value, std::list< Expression *> &designators ); 63 58 SingleInit( const SingleInit &other ); 64 59 virtual ~SingleInit(); 65 60 66 61 Expression *get_value() { return value; } 67 62 void set_value( Expression *newValue ) { value = newValue; } … … 70 65 std::list<Expression *> &get_designators() { return designators; } 71 66 72 virtual SingleInit *clone() const { return new SingleInit( *this); }67 virtual SingleInit *clone() const; 73 68 virtual void accept( Visitor &v ) { v.visit( this ); } 74 69 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); } … … 84 79 class ListInit : public Initializer { 85 80 public: 86 ListInit( const std::list<Initializer*> &initializers,87 const std::list<Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false);81 ListInit( std::list<Initializer*> &, 82 std::list<Expression *> &designators = *(new std::list<Expression *>()) ); 88 83 virtual ~ListInit(); 89 84 … … 93 88 std::list<Initializer*> &get_initializers() { return initializers; } 94 89 95 typedef std::list<Initializer*>::iterator iterator; 96 iterator begin() { return initializers.begin(); } 97 iterator end() { return initializers.end(); } 90 std::list<Initializer*>::iterator begin_initializers() { return initializers.begin(); } 91 std::list<Initializer*>::iterator end_initializers() { return initializers.end(); } 98 92 99 virtual ListInit *clone() const { return new ListInit( *this ); }93 virtual ListInit *clone() const; 100 94 virtual void accept( Visitor &v ) { v.visit( this ); } 101 95 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); } … … 106 100 }; 107 101 108 // ConstructorInit represents an initializer that is either a constructor expression or109 // a C-style initializer.110 class ConstructorInit : public Initializer {111 public:112 ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init );113 ConstructorInit( const ConstructorInit &other );114 virtual ~ConstructorInit();115 116 void set_ctor( Statement * newValue ) { ctor = newValue; }117 Statement * get_ctor() const { return ctor; }118 void set_dtor( Statement * newValue ) { dtor = newValue; }119 Statement * get_dtor() const { return dtor; }120 void set_init( Initializer * newValue ) { init = newValue; }121 Initializer * get_init() const { return init; }122 123 ConstructorInit *clone() const { return new ConstructorInit( *this ); }124 virtual void accept( Visitor &v ) { v.visit( this ); }125 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }126 virtual void print( std::ostream &os, int indent = 0 );127 128 private:129 Statement * ctor;130 Statement * dtor;131 // C-style initializer made up of SingleInit and ListInit nodes to use as a fallback132 // if an appropriate constructor definition is not found by the resolver133 Initializer * init;134 };135 136 std::ostream & operator<<( std::ostream & out, Initializer * init );137 138 102 #endif // INITIALIZER_H 139 103
Note:
See TracChangeset
for help on using the changeset viewer.