Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ParseNode.h

    r08d5507b ra7c90d4  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar 14 11:05:05 2017
    13 // Update Count     : 752
     12// Last Modified On : Tue Mar  7 08:10:53 2017
     13// Update Count     : 726
    1414//
    1515
     
    204204        // These must remain in the same order as the corresponding DeclarationNode names.
    205205
    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 };
    234210        enum TypeQualifier { Const, Restrict, Volatile, Lvalue, Mutex, Atomic, NoTypeQualifier };
    235211        enum BasicType { Void, Bool, Char, Int, Float, Double, LongDouble, NoBasicType };
     
    252228        static const char * builtinTypeNames[];
    253229
    254         static DeclarationNode * newStorageClass( StorageClasses );
    255         static DeclarationNode * newFuncSpecifier( FuncSpecifiers );
     230        static DeclarationNode * newStorageClass( StorageClass );
     231        static DeclarationNode * newFuncSpecifier( FuncSpecifier );
    256232        static DeclarationNode * newTypeQualifier( TypeQualifier );
    257233        static DeclarationNode * newBasicType( BasicType );
     
    350326        TypeData * type;
    351327
     328        typedef std::bitset< DeclarationNode::NoStorageClass > StorageClasses;
    352329        StorageClasses storageClasses;
    353330        static void print_StorageClass( std::ostream & output, StorageClasses storageClasses );
    354331
     332        typedef std::bitset< DeclarationNode::NoFuncSpecifier > FuncSpecifiers;
    355333        FuncSpecifiers funcSpecs;
    356334        static void print_FuncSpec( std::ostream & output, FuncSpecifiers funcSpecs );
Note: See TracChangeset for help on using the changeset viewer.