Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/stdlib

    rb9c04946 r0fc52b6  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul 27 07:21:36 2018
    13 // Update Count     : 345
     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>                                                                             // *alloc, strto*, ato*
     18#include <stdlib.h>                                                                             // allocation, strto*, ato*
    1919extern "C" {
    2020        void * memalign( size_t align, size_t size );           // malloc.h
    21         void * memset( void * dest, int fill, size_t size ); // string.h
     21        void * memset( void * dest, int c, size_t size );       // string.h
    2222        void * memcpy( void * dest, const void * src, size_t size ); // string.h
    23     void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ); // CFA
    2423} // extern "C"
    2524
     
    3736
    3837        T * malloc( void ) {
     38                // printf( "* malloc\n" );
    3939                return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
    4040        } // malloc
     
    4848
    4949        T * calloc( size_t dim ) {
     50                //printf( "X2\n" );
    5051                return (T *)(void *)calloc( dim, sizeof(T) );   // C calloc
    5152        } // calloc
    5253
    5354        T * realloc( T * ptr, size_t size ) {
     55                //printf( "X3\n" );
    5456                return (T *)(void *)realloc( (void *)ptr, size );
    5557        } // realloc
    5658
    5759        T * memalign( size_t align ) {
     60                //printf( "X4\n" );
    5861                return (T *)memalign( align, sizeof(T) );
    5962        } // memalign
    6063
    6164        T * aligned_alloc( size_t align ) {
     65                //printf( "X5\n" );
    6266                return (T *)aligned_alloc( align, sizeof(T) );
    6367        } // aligned_alloc
    6468
    6569        int posix_memalign( T ** ptr, size_t align ) {
     70                //printf( "X6\n" );
    6671                return posix_memalign( (void **)ptr, align, sizeof(T) ); // C posix_memalign
    6772        } // posix_memalign
     
    7176
    7277        T * alloc( void ) {
     78                //printf( "X7\n" );
    7379                return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
    7480        } // alloc
    7581
    7682        T * alloc( char fill ) {
     83                //printf( "X8\n" );
    7784                T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) );     // C malloc
    7885                return (T *)memset( ptr, (int)fill, sizeof(T) );        // initial with fill value
     
    8087
    8188        T * alloc( size_t dim ) {
     89                //printf( "X9\n" );
    8290                return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
    8391        } // alloc
    8492
    8593        T * alloc( size_t dim, char fill ) {
     94                //printf( "X10\n" );
    8695                T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
    8796                return (T *)memset( ptr, (int)fill, dim * sizeof(T) );    // initial with fill value
     
    8998
    9099        T * alloc( T ptr[], size_t dim ) {
     100                //printf( "X11\n" );
    91101                return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
    92102        } // alloc
     
    99109static inline forall( dtype T | sized(T) ) {
    100110        T * align_alloc( size_t align ) {
     111                //printf( "X13\n" );
    101112                return (T *)memalign( align, sizeof(T) );
    102113        } // align_alloc
    103114
    104115        T * align_alloc( size_t align, char fill ) {
     116                //printf( "X14\n" );
    105117                T * ptr = (T *)memalign( align, sizeof(T) );
    106118                return (T *)memset( ptr, (int)fill, sizeof(T) );
     
    108120
    109121        T * align_alloc( size_t align, size_t dim ) {
     122                //printf( "X15\n" );
    110123                return (T *)memalign( align, dim * sizeof(T) );
    111124        } // align_alloc
    112125
    113126        T * align_alloc( size_t align, size_t dim, char fill ) {
    114                 T * ptr;
    115                 if ( fill == '\0' ) {
    116                         ptr = (T *)cmemalign( align, dim, sizeof(T) );
    117                 } else {
    118                         ptr = (T *)memalign( align, dim * sizeof(T) );
    119                         return (T *)memset( ptr, (int)fill, dim * sizeof(T) );
    120                 } // if
    121                 return ptr;
     127                //printf( "X16\n" );
     128                T * ptr = (T *)memalign( align, dim * sizeof(T) );
     129                return (T *)memset( ptr, (int)fill, dim * sizeof(T) );
    122130        } // align_alloc
    123131} // distribution
     
    127135        // data, non-array types
    128136
    129         T * memset( T * dest, char fill ) {
    130                 return (T *)memset( dest, fill, sizeof(T) );
     137        T * memset( T * dest, char c ) {
     138                //printf( "X17\n" );
     139                return (T *)memset( dest, c, sizeof(T) );
    131140        } // memset
    132141
    133142        T * memcpy( T * dest, const T * src ) {
     143                //printf( "X18\n" );
    134144                return (T *)memcpy( dest, src, sizeof(T) );
    135145        } // memcpy
     
    139149        // data, array types
    140150
    141         T * amemset( T dest[], char fill, size_t dim ) {
    142                 return (T *)(void *)memset( dest, fill, dim * sizeof(T) ); // C memset
    143         } // amemset
    144 
    145         T * amemcpy( T dest[], const T src[], size_t dim ) {
     151        T * memset( T dest[], size_t dim, char c ) {
     152                //printf( "X19\n" );
     153                return (T *)(void *)memset( dest, c, dim * sizeof(T) ); // C memset
     154        } // memset
     155
     156        T * memcpy( T dest[], const T src[], size_t dim ) {
     157                //printf( "X20\n" );
    146158                return (T *)(void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy
    147         } // amemcpy
     159        } // memcpy
    148160} // distribution
    149161
     
    203215        E * bsearchu( E key, const E * vals, size_t dim );
    204216        size_t bsearchu( E key, const E * vals, size_t dim );
     217
     218        void qsort( E * vals, size_t dim );
    205219} // distribution
    206220
     
    212226        E * bsearchu( K key, const E * vals, size_t dim );
    213227        size_t bsearchu( K key, const E * vals, size_t dim );
    214 } // distribution
    215 
    216 forall( otype E | { int ?<?( E, E ); } ) {
    217         void qsort( E * vals, size_t dim );
    218228} // distribution
    219229
Note: See TracChangeset for help on using the changeset viewer.