Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/StatementNode.cc

    r1db21619 r145f1fc  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 14:59:41 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 16 16:20:24 2015
    13 // Update Count     : 30
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Jul 14 12:20:44 2015
     13// Update Count     : 21
    1414//
    1515
     
    7272        delete control;
    7373        delete block;
     74        delete labels;
    7475        delete target;
    7576        delete decl;
     
    102103}
    103104
     105void StatementNode::set_control( ExpressionNode *c ) {
     106        control = c;
     107}
     108
     109StatementNode * StatementNode::set_block( StatementNode *b ) {
     110        block = b;
     111
     112        return this;
     113}
     114
     115ExpressionNode *StatementNode::get_control() const {
     116        return control;
     117}
     118
     119StatementNode *StatementNode::get_block() const {
     120        return block;
     121}
     122
     123StatementNode::Type StatementNode::get_type() const {
     124        return type;
     125}
     126
    104127StatementNode *StatementNode::add_label( const std::string *l ) {
    105128        if ( l != 0 ) {
    106                 labels.push_front( *l );
     129                if ( labels == 0 )
     130                        labels = new std::list<std::string>();
     131
     132                labels->push_front(*l );
    107133                delete l;
    108134        } // if
    109135        return this;
    110136}
     137
     138std::list<std::string> *StatementNode::get_labels() const { return labels; }
    111139
    112140StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
     
    142170
    143171void StatementNode::print( std::ostream &os, int indent ) const {
    144         if ( ! labels.empty()) {
    145                 std::list<std::string>::const_iterator i;
    146 
    147                 os << string( indent, ' ' );
    148                 for ( i = labels.begin(); i != labels.end(); i++ )
    149                         os << *i << ":";
    150                 os << endl;
     172        if ( labels != 0 ) {
     173                if ( ! labels->empty()) {
     174                        std::list<std::string>::const_iterator i;
     175
     176                        os << string( indent, ' ' );
     177                        for ( i = labels->begin(); i != labels->end(); i++ )
     178                                os << *i << ":";
     179                        os << endl;
     180                } // if
    151181        } // if
    152182
     
    195225        std::list<Label> labs;
    196226
    197         if ( ! labels.empty() ) {
     227        if ( labels != 0 ) {
    198228                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    199                 copy( labels.begin(), labels.end(), lab_it );
     229                copy( labels->begin(), labels->end(), lab_it );
    200230        } // if
    201231
     
    244274                        if ( ctl->get_init() != 0 ) {
    245275                                buildList( ctl->get_init(), init );
    246                         } // if
     276                        }
    247277
    248278                        Expression *cond = 0;
     
    348378Statement *CompoundStmtNode::build() const {
    349379        std::list<Label> labs;
    350         const std::list<std::string> &labels = get_labels();
    351 
    352         if ( ! labels.empty() ) {
     380        std::list<std::string> *labels = get_labels();
     381
     382        if ( labels != 0 ) {
    353383                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    354                 copy( labels.begin(), labels.end(), lab_it );
     384                copy( labels->begin(), labels->end(), lab_it );
    355385        } // if
    356386
Note: See TracChangeset for help on using the changeset viewer.