Ignore:
Timestamp:
Jul 2, 2024, 3:18:37 PM (7 weeks ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
597f284
Parents:
bc48c0d
Message:

inline enum relational and increment operators, comment out loop causing compiler segment fault

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/enum.cfa

    rbc48c0d r062467b  
    1010        int args = fmt( is, "%255s", val );
    1111        if ( ! eof( is ) && args != 1 ) throwResume ExceptionInst( missing_data );
    12         for ( s; E ) {
    13                 if ( val == label( s ) ) { e = s; break; }
    14         } else {
    15                 fprintf( stderr, "invalid enumeration constant\n" );
    16                 abort();                                                                        // cannot use abort stream
    17         } // for
     12        // for ( s; E ) {
     13        //      if ( val == label( s ) ) { e = s; break; }
     14        // } else {
     15        //      fprintf( stderr, "invalid enumeration constant\n" );
     16        //      abort();                                                                        // cannot use abort stream
     17        // } // for
    1818        return is;
    1919}
     
    3232        OSTYPE_VOID_IMPL( E )
    3333}
    34 
    35 forall( E, V | CfaEnum( E, V ) ) {                                              // relational operators
    36     int ?==?( E l, E r ) { return posn( l ) == posn( r ); }
    37     int ?!=?( E l, E r ) { return posn( l ) != posn( r ); }
    38     int ?<?( E l, E r ) { return posn( l ) < posn( r ); }
    39     int ?<=?( E l, E r ) { return posn( l ) <= posn( r ); }
    40     int ?>?( E l, E r ) { return posn( l ) > posn( r ); }
    41     int ?>=?( E l, E r ) { return posn( l ) >= posn( r ); }
    42 
    43     E ++?( E & l ) {
    44         l = succ( l );
    45         return l;
    46     }
    47    
    48     E ?++( E & l ) {
    49         E ret = l;
    50         l = succ( l );
    51         return ret;
    52     }
    53 
    54     E --?( E & l ) {
    55         l = pred( l );
    56         return l;
    57     }
    58 
    59     E ?--( E & l ) {
    60         E ret = l;
    61         l = pred( l );
    62         return ret;
    63     }
    64 }
Note: See TracChangeset for help on using the changeset viewer.