Changeset e672372 for src/libcfa/stdlib


Ignore:
Timestamp:
Dec 25, 2017, 11:43:00 AM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
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
Message:

more inline code in stdlib and update tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/stdlib

    r1e6e08de re672372  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Oct 31 13:47:24 2017
    13 // Update Count     : 245
     12// Last Modified On : Sat Dec 23 18:21:42 2017
     13// Update Count     : 267
    1414//
    1515
    1616#pragma once
     17
     18//#define _XOPEN_SOURCE 600                                                             // posix_memalign, *rand48
     19#include <stdlib.h>                                                                             // strto*, *abs
    1720
    1821//---------------------------------------
     
    7780        //printf( "X8\n" );
    7881        T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) );     // C malloc
    79     return (T *)memset( ptr, (int)fill, sizeof(T) );                    // initial with fill value
     82    return (T *)memset( ptr, (int)fill, sizeof(T) );    // initial with fill value
    8083} // alloc
    8184
     
    150153//---------------------------------------
    151154
    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 );
     155static inline int strto( const char * sptr, char ** eptr, int base ) { return (int)strtol( sptr, eptr, base ); }
     156static inline unsigned int strto( const char * sptr, char ** eptr, int base ) { return (unsigned int)strtoul( sptr, eptr, base ); }
     157static inline long int strto( const char * sptr, char ** eptr, int base ) { return strtol( sptr, eptr, base ); }
     158static inline unsigned long int strto( const char * sptr, char ** eptr, int base ) { return strtoul( sptr, eptr, base ); }
     159static inline long long int strto( const char * sptr, char ** eptr, int base ) { return strtoll( sptr, eptr, base ); }
     160static inline unsigned long long int strto( const char * sptr, char ** eptr, int base ) { return strtoull( sptr, eptr, base ); }
     161
     162static inline float strto( const char * sptr, char ** eptr ) { return strtof( sptr, eptr ); }
     163static inline double strto( const char * sptr, char ** eptr ) { return strtod( sptr, eptr ); }
     164static inline long double strto( const char * sptr, char ** eptr ) { return strtold( sptr, eptr ); }
     165
    174166float _Complex strto( const char * sptr, char ** eptr );
    175167double _Complex strto( const char * sptr, char ** eptr );
    176168long double _Complex strto( const char * sptr, char ** eptr );
     169
     170static inline int ato( const char * sptr ) {return (int)strtol( sptr, 0, 10 ); }
     171static inline unsigned int ato( const char * sptr ) { return (unsigned int)strtoul( sptr, 0, 10 ); }
     172static inline long int ato( const char * sptr ) { return strtol( sptr, 0, 10 ); }
     173static inline unsigned long int ato( const char * sptr ) { return strtoul( sptr, 0, 10 ); }
     174static inline long long int ato( const char * sptr ) { return strtoll( sptr, 0, 10 ); }
     175static inline unsigned long long int ato( const char * sptr ) { return strtoull( sptr, 0, 10 ); }
     176
     177static inline float ato( const char * sptr ) { return strtof( sptr, 0 ); }
     178static inline double ato( const char * sptr ) { return strtod( sptr, 0 ); }
     179static inline long double ato( const char * sptr ) { return strtold( sptr, 0 ); }
     180
     181static inline float _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
     182static inline double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
     183static inline long double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
    177184
    178185//---------------------------------------
     
    198205//---------------------------------------
    199206
    200 unsigned char abs( signed char );
     207static inline unsigned char abs( signed char v ) { return abs( (int)v ); }
    201208extern "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 );
     209static inline unsigned long int abs( long int v ) { return labs( v ); }
     210static inline unsigned long long int abs( long long int v ) { return llabs( v ); }
     211
     212extern "C" {
     213double fabs( double );
     214float fabsf( float );
     215long double fabsl( long double );
     216} // extern "C"
     217static inline float abs( float x ) { return fabsf( x ); }
     218static inline double abs( double x ) { return fabs( x ); }
     219static inline long double abs( long double x ) { return fabsl( x ); }
     220
     221extern "C" {
     222double cabs( double _Complex );
     223float cabsf( float _Complex );
     224long double cabsl( long double _Complex );
     225} // extern "C"
     226static inline float abs( float _Complex x ) { return cabsf( x ); }
     227static inline double abs( double _Complex x ) { return cabs( x ); }
     228static inline long double abs( long double _Complex x ) { return cabsl( x ); }
     229
    210230forall( otype T | { void ?{}( T &, zero_t ); int ?<?( T, T ); T -?( T ); } )
    211231T abs( T );
     
    215235void random_seed( long int s );
    216236char random( void );
     237char random( char u );
    217238char random( char l, char u );
    218239int random( void );
     240int random( int u );
     241int random( int l, int u );
    219242unsigned int random( void );
    220243unsigned int random( unsigned int u );
    221244unsigned int random( unsigned int l, unsigned int u );
    222 //long int random( void );
     245extern "C" { long int random( void ); }
     246long int random( long int u );
     247long int random( long int l, long int u );
    223248unsigned long int random( void );
    224249unsigned long int random( unsigned long int u );
     
    233258
    234259forall( otype T | { int ?<?( T, T ); } )
    235 T min( T t1, T t2 );
     260static inline T min( T t1, T t2 ) { return t1 < t2 ? t1 : t2; }
    236261
    237262forall( otype T | { int ?>?( T, T ); } )
    238 T max( T t1, T t2 );
     263static inline T max( T t1, T t2 ) { return t1 > t2 ? t1 : t2; }
    239264
    240265forall( otype T | { T min( T, T ); T max( T, T ); } )
    241 T clamp( T value, T min_val, T max_val );
     266static inline T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); }
    242267
    243268forall( otype T )
    244 void swap( T & t1, T & t2 );
     269static inline void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; }
    245270
    246271// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.