Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/LinkageSpec.cpp

    r14cebb7a r2bb4a01  
    2424
    2525namespace ast {
     26        namespace Linkage {
     27                Spec update( CodeLocation loc, Spec spec, const std::string * cmd ) {
     28                        assert( cmd );
     29                        std::unique_ptr<const std::string> guard( cmd ); // allocated by lexer
     30                        if ( *cmd == "\"Cforall\"" ) {
     31                                spec.is_mangled = true;
     32                                return spec;
     33                        } else if ( *cmd == "\"C\"" ) {
     34                                spec.is_mangled = false;
     35                                return spec;
     36                        } else {
     37                                SemanticError( loc, "Invalid linkage specifier " + *cmd );
     38                        }
     39                }
     40       
    2641
    27 namespace Linkage {
     42                std::string name( Spec spec ) {
     43                        switch ( spec ) {
     44                        case Intrinsic:  return "intrinsic";
     45                        case C:          return "C";
     46                        case Cforall:    return "Cforall";
     47                        case AutoGen:    return "autogenerated cfa";
     48                        case Compiler:   return "compiler built-in";
     49                        case BuiltinCFA: return "cfa built-in";
     50                        case BuiltinC:   return "c built-in";
     51                        default:         return "<unnamed linkage spec>";
     52                        }
     53                }
    2854
    29         Spec update( CodeLocation loc, Spec spec, const std::string * cmd ) {
    30                 assert( cmd );
    31                 std::unique_ptr<const std::string> guard( cmd ); // allocated by lexer
    32                 if ( *cmd == "\"Cforall\"" ) {
    33                         spec.is_mangled = true;
    34                         return spec;
    35                 } else if ( *cmd == "\"C\"" ) {
    36                         spec.is_mangled = false;
    37                         return spec;
    38                 } else {
    39                         SemanticError( loc, "Invalid linkage specifier " + *cmd );
    40                 }
    4155        }
    42 
    43 
    44         std::string name( Spec spec ) {
    45                 switch ( spec ) {
    46                 case Intrinsic:  return "intrinsic";
    47                 case C:          return "C";
    48                 case Cforall:    return "Cforall";
    49                 case AutoGen:    return "autogenerated cfa";
    50                 case Compiler:   return "compiler built-in";
    51                 case BuiltinCFA: return "cfa built-in";
    52                 case BuiltinC:   return "c built-in";
    53                 default:         return "<unnamed linkage spec>";
    54                 }
    55         }
    56 
    57 }
    58 
    5956}
    6057
Note: See TracChangeset for help on using the changeset viewer.