Changeset 67a67af for src/CodeGen


Ignore:
Timestamp:
Aug 11, 2017, 10:55:14 AM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
03321e4, f196351
Parents:
3b4571b (diff), 54cd58b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
src/CodeGen
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r3b4571b r67a67af  
    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 << "}";
     
    761753                std::list< Statement * > & stmts = stmtExpr->get_statements()->get_kids();
    762754                output << lineDirective( stmtExpr) << "({" << std::endl;
    763                 cur_indent += CodeGenerator::tabsize;
     755                ++indent;
    764756                unsigned int numStmts = stmts.size();
    765757                unsigned int i = 0;
     
    784776                        ++i;
    785777                }
    786                 cur_indent -= CodeGenerator::tabsize;
     778                --indent;
    787779                output << indent << "})";
    788780        }
     
    793785                output << "{" << endl;
    794786
    795                 cur_indent += CodeGenerator::tabsize;
     787                ++indent;
    796788
    797789                for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++ ) {
     
    804796                        } // if
    805797                } // for
    806                 cur_indent -= CodeGenerator::tabsize;
     798                --indent;
    807799
    808800                output << indent << "}";
     
    872864
    873865                output << "{" << std::endl;
    874                 cur_indent += CodeGenerator::tabsize;
     866                ++indent;
    875867                acceptAll( switchStmt->get_statements(), *this );
    876                 cur_indent -= CodeGenerator::tabsize;
     868                --indent;
    877869                output << indent << "}";
    878870        }
     
    891883                std::list<Statement *> sts = caseStmt->get_statements();
    892884
    893                 cur_indent += CodeGenerator::tabsize;
     885                ++indent;
    894886                for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
    895887                        output << indent << printLabels( (*i)->get_labels() )  ;
     
    897889                        output << endl;
    898890                } // for
    899                 cur_indent -= CodeGenerator::tabsize;
     891                --indent;
    900892        }
    901893
  • src/CodeGen/CodeGenerator.h

    r3b4571b r67a67af  
    2323#include "SynTree/Visitor.h"      // for Visitor
    2424#include "SynTree/SynTree.h"      // for Visitor Nodes
     25
     26#include "Common/Indenter.h"      // for Indenter
    2527
    2628namespace CodeGen {
     
    100102                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
    101103
    102                 struct Indenter {
    103                         Indenter(CodeGenerator &cg) : cg(cg) {}
    104                         CodeGenerator & cg;
    105                         std::ostream& operator()(std::ostream & os) const;
    106                 };
    107 
    108104                struct LabelPrinter {
    109105                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
     
    128124          private:
    129125                Indenter indent;
    130                 int cur_indent;
    131126                bool insideFunction;
    132127                std::ostream &output;
Note: See TracChangeset for help on using the changeset viewer.