Changes in / [a5de33e:1ce2189]


Ignore:
Location:
src
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    ra5de33e r1ce2189  
    6666        } // extension
    6767
     68        ostream & CodeGenerator::Indenter::operator()( ostream & output ) const {
     69          return output << string( cg.cur_indent, ' ' );
     70        }
     71
     72        ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {
     73                return indent( output );
     74        }
     75
    6876        CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::list< Label > & l ) {
    6977                labels = &l;
     
    103111        }
    104112
    105         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 ) {}
     113        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 ) {}
    106114
    107115        string CodeGenerator::mangleName( DeclarationWithType * decl ) {
     
    194202                        output << " {" << endl;
    195203
    196                         ++indent;
     204                        cur_indent += CodeGenerator::tabsize;
    197205                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) {
    198206                                output << lineDirective( *i ) << indent;
     
    201209                        } // for
    202210
    203                         --indent;
     211                        cur_indent -= CodeGenerator::tabsize;
    204212
    205213                        output << indent << "}";
     
    231239                        output << " {" << endl;
    232240
    233                         ++indent;
     241                        cur_indent += CodeGenerator::tabsize;
    234242                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    235243                                ObjectDecl * obj = dynamic_cast< ObjectDecl* >( *i );
     
    243251                        } // for
    244252
    245                         --indent;
     253                        cur_indent -= CodeGenerator::tabsize;
    246254
    247255                        output << indent << "}";
     
    747755                std::list< Statement * > & stmts = stmtExpr->get_statements()->get_kids();
    748756                output << lineDirective( stmtExpr) << "({" << std::endl;
    749                 ++indent;
     757                cur_indent += CodeGenerator::tabsize;
    750758                unsigned int numStmts = stmts.size();
    751759                unsigned int i = 0;
     
    770778                        ++i;
    771779                }
    772                 --indent;
     780                cur_indent -= CodeGenerator::tabsize;
    773781                output << indent << "})";
    774782        }
     
    779787                output << "{" << endl;
    780788
    781                 ++indent;
     789                cur_indent += CodeGenerator::tabsize;
    782790
    783791                for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++ ) {
     
    790798                        } // if
    791799                } // for
    792                 --indent;
     800                cur_indent -= CodeGenerator::tabsize;
    793801
    794802                output << indent << "}";
     
    858866
    859867                output << "{" << std::endl;
    860                 ++indent;
     868                cur_indent += CodeGenerator::tabsize;
    861869                acceptAll( switchStmt->get_statements(), *this );
    862                 --indent;
     870                cur_indent -= CodeGenerator::tabsize;
    863871                output << indent << "}";
    864872        }
     
    877885                std::list<Statement *> sts = caseStmt->get_statements();
    878886
    879                 ++indent;
     887                cur_indent += CodeGenerator::tabsize;
    880888                for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
    881889                        output << indent << printLabels( (*i)->get_labels() )  ;
     
    883891                        output << endl;
    884892                } // for
    885                 --indent;
     893                cur_indent -= CodeGenerator::tabsize;
    886894        }
    887895
  • src/CodeGen/CodeGenerator.h

    ra5de33e r1ce2189  
    2525#include "SymTab/Indexer.h"
    2626
    27 #include "Common/Indenter.h"
    2827#include "Common/utility.h"
    2928
     
    103102                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
    104103
     104                struct Indenter {
     105                        Indenter(CodeGenerator &cg) : cg(cg) {}
     106                        CodeGenerator & cg;
     107                        std::ostream& operator()(std::ostream & os) const;
     108                };
     109
    105110                struct LabelPrinter {
    106111                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
     
    125130          private:
    126131                Indenter indent;
     132                int cur_indent;
    127133                bool insideFunction;
    128134                std::ostream &output;
  • src/ResolvExpr/CurrentObject.cc

    ra5de33e r1ce2189  
    1919#include "CurrentObject.h"
    2020
    21 #include "Common/Indenter.h"
    22 
    2321#include "SynTree/Declaration.h"
    2422#include "SynTree/Initializer.h"
     
    4745                        assertf( false, "unhandled type on getConstValue %s", toString( constExpr->get_result() ).c_str() ); // xxx - might be semantic error
    4846                }
     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, ' ');
    4962        }
    5063
  • src/ResolvExpr/CurrentObject.h

    ra5de33e r1ce2189  
    2525        class MemberIterator;
    2626
    27         // TODO: memory management of MemberIterators
    2827        class CurrentObject {
    2928        public:
Note: See TracChangeset for help on using the changeset viewer.