Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/stdlib.cfa

    r94429f8 r45444c3  
    1010// Created On       : Thu Jan 28 17:10:29 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Nov 12 07:46:09 2020
    13 // Update Count     : 503
     12// Last Modified On : Sun Jul 19 15:05:28 2020
     13// Update Count     : 501
    1414//
    1515
     
    2626//---------------------------------------
    2727
    28 // Cforall allocation/deallocation and constructor/destructor, array types
    29 
    30 forall( dtype T | sized(T), ttype TT | { void ?{}( T &, TT ); } )
    31 T * anew( size_t dim, TT p ) {
     28// allocation/deallocation and constructor/destructor, non-array types
     29forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } )
     30T * new( Params p ) {
     31        return &(*malloc()){ p };                                                       // run constructor
     32} // new
     33
     34forall( dtype T | { void ^?{}( T & ); } )
     35void delete( T * ptr ) {
     36        if ( ptr ) {                                                                            // ignore null
     37                ^(*ptr){};                                                                              // run destructor
     38                free( ptr );
     39        } // if
     40} // delete
     41
     42forall( dtype T, ttype Params | { void ^?{}( T & ); void delete( Params ); } )
     43void delete( T * ptr, Params rest ) {
     44        delete( ptr );
     45        delete( rest );
     46} // delete
     47
     48
     49// allocation/deallocation and constructor/destructor, array types
     50forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } )
     51T * anew( size_t dim, Params p ) {
    3252        T * arr = alloc( dim );
    3353        for ( unsigned int i = 0; i < dim; i += 1 ) {
     
    4868} // adelete
    4969
    50 forall( dtype T | sized(T) | { void ^?{}( T & ); }, ttype TT | { void adelete( TT ); } )
    51 void adelete( T arr[], TT rest ) {
     70forall( dtype T | sized(T) | { void ^?{}( T & ); }, ttype Params | { void adelete( Params ); } )
     71void adelete( T arr[], Params rest ) {
    5272        if ( arr ) {                                                                            // ignore null
    5373                size_t dim = malloc_size( arr ) / sizeof( T );
Note: See TracChangeset for help on using the changeset viewer.