Changes in / [a09552d:5e6fb07]


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/common.hfa

    ra09552d r5e6fb07  
    6666
    6767static inline __attribute__((always_inline)) {
    68         forall( T | { int ?<?( T, T ); } )
     68        char min( char v1, char v2 ) { return v1 < v2 ? v1 : v2; } // optimization
     69        int min( int v1, int v2 ) { return v1 < v2 ? v1 : v2; }
     70        unsigned int min( unsigned int v1, unsigned int v2 ) { return v1 < v2 ? v1 : v2; }
     71        long int min( long int v1, long int v2 ) { return v1 < v2 ? v1 : v2; }
     72        unsigned long int min( unsigned long int v1, unsigned long int v2 ) { return v1 < v2 ? v1 : v2; }
     73        long long int min( long long int v1, long long int v2 ) { return v1 < v2 ? v1 : v2; }
     74        unsigned long long int min( unsigned long long int v1, unsigned long long int v2 ) { return v1 < v2 ? v1 : v2; }
     75        forall( T | { int ?<?( T, T ); } )                                      // generic
    6976        T min( T v1, T v2 ) { return v1 < v2 ? v1 : v2; }
    7077
    71         forall( T, Ts... | { T min( T, T ); T min( T, Ts ); } )
    72         T min( T v1, T v2, Ts vs ) { return min( min( v1, v2 ), vs ); }
    73 
    74         forall( T | { int ?>?( T, T ); } )
     78        char max( char v1, char v2 ) { return v1 > v2 ? v1 : v2; } // optimization
     79        int max( int v1, int v2 ) { return v1 > v2 ? v1 : v2; }
     80        unsigned int max( unsigned int v1, unsigned int v2 ) { return v1 > v2 ? v1 : v2; }
     81        long int max( long int v1, long int v2 ) { return v1 > v2 ? v1 : v2; }
     82        unsigned long int max( unsigned long int v1, unsigned long int v2 ) { return v1 > v2 ? v1 : v2; }
     83        long long int max( long long int v1, long long int v2 ) { return v1 > v2 ? v1 : v2; }
     84        unsigned long long int max( unsigned long long int v1, unsigned long long int v2 ) { return v1 > v2 ? v1 : v2; }
     85        forall( T | { int ?>?( T, T ); } )                                      // generic
    7586        T max( T v1, T v2 ) { return v1 > v2 ? v1 : v2; }
    76 
    77         forall( T, Ts... | { T max( T, T ); T max( T, Ts ); } )
    78         T max( T v1, T v2, Ts vs ) { return max( max( v1, v2 ), vs ); }
    7987
    8088        forall( T | { T min( T, T ); T max( T, T ); } )
     
    8391        forall( T )
    8492        void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; }
    85 
    86         // Specializations
    87         char min( char v1, char v2 ) { return v1 < v2 ? v1 : v2; }
    88         int min( int v1, int v2 ) { return v1 < v2 ? v1 : v2; }
    89         unsigned int min( unsigned int v1, unsigned int v2 ) { return v1 < v2 ? v1 : v2; }
    90         long int min( long int v1, long int v2 ) { return v1 < v2 ? v1 : v2; }
    91         unsigned long int min( unsigned long int v1, unsigned long int v2 ) { return v1 < v2 ? v1 : v2; }
    92         long long int min( long long int v1, long long int v2 ) { return v1 < v2 ? v1 : v2; }
    93         unsigned long long int min( unsigned long long int v1, unsigned long long int v2 ) { return v1 < v2 ? v1 : v2; }
    94 
    95         char max( char v1, char v2 ) { return v1 > v2 ? v1 : v2; }
    96         int max( int v1, int v2 ) { return v1 > v2 ? v1 : v2; }
    97         unsigned int max( unsigned int v1, unsigned int v2 ) { return v1 > v2 ? v1 : v2; }
    98         long int max( long int v1, long int v2 ) { return v1 > v2 ? v1 : v2; }
    99         unsigned long int max( unsigned long int v1, unsigned long int v2 ) { return v1 > v2 ? v1 : v2; }
    100         long long int max( long long int v1, long long int v2 ) { return v1 > v2 ? v1 : v2; }
    101         unsigned long long int max( unsigned long long int v1, unsigned long long int v2 ) { return v1 > v2 ? v1 : v2; }
    10293} // distribution
    10394
Note: See TracChangeset for help on using the changeset viewer.