Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.h

    r62423350 raf5c204a  
    744744};
    745745
    746 struct InitAlternative {
    747 public:
    748         Type * type = nullptr;
    749         Designation * designation = nullptr;
    750         InitAlternative( Type * type, Designation * designation );
    751         InitAlternative( const InitAlternative & other );
    752         InitAlternative & operator=( const Initializer & other ) = delete; // at the moment this isn't used, and I don't want to implement it
    753         ~InitAlternative();
    754 };
    755 
    756 class UntypedInitExpr : public Expression {
    757 public:
    758         UntypedInitExpr( Expression * expr, const std::list<InitAlternative> & initAlts );
    759         UntypedInitExpr( const UntypedInitExpr & other );
    760         ~UntypedInitExpr();
    761 
    762         Expression * get_expr() const { return expr; }
    763         UntypedInitExpr * set_expr( Expression * newValue ) { expr = newValue; return this; }
    764 
    765         std::list<InitAlternative> & get_initAlts() { return initAlts; }
    766 
    767         virtual UntypedInitExpr * clone() const { return new UntypedInitExpr( * this ); }
    768         virtual void accept( Visitor & v ) { v.visit( this ); }
    769         virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); }
    770         virtual void print( std::ostream & os, int indent = 0 ) const;
    771 private:
    772         Expression * expr;
    773         std::list<InitAlternative> initAlts;
    774 };
    775 
    776 class InitExpr : public Expression {
    777 public:
    778         InitExpr( Expression * expr, Designation * designation );
    779         InitExpr( const InitExpr & other );
    780         ~InitExpr();
    781 
    782         Expression * get_expr() const { return expr; }
    783         InitExpr * set_expr( Expression * newValue ) { expr = newValue; return this; }
    784 
    785         Designation * get_designation() const { return designation; }
    786         InitExpr * set_designation( Designation * newValue ) { designation = newValue; return this; }
    787 
    788         virtual InitExpr * clone() const { return new InitExpr( * this ); }
    789         virtual void accept( Visitor & v ) { v.visit( this ); }
    790         virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); }
    791         virtual void print( std::ostream & os, int indent = 0 ) const;
    792 private:
    793         Expression * expr;
    794         Designation * designation;
    795 };
    796 
    797 
    798746std::ostream & operator<<( std::ostream & out, const Expression * expr );
    799747
Note: See TracChangeset for help on using the changeset viewer.