Ignore:
Timestamp:
Dec 12, 2024, 4:45:14 PM (6 days ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
ad8b6df
Parents:
35cc6d4
Message:

Make array and list headers free of warnings upon include and as used in a libcfa build

File:
1 edited

Legend:

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

    r35cc6d4 r8ee211d  
    99
    1010#ifdef __CFA_DEBUG__
    11 #define subcheck( arr, sub, lb, ub ) \
    12         if ( (sub) < (lb) || (sub) >= (ub) ) \
    13                 abort( "subscript %ld exceeds dimension range [%d,%zd) for array %p.\n", \
    14                            (sub), (lb), (ub), (arr) )
     11#define subcheck( arr, sub, len ) \
     12        if ( (sub) < 0 || (sub) >= (len) ) \
     13                abort( "subscript %ld exceeds dimension range [0,%zd) for array %p.\n", \
     14                           (sub), (len), (arr) )
     15#define subchecku( arr, sub, len ) \
     16        if ( (sub) >= (len) ) \
     17                abort( "subscript %ld exceeds dimension range [0,%zd) for array %p.\n", \
     18                           (sub), (len), (arr) )
    1519#else
    16 #define subcheck( arr, sub, lb, ub ) do {} while (0)
     20#define subcheck( arr, sub, len ) do {} while (0)
     21#define subchecku( arr, sub, len ) do {} while (0)
    1722#endif
    1823
     
    8489
    8590        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, zero_t ) {
    86                 //assert( 0 < N );
    87                 subcheck( a, 0L, 0, N );
     91                subcheck( a, 0L, N );
    8892                return (Timmed &)a.strides[0];
    8993        }
    9094
    9195        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, one_t ) {
    92                 //assert( 1 < N );
    93                 subcheck( a, 1L, 0, N );
     96                subcheck( a, 1L, N );
    9497                return (Timmed &)a.strides[1];
    9598        }
    9699
    97100        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, int i ) {
    98                 //assert( i < N );
    99                 subcheck( a, (long int)i, 0, N );
     101                subcheck( a, (long int)i, N );
    100102                return (Timmed &)a.strides[i];
    101103        }
    102104
    103105        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, int i ) {
    104                 //assert( i < N );
    105                 subcheck( a, (long int)i, 0, N );
     106                subcheck( a, (long int)i, N );
    106107                return (Timmed &)a.strides[i];
    107108        }
    108109
    109110        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, unsigned int i ) {
    110                 //assert( i < N );
    111                 subcheck( a, (long int)i, 0, N );
     111                subchecku( a, (unsigned long int)i, N );
    112112                return (Timmed &)a.strides[i];
    113113        }
    114114
    115115        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, unsigned int i ) {
    116                 //assert( i < N );
    117                 subcheck( a, (unsigned long int)i, 0, N );
     116                subchecku( a, (unsigned long int)i, N );
    118117                return (Timmed &)a.strides[i];
    119118        }
    120119
    121120        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, long int i ) {
    122                 //assert( i < N );
    123                 subcheck( a, i, 0, N );
     121                subcheck( a, i, N );
    124122                return (Timmed &)a.strides[i];
    125123        }
    126124
    127125        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, long int i ) {
    128                 //assert( i < N );
    129                 subcheck( a, i, 0, N );
     126                subcheck( a, i, N );
    130127                return (Timmed &)a.strides[i];
    131128        }
    132129
    133130        static inline Timmed & ?[?]( arpk( N, S, Timmed, Tbase ) & a, unsigned long int i ) {
    134                 //assert( i < N );
    135                 subcheck( a, i, 0, N );
     131                subchecku( a, i, N );
    136132                return (Timmed &)a.strides[i];
    137133        }
    138134
    139135        static inline const Timmed & ?[?]( const arpk( N, S, Timmed, Tbase ) & a, unsigned long int i ) {
    140                 //assert( i < N );
    141                 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 ) {
     136                subchecku( a, i, N );
     137                return (Timmed &)a.strides[i];
     138        }
     139
     140        static inline size_t ?`len( arpk( N, S, Timmed, Tbase ) & ) {
    146141                return N;
    147142        }
Note: See TracChangeset for help on using the changeset viewer.