Ignore:
Timestamp:
Jul 16, 2015, 5:28:24 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
994ec2c
Parents:
724c2b6
Message:

add CFA flag, remove -p from cc1, typedef on functions become function declarations, move isInline/isNoreturn to Declaration, cleaned up label code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/StatementNode.cc

    r724c2b6 r1db21619  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 14:59:41 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:20:44 2015
    13 // Update Count     : 21
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 16 16:20:24 2015
     13// Update Count     : 30
    1414//
    1515
     
    7272        delete control;
    7373        delete block;
    74         delete labels;
    7574        delete target;
    7675        delete decl;
     
    103102}
    104103
    105 void StatementNode::set_control( ExpressionNode *c ) {
    106         control = c;
    107 }
    108 
    109 StatementNode * StatementNode::set_block( StatementNode *b ) {
    110         block = b;
    111 
    112         return this;
    113 }
    114 
    115 ExpressionNode *StatementNode::get_control() const {
    116         return control;
    117 }
    118 
    119 StatementNode *StatementNode::get_block() const {
    120         return block;
    121 }
    122 
    123 StatementNode::Type StatementNode::get_type() const {
    124         return type;
    125 }
    126 
    127104StatementNode *StatementNode::add_label( const std::string *l ) {
    128105        if ( l != 0 ) {
    129                 if ( labels == 0 )
    130                         labels = new std::list<std::string>();
    131 
    132                 labels->push_front(*l );
     106                labels.push_front( *l );
    133107                delete l;
    134108        } // if
    135109        return this;
    136110}
    137 
    138 std::list<std::string> *StatementNode::get_labels() const { return labels; }
    139111
    140112StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
     
    170142
    171143void StatementNode::print( std::ostream &os, int indent ) const {
    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
     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;
    181151        } // if
    182152
     
    225195        std::list<Label> labs;
    226196
    227         if ( labels != 0 ) {
     197        if ( ! labels.empty() ) {
    228198                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    229                 copy( labels->begin(), labels->end(), lab_it );
     199                copy( labels.begin(), labels.end(), lab_it );
    230200        } // if
    231201
     
    274244                        if ( ctl->get_init() != 0 ) {
    275245                                buildList( ctl->get_init(), init );
    276                         }
     246                        } // if
    277247
    278248                        Expression *cond = 0;
     
    378348Statement *CompoundStmtNode::build() const {
    379349        std::list<Label> labs;
    380         std::list<std::string> *labels = get_labels();
    381 
    382         if ( labels != 0 ) {
     350        const std::list<std::string> &labels = get_labels();
     351
     352        if ( ! labels.empty() ) {
    383353                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    384                 copy( labels->begin(), labels->end(), lab_it );
     354                copy( labels.begin(), labels.end(), lab_it );
    385355        } // if
    386356
Note: See TracChangeset for help on using the changeset viewer.