Changeset 36ebd03 for src/libcfa/stdlib.c
- Timestamp:
- Mar 3, 2016, 1:28:56 PM (10 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 3627356
- Parents:
- 9d7b3ea (diff), 4040425 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/stdlib.c
r9d7b3ea r36ebd03 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 10 15:45:56201613 // Update Count : 14 012 // Last Modified On : Wed Mar 2 17:38:47 2016 13 // Update Count : 143 14 14 // 15 15 … … 27 27 } // extern "C" 28 28 29 forall( type T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill29 forall( otype T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill 30 30 printf( "memset1\n" ); 31 31 return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) ); 32 32 } // memset 33 forall( type T ) T * memset( T * ptr ) { // remove when default value available33 forall( otype T ) T * memset( T * ptr ) { // remove when default value available 34 34 printf( "memset2\n" ); 35 35 return (T *)memset( ptr, 0, malloc_usable_size( ptr ) ); 36 36 } // memset 37 37 38 forall( type T ) T * malloc( void ) {38 forall( otype T ) T * malloc( void ) { 39 39 printf( "malloc1\n" ); 40 40 return (T *)malloc( sizeof(T) ); 41 41 } // malloc 42 forall( type T ) T * malloc( size_t size ) {42 forall( otype T ) T * malloc( size_t size ) { 43 43 printf( "malloc2\n" ); 44 44 return (T *)(void *)malloc( size ); 45 45 } // malloc 46 forall( type T ) T * malloc( char fill ) {46 forall( otype T ) T * malloc( char fill ) { 47 47 printf( "malloc3\n" ); 48 48 T * ptr = (T *)malloc( sizeof(T) ); … … 50 50 } // malloc 51 51 52 forall( type T ) T * calloc( size_t size ) {52 forall( otype T ) T * calloc( size_t size ) { 53 53 printf( "calloc\n" ); 54 54 return (T *)calloc( size, sizeof(T) ); 55 55 } // calloc 56 56 57 forall( type T ) T * realloc( T * ptr, size_t size ) {57 forall( otype T ) T * realloc( T * ptr, size_t size ) { 58 58 printf( "realloc1\n" ); 59 59 return (T *)(void *)realloc( (void *)ptr, size ); 60 60 } // realloc 61 forall( type T ) T * realloc( T * ptr, size_t size, unsigned char fill ) {61 forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ) { 62 62 printf( "realloc2\n" ); 63 63 char * nptr = (T *)(void *)realloc( (void *)ptr, size ); … … 67 67 } // realloc 68 68 69 forall( type T ) T * malloc( T * ptr, size_t size ) {69 forall( otype T ) T * malloc( T * ptr, size_t size ) { 70 70 printf( "malloc4\n" ); 71 71 return (T *)realloc( ptr, size ); 72 72 } // malloc 73 forall( type T ) T * malloc( T * ptr, size_t size, unsigned char fill ) {73 forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ) { 74 74 printf( "malloc5\n" ); 75 75 return (T *)realloc( ptr, size, fill ); 76 76 } // malloc 77 77 78 forall( type T ) T * aligned_alloc( size_t alignment ) {78 forall( otype T ) T * aligned_alloc( size_t alignment ) { 79 79 printf( "aligned_alloc\n" ); 80 80 return (T *)memalign( alignment, sizeof(T) ); 81 81 } // aligned_alloc 82 82 83 forall( type T ) T * memalign( size_t alignment ) {83 forall( otype T ) T * memalign( size_t alignment ) { 84 84 printf( "memalign\n" ); 85 85 return (T *)memalign( alignment, sizeof(T) ); 86 86 } // memalign 87 87 88 forall( type T ) int posix_memalign( T ** ptr, size_t alignment ) {88 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ) { 89 89 printf( "posix_memalign\n" ); 90 90 return posix_memalign( (void **)ptr, alignment, sizeof(T) ); … … 123 123 return ulli; 124 124 } 125 125 126 float ato( const char * ptr ) { 126 127 float f; … … 138 139 return ld; 139 140 } 141 140 142 float _Complex ato( const char * ptr ) { 141 143 float re, im; … … 172 174 return strtoull( sptr, eptr, base ); 173 175 } 176 174 177 float strto( const char * sptr, char ** eptr ) { 175 178 return strtof( sptr, eptr ); … … 181 184 return strtold( sptr, eptr ); 182 185 } 186 183 187 float _Complex strto( const char * sptr, char ** eptr ) { 184 188 float re, im; … … 208 212 //--------------------------------------- 209 213 210 forall( type T | { int ?<?( T, T ); } )214 forall( otype T | { int ?<?( T, T ); } ) 211 215 T * bsearch( const T key, const T * arr, size_t dimension ) { 212 216 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } … … 214 218 } // bsearch 215 219 216 forall( type T | { int ?<?( T, T ); } )220 forall( otype T | { int ?<?( T, T ); } ) 217 221 void qsort( const T * arr, size_t dimension ) { 218 222 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } … … 222 226 //--------------------------------------- 223 227 224 forall( type T | { T ?/?( T, T ); T ?%?( T, T ); } )228 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 225 229 [ T, T ] div( T t1, T t2 ) { /* return [ t1 / t2, t1 % t2 ]; */ } 226 230 … … 253 257 //--------------------------------------- 254 258 255 forall( type T | { int ?<?( T, T ); } )259 forall( otype T | { int ?<?( T, T ); } ) 256 260 T min( const T t1, const T t2 ) { 257 261 return t1 < t2 ? t1 : t2; 258 262 } // min 259 263 260 forall( type T | { int ?>?( T, T ); } )264 forall( otype T | { int ?>?( T, T ); } ) 261 265 T max( const T t1, const T t2 ) { 262 266 return t1 > t2 ? t1 : t2; 263 267 } // max 264 268 265 forall( type T )269 forall( otype T ) 266 270 void swap( T * t1, T * t2 ) { 267 271 T temp = *t1;
Note:
See TracChangeset
for help on using the changeset viewer.