Changes in src/SynTree/Expression.cc [6eb8948:b6fe7e6]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Expression.cc
r6eb8948 rb6fe7e6 311 311 } 312 312 313 UntypedMemberExpr::UntypedMemberExpr( Expression *_member, Expression *_aggregate, Expression *_aname ) :313 UntypedMemberExpr::UntypedMemberExpr( std::string _member, Expression *_aggregate, Expression *_aname ) : 314 314 Expression( _aname ), member(_member), aggregate(_aggregate) {} 315 315 316 316 UntypedMemberExpr::UntypedMemberExpr( const UntypedMemberExpr &other ) : 317 Expression( other ), member( maybeClone( other.member )), aggregate( maybeClone( other.aggregate ) ) {317 Expression( other ), member( other.member ), aggregate( maybeClone( other.aggregate ) ) { 318 318 } 319 319 320 320 UntypedMemberExpr::~UntypedMemberExpr() { 321 321 delete aggregate; 322 delete member;323 322 } 324 323 325 324 void UntypedMemberExpr::print( std::ostream &os, int indent ) const { 326 os << "Untyped Member Expression, with field: " << std::endl; 327 get_member()->print(os, indent+4); 328 os << std::string( indent+2, ' ' ); 325 os << "Untyped Member Expression, with field: " << get_member(); 329 326 330 327 Expression *agg = get_aggregate(); 331 os << " from aggregate: " << std::endl;328 os << ", from aggregate: "; 332 329 if (agg != 0) { 333 os << std::string( indent + 4, ' ' );334 agg->print(os, indent + 4);330 os << std::string( indent + 2, ' ' ); 331 agg->print(os, indent + 2); 335 332 } 336 333 os << std::string( indent+2, ' ' ); … … 375 372 } 376 373 377 UntypedExpr::UntypedExpr( Expression *_function, const std::list<Expression *> &_args, Expression *_aname ) : 378 Expression( _aname ), function(_function), args(_args) {}374 375 UntypedExpr::UntypedExpr( Expression *_function, Expression *_aname ) : Expression( _aname ), function( _function ) {} 379 376 380 377 UntypedExpr::UntypedExpr( const UntypedExpr &other ) : … … 382 379 cloneAll( other.args, args ); 383 380 } 381 382 UntypedExpr::UntypedExpr( Expression *_function, std::list<Expression *> &_args, Expression *_aname ) : 383 Expression( _aname ), function(_function), args(_args) {} 384 384 385 385 UntypedExpr::~UntypedExpr() { … … 565 565 } 566 566 567 StmtExpr::StmtExpr( CompoundStmt *statements ) : statements( statements ) {568 assert( statements );569 std::list< Statement * > & body = statements->get_kids();570 if ( ! body.empty() ) {571 if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * >( body.back() ) ) {572 cloneAll( exprStmt->get_expr()->get_results(), get_results() );573 }574 }575 }576 StmtExpr::StmtExpr( const StmtExpr &other ) : statements( other.statements->clone() ) {}577 StmtExpr::~StmtExpr() {578 delete statements;579 }580 void StmtExpr::print( std::ostream &os, int indent ) const {581 os << std::string( indent, ' ' ) << "Statement Expression: " << std::endl;582 statements->print( os, indent+2 );583 }584 585 567 std::ostream & operator<<( std::ostream & out, const Expression * expr ) { 586 568 expr->print( out );
Note:
See TracChangeset
for help on using the changeset viewer.