Changeset e672372 for src/libcfa/stdlib
- Timestamp:
- Dec 25, 2017, 11:43:00 AM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 9c47a47, d9ff69a
- Parents:
- 1e6e08de
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/stdlib
r1e6e08de re672372 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Oct 31 13:47:24201713 // Update Count : 2 4512 // Last Modified On : Sat Dec 23 18:21:42 2017 13 // Update Count : 267 14 14 // 15 15 16 16 #pragma once 17 18 //#define _XOPEN_SOURCE 600 // posix_memalign, *rand48 19 #include <stdlib.h> // strto*, *abs 17 20 18 21 //--------------------------------------- … … 77 80 //printf( "X8\n" ); 78 81 T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 79 return (T *)memset( ptr, (int)fill, sizeof(T) ); 82 return (T *)memset( ptr, (int)fill, sizeof(T) ); // initial with fill value 80 83 } // alloc 81 84 … … 150 153 //--------------------------------------- 151 154 152 int ato( const char * ptr ); 153 unsigned int ato( const char * ptr ); 154 long int ato( const char * ptr ); 155 unsigned long int ato( const char * ptr ); 156 long long int ato( const char * ptr ); 157 unsigned long long int ato( const char * ptr ); 158 float ato( const char * ptr ); 159 double ato( const char * ptr ); 160 long double ato( const char * ptr ); 161 float _Complex ato( const char * ptr ); 162 double _Complex ato( const char * ptr ); 163 long double _Complex ato( const char * ptr ); 164 165 int strto( const char * sptr, char ** eptr, int base ); 166 unsigned int strto( const char * sptr, char ** eptr, int base ); 167 long int strto( const char * sptr, char ** eptr, int base ); 168 unsigned long int strto( const char * sptr, char ** eptr, int base ); 169 long long int strto( const char * sptr, char ** eptr, int base ); 170 unsigned long long int strto( const char * sptr, char ** eptr, int base ); 171 float strto( const char * sptr, char ** eptr ); 172 double strto( const char * sptr, char ** eptr ); 173 long double strto( const char * sptr, char ** eptr ); 155 static inline int strto( const char * sptr, char ** eptr, int base ) { return (int)strtol( sptr, eptr, base ); } 156 static inline unsigned int strto( const char * sptr, char ** eptr, int base ) { return (unsigned int)strtoul( sptr, eptr, base ); } 157 static inline long int strto( const char * sptr, char ** eptr, int base ) { return strtol( sptr, eptr, base ); } 158 static inline unsigned long int strto( const char * sptr, char ** eptr, int base ) { return strtoul( sptr, eptr, base ); } 159 static inline long long int strto( const char * sptr, char ** eptr, int base ) { return strtoll( sptr, eptr, base ); } 160 static inline unsigned long long int strto( const char * sptr, char ** eptr, int base ) { return strtoull( sptr, eptr, base ); } 161 162 static inline float strto( const char * sptr, char ** eptr ) { return strtof( sptr, eptr ); } 163 static inline double strto( const char * sptr, char ** eptr ) { return strtod( sptr, eptr ); } 164 static inline long double strto( const char * sptr, char ** eptr ) { return strtold( sptr, eptr ); } 165 174 166 float _Complex strto( const char * sptr, char ** eptr ); 175 167 double _Complex strto( const char * sptr, char ** eptr ); 176 168 long double _Complex strto( const char * sptr, char ** eptr ); 169 170 static inline int ato( const char * sptr ) {return (int)strtol( sptr, 0, 10 ); } 171 static inline unsigned int ato( const char * sptr ) { return (unsigned int)strtoul( sptr, 0, 10 ); } 172 static inline long int ato( const char * sptr ) { return strtol( sptr, 0, 10 ); } 173 static inline unsigned long int ato( const char * sptr ) { return strtoul( sptr, 0, 10 ); } 174 static inline long long int ato( const char * sptr ) { return strtoll( sptr, 0, 10 ); } 175 static inline unsigned long long int ato( const char * sptr ) { return strtoull( sptr, 0, 10 ); } 176 177 static inline float ato( const char * sptr ) { return strtof( sptr, 0 ); } 178 static inline double ato( const char * sptr ) { return strtod( sptr, 0 ); } 179 static inline long double ato( const char * sptr ) { return strtold( sptr, 0 ); } 180 181 static inline float _Complex ato( const char * sptr ) { return strto( sptr, NULL ); } 182 static inline double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); } 183 static inline long double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); } 177 184 178 185 //--------------------------------------- … … 198 205 //--------------------------------------- 199 206 200 unsigned char abs( signed char ); 207 static inline unsigned char abs( signed char v ) { return abs( (int)v ); } 201 208 extern "C" { int abs( int ); } // use default C routine for int 202 unsigned long int abs( long int ); 203 unsigned long long int abs( long long int ); 204 float abs( float ); 205 double abs( double ); 206 long double abs( long double ); 207 float abs( float _Complex ); 208 double abs( double _Complex ); 209 long double abs( long double _Complex ); 209 static inline unsigned long int abs( long int v ) { return labs( v ); } 210 static inline unsigned long long int abs( long long int v ) { return llabs( v ); } 211 212 extern "C" { 213 double fabs( double ); 214 float fabsf( float ); 215 long double fabsl( long double ); 216 } // extern "C" 217 static inline float abs( float x ) { return fabsf( x ); } 218 static inline double abs( double x ) { return fabs( x ); } 219 static inline long double abs( long double x ) { return fabsl( x ); } 220 221 extern "C" { 222 double cabs( double _Complex ); 223 float cabsf( float _Complex ); 224 long double cabsl( long double _Complex ); 225 } // extern "C" 226 static inline float abs( float _Complex x ) { return cabsf( x ); } 227 static inline double abs( double _Complex x ) { return cabs( x ); } 228 static inline long double abs( long double _Complex x ) { return cabsl( x ); } 229 210 230 forall( otype T | { void ?{}( T &, zero_t ); int ?<?( T, T ); T -?( T ); } ) 211 231 T abs( T ); … … 215 235 void random_seed( long int s ); 216 236 char random( void ); 237 char random( char u ); 217 238 char random( char l, char u ); 218 239 int random( void ); 240 int random( int u ); 241 int random( int l, int u ); 219 242 unsigned int random( void ); 220 243 unsigned int random( unsigned int u ); 221 244 unsigned int random( unsigned int l, unsigned int u ); 222 //long int random( void ); 245 extern "C" { long int random( void ); } 246 long int random( long int u ); 247 long int random( long int l, long int u ); 223 248 unsigned long int random( void ); 224 249 unsigned long int random( unsigned long int u ); … … 233 258 234 259 forall( otype T | { int ?<?( T, T ); } ) 235 T min( T t1, T t2 ); 260 static inline T min( T t1, T t2 ) { return t1 < t2 ? t1 : t2; } 236 261 237 262 forall( otype T | { int ?>?( T, T ); } ) 238 T max( T t1, T t2 ); 263 static inline T max( T t1, T t2 ) { return t1 > t2 ? t1 : t2; } 239 264 240 265 forall( otype T | { T min( T, T ); T max( T, T ); } ) 241 T clamp( T value, T min_val, T max_val ); 266 static inline T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); } 242 267 243 268 forall( otype T ) 244 void swap( T & t1, T & t2 ); 269 static inline void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; } 245 270 246 271 // Local Variables: //
Note:
See TracChangeset
for help on using the changeset viewer.