Changes in / [d6ff3ff:3d4b23fa]


Ignore:
Location:
src
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    rd6ff3ff r3d4b23fa  
    6464        } // extension
    6565
    66         ostream & CodeGenerator::Indenter::operator()( ostream & output ) const {
    67           return output << string( cg.cur_indent, ' ' );
    68         }
    69 
    70         ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {
    71                 return indent( output );
    72         }
    73 
    7466        CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::list< Label > & l ) {
    7567                labels = &l;
     
    109101        }
    110102
    111         CodeGenerator::CodeGenerator( std::ostream & os, bool pretty, bool genC, bool lineMarks ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ), pretty( pretty ), genC( genC ), lineMarks( lineMarks ) {}
     103        CodeGenerator::CodeGenerator( std::ostream & os, bool pretty, bool genC, bool lineMarks ) : indent( CodeGenerator::tabsize ), insideFunction( false ), output( os ), printLabels( *this ), pretty( pretty ), genC( genC ), lineMarks( lineMarks ) {}
    112104
    113105        string CodeGenerator::mangleName( DeclarationWithType * decl ) {
     
    200192                        output << " {" << endl;
    201193
    202                         cur_indent += CodeGenerator::tabsize;
     194                        ++indent;
    203195                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) {
    204196                                output << lineDirective( *i ) << indent;
     
    207199                        } // for
    208200
    209                         cur_indent -= CodeGenerator::tabsize;
     201                        --indent;
    210202
    211203                        output << indent << "}";
     
    237229                        output << " {" << endl;
    238230
    239                         cur_indent += CodeGenerator::tabsize;
     231                        ++indent;
    240232                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    241233                                ObjectDecl * obj = dynamic_cast< ObjectDecl* >( *i );
     
    249241                        } // for
    250242
    251                         cur_indent -= CodeGenerator::tabsize;
     243                        --indent;
    252244
    253245                        output << indent << "}";
     
    753745                std::list< Statement * > & stmts = stmtExpr->get_statements()->get_kids();
    754746                output << lineDirective( stmtExpr) << "({" << std::endl;
    755                 cur_indent += CodeGenerator::tabsize;
     747                ++indent;
    756748                unsigned int numStmts = stmts.size();
    757749                unsigned int i = 0;
     
    776768                        ++i;
    777769                }
    778                 cur_indent -= CodeGenerator::tabsize;
     770                --indent;
    779771                output << indent << "})";
    780772        }
     
    785777                output << "{" << endl;
    786778
    787                 cur_indent += CodeGenerator::tabsize;
     779                ++indent;
    788780
    789781                for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++ ) {
     
    796788                        } // if
    797789                } // for
    798                 cur_indent -= CodeGenerator::tabsize;
     790                --indent;
    799791
    800792                output << indent << "}";
     
    864856
    865857                output << "{" << std::endl;
    866                 cur_indent += CodeGenerator::tabsize;
     858                ++indent;
    867859                acceptAll( switchStmt->get_statements(), *this );
    868                 cur_indent -= CodeGenerator::tabsize;
     860                --indent;
    869861                output << indent << "}";
    870862        }
     
    883875                std::list<Statement *> sts = caseStmt->get_statements();
    884876
    885                 cur_indent += CodeGenerator::tabsize;
     877                ++indent;
    886878                for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
    887879                        output << indent << printLabels( (*i)->get_labels() )  ;
     
    889881                        output << endl;
    890882                } // for
    891                 cur_indent -= CodeGenerator::tabsize;
     883                --indent;
    892884        }
    893885
  • src/CodeGen/CodeGenerator.h

    rd6ff3ff r3d4b23fa  
    100100                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
    101101
    102                 struct Indenter {
    103                         Indenter(CodeGenerator &cg) : cg(cg) {}
    104                         CodeGenerator & cg;
    105                         std::ostream& operator()(std::ostream & os) const;
    106                 };
    107 
    108102                struct LabelPrinter {
    109103                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
     
    128122          private:
    129123                Indenter indent;
    130                 int cur_indent;
    131124                bool insideFunction;
    132125                std::ostream &output;
  • src/Common/utility.h

    rd6ff3ff r3d4b23fa  
    2525#include <sstream>
    2626#include <string>
     27#include <type_traits>
    2728
    2829#include <cassert>
     
    305306// for ( val : group_iterate( container1, container2, ... ) ) {}
    306307// syntax to have a for each that iterates multiple containers of the same length
    307 // TODO: update to use variadic arguments, perfect forwarding
     308// TODO: update to use variadic arguments
    308309
    309310template< typename T1, typename T2 >
     
    314315
    315316        struct iterator {
    316                 typedef std::tuple<typename T1::value_type, typename T2::value_type> value_type;
    317                 typedef typename T1::iterator T1Iter;
    318                 typedef typename T2::iterator T2Iter;
     317                typedef typename std::remove_reference<T1>::type T1val;
     318                typedef typename std::remove_reference<T2>::type T2val;
     319                typedef std::tuple<typename T1val::value_type &, typename T2val::value_type &> value_type;
     320                typedef typename T1val::iterator T1Iter;
     321                typedef typename T2val::iterator T2Iter;
    319322                typedef std::tuple<T1Iter, T2Iter> IterTuple;
    320323                IterTuple it;
     
    324327                }
    325328                bool operator!=( const iterator &other ) const { return it != other.it; }
    326                 value_type operator*() const { return std::make_tuple( *std::get<0>(it), *std::get<1>(it) ); }
     329                value_type operator*() const { return std::tie( *std::get<0>(it), *std::get<1>(it) ); }
    327330        };
    328331        iterator begin() { return iterator( std::get<0>(args).begin(), std::get<1>(args).begin() ); }
     
    334337
    335338template< typename... Args >
    336 group_iterate_t<Args...> group_iterate( const Args &... args ) {
    337         return group_iterate_t<Args...>(args...);
     339group_iterate_t<Args...> group_iterate( Args &&... args ) {
     340        return group_iterate_t<Args...>(std::forward<Args>( args )...);
    338341}
    339342
  • src/ResolvExpr/CurrentObject.cc

    rd6ff3ff r3d4b23fa  
    1919#include "CurrentObject.h"
    2020
     21#include "Common/Indenter.h"
     22
    2123#include "SynTree/Declaration.h"
    2224#include "SynTree/Initializer.h"
     
    4547                        assertf( false, "unhandled type on getConstValue %s", toString( constExpr->get_result() ).c_str() ); // xxx - might be semantic error
    4648                }
    47         }
    48 
    49         struct Indenter {
    50                 static const int amt = 2;
    51                 unsigned int indent = 0;
    52 
    53                 Indenter & operator+=(int nlevels) { indent += amt*nlevels; return *this; }
    54                 Indenter & operator-=(int nlevels) { indent -= amt*nlevels; return *this; }
    55                 Indenter operator+(int nlevels) { Indenter indenter = *this; return indenter += nlevels; }
    56                 Indenter operator-(int nlevels) { Indenter indenter = *this; return indenter -= nlevels; }
    57                 Indenter & operator++() { return *this += 1; }
    58                 Indenter & operator--() { return *this -= 1; }
    59         };
    60         std::ostream & operator<<( std::ostream & out, Indenter & indent ) {
    61                 return out << std::string(indent.indent, ' ');
    6249        }
    6350
  • src/ResolvExpr/CurrentObject.h

    rd6ff3ff r3d4b23fa  
    2525        class MemberIterator;
    2626
     27        // TODO: memory management of MemberIterators
    2728        class CurrentObject {
    2829        public:
Note: See TracChangeset for help on using the changeset viewer.