Changes in / [853451b:d9ff69a]


Ignore:
Location:
src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/stdlib

    r853451b rd9ff69a  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Dec 28 18:43:12 2017
    13 // Update Count     : 277
     12// Last Modified On : Sat Dec 23 18:21:42 2017
     13// Update Count     : 267
    1414//
    1515
     
    185185//---------------------------------------
    186186
    187 forall( otype E | { int ?<?( E, E ); } )
    188 E * bsearch( E key, const E * arr, size_t dim );
    189 
    190 forall( otype E | { int ?<?( E, E ); } )
    191 unsigned int bsearch( E key, const E * arr, size_t dim );
    192 
    193 forall( otype K, otype E | { int ?<?( K, K ); K getKey( E & ); } )
    194 E * bsearch( K key, const E * arr, size_t dim );
    195 
    196 forall( otype K, otype E | { int ?<?( K, K ); K getKey( E & ); } )
    197 unsigned int bsearch( K key, const E * arr, size_t dim );
    198 
    199 forall( otype E | { int ?<?( E, E ); } )
    200 void qsort( E * arr, size_t dim );
     187forall( otype T | { int ?<?( T, T ); } )
     188T * bsearch( T key, const T * arr, size_t dim );
     189
     190forall( otype T | { int ?<?( T, T ); } )
     191unsigned int bsearch( T key, const T * arr, size_t dim );
     192
     193
     194forall( otype T | { int ?<?( T, T ); } )
     195void qsort( const T * arr, size_t dim );
    201196
    202197//---------------------------------------
  • src/libcfa/stdlib.c

    r853451b rd9ff69a  
    1010// Created On       : Thu Jan 28 17:10:29 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Dec 28 18:43:16 2017
    13 // Update Count     : 378
     12// Last Modified On : Sun Dec 24 13:00:15 2017
     13// Update Count     : 344
    1414//
    1515
     
    128128//---------------------------------------
    129129
    130 forall( otype E | { int ?<?( E, E ); } )
    131 E * bsearch( E key, const E * arr, size_t dim ) {
    132         int comp( const void * t1, const void * t2 ) { return *(E *)t1 < *(E *)t2 ? -1 : *(E *)t2 < *(E *)t1 ? 1 : 0; }
    133         return (E *)bsearch( &key, arr, dim, sizeof(E), comp );
     130forall( otype T | { int ?<?( T, T ); } )
     131T * bsearch( T key, const T * arr, size_t dim ) {
     132        int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; }
     133        return (T *)bsearch( &key, arr, dim, sizeof(T), comp );
    134134} // bsearch
    135135
    136 forall( otype E | { int ?<?( E, E ); } )
    137 unsigned int bsearch( E key, const E * arr, size_t dim ) {
    138         E * result = bsearch( key, arr, dim );
    139         return result ? result - arr : dim;                                     // pointer subtraction includes sizeof(E)
     136forall( otype T | { int ?<?( T, T ); } )
     137unsigned int bsearch( T key, const T * arr, size_t dim ) {
     138        T * result = bsearch( key, arr, dim );
     139        return result ? result - arr : dim;                                     // pointer subtraction includes sizeof(T)
    140140} // bsearch
    141141
    142 forall( otype K, otype E | { int ?<?( K, K ); K getKey( E & ); } )
    143 E * bsearch( K key, const E * arr, size_t dim ) {
    144         int comp( const void * t1, const void * t2 ) { return *(K *)t1 < getKey( *(E *)t2 ) ? -1 : getKey( *(E *)t2 ) < *(K *)t1 ? 1 : 0; }
    145         return (E *)bsearch( &key, arr, dim, sizeof(E), comp );
    146 } // bsearch
    147 
    148 forall( otype K, otype E | { int ?<?( K, K ); K getKey( E & ); } )
    149 unsigned int bsearch( K key, const E * arr, size_t dim ) {
    150         E * result = bsearch( key, arr, dim );
    151         return result ? result - arr : dim;                                     // pointer subtraction includes sizeof(E)
    152 } // bsearch
    153 
    154 forall( otype E | { int ?<?( E, E ); } )
    155 void qsort( E * arr, size_t dim ) {
    156         int comp( const void * t1, const void * t2 ) { return *(E *)t1 < *(E *)t2 ? -1 : *(E *)t2 < *(E *)t1 ? 1 : 0; }
    157         qsort( arr, dim, sizeof(E), comp );
     142forall( otype T | { int ?<?( T, T ); } )
     143void qsort( const T * arr, size_t dim ) {
     144        int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; }
     145        qsort( arr, dim, sizeof(T), comp );
    158146} // qsort
    159147
  • src/tests/.expect/searchsort.txt

    r853451b rd9ff69a  
    22
    331, 2, 3, 4, 5, 6, 7, 8, 9, 10,
    4 10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1,
    5 10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1,
    6 10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1,
     410, 9, 8, 7, 6, 5, 4, 3, 2, 1,
     510, 9, 8, 7, 6, 5, 4, 3, 2, 1,
     610, 9, 8, 7, 6, 5, 4, 3, 2, 1,
    77
    881, 2, 3, 4, 5, 6, 7, 8, 9, 10,
    9910, 9, 8, 7, 6, 5, 4, 3, 2, 1,
    10 10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1,
    11 10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1,
     1010, 9, 8, 7, 6, 5, 4, 3, 2, 1,
     1110, 9, 8, 7, 6, 5, 4, 3, 2, 1,
    1212
    131310.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5,
    14141.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5,
    15 10.5:10.5, 9.5:9.5, 8.5:8.5, 7.5:7.5, 6.5:6.5, 5.5:5.5, 4.5:4.5, 3.5:3.5, 2.5:2.5, 1.5:1.5,
    16 10.5:10.5, 9.5:9.5, 8.5:8.5, 7.5:7.5, 6.5:6.5, 5.5:5.5, 4.5:4.5, 3.5:3.5, 2.5:2.5, 1.5:1.5,
     1510.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5,
     1610.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5,
    1717
    181810 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2,
    19191 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11,
    20 10 11:10 11, 9 10:9 10, 8 9:8 9, 7 8:7 8, 6 7:6 7, 5 6:5 6, 4 5:4 5, 3 4:3 4, 2 3:2 3, 1 2:1 2,
    21 10 11:10 11, 9 10:9 10, 8 9:8 9, 7 8:7 8, 6 7:6 7, 5 6:5 6, 4 5:4 5, 3 4:3 4, 2 3:2 3, 1 2:1 2,
     2010 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2,
     2110 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2,
    2222
    23 1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11,
    24 11:10 11, 10:9 10, 9:8 9, 8:7 8, 7:6 7, 6:5 6, 5:4 5, 4:3 4, 3:2 3, 2:1 2,
    25 11:10 11, 10:9 10, 9:8 9, 8:7 8, 7:6 7, 6:5 6, 5:4 5, 4:3 4, 3:2 3, 2:1 2,
    26 
  • src/tests/searchsort.c

    r853451b rd9ff69a  
    1010// Created On       : Thu Feb  4 18:17:50 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Dec 28 18:48:10 2017
    13 // Update Count     : 99
     12// Last Modified On : Thu Dec  7 09:14:06 2017
     13// Update Count     : 77
    1414//
    1515
     
    3838        for ( unsigned int i = 0; i < size; i += 1 ) {          // C version
    3939                int key = size - i;
    40                 int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
    41                 sout | key | ':' | *v | ", ";
     40                int *v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
     41                sout | *v | ", ";
    4242        } // for
    4343        sout | endl;
    44 
    4544        for ( unsigned int i = 0; i < size; i += 1 ) {
    46                 int * v = bsearch( size - i, iarr, size );
    47                 sout | size - i | ':' | *v | ", ";
     45                int *v = bsearch( size - i, iarr, size );
     46                sout | *v | ", ";
    4847        } // for
    4948        sout | endl;
    5049        for ( unsigned int i = 0; i < size; i += 1 ) {
    5150                unsigned int posn = bsearch( size - i, iarr, size );
    52                 sout | size - i | ':' | iarr[posn] | ", ";
     51                sout | iarr[posn] | ", ";
    5352        } // for
    5453        sout | endl | endl;
     
    6867                sout | endl;
    6968                for ( unsigned int i = 0; i < size; i += 1 ) {
    70                         int * v = bsearch( size - i, iarr, size );
    71                         sout | size - i | ':' | *v | ", ";
     69                        int *v = bsearch( size - i, iarr, size );
     70                        sout | *v | ", ";
    7271                } // for
    7372                sout | endl;
    7473                for ( unsigned int i = 0; i < size; i += 1 ) {
    7574                        unsigned int posn = bsearch( size - i, iarr, size );
    76                         sout | size - i | ':' | iarr[posn] | ", ";
     75                        sout | iarr[posn] | ", ";
    7776                } // for
    7877        }
     
    9190        sout | endl;
    9291        for ( unsigned int i = 0; i < size; i += 1 ) {
    93                 double * v = bsearch( size - i + 0.5, darr, size );
    94                 sout | size - i + 0.5 | ':' | *v | ", ";
     92                double *v = bsearch( size - i + 0.5, darr, size );
     93                sout | *v | ", ";
    9594        } // for
    9695        sout | endl;
    9796        for ( unsigned int i = 0; i < size; i += 1 ) {
    9897                unsigned int posn = bsearch( size - i + 0.5, darr, size );
    99                 sout | size - i + 0.5 | ':' | darr[posn] | ", ";
     98                sout | darr[posn] | ", ";
    10099        } // for
    101100        sout | endl | endl;
     
    117116        for ( unsigned int i = 0; i < size; i += 1 ) {
    118117                S temp = { size - i, size - i + 1 };
    119                 S * v = bsearch( temp, sarr, size );
    120                 sout | temp | ':' | *v | ", ";
     118                S *v = bsearch( temp, sarr, size );
     119                sout | *v | ", ";
    121120        } // for
    122121        sout | endl;
     
    124123                S temp = { size - i, size - i + 1 };
    125124                unsigned int posn = bsearch( temp, sarr, size );
    126                 sout | temp | ':' | sarr[posn] | ", ";
     125                sout | sarr[posn] | ", ";
    127126        } // for
    128127        sout | endl | endl;
    129         {
    130                 unsigned int getKey( S & s ) { return s.j; }
    131                 for ( unsigned int i = 0; i < size; i += 1 ) {
    132                         sout | sarr[i] | ", ";
    133                 } // for
    134                 sout | endl;
    135                 for ( unsigned int i = 0; i < size; i += 1 ) {
    136                         S * v = bsearch( size - i + 1, sarr, size );
    137                         sout | size - i + 1 | ':' | *v | ", ";
    138                 } // for
    139                 sout | endl;
    140                 for ( unsigned int i = 0; i < size; i += 1 ) {
    141                         unsigned int posn = bsearch( size - i + 1, sarr, size );
    142                         sout | size - i + 1 | ':' | sarr[posn] | ", ";
    143                 } // for
    144                 sout | endl | endl;
    145         }
    146128} // main
    147129
Note: See TracChangeset for help on using the changeset viewer.