Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/stdlib.hfa

    raabb846 r856fe3e  
    99// Author           : Peter A. Buhr
    1010// Created On       : Thu Jan 28 17:12:35 2016
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Tue Jun  2 16:47:00 2020
    13 // Update Count     : 451
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed May 13 17:23:51 2020
     13// Update Count     : 435
    1414//
    1515
     
    2020
    2121#include <stdlib.h>                                                                             // *alloc, strto*, ato*
    22 #include <heap.hfa>
    2322
    2423// Reduce includes by explicitly defining these routines.
    2524extern "C" {
    26         void * memalign( size_t alignment, size_t size );       // malloc.h
    27         void * pvalloc( size_t size );                                          // malloc.h
     25        void * aalloc( size_t dim, size_t elemSize );           // CFA heap
     26        void * resize( void * oaddr, size_t size );                     // CFA heap
     27        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
     30        size_t malloc_size( void * addr );                                      // CFA heap
     31        size_t malloc_usable_size( void * ptr );                        // malloc.h
    2832        void * memset( void * dest, int fill, size_t size ); // string.h
    2933        void * memcpy( void * dest, const void * src, size_t size ); // string.h
    3034} // extern "C"
     35
     36void * resize( void * oaddr, size_t nalign, size_t size ); // CFA heap
     37void * realloc( void * oaddr, size_t nalign, size_t size ); // CFA heap
    3138
    3239//---------------------------------------
     
    8491                return posix_memalign( (void **)ptr, align, sizeof(T) ); // C posix_memalign
    8592        } // posix_memalign
    86 
    87         T * valloc( void ) {
    88                 return (T *)valloc( sizeof(T) );                                // C valloc
    89         } // valloc
    90 
    91         T * pvalloc( void ) {
    92                 return (T *)pvalloc( sizeof(T) );                               // C pvalloc
    93         } // pvalloc
    9493} // distribution
    9594
     
    229228// Cforall allocation/deallocation and constructor/destructor, non-array types
    230229forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } ) T * new( Params p );
    231 forall( dtype T | { void ^?{}( T & ); } ) void delete( T * ptr );
    232 forall( dtype T, ttype Params | { void ^?{}( T & ); void delete( Params ); } ) void delete( T * ptr, Params rest );
     230forall( dtype T | sized(T) | { void ^?{}( T & ); } ) void delete( T * ptr );
     231forall( dtype T, ttype Params | sized(T) | { void ^?{}( T & ); void delete( Params ); } ) void delete( T * ptr, Params rest );
    233232
    234233// Cforall allocation/deallocation and constructor/destructor, array types
     
    301300extern "C" {                                                                                    // override C version
    302301        void srandom( unsigned int seed );
    303         long int random( void );                                                        // GENERATES POSITIVE AND NEGATIVE VALUES
    304         // For positive values, use unsigned int, e.g., unsigned int r = random() % 100U;
     302        long int random( void );
    305303} // extern "C"
    306304
     
    309307        long int random( long int u ) { if ( u < 0 ) return random( u, 0 ); else return random( 0, u ); } // [0,u)
    310308        unsigned long int random( void ) { return lrand48(); }
     309        unsigned long int random( unsigned long int l, unsigned long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u)
    311310        unsigned long int random( unsigned long int u ) { return lrand48() % u; } // [0,u)
    312         unsigned long int random( unsigned long int l, unsigned long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u)
    313311
    314312        char random( void ) { return (unsigned long int)random(); }
Note: See TracChangeset for help on using the changeset viewer.