Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.h

    rafc1045 r888cbe4  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CodeGenerator.h -- 
     7// CodeGenerator.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:32:24 2016
    13 // Update Count     : 28
     12// Last Modified On : Thu Jun  9 13:15:58 2016
     13// Update Count     : 29
    1414//
    1515
     
    6060                virtual void visit( MemberExpr *memberExpr );
    6161                virtual void visit( VariableExpr *variableExpr );
    62                 virtual void visit( ConstantExpr *constantExpr ); 
     62                virtual void visit( ConstantExpr *constantExpr );
    6363                virtual void visit( SizeofExpr *sizeofExpr );
    6464                virtual void visit( AlignofExpr *alignofExpr );
     
    8585                virtual void visit( ForStmt * );
    8686                virtual void visit( NullStmt * );
    87                 virtual void visit( DeclStmt * );
     87                virtual void visit( DeclStmt * );
     88
     89                void genAttributes( std::list< Attribute * > & attributes );
    8890
    8991                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
     
    9294                        Indenter(CodeGenerator &cg) : cg(cg) {}
    9395                        CodeGenerator & cg;
    94                         std::ostream& operator()(std::ostream & os);
     96                        std::ostream& operator()(std::ostream & os) const;
    9597                };
     98
     99                struct LabelPrinter {
     100                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
     101                        LabelPrinter & operator()( std::list< Label > & l );
     102                        CodeGenerator & cg;
     103                        std::list< Label > * labels;
     104                };
     105
     106                void extension( Expression *expr ) {
     107                        if ( expr->get_extension() ) {
     108                                output << "__extension__ ";
     109                        } // if
     110                } // extension
    96111          private:
    97112
     
    100115                bool insideFunction;
    101116                std::ostream &output;
     117                LabelPrinter printLabels;
    102118
    103119                void printDesignators( std::list< Expression * > & );
    104                 static std::string printLabels ( std::list < Label > & );
    105120                void handleStorageClass( Declaration *decl );
    106121                void handleAggregate( AggregateDecl *aggDecl );
     
    108123
    109124        };
    110        
     125
    111126        template< class Iterator >
    112127        void CodeGenerator::genCommaList( Iterator begin, Iterator end ) {
     
    119134                } // for
    120135        }
    121  
     136
    122137        inline bool doSemicolon( Declaration* decl ) {
    123138                if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
Note: See TracChangeset for help on using the changeset viewer.