Changes in src/Parser/ParseNode.h [08d5507b:a7c90d4]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ParseNode.h
r08d5507b ra7c90d4 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Mar 14 11:05:05201713 // Update Count : 7 5212 // Last Modified On : Tue Mar 7 08:10:53 2017 13 // Update Count : 726 14 14 // 15 15 … … 204 204 // These must remain in the same order as the corresponding DeclarationNode names. 205 205 206 enum { Extern = 1 << 0, Static = 1 << 1, Auto = 1 << 2, Register = 1 << 3, Threadlocal = 1 << 4, NoStorageClass = 5 }; 207 union StorageClasses { 208 unsigned int val; 209 struct { 210 bool is_extern : 1; 211 bool is_static : 1; 212 bool is_auto : 1; 213 bool is_register : 1; 214 bool is_threadlocal : 1; 215 }; 216 StorageClasses() : val( 0 ) {} 217 StorageClasses( unsigned int val ) : val( val ) {} 218 bool operator[]( unsigned int i ) const { return val & (1 << i); } 219 }; // StorageClasses 220 221 enum { Inline = 1 << 0, Noreturn = 1 << 1, Fortran = 1 << 2, NoFuncSpecifier = 3 }; 222 union FuncSpecifiers { 223 unsigned int val; 224 struct { 225 bool is_inline : 1; 226 bool is_noreturn : 1; 227 bool is_fortran : 1; 228 }; 229 FuncSpecifiers() : val( 0 ) {} 230 FuncSpecifiers( unsigned int val ) : val( val ) {} 231 bool operator[]( unsigned int i ) const { return val & (1 << i); } 232 }; // FuncSpecifiers 233 206 enum StorageClass { Extern, Static, Auto, Register, Threadlocal, NoStorageClass, 207 ExternClass = 1 << Extern, StaticClass = 1 << Static, AutoClass = 1 << Auto, RegisterClass = 1 << Register, ThreadlocalClass = 1 << Threadlocal }; 208 enum FuncSpecifier { Inline, Noreturn, Fortran, NoFuncSpecifier, 209 InlineSpec = 1 << Inline, NoreturnSpec = 1 << Noreturn, FortranSpec = 1 << Fortran }; 234 210 enum TypeQualifier { Const, Restrict, Volatile, Lvalue, Mutex, Atomic, NoTypeQualifier }; 235 211 enum BasicType { Void, Bool, Char, Int, Float, Double, LongDouble, NoBasicType }; … … 252 228 static const char * builtinTypeNames[]; 253 229 254 static DeclarationNode * newStorageClass( StorageClass es);255 static DeclarationNode * newFuncSpecifier( FuncSpecifier s);230 static DeclarationNode * newStorageClass( StorageClass ); 231 static DeclarationNode * newFuncSpecifier( FuncSpecifier ); 256 232 static DeclarationNode * newTypeQualifier( TypeQualifier ); 257 233 static DeclarationNode * newBasicType( BasicType ); … … 350 326 TypeData * type; 351 327 328 typedef std::bitset< DeclarationNode::NoStorageClass > StorageClasses; 352 329 StorageClasses storageClasses; 353 330 static void print_StorageClass( std::ostream & output, StorageClasses storageClasses ); 354 331 332 typedef std::bitset< DeclarationNode::NoFuncSpecifier > FuncSpecifiers; 355 333 FuncSpecifiers funcSpecs; 356 334 static void print_FuncSpec( std::ostream & output, FuncSpecifiers funcSpecs );
Note:
See TracChangeset
for help on using the changeset viewer.