Changeset 3021


Ignore:
Timestamp:
Apr 7, 2007, 8:10:39 AM (18 years ago)
Author:
bird
Message:

Implemented non-standard enum (size) based on a patch from Froloff. Fixes #145.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/emx/src/emxomf/stabshll.c

    r2673 r3021  
    19481948            Used for 64 bit ints.
    19491949
     1950         @s<bits>;<num records>
     1951            Used for non-standard enums.
     1952
    19501953         @<basetype>,<membertype>
    19511954            Used for addressing class/struct/union members.
     
    19631966              return parse_type(type_name);
    19641967            }
     1968          if (*parse_ptr == 'e')
     1969            goto l_parse_enum;
    19651970
    19661971          if (!parse_number (&code))
     
    25022507
    25032508    case 'e':
     2509      size = 32;
     2510l_parse_enum:
    25042511
    25052512      /* Enumeration type: e{<name>:<value>,}; */
     
    25442551
    25452552      t.tag = ty_prim;
    2546       t.index = 0x82;           /* 32 bit signed */
    2547       t2 = type_add (&t);
     2553      switch (size)
     2554        {
     2555        case 8:  t.index = 0x80; break;   /* 8 bit signed */
     2556        case 16: t.index = 0x81; break;   /* 16 bit signed */
     2557        case 32: t.index = 0x82; break;   /* 32 bit signed */
     2558        case 64: result = t2 = make_long_long (); break;
     2559        default: goto syntax;
     2560        }
     2561      if (!result)
     2562        t2 = type_add (&t);
    25482563
    25492564      t.tag = ty_enu;
Note: See TracChangeset for help on using the changeset viewer.