Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/GenType.cc

    re39241b r615a096  
    2828        class GenType : public Visitor {
    2929          public:
    30                 GenType( const std::string &typeString, bool pretty = false, bool genC = false );
     30                GenType( const std::string &typeString, bool pretty = false );
    3131                std::string get_typeString() const { return typeString; }
    3232                void set_typeString( const std::string &newValue ) { typeString = newValue; }
     
    4848          private:
    4949                void handleQualifiers( Type *type );
    50                 std::string handleGeneric( ReferenceToType * refType );
    5150                void genArray( const Type::Qualifiers &qualifiers, Type *base, Expression *dimension, bool isVarLen, bool isStatic );
    5251
    5352                std::string typeString;
    5453                bool pretty = false; // pretty print
    55                 bool genC = false;   // generating C code?
    5654        };
    5755
    58         std::string genType( Type *type, const std::string &baseString, bool pretty, bool genC ) {
    59                 GenType gt( baseString, pretty, genC );
     56        std::string genType( Type *type, const std::string &baseString, bool pretty ) {
     57                GenType gt( baseString, pretty );
    6058                std::ostringstream os;
    6159
    6260                if ( ! type->get_attributes().empty() ) {
    63                         CodeGenerator cg( os, pretty, genC );
     61                        CodeGenerator cg( os, pretty );
    6462                        cg.genAttributes( type->get_attributes() );
    6563                } // if
     
    7068
    7169  std::string genPrettyType( Type * type, const std::string & baseString ) {
    72         return genType( type, baseString, true, false );
     70        return genType( type, baseString, true );
    7371  }
    7472
    75         GenType::GenType( const std::string &typeString, bool pretty, bool genC ) : typeString( typeString ), pretty( pretty ), genC( genC ) {}
     73        GenType::GenType( const std::string &typeString, bool pretty ) : typeString( typeString ), pretty( pretty ) {}
    7674
    7775        void GenType::visit( VoidType *voidType ) {
     
    114112                } // if
    115113                if ( dimension != 0 ) {
    116                         CodeGenerator cg( os, pretty, genC );
     114                        CodeGenerator cg( os, pretty );
    117115                        dimension->accept( cg );
    118116                } else if ( isVarLen ) {
     
    168166                        } // if
    169167                } else {
    170                         CodeGenerator cg( os, pretty, genC );
     168                        CodeGenerator cg( os, pretty );
    171169                        os << "(" ;
    172170
     
    188186        }
    189187
    190         std::string GenType::handleGeneric( ReferenceToType * refType ) {
    191                 if ( ! refType->get_parameters().empty() ) {
    192                         std::ostringstream os;
    193                         CodeGenerator cg( os, pretty, genC );
    194                         os << "(";
    195                         cg.genCommaList( refType->get_parameters().begin(), refType->get_parameters().end() );
    196                         os << ") ";
    197                         return os.str();
    198                 }
    199                 return "";
    200         }
    201 
    202188        void GenType::visit( StructInstType *structInst )  {
    203                 typeString = structInst->get_name() + handleGeneric( structInst ) + " " + typeString;
    204                 if ( genC ) typeString = "struct " + typeString;
     189                typeString = "struct " + structInst->get_name() + " " + typeString;
    205190                handleQualifiers( structInst );
    206191        }
    207192
    208193        void GenType::visit( UnionInstType *unionInst ) {
    209                 typeString = unionInst->get_name() + handleGeneric( unionInst ) + " " + typeString;
    210                 if ( genC ) typeString = "union " + typeString;
     194                typeString = "union " + unionInst->get_name() + " " + typeString;
    211195                handleQualifiers( unionInst );
    212196        }
    213197
    214198        void GenType::visit( EnumInstType *enumInst ) {
    215                 typeString = enumInst->get_name() + " " + typeString;
    216                 if ( genC ) typeString = "enum " + typeString;
     199                typeString = "enum " + enumInst->get_name() + " " + typeString;
    217200                handleQualifiers( enumInst );
    218201        }
     
    224207
    225208        void GenType::visit( TupleType * tupleType ) {
    226                 assertf( ! genC, "Tuple types should not reach code generation." );
     209                assertf( pretty, "Tuple types should not make it to Code Gen." );
    227210                Visitor::visit( tupleType );
    228211                unsigned int i = 0;
     
    231214                for ( Type * t : *tupleType ) {
    232215                        i++;
    233                         os << genType( t, "", pretty, genC ) << (i == tupleType->size() ? "" : ", ");
     216                        os << genType( t, "", pretty ) << (i == tupleType->size() ? "" : ", ");
    234217                }
    235218                os << "]";
Note: See TracChangeset for help on using the changeset viewer.