Changeset 532c0cd for libcfa


Ignore:
Timestamp:
Dec 12, 2024, 11:59:42 AM (6 days ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
f979f0ba
Parents:
bad15f7
Message:

Small bit of clean-up on the enum functions in builtins. Mostly reducing the assertions on functions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/prelude/builtins.c

    rbad15f7 r532c0cd  
    180180};
    181181
    182 static inline forall( E | Serial( E ) ) {
    183         E fromInt( int i );
    184         E succ( E e );
    185         E pred( E e );
    186         int Countof( E );
    187 }
    188 
    189182forall( E ) trait CfaEnum {
    190183        const char * label( E e );
     
    196189};
    197190
    198 static inline {
     191static inline
    199192forall( E | Serial( E ) ) {
    200193        E fromInt( int i ) {
     
    228221        }
    229222}
    230 }
    231223
    232224static inline
    233 forall( E | CfaEnum( E ) | Serial( E ) ) {
    234         int ?==?( E l, E r ) { return posn( l ) == posn( r ); } // relational operators
     225forall( E | CfaEnum( E ) ) {
     226        int ?==?( E l, E r ) { return posn( l ) == posn( r ); }
    235227        int ?!=?( E l, E r ) { return posn( l ) != posn( r ); }
    236228        int ?<?( E l, E r ) { return posn( l ) < posn( r ); }
     
    238230        int ?>?( E l, E r ) { return posn( l ) > posn( r ); }
    239231        int ?>=?( E l, E r ) { return posn( l ) >= posn( r ); }
    240 
    241         E ++?( E & l ) {                                                                        // increment operators
    242                 int pos = posn( l );
     232}
     233
     234static inline
     235forall( E | Serial( E ) ) {
     236        E ++?( E & l ) {
     237                int pos = fromInstance( l );
    243238                l = fromInt_unsafe( pos + 1 );
    244239                return l;
     
    246241
    247242        E --?( E & l ) {
    248                 int pos = posn( l );
     243                int pos = fromInstance( l );
    249244                l = fromInt_unsafe( pos - 1 );
    250245                return l;
     
    252247
    253248        E ?+=?( E & l, one_t ) {
    254                 int pos = posn( l );
     249                int pos = fromInstance( l );
    255250                l = fromInt_unsafe( pos + 1 );
    256251                return l;
     
    258253
    259254        E ?-=?( E & l, one_t ) {
    260                 int pos = posn( l );
     255                int pos = fromInstance( l );
    261256                l = fromInt_unsafe( pos - 1 );
    262257                return l;
     
    264259
    265260        E ?+=?( E & l, int i ) {
    266                 int pos = posn( l );
     261                int pos = fromInstance( l );
    267262                l = fromInt_unsafe( pos + i );
    268263                return l;
     
    270265
    271266        E ?-=?( E & l, int i ) {
    272                 int pos = posn( l );
     267                int pos = fromInstance( l );
    273268                l = fromInt_unsafe( pos - i );
    274269                return l;
     
    276271
    277272        E ?++( E & l ) {
    278                 int pos = posn( l );
     273                int pos = fromInstance( l );
    279274                l = fromInt_unsafe( pos + 1 );
    280275                return fromInt_unsafe( pos );
     
    282277
    283278        E ?--( E & l ) {
    284                 int pos = posn( l );
     279                int pos = fromInstance( l );
    285280                l = fromInt_unsafe( pos - 1 );
    286281                return fromInt_unsafe( pos );
Note: See TracChangeset for help on using the changeset viewer.