Changeset 0fc52b6 for src/libcfa/stdlib


Ignore:
Timestamp:
Jul 12, 2018, 9:14:07 AM (6 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, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
3007c0b, 8f91c9ae
Parents:
777ed2b
Message:

first attmept to refactor common routines between stdlib and math

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/stdlib

    r777ed2b r0fc52b6  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  5 07:41:03 2018
    13 // Update Count     : 332
     12// Last Modified On : Thu Jul 12 08:03:58 2018
     13// Update Count     : 337
    1414//
    1515
    1616#pragma once
    1717
    18 #include <stdlib.h>                                                                             // allocation, strto*, *abs
     18#include <stdlib.h>                                                                             // allocation, strto*, ato*
    1919extern "C" {
    2020        void * memalign( size_t align, size_t size );           // malloc.h
     
    227227        size_t bsearchu( K key, const E * vals, size_t dim );
    228228} // distribution
    229 
    230 //---------------------------------------
    231 
    232 [ int, int ] div( int num, int denom );
    233 [ long int, long int ] div( long int num, long int denom );
    234 [ long long int, long long int ] div( long long int num, long long int denom );
    235 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
    236 [ T, T ] div( T num, T demon );
    237 
    238 //---------------------------------------
    239 
    240 extern "C" { int abs( int ); }                                                  // use default C routine for int
    241 static inline {
    242         unsigned char abs( signed char v ) { return abs( (int)v ); }
    243         unsigned long int abs( long int v ) { return labs( v ); }
    244         unsigned long long int abs( long long int v ) { return llabs( v ); }
    245 } // distribution
    246 
    247 extern "C" {                                                                                    // use default C routine for int
    248         double fabs( double );
    249         float fabsf( float );
    250         long double fabsl( long double );
    251 } // extern "C"
    252 static inline {
    253         float abs( float x ) { return fabsf( x ); }
    254         double abs( double x ) { return fabs( x ); }
    255         long double abs( long double x ) { return fabsl( x ); }
    256 } // distribution
    257 
    258 extern "C" {                                                                                    // use default C routine for int
    259         double cabs( double _Complex );
    260         float cabsf( float _Complex );
    261         long double cabsl( long double _Complex );
    262 } // extern "C"
    263 static inline {
    264         float abs( float _Complex x ) { return cabsf( x ); }
    265         double abs( double _Complex x ) { return cabs( x ); }
    266         long double abs( long double _Complex x ) { return cabsl( x ); }
    267 } // distribution
    268 
    269 forall( otype T | { void ?{}( T &, zero_t ); int ?<?( T, T ); T -?( T ); } )
    270 T abs( T );
    271229
    272230//---------------------------------------
     
    303261//---------------------------------------
    304262
    305 static inline {
    306         forall( otype T | { int ?<?( T, T ); } )
    307         T min( T t1, T t2 ) { return t1 < t2 ? t1 : t2; }
    308 
    309         forall( otype T | { int ?>?( T, T ); } )
    310         T max( T t1, T t2 ) { return t1 > t2 ? t1 : t2; }
    311 
    312         forall( otype T | { T min( T, T ); T max( T, T ); } )
    313         T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); }
    314 
    315         forall( otype T )
    316         void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; }
    317 } // distribution
     263#include "common"
    318264
    319265// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.