Changes in src/libcfa/stdlib.c [c3ebf37:707446a]
- File:
-
- 1 edited
-
src/libcfa/stdlib.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/stdlib.c
rc3ebf37 r707446a 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 23 23:27:02201713 // Update Count : 1 7112 // Last Modified On : Sat Apr 1 18:31:26 2017 13 // Update Count : 181 14 14 // 15 15 … … 91 91 } 92 92 93 forall( dtype T, ttype Params | { void ^?{}(T *); void delete(Params); } ) 94 void delete( T * ptr, Params rest ) { 95 if ( ptr ) { 96 ^ptr{}; 97 free( ptr ); 98 } 99 delete( rest ); 100 } 101 93 102 //--------------------------------------- 94 103 … … 216 225 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } 217 226 return (T *)bsearch( &key, arr, dimension, sizeof(T), comp ); 227 } // bsearch 228 229 forall( otype T | { int ?<?( T, T ); } ) 230 unsigned int bsearch( T key, const T * arr, size_t dimension ) { 231 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } 232 T *result = (T *)bsearch( &key, arr, dimension, sizeof(T), comp ); 233 return result ? result - arr : dimension; // pointer subtraction includes sizeof(T) 218 234 } // bsearch 219 235
Note:
See TracChangeset
for help on using the changeset viewer.