Changeset b8e047a


Ignore:
Timestamp:
Jul 28, 2024, 10:12:28 PM (4 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
caa3e2c
Parents:
82ff201a
Message:

formatting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/collections/array.hfa

    r82ff201a rb8e047a  
    4545forall( [N], S & | sized(S), Timmed &, Tbase & ) {
    4646        //
    47         // Single-dim array sruct (with explicit packing and atom)
     47        // Single-dim array struct (with explicit packing and atom)
    4848        //
    4949        struct arpk {
     
    8383        // Mike is open to being shown a smaller set of overloads that still passes the test.
    8484
    85         static inline Timmed & ?[?]( arpk(N, S, Timmed, Tbase ) & a, zero_t ) {
     85        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, zero_t ) {
    8686                //assert( 0 < N );
    8787                subcheck( a, 0L, 0, N );
    88                 return (Timmed &) a.strides[0];
    89         }
    90 
    91         static inline Timmed & ?[?]( arpk(N, S, Timmed, Tbase ) & a, one_t ) {
     88                return (Timmed &)a.strides[0];
     89        }
     90
     91        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, one_t ) {
    9292                //assert( 1 < N );
    9393                subcheck( a, 1L, 0, N );
    94                 return (Timmed &) a.strides[1];
    95         }
    96 
    97         static inline Timmed & ?[?]( arpk(N, S, Timmed, Tbase ) & a, int i ) {
     94                return (Timmed &)a.strides[1];
     95        }
     96
     97        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, int i ) {
    9898                //assert( i < N );
    9999                subcheck( a, (long int)i, 0, N );
    100                 return (Timmed &) a.strides[i];
    101         }
    102 
    103         static inline const Timmed & ?[?]( const arpk(N, S, Timmed, Tbase ) & a, int i ) {
     100                return (Timmed &)a.strides[i];
     101        }
     102
     103        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, int i ) {
    104104                //assert( i < N );
    105105                subcheck( a, (long int)i, 0, N );
    106                 return (Timmed &) a.strides[i];
    107         }
    108 
    109         static inline Timmed & ?[?]( arpk(N, S, Timmed, Tbase ) & a, unsigned int i ) {
     106                return (Timmed &)a.strides[i];
     107        }
     108
     109        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, unsigned int i ) {
    110110                //assert( i < N );
    111111                subcheck( a, (long int)i, 0, N );
    112                 return (Timmed &) a.strides[i];
    113         }
    114 
    115         static inline const Timmed & ?[?]( const arpk(N, S, Timmed, Tbase ) & a, unsigned int i ) {
     112                return (Timmed &)a.strides[i];
     113        }
     114
     115        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, unsigned int i ) {
    116116                //assert( i < N );
    117117                subcheck( a, (unsigned long int)i, 0, N );
    118                 return (Timmed &) a.strides[i];
    119         }
    120 
    121         static inline Timmed & ?[?]( arpk(N, S, Timmed, Tbase ) & a, long int i ) {
     118                return (Timmed &)a.strides[i];
     119        }
     120
     121        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, long int i ) {
    122122                //assert( i < N );
    123123                subcheck( a, i, 0, N );
    124                 return (Timmed &) a.strides[i];
    125         }
    126 
    127         static inline const Timmed & ?[?]( const arpk(N, S, Timmed, Tbase ) & a, long int i ) {
     124                return (Timmed &)a.strides[i];
     125        }
     126
     127        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, long int i ) {
    128128                //assert( i < N );
    129129                subcheck( a, i, 0, N );
    130                 return (Timmed &) a.strides[i];
    131         }
    132 
    133         static inline Timmed & ?[?]( arpk(N, S, Timmed, Tbase ) & a, unsigned long int i ) {
     130                return (Timmed &)a.strides[i];
     131        }
     132
     133        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, unsigned long int i ) {
    134134                //assert( i < N );
    135135                subcheck( a, i, 0, N );
    136                 return (Timmed &) a.strides[i];
    137         }
    138 
    139         static inline const Timmed & ?[?]( const arpk(N, S, Timmed, Tbase ) & a, unsigned long int i ) {
     136                return (Timmed &)a.strides[i];
     137        }
     138
     139        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, unsigned long int i ) {
    140140                //assert( i < N );
    141141                subcheck( a, i, 0, N );
    142                 return (Timmed &) a.strides[i];
    143         }
    144 
    145         static inline size_t ?`len( arpk(N, S, Timmed, Tbase ) & a ) {
     142                return (Timmed &)a.strides[i];
     143        }
     144
     145        static inline size_t ?`len( arpk( N, S, Timmed, Tbase ) & a ) {
    146146                return N;
    147147        }
    148148
    149         static inline void __taglen( tag(arpk(N, S, Timmed, Tbase )), tag(N) ) {}
     149        static inline void __taglen( tag(arpk( N, S, Timmed, Tbase )), tag(N) ) {}
    150150}
    151151
     
    157157
    158158forall( [N], S & | sized(S), Timmed &, Tbase & | { void ?{}( Timmed & ); } )
    159 static inline void ?{}( arpk(N, S, Timmed, Tbase ) & this ) {   
     159static inline void ?{}( arpk( N, S, Timmed, Tbase ) & this ) { 
    160160        void ?{}( S (&)[N] ) {}
    161161        ?{}(this.strides);
    162162
    163         for (i; N) ?{}( (Timmed &) this.strides[i] );
     163        for (i; N) ?{}( (Timmed &)this.strides[i] );
    164164}
    165165
    166166forall( [N], S & | sized(S), Timmed &, Tbase & | { void ^?{}( Timmed & ); } )
    167 static inline void ^?{}( arpk(N, S, Timmed, Tbase ) & this ) {
     167static inline void ^?{}( arpk( N, S, Timmed, Tbase ) & this ) {
    168168        void ^?{}( S (&)[N] ) {}
    169169        ^?{}(this.strides);
    170170
    171171        for (i; N ) {
    172                 ^?{}( (Timmed &) this.strides[N-i-1] );
     172                ^?{}( (Timmed &)this.strides[N-i-1] );
    173173        }
    174174}
     
    182182
    183183forall( [N], ZTags ... , Trslt &, Tatom & | { Trslt mkar_( tag(Tatom), ZTags ); } )
    184 static inline arpk(N, Trslt, Trslt, Tatom) mkar_( tag(Tatom), tag(N), ZTags ) {}
     184static inline arpk( N, Trslt, Trslt, Tatom) mkar_( tag(Tatom), tag(N), ZTags ) {}
    185185
    186186// based on https://stackoverflow.com/questions/1872220/is-it-possible-to-iterate-over-arguments-in-variadic-macros
     
    254254// Base
    255255forall( [Nq], Sq & | sized(Sq), Tbase & )
    256 static inline tag(arpk(Nq, Sq, Tbase, Tbase )) enq_( tag(Tbase ), tag(Nq), tag(Sq), tag(Tbase ) ) {
    257         tag(arpk(Nq, Sq, Tbase, Tbase )) ret;
     256static inline tag(arpk( Nq, Sq, Tbase, Tbase )) enq_( tag(Tbase ), tag(Nq), tag(Sq), tag(Tbase ) ) {
     257        tag(arpk( Nq, Sq, Tbase, Tbase )) ret;
    258258        return ret;
    259259}
    260260
    261261// Rec
    262 forall( [Nq], Sq & | sized(Sq), [N], S & | sized(S), recq &, recr &, Tbase & | { tag(recr) enq_( tag(Tbase ), tag(Nq), tag(Sq), tag(recq) ); } )
    263 static inline tag(arpk(N, S, recr, Tbase )) enq_( tag(Tbase ), tag(Nq), tag(Sq), tag(arpk(N, S, recq, Tbase )) ) {
    264         tag(arpk(N, S, recr, Tbase )) ret;
     262forall( [Nq], Sq & | sized(Sq), [N], S & | sized(S), recq &, recr &, Tbase & | { tag(recr) enq_( tag(Tbase), tag(Nq), tag(Sq), tag(recq) ); } )
     263static inline tag(arpk( N, S, recr, Tbase )) enq_( tag(Tbase ), tag(Nq), tag(Sq), tag(arpk( N, S, recq, Tbase )) ) {
     264        tag(arpk( N, S, recr, Tbase )) ret;
    265265        return ret;
    266266}
     
    268268// Wrapper
    269269extern struct all_t {} all;
    270 forall( [N], S & | sized(S), Te &, result &, Tbase & | { tag(result) enq_( tag(Tbase ), tag(N), tag(S), tag(Te) ); } )
    271 static inline result & ?[?]( arpk(N, S, Te, Tbase ) & this, all_t ) {
     270forall( [N], S & | sized(S), Te &, result &, Tbase & | { tag(result) enq_( tag(Tbase), tag(N), tag(S), tag(Te) ); } )
     271static inline result & ?[?]( arpk( N, S, Te, Tbase ) & this, all_t ) {
    272272        return (result&) this;
    273273}
Note: See TracChangeset for help on using the changeset viewer.