Changes in src/AST/Init.hpp [9e1d485:23f99e1]
- File:
-
- 1 edited
-
src/AST/Init.hpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Init.hpp
r9e1d485 r23f99e1 37 37 : ParseNode( loc ), designators( std::move(ds) ) {} 38 38 39 Designation* accept( Visitor& v )override { return v.visit( this ); }39 const Designation* accept( Visitor& v ) const override { return v.visit( this ); } 40 40 private: 41 41 Designation* clone() const override { return new Designation{ *this }; } 42 42 }; 43 43 44 /// Flag for whether to construct from initialzier45 enum ConstructFlag { DoConstruct, MaybeConstruct };46 47 44 /// Object initializer base class 48 45 class Init : public ParseNode { 49 46 public: 50 ConstructFlagmaybeConstructed;47 bool maybeConstructed; 51 48 52 Init( const CodeLocation& loc, ConstructFlagmc ) : ParseNode( loc ), maybeConstructed( mc ) {}49 Init( const CodeLocation& loc, bool mc ) : ParseNode( loc ), maybeConstructed( mc ) {} 53 50 54 virtual Init* accept( Visitor& v )override = 0;51 const Init * accept( Visitor& v ) const override = 0; 55 52 private: 56 virtual Init* clone() const override = 0;53 const Init * clone() const override = 0; 57 54 }; 58 55 … … 63 60 ptr<Expr> value; 64 61 65 SingleInit( const CodeLocation& loc, Expr* val, ConstructFlag mc = DoConstruct)62 SingleInit( const CodeLocation& loc, Expr* val, bool mc = false ) 66 63 : Init( loc, mc ), value( val ) {} 67 64 68 Init* accept( Visitor& v )override { return v.visit( this ); }65 const Init * accept( Visitor & v ) const override { return v.visit( this ); } 69 66 private: 70 SingleInit* clone() const override { return new SingleInit{ *this }; } 67 SingleInit * clone() const override { return new SingleInit{ *this }; } 68 69 /// Must be copied in ALL derived classes 70 template<typename node_t> 71 friend auto mutate(const node_t * node); 71 72 }; 72 73 … … 81 82 82 83 ListInit( const CodeLocation& loc, std::vector<ptr<Init>>&& is, 83 std::vector<ptr<Designation>>&& ds = {}, ConstructFlag mc = DoConstruct);84 std::vector<ptr<Designation>>&& ds = {}, bool mc = false ); 84 85 85 86 using iterator = std::vector<ptr<Init>>::iterator; … … 90 91 const_iterator end() const { return initializers.end(); } 91 92 92 Init* accept( Visitor& v )override { return v.visit( this ); }93 const Init * accept( Visitor & v ) const override { return v.visit( this ); } 93 94 private: 94 ListInit* clone() const override { return new ListInit{ *this }; } 95 ListInit * clone() const override { return new ListInit{ *this }; } 96 97 /// Must be copied in ALL derived classes 98 template<typename node_t> 99 friend auto mutate(const node_t * node); 95 100 }; 96 101 … … 107 112 108 113 ConstructorInit( const CodeLocation& loc, Stmt* ctor, Stmt* dtor, Init* init ) 109 : Init( loc, DoConstruct), ctor( ctor ), dtor( dtor ), init( init ) {}114 : Init( loc, true ), ctor( ctor ), dtor( dtor ), init( init ) {} 110 115 111 Init* accept( Visitor& v )override { return v.visit( this ); }116 const Init * accept( Visitor & v ) const override { return v.visit( this ); } 112 117 private: 113 ConstructorInit* clone() const override { return new ConstructorInit{ *this }; } 118 ConstructorInit * clone() const override { return new ConstructorInit{ *this }; } 119 120 /// Must be copied in ALL derived classes 121 template<typename node_t> 122 friend auto mutate(const node_t * node); 114 123 }; 115 124
Note:
See TracChangeset
for help on using the changeset viewer.