Changes in src/AST/Init.hpp [23f99e1:9e1d485]
- File:
-
- 1 edited
-
src/AST/Init.hpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Init.hpp
r23f99e1 r9e1d485 37 37 : ParseNode( loc ), designators( std::move(ds) ) {} 38 38 39 const Designation* accept( Visitor& v ) constoverride { return v.visit( this ); }39 Designation* accept( Visitor& v ) 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 initialzier 45 enum ConstructFlag { DoConstruct, MaybeConstruct }; 46 44 47 /// Object initializer base class 45 48 class Init : public ParseNode { 46 49 public: 47 boolmaybeConstructed;50 ConstructFlag maybeConstructed; 48 51 49 Init( const CodeLocation& loc, boolmc ) : ParseNode( loc ), maybeConstructed( mc ) {}52 Init( const CodeLocation& loc, ConstructFlag mc ) : ParseNode( loc ), maybeConstructed( mc ) {} 50 53 51 const Init * accept( Visitor& v ) constoverride = 0;54 virtual Init* accept( Visitor& v ) override = 0; 52 55 private: 53 const Init* clone() const override = 0;56 virtual Init* clone() const override = 0; 54 57 }; 55 58 … … 60 63 ptr<Expr> value; 61 64 62 SingleInit( const CodeLocation& loc, Expr* val, bool mc = false)65 SingleInit( const CodeLocation& loc, Expr* val, ConstructFlag mc = DoConstruct ) 63 66 : Init( loc, mc ), value( val ) {} 64 67 65 const Init * accept( Visitor & v ) constoverride { return v.visit( this ); }68 Init* accept( Visitor& v ) override { return v.visit( this ); } 66 69 private: 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); 70 SingleInit* clone() const override { return new SingleInit{ *this }; } 72 71 }; 73 72 … … 82 81 83 82 ListInit( const CodeLocation& loc, std::vector<ptr<Init>>&& is, 84 std::vector<ptr<Designation>>&& ds = {}, bool mc = false);83 std::vector<ptr<Designation>>&& ds = {}, ConstructFlag mc = DoConstruct ); 85 84 86 85 using iterator = std::vector<ptr<Init>>::iterator; … … 91 90 const_iterator end() const { return initializers.end(); } 92 91 93 const Init * accept( Visitor & v ) constoverride { return v.visit( this ); }92 Init* accept( Visitor& v ) override { return v.visit( this ); } 94 93 private: 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); 94 ListInit* clone() const override { return new ListInit{ *this }; } 100 95 }; 101 96 … … 112 107 113 108 ConstructorInit( const CodeLocation& loc, Stmt* ctor, Stmt* dtor, Init* init ) 114 : Init( loc, true), ctor( ctor ), dtor( dtor ), init( init ) {}109 : Init( loc, DoConstruct ), ctor( ctor ), dtor( dtor ), init( init ) {} 115 110 116 const Init * accept( Visitor & v ) constoverride { return v.visit( this ); }111 Init* accept( Visitor& v ) override { return v.visit( this ); } 117 112 private: 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); 113 ConstructorInit* clone() const override { return new ConstructorInit{ *this }; } 123 114 }; 124 115
Note:
See TracChangeset
for help on using the changeset viewer.