Changes in src/libcfa/stdlib [b9c04946:0fc52b6]
- File:
-
- 1 edited
-
src/libcfa/stdlib (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/stdlib
rb9c04946 r0fc52b6 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 27 07:21:36201813 // Update Count : 3 4512 // Last Modified On : Thu Jul 12 08:03:58 2018 13 // Update Count : 337 14 14 // 15 15 16 16 #pragma once 17 17 18 #include <stdlib.h> // *alloc, strto*, ato*18 #include <stdlib.h> // allocation, strto*, ato* 19 19 extern "C" { 20 20 void * memalign( size_t align, size_t size ); // malloc.h 21 void * memset( void * dest, int fill, size_t size );// string.h21 void * memset( void * dest, int c, size_t size ); // string.h 22 22 void * memcpy( void * dest, const void * src, size_t size ); // string.h 23 void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ); // CFA24 23 } // extern "C" 25 24 … … 37 36 38 37 T * malloc( void ) { 38 // printf( "* malloc\n" ); 39 39 return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 40 40 } // malloc … … 48 48 49 49 T * calloc( size_t dim ) { 50 //printf( "X2\n" ); 50 51 return (T *)(void *)calloc( dim, sizeof(T) ); // C calloc 51 52 } // calloc 52 53 53 54 T * realloc( T * ptr, size_t size ) { 55 //printf( "X3\n" ); 54 56 return (T *)(void *)realloc( (void *)ptr, size ); 55 57 } // realloc 56 58 57 59 T * memalign( size_t align ) { 60 //printf( "X4\n" ); 58 61 return (T *)memalign( align, sizeof(T) ); 59 62 } // memalign 60 63 61 64 T * aligned_alloc( size_t align ) { 65 //printf( "X5\n" ); 62 66 return (T *)aligned_alloc( align, sizeof(T) ); 63 67 } // aligned_alloc 64 68 65 69 int posix_memalign( T ** ptr, size_t align ) { 70 //printf( "X6\n" ); 66 71 return posix_memalign( (void **)ptr, align, sizeof(T) ); // C posix_memalign 67 72 } // posix_memalign … … 71 76 72 77 T * alloc( void ) { 78 //printf( "X7\n" ); 73 79 return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 74 80 } // alloc 75 81 76 82 T * alloc( char fill ) { 83 //printf( "X8\n" ); 77 84 T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 78 85 return (T *)memset( ptr, (int)fill, sizeof(T) ); // initial with fill value … … 80 87 81 88 T * alloc( size_t dim ) { 89 //printf( "X9\n" ); 82 90 return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc 83 91 } // alloc 84 92 85 93 T * alloc( size_t dim, char fill ) { 94 //printf( "X10\n" ); 86 95 T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc 87 96 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); // initial with fill value … … 89 98 90 99 T * alloc( T ptr[], size_t dim ) { 100 //printf( "X11\n" ); 91 101 return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc 92 102 } // alloc … … 99 109 static inline forall( dtype T | sized(T) ) { 100 110 T * align_alloc( size_t align ) { 111 //printf( "X13\n" ); 101 112 return (T *)memalign( align, sizeof(T) ); 102 113 } // align_alloc 103 114 104 115 T * align_alloc( size_t align, char fill ) { 116 //printf( "X14\n" ); 105 117 T * ptr = (T *)memalign( align, sizeof(T) ); 106 118 return (T *)memset( ptr, (int)fill, sizeof(T) ); … … 108 120 109 121 T * align_alloc( size_t align, size_t dim ) { 122 //printf( "X15\n" ); 110 123 return (T *)memalign( align, dim * sizeof(T) ); 111 124 } // align_alloc 112 125 113 126 T * align_alloc( size_t align, size_t dim, char fill ) { 114 T * ptr; 115 if ( fill == '\0' ) { 116 ptr = (T *)cmemalign( align, dim, sizeof(T) ); 117 } else { 118 ptr = (T *)memalign( align, dim * sizeof(T) ); 119 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); 120 } // if 121 return ptr; 127 //printf( "X16\n" ); 128 T * ptr = (T *)memalign( align, dim * sizeof(T) ); 129 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); 122 130 } // align_alloc 123 131 } // distribution … … 127 135 // data, non-array types 128 136 129 T * memset( T * dest, char fill ) { 130 return (T *)memset( dest, fill, sizeof(T) ); 137 T * memset( T * dest, char c ) { 138 //printf( "X17\n" ); 139 return (T *)memset( dest, c, sizeof(T) ); 131 140 } // memset 132 141 133 142 T * memcpy( T * dest, const T * src ) { 143 //printf( "X18\n" ); 134 144 return (T *)memcpy( dest, src, sizeof(T) ); 135 145 } // memcpy … … 139 149 // data, array types 140 150 141 T * amemset( T dest[], char fill, size_t dim ) { 142 return (T *)(void *)memset( dest, fill, dim * sizeof(T) ); // C memset 143 } // amemset 144 145 T * amemcpy( T dest[], const T src[], size_t dim ) { 151 T * memset( T dest[], size_t dim, char c ) { 152 //printf( "X19\n" ); 153 return (T *)(void *)memset( dest, c, dim * sizeof(T) ); // C memset 154 } // memset 155 156 T * memcpy( T dest[], const T src[], size_t dim ) { 157 //printf( "X20\n" ); 146 158 return (T *)(void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy 147 } // amemcpy159 } // memcpy 148 160 } // distribution 149 161 … … 203 215 E * bsearchu( E key, const E * vals, size_t dim ); 204 216 size_t bsearchu( E key, const E * vals, size_t dim ); 217 218 void qsort( E * vals, size_t dim ); 205 219 } // distribution 206 220 … … 212 226 E * bsearchu( K key, const E * vals, size_t dim ); 213 227 size_t bsearchu( K key, const E * vals, size_t dim ); 214 } // distribution215 216 forall( otype E | { int ?<?( E, E ); } ) {217 void qsort( E * vals, size_t dim );218 228 } // distribution 219 229
Note:
See TracChangeset
for help on using the changeset viewer.