Changes in libcfa/src/stdlib.hfa [d6b03b7:2026bb6]
- File:
-
- 1 edited
-
libcfa/src/stdlib.hfa (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
rd6b03b7 r2026bb6 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 23 14:14:59201913 // Update Count : 3 7312 // Last Modified On : Wed Apr 24 17:35:43 2019 13 // Update Count : 352 14 14 // 15 15 … … 17 17 18 18 #include "bits/defs.hfa" 19 #include "bits/align.hfa"20 19 21 20 #include <stdlib.h> // *alloc, strto*, ato* 22 23 21 extern "C" { 24 22 void * memalign( size_t align, size_t size ); // malloc.h … … 41 39 42 40 T * malloc( void ) { 43 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 44 else return (T *)memalign( _Alignof(T), sizeof(T) ); 41 return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 45 42 } // malloc 46 43 47 44 T * calloc( size_t dim ) { 48 if ( _Alignof(T) <= libAlign() )return (T *)(void *)calloc( dim, sizeof(T) ); // C calloc 49 else return (T *)cmemalign( _Alignof(T), dim, sizeof(T) ); 45 return (T *)(void *)calloc( dim, sizeof(T) ); // C calloc 50 46 } // calloc 51 47 52 48 T * realloc( T * ptr, size_t size ) { 53 if ( unlikely( ptr == 0 ) ) return malloc();54 49 return (T *)(void *)realloc( (void *)ptr, size ); 55 50 } // realloc … … 71 66 72 67 T * alloc( void ) { 73 return malloc();68 return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 74 69 } // alloc 75 70 76 71 T * alloc( char fill ) { 77 T * ptr; 78 if ( _Alignof(T) <= libAlign() ) ptr = (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 79 else ptr = (T *)memalign( _Alignof(T), sizeof(T) ); 72 T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 80 73 return (T *)memset( ptr, (int)fill, sizeof(T) ); // initialize with fill value 81 74 } // alloc 82 75 83 76 T * alloc( size_t dim ) { 84 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc 85 else return (T *)memalign( _Alignof(T), dim * sizeof(T) ); 77 return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc 86 78 } // alloc 87 79 88 80 T * alloc( size_t dim, char fill ) { 89 return (T *)memset( (T *)alloc( dim ), (int)fill, dim * sizeof(T) ); // initialize with fill value 81 T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C calloc 82 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); // initialize with fill value 90 83 } // alloc 91 84 92 85 T * alloc( T ptr[], size_t dim ) { 93 return realloc( ptr, dim * sizeof(T) ); 94 } // alloc 95 } // distribution 86 return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc 87 } // alloc 88 } // distribution 89 90 91 forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill ); 96 92 97 93 … … 111 107 112 108 T * align_alloc( size_t align, size_t dim, char fill ) { 109 T * ptr; 113 110 if ( fill == '\0' ) { 114 return(T *)cmemalign( align, dim, sizeof(T) );111 ptr = (T *)cmemalign( align, dim, sizeof(T) ); 115 112 } else { 116 return (T *)memset( (T *)memalign( align, dim * sizeof(T) ), (int)fill, dim * sizeof(T) ); 113 ptr = (T *)memalign( align, dim * sizeof(T) ); 114 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); 117 115 } // if 118 } // align_alloc 119 } // distribution 120 121 forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill ); 116 return ptr; 117 } // align_alloc 118 } // distribution 122 119 123 120
Note:
See TracChangeset
for help on using the changeset viewer.