Changes in src/SynTree/Expression.cc [b6fe7e6:6eb8948]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Expression.cc
rb6fe7e6 r6eb8948 311 311 } 312 312 313 UntypedMemberExpr::UntypedMemberExpr( std::string_member, Expression *_aggregate, Expression *_aname ) :313 UntypedMemberExpr::UntypedMemberExpr( Expression * _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( other.member), aggregate( maybeClone( other.aggregate ) ) {317 Expression( other ), member( maybeClone( other.member ) ), aggregate( maybeClone( other.aggregate ) ) { 318 318 } 319 319 320 320 UntypedMemberExpr::~UntypedMemberExpr() { 321 321 delete aggregate; 322 delete member; 322 323 } 323 324 324 325 void UntypedMemberExpr::print( std::ostream &os, int indent ) const { 325 os << "Untyped Member Expression, with field: " << get_member(); 326 os << "Untyped Member Expression, with field: " << std::endl; 327 get_member()->print(os, indent+4); 328 os << std::string( indent+2, ' ' ); 326 329 327 330 Expression *agg = get_aggregate(); 328 os << " , from aggregate: ";331 os << "from aggregate: " << std::endl; 329 332 if (agg != 0) { 330 os << std::string( indent + 2, ' ' );331 agg->print(os, indent + 2);333 os << std::string( indent + 4, ' ' ); 334 agg->print(os, indent + 4); 332 335 } 333 336 os << std::string( indent+2, ' ' ); … … 372 375 } 373 376 374 375 UntypedExpr::UntypedExpr( Expression *_function, Expression *_aname ) : Expression( _aname ), function( _function) {}377 UntypedExpr::UntypedExpr( Expression *_function, const std::list<Expression *> &_args, Expression *_aname ) : 378 Expression( _aname ), function(_function), args(_args) {} 376 379 377 380 UntypedExpr::UntypedExpr( const UntypedExpr &other ) : … … 379 382 cloneAll( other.args, args ); 380 383 } 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 567 585 std::ostream & operator<<( std::ostream & out, const Expression * expr ) { 568 586 expr->print( out );
Note:
See TracChangeset
for help on using the changeset viewer.