Changeset 1048b31 for src/libcfa/stdlib.c
- Timestamp:
- May 2, 2016, 3:28:16 PM (9 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, with_gc
- Children:
- 1b7ea43
- Parents:
- 1f6e009 (diff), e945826 (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
r1f6e009 r1048b31 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 23 13:26:42201613 // Update Count : 1 4612 // Last Modified On : Thu Apr 28 07:54:21 2016 13 // Update Count : 166 14 14 // 15 15 … … 24 24 #include <malloc.h> // malloc_usable_size 25 25 #include <math.h> // fabsf, fabs, fabsl 26 #include <complex.h> // _Complex_I , cabsf, cabs, cabsl26 #include <complex.h> // _Complex_I 27 27 } // extern "C" 28 28 29 29 forall( otype T ) T * malloc( void ) { 30 printf( "malloc1\n" );30 //printf( "malloc1\n" ); 31 31 return (T *)malloc( sizeof(T) ); 32 32 } // malloc 33 forall( otype T ) T * malloc( size_t size ) {34 printf( "malloc2\n" );35 return (T *)(void *)malloc( size );36 } // malloc37 33 forall( otype T ) T * malloc( char fill ) { 38 printf( "malloc3\n" );34 //printf( "malloc3\n" ); 39 35 T * ptr = (T *)malloc( sizeof(T) ); 40 return memset( ptr );41 } // malloc 42 43 forall( otype T ) T * calloc( size_t size) {44 printf( "calloc\n" );45 return (T *)calloc( size, sizeof(T) );36 return memset( ptr, (int)fill, sizeof(T) ); 37 } // malloc 38 39 forall( otype T ) T * calloc( size_t nmemb ) { 40 //printf( "calloc\n" ); 41 return (T *)calloc( nmemb, sizeof(T) ); 46 42 } // calloc 47 43 48 44 forall( otype T ) T * realloc( T * ptr, size_t size ) { 49 printf( "realloc1\n" );45 //printf( "realloc1\n" ); 50 46 return (T *)(void *)realloc( (void *)ptr, size ); 51 47 } // realloc 52 48 forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ) { 53 printf( "realloc2\n" );49 //printf( "realloc2\n" ); 54 50 char * nptr = (T *)(void *)realloc( (void *)ptr, size ); 55 51 size_t unused = malloc_usable_size( nptr ); … … 59 55 60 56 forall( otype T ) T * malloc( T * ptr, size_t size ) { 61 printf( "malloc4\n" );57 //printf( "malloc4\n" ); 62 58 return (T *)realloc( ptr, size ); 63 59 } // malloc 64 60 forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ) { 65 printf( "malloc5\n" );61 //printf( "malloc5\n" ); 66 62 return (T *)realloc( ptr, size, fill ); 67 63 } // malloc 68 64 69 65 forall( otype T ) T * aligned_alloc( size_t alignment ) { 70 printf( "aligned_alloc\n" );66 //printf( "aligned_alloc\n" ); 71 67 return (T *)memalign( alignment, sizeof(T) ); 72 68 } // aligned_alloc 73 69 74 70 forall( otype T ) T * memalign( size_t alignment ) { 75 printf( "memalign\n" );71 //printf( "memalign\n" ); 76 72 return (T *)memalign( alignment, sizeof(T) ); 77 73 } // memalign 78 74 79 75 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ) { 80 printf( "posix_memalign\n" );76 //printf( "posix_memalign\n" ); 81 77 return posix_memalign( (void **)ptr, alignment, sizeof(T) ); 82 78 } // posix_memalign 83 79 84 forall( otype T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill85 printf( "memset1\n" );86 return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) );87 } // memset88 forall( otype T ) T * memset( T * ptr ) { // remove when default value available89 printf( "memset2\n" );90 return (T *)memset( ptr, 0, malloc_usable_size( ptr ) );91 } // memset92 93 80 //--------------------------------------- 94 81 95 82 int ato( const char * ptr ) { 96 83 int i; 97 if ( sscanf( ptr, "%d", &i ) == EOF ) {} // check return code84 if ( sscanf( ptr, "%d", &i ) == EOF ) {} 98 85 return i; 99 86 } 100 87 unsigned int ato( const char * ptr ) { 101 88 unsigned int ui; 102 if ( sscanf( ptr, "%u", &ui ) == EOF ) {} // check return code89 if ( sscanf( ptr, "%u", &ui ) == EOF ) {} 103 90 return ui; 104 91 } 105 92 long int ato( const char * ptr ) { 106 93 long int li; 107 if ( sscanf( ptr, "%ld", &li ) == EOF ) {} // check return code94 if ( sscanf( ptr, "%ld", &li ) == EOF ) {} 108 95 return li; 109 96 } 110 97 unsigned long int ato( const char * ptr ) { 111 98 unsigned long int uli; 112 if ( sscanf( ptr, "%lu", &uli ) == EOF ) {} // check return code99 if ( sscanf( ptr, "%lu", &uli ) == EOF ) {} 113 100 return uli; 114 101 } 115 102 long long int ato( const char * ptr ) { 116 103 long long int lli; 117 if ( sscanf( ptr, "%lld", &lli ) == EOF ) {} // check return code104 if ( sscanf( ptr, "%lld", &lli ) == EOF ) {} 118 105 return lli; 119 106 } 120 107 unsigned long long int ato( const char * ptr ) { 121 108 unsigned long long int ulli; 122 if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {} // check return code109 if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {} 123 110 return ulli; 124 111 } … … 126 113 float ato( const char * ptr ) { 127 114 float f; 128 if ( sscanf( ptr, "%f", &f ) == EOF ) {} // check return code115 if ( sscanf( ptr, "%f", &f ) == EOF ) {} 129 116 return f; 130 117 } 131 118 double ato( const char * ptr ) { 132 119 double d; 133 if ( sscanf( ptr, "%lf", &d ) == EOF ) {} // check return code120 if ( sscanf( ptr, "%lf", &d ) == EOF ) {} 134 121 return d; 135 122 } 136 123 long double ato( const char * ptr ) { 137 124 long double ld; 138 if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {} // check return code125 if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {} 139 126 return ld; 140 127 } … … 142 129 float _Complex ato( const char * ptr ) { 143 130 float re, im; 144 if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {} // check return code131 if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {} 145 132 return re + im * _Complex_I; 146 133 } 147 134 double _Complex ato( const char * ptr ) { 148 135 double re, im; 149 if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {} // check return code136 if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {} 150 137 return re + im * _Complex_I; 151 138 } 152 139 long double _Complex ato( const char * ptr ) { 153 140 long double re, im; 154 if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {} // check return code141 if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {} 155 142 return re + im * _Complex_I; 156 143 } … … 226 213 //--------------------------------------- 227 214 228 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )229 [ T, T ] div( T t1, T t2 ) { /* return [ t1 / t2, t1 % t2 ]; */}215 // forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 216 // [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; } 230 217 231 218 //--------------------------------------- … … 234 221 long int abs( long int v ) { return labs( v ); } 235 222 long long int abs( long long int v ) { return llabs( v ); } 236 float abs( float v ) { return fabsf( v); }237 double abs( double v ) { return fabs( v); }238 long double abs( long double v ) { return fabsl( v); }239 float _Complex abs( float _Complex v ) { return cabsf( v); }240 double _Complex abs( double _Complex v ) { return cabs( v); }241 long double _Complex abs( long double _Complex v ) { return cabsl( v); }223 float abs( float x ) { return fabsf( x ); } 224 double abs( double x ) { return fabs( x ); } 225 long double abs( long double x ) { return fabsl( x ); } 226 float abs( float _Complex x ) { return cabsf( x ); } 227 double abs( double _Complex x ) { return cabs( x ); } 228 long double abs( long double _Complex x ) { return cabsl( x ); } 242 229 243 230 //---------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.