Ignore:
Timestamp:
Aug 17, 2016, 11:09:11 PM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
1cb2282, 7a5d773
Parents:
926af74
Message:

more refactoring of parser code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/LinkageSpec.cc

    r926af74 r3b8e52c  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:22:09 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 19 15:53:05 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 23:02:37 2016
     13// Update Count     : 11
    1414//
    1515
     
    3131
    3232std::string LinkageSpec::toString( LinkageSpec::Type linkage ) {
    33         switch ( linkage ) {
    34           case Intrinsic:
    35                 return "intrinsic";
    36           case Cforall:
    37                 return "Cforall";
    38           case C:
    39                 return "C";
    40           case AutoGen:
    41                 return "automatically generated";
    42           case Compiler:
    43                 return "compiler built-in";
    44         }
    45         assert( false );
    46         return "";
     33        static const char *linkageKinds[LinkageSpec::NoOfTypes] = {
     34                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     35        };
     36        return linkageKinds[linkage];
    4737}
    4838
    4939bool LinkageSpec::isDecoratable( Type t ) {
    50         switch ( t ) {
    51           case Intrinsic:
    52           case Cforall:
    53           case AutoGen:
    54                 return true;
    55           case C:
    56           case Compiler:
    57                 return false;
    58         }
    59         assert( false );
    60         return false;
     40        static bool decoratable[LinkageSpec::NoOfTypes] = {
     41                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     42                        true,           true,           false,  true,           false,
     43        };
     44        return decoratable[ t ];
    6145}
    6246
    6347bool LinkageSpec::isGeneratable( Type t ) {
    64         switch ( t ) {
    65           case Intrinsic:
    66           case Cforall:
    67           case AutoGen:
    68           case C:
    69                 return true;
    70           case Compiler:
    71                 return false;
    72         }
    73         assert( false );
    74         return false;
     48        static bool generatable[LinkageSpec::NoOfTypes] = {
     49                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     50                        true,           true,           true,   true,           false,
     51        };
     52        return generatable[ t ];
    7553}
    7654
     
    8159
    8260bool LinkageSpec::isOverridable( Type t ) {
    83         switch ( t ) {
    84           case Intrinsic:
    85           case AutoGen:
    86                 return true;
    87           case Cforall:
    88           case C:
    89           case Compiler:
    90                 return false;
    91         }
    92         assert( false );
    93         return false;
     61        static bool overridable[LinkageSpec::NoOfTypes] = {
     62                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     63                        true,           false,          false,  true,           false,
     64        };
     65        return overridable[ t ];
    9466}
    9567
    9668bool LinkageSpec::isBuiltin( Type t ) {
    97         switch ( t ) {
    98           case Cforall:
    99           case AutoGen:
    100           case C:
    101                 return false;
    102           case Intrinsic:
    103           case Compiler:
    104                 return true;
    105         }
    106         assert( false );
    107         return false;
     69        static bool builtin[LinkageSpec::NoOfTypes] = {
     70                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     71                        true,           false,          false,  false,          true,
     72        };
     73        return builtin[ t ];
    10874}
    10975
Note: See TracChangeset for help on using the changeset viewer.