Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/stdlib.hfa

    r856fe3e r76e2113  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 13 17:23:51 2020
    13 // Update Count     : 435
     12// Last Modified On : Thu Apr 16 22:44:05 2020
     13// Update Count     : 432
    1414//
    1515
     
    2323// Reduce includes by explicitly defining these routines.
    2424extern "C" {
    25         void * aalloc( size_t dim, size_t elemSize );           // CFA heap
    26         void * resize( void * oaddr, size_t size );                     // CFA heap
    2725        void * memalign( size_t align, size_t size );           // malloc.h
    28         void * amemalign( size_t align, size_t dim, size_t elemSize ); // CFA heap
    29         void * cmemalign( size_t align, size_t noOfElems, size_t elemSize ); // CFA heap
     26        size_t malloc_usable_size( void * ptr );                        // malloc.h
    3027        size_t malloc_size( void * addr );                                      // CFA heap
    31         size_t malloc_usable_size( void * ptr );                        // malloc.h
     28        void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ); // CFA heap
    3229        void * memset( void * dest, int fill, size_t size ); // string.h
    3330        void * memcpy( void * dest, const void * src, size_t size ); // string.h
     31        void * resize( void * oaddr, size_t size );                     // CFA heap
    3432} // extern "C"
    3533
     
    5452        } // malloc
    5553
    56         T * aalloc( size_t dim ) {
    57                 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)aalloc( dim, (size_t)sizeof(T) ); // CFA aalloc
    58                 else return (T *)amemalign( _Alignof(T), dim, sizeof(T) );
    59         } // aalloc
    60 
    6154        T * calloc( size_t dim ) {
    6255                if ( _Alignof(T) <= libAlign() )return (T *)(void *)calloc( dim, sizeof(T) ); // C calloc
     
    6457        } // calloc
    6558
    66         T * resize( T * ptr, size_t size ) {                            // CFA realloc, eliminate return-type cast
    67                 return (T *)(void *)resize( (void *)ptr, size ); // C realloc
    68         } // resize
    69 
    7059        T * realloc( T * ptr, size_t size ) {                           // CFA realloc, eliminate return-type cast
    7160                return (T *)(void *)realloc( (void *)ptr, size ); // C realloc
     
    7665        } // memalign
    7766
    78         T * amemalign( size_t align, size_t dim ) {
    79                 return (T *)amemalign( align, dim, sizeof(T) ); // CFA amemalign
    80         } // amemalign
    81 
    8267        T * cmemalign( size_t align, size_t dim  ) {
    8368                return (T *)cmemalign( align, dim, sizeof(T) ); // CFA cmemalign
     
    10186
    10287        T * alloc( size_t dim ) {
    103                 return aalloc( dim );
     88                if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( dim * (size_t)sizeof(T) );
     89                else return (T *)memalign( _Alignof(T), dim * sizeof(T) );
    10490        } // alloc
    10591
     
    120106                        return (T *)(void *)realloc( (void *)ptr, dim * sizeof(T) ); // C realloc
    121107                } else {
    122                         return resize( ptr, dim * sizeof(T) );          // resize
     108                        struct __Unknown {};
     109                        return alloc( (__Unknown *)ptr, dim );          // reuse, cheat making T/S different types
    123110                } // if
    124111        } // alloc
     
    161148        } // alloc_align
    162149
    163         T * alloc_align( T * ptr, size_t align ) {                      // aligned realloc array
     150        T * alloc_align( T ptr[], size_t align ) {                      // aligned realloc array
    164151                return (T *)(void *)realloc( (void *)ptr, align, sizeof(T) ); // CFA realloc
    165152        } // alloc_align
Note: See TracChangeset for help on using the changeset viewer.