Changes in src/Parser/LinkageSpec.cc [d3b7937:79970ed]
- File:
-
- 1 edited
-
src/Parser/LinkageSpec.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/LinkageSpec.cc
rd3b7937 r79970ed 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // LinkageSpec.cc -- 8 // 7 // LinkageSpec.cc -- 8 // 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:22:09 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 19 15:53:05 201513 // Update Count : 514 // 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 21 12:32:53 2016 13 // Update Count : 17 14 // 15 15 16 16 #include <string> … … 20 20 #include "Common/SemanticError.h" 21 21 22 LinkageSpec:: Type LinkageSpec::fromString( const std::string &stringSpec ) {23 if ( s tringSpec == "\"Cforall\"" ) {22 LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) { 23 if ( spec == "\"Cforall\"" ) { 24 24 return Cforall; 25 } else if ( s tringSpec == "\"C\"" ) {25 } else if ( spec == "\"C\"" ) { 26 26 return C; 27 27 } else { 28 throw SemanticError( "Invalid linkage specifier " + stringSpec ); 29 } 28 throw SemanticError( "Invalid linkage specifier " + spec ); 29 } // if 30 delete &spec; // allocated by lexer 30 31 } 31 32 32 std::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 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) { 34 assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs ); 35 static const char *linkageKinds[LinkageSpec::NoOfSpecs] = { 36 "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in", 37 }; 38 return linkageKinds[linkage]; 47 39 } 48 40 49 bool 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; 41 bool LinkageSpec::isDecoratable( Spec spec ) { 42 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 43 static bool decoratable[LinkageSpec::NoOfSpecs] = { 44 // Intrinsic, Cforall, C, AutoGen, Compiler 45 true, true, false, true, false, 46 }; 47 return decoratable[spec]; 61 48 } 62 49 63 bool 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; 50 bool LinkageSpec::isGeneratable( Spec spec ) { 51 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 52 static bool generatable[LinkageSpec::NoOfSpecs] = { 53 // Intrinsic, Cforall, C, AutoGen, Compiler 54 true, true, true, true, false, 55 }; 56 return generatable[spec]; 75 57 } 76 58 77 bool LinkageSpec::isOverloadable( Type t ) { 78 return isDecoratable( t ); 59 bool LinkageSpec::isOverridable( Spec spec ) { 60 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 61 static bool overridable[LinkageSpec::NoOfSpecs] = { 62 // Intrinsic, Cforall, C, AutoGen, Compiler 63 true, false, false, true, false, 64 }; 65 return overridable[spec]; 79 66 } 80 67 81 82 bool 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; 94 } 95 96 bool 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; 68 bool LinkageSpec::isBuiltin( Spec spec ) { 69 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 70 static bool builtin[LinkageSpec::NoOfSpecs] = { 71 // Intrinsic, Cforall, C, AutoGen, Compiler 72 true, false, false, false, true, 73 }; 74 return builtin[spec]; 108 75 } 109 76
Note:
See TracChangeset
for help on using the changeset viewer.