Changes in src/SynTree/Expression.h [d5631b3:4ef08f7]
- File:
-
- 1 edited
-
src/SynTree/Expression.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Expression.h
rd5631b3 r4ef08f7 163 163 }; 164 164 165 /// VariableExpr represents an expression that simply refers to the value of a named variable.166 /// Does not take ownership of var.167 class VariableExpr : public Expression {168 public:169 DeclarationWithType * var;170 171 VariableExpr();172 VariableExpr( DeclarationWithType * var );173 VariableExpr( const VariableExpr & other );174 virtual ~VariableExpr();175 176 bool get_lvalue() const final;177 178 DeclarationWithType * get_var() const { return var; }179 void set_var( DeclarationWithType * newValue ) { var = newValue; }180 181 static VariableExpr * functionPointer( FunctionDecl * decl );182 183 virtual VariableExpr * clone() const override { return new VariableExpr( * this ); }184 virtual void accept( Visitor & v ) override { v.visit( this ); }185 virtual void accept( Visitor & v ) const override { v.visit( this ); }186 virtual Expression * acceptMutator( Mutator & m ) override { return m.mutate( this ); }187 virtual void print( std::ostream & os, Indenter indent = {} ) const override;188 };189 190 165 // The following classes are used to represent expression types that cannot be converted into 191 166 // function-call format. … … 354 329 }; 355 330 331 /// VariableExpr represents an expression that simply refers to the value of a named variable. 332 /// Does not take ownership of var. 333 class VariableExpr : public Expression { 334 public: 335 DeclarationWithType * var; 336 337 VariableExpr(); 338 VariableExpr( DeclarationWithType * var ); 339 VariableExpr( const VariableExpr & other ); 340 virtual ~VariableExpr(); 341 342 bool get_lvalue() const final; 343 344 DeclarationWithType * get_var() const { return var; } 345 void set_var( DeclarationWithType * newValue ) { var = newValue; } 346 347 static VariableExpr * functionPointer( FunctionDecl * decl ); 348 349 virtual VariableExpr * clone() const override { return new VariableExpr( * this ); } 350 virtual void accept( Visitor & v ) override { v.visit( this ); } 351 virtual void accept( Visitor & v ) const override { v.visit( this ); } 352 virtual Expression * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 353 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 354 }; 355 356 356 /// ConstantExpr represents an expression that simply refers to the value of a constant 357 357 class ConstantExpr : public Expression {
Note:
See TracChangeset
for help on using the changeset viewer.