Changes in libcfa/src/stdlib.hfa [aa0a1ad:aa8e24c3]
- File:
-
- 1 edited
-
libcfa/src/stdlib.hfa (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
raa0a1ad raa8e24c3 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jan 2 22:53:57 202213 // Update Count : 59 412 // Last Modified On : Wed Dec 29 15:30:58 2021 13 // Update Count : 591 14 14 // 15 15 … … 43 43 //--------------------------------------- 44 44 45 // Macro because of returns 46 #define ARRAY_ALLOC$( allocation, alignment, dim ) \ 47 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)allocation( dim, (size_t)sizeof(T) ); /* C allocation */ \ 48 else return (T *)alignment( _Alignof(T), dim, sizeof(T) ) 49 45 50 static inline forall( T & | sized(T) ) { 46 51 // CFA safe equivalents, i.e., implicit size specification 47 52 48 53 T * malloc( void ) { 49 if ( _Alignof(T) <= libAlign() ) return (T *) malloc(sizeof(T) ); // C allocation54 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( (size_t)sizeof(T) ); // C allocation 50 55 else return (T *)memalign( _Alignof(T), sizeof(T) ); 51 56 } // malloc 52 57 53 58 T * aalloc( size_t dim ) { 54 if ( _Alignof(T) <= libAlign() ) return (T *)aalloc( dim, sizeof(T) ); // C allocation 55 else return (T *)amemalign( _Alignof(T), dim, sizeof(T) ); 59 ARRAY_ALLOC$( aalloc, amemalign, dim ); 56 60 } // aalloc 57 61 58 62 T * calloc( size_t dim ) { 59 if ( _Alignof(T) <= libAlign() ) return (T *)calloc( dim, sizeof(T) ); // C allocation 60 else return (T *)cmemalign( _Alignof(T), dim, sizeof(T) ); 63 ARRAY_ALLOC$( calloc, cmemalign, dim ); 61 64 } // calloc 62 65 63 66 T * resize( T * ptr, size_t size ) { // CFA resize, eliminate return-type cast 64 if ( _Alignof(T) <= libAlign() ) return (T *) resize( (void *)ptr, size ); // CFA resize65 else return (T *) resize( (void *)ptr, _Alignof(T), size ); // CFA resize67 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)resize( (void *)ptr, size ); // CFA resize 68 else return (T *)(void *)resize( (void *)ptr, _Alignof(T), size ); // CFA resize 66 69 } // resize 67 70 68 71 T * realloc( T * ptr, size_t size ) { // CFA realloc, eliminate return-type cast 69 if ( _Alignof(T) <= libAlign() ) return (T *) realloc( (void *)ptr, size ); // C realloc70 else return (T *) realloc( (void *)ptr, _Alignof(T), size ); // CFA realloc72 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)realloc( (void *)ptr, size ); // C realloc 73 else return (T *)(void *)realloc( (void *)ptr, _Alignof(T), size ); // CFA realloc 71 74 } // realloc 72 75
Note:
See TracChangeset
for help on using the changeset viewer.