Changeset d3b8752 for libcfa/src
- Timestamp:
- Jul 20, 2023, 10:57:09 AM (13 months ago)
- Branches:
- master
- Children:
- a09552d
- Parents:
- 5a7789f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/common.hfa
r5a7789f rd3b8752 66 66 67 67 static inline __attribute__((always_inline)) { 68 char min( char v1, char v2 ) { return v1 < v2 ? v1 : v2; } // optimization 68 forall( T | { int ?<?( T, T ); } ) 69 T min( T v1, T v2 ) { return v1 < v2 ? v1 : v2; } 70 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 ); } ) 75 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 ); } 79 80 forall( T | { T min( T, T ); T max( T, T ); } ) 81 T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); } 82 83 forall( T ) 84 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; } 69 88 int min( int v1, int v2 ) { return v1 < v2 ? v1 : v2; } 70 89 unsigned int min( unsigned int v1, unsigned int v2 ) { return v1 < v2 ? v1 : v2; } … … 73 92 long long int min( long long int v1, long long int v2 ) { return v1 < v2 ? v1 : v2; } 74 93 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 ); } ) // generic76 T min( T v1, T v2 ) { return v1 < v2 ? v1 : v2; }77 94 78 char max( char v1, char v2 ) { return v1 > v2 ? v1 : v2; } // optimization95 char max( char v1, char v2 ) { return v1 > v2 ? v1 : v2; } 79 96 int max( int v1, int v2 ) { return v1 > v2 ? v1 : v2; } 80 97 unsigned int max( unsigned int v1, unsigned int v2 ) { return v1 > v2 ? v1 : v2; } … … 83 100 long long int max( long long int v1, long long int v2 ) { return v1 > v2 ? v1 : v2; } 84 101 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 ); } ) // generic86 T max( T v1, T v2 ) { return v1 > v2 ? v1 : v2; }87 88 forall( T | { T min( T, T ); T max( T, T ); } )89 T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); }90 91 forall( T )92 void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; }93 102 } // distribution 94 103
Note: See TracChangeset
for help on using the changeset viewer.