Changeset 04cdd9b for src/Parser/LinkageSpec.cc
- Timestamp:
- Aug 19, 2016, 2:42:04 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- e85a8631
- Parents:
- 03da511 (diff), ac71a86 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/LinkageSpec.cc
r03da511 r04cdd9b 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 : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:47:14 2016 13 // Update Count : 12 14 14 // 15 15 … … 20 20 #include "Common/SemanticError.h" 21 21 22 LinkageSpec:: TypeLinkageSpec::fromString( const std::string &stringSpec ) {22 LinkageSpec::Spec LinkageSpec::fromString( const std::string &stringSpec ) { 23 23 if ( stringSpec == "\"Cforall\"" ) { 24 24 return Cforall; … … 30 30 } 31 31 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 ""; 32 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) { 33 static const char *linkageKinds[LinkageSpec::NoOfSpecs] = { 34 "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in", 35 }; 36 return linkageKinds[linkage]; 47 37 } 48 38 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; 39 bool LinkageSpec::isDecoratable( Spec t ) { 40 static bool decoratable[LinkageSpec::NoOfSpecs] = { 41 // Intrinsic, Cforall, C, AutoGen, Compiler 42 true, true, false, true, false, 43 }; 44 return decoratable[t]; 61 45 } 62 46 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; 47 bool LinkageSpec::isGeneratable( Spec t ) { 48 static bool generatable[LinkageSpec::NoOfSpecs] = { 49 // Intrinsic, Cforall, C, AutoGen, Compiler 50 true, true, true, true, false, 51 }; 52 return generatable[t]; 75 53 } 76 54 77 bool LinkageSpec::isOverloadable( Typet ) {55 bool LinkageSpec::isOverloadable( Spec t ) { 78 56 return isDecoratable( t ); 79 57 } 80 58 81 59 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; 60 bool LinkageSpec::isOverridable( Spec t ) { 61 static bool overridable[LinkageSpec::NoOfSpecs] = { 62 // Intrinsic, Cforall, C, AutoGen, Compiler 63 true, false, false, true, false, 64 }; 65 return overridable[t]; 94 66 } 95 67 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 t ) { 69 static bool builtin[LinkageSpec::NoOfSpecs] = { 70 // Intrinsic, Cforall, C, AutoGen, Compiler 71 true, false, false, false, true, 72 }; 73 return builtin[t]; 108 74 } 109 75
Note:
See TracChangeset
for help on using the changeset viewer.