Changeset d46ed6e for src/libcfa/stdlib
- Timestamp:
- Jul 25, 2018, 6:20:35 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- cf0de0e
- Parents:
- 891790ef
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/stdlib
r891790ef rd46ed6e 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 12 08:03:58201813 // Update Count : 3 3712 // Last Modified On : Mon Jul 23 07:44:47 2018 13 // Update Count : 341 14 14 // 15 15 16 16 #pragma once 17 17 18 #include <stdlib.h> // allocation, strto*, ato*18 #include <stdlib.h> // *alloc, strto*, ato* 19 19 extern "C" { 20 20 void * memalign( size_t align, size_t size ); // malloc.h 21 21 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 ); // CFA 23 24 } // extern "C" 24 25 … … 36 37 37 38 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" );51 50 return (T *)(void *)calloc( dim, sizeof(T) ); // C calloc 52 51 } // calloc 53 52 54 53 T * realloc( T * ptr, size_t size ) { 55 //printf( "X3\n" );56 54 return (T *)(void *)realloc( (void *)ptr, size ); 57 55 } // realloc 58 56 59 57 T * memalign( size_t align ) { 60 //printf( "X4\n" );61 58 return (T *)memalign( align, sizeof(T) ); 62 59 } // memalign 63 60 64 61 T * aligned_alloc( size_t align ) { 65 //printf( "X5\n" );66 62 return (T *)aligned_alloc( align, sizeof(T) ); 67 63 } // aligned_alloc 68 64 69 65 int posix_memalign( T ** ptr, size_t align ) { 70 //printf( "X6\n" );71 66 return posix_memalign( (void **)ptr, align, sizeof(T) ); // C posix_memalign 72 67 } // posix_memalign … … 76 71 77 72 T * alloc( void ) { 78 //printf( "X7\n" );79 73 return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 80 74 } // alloc 81 75 82 76 T * alloc( char fill ) { 83 //printf( "X8\n" );84 77 T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc 85 78 return (T *)memset( ptr, (int)fill, sizeof(T) ); // initial with fill value … … 87 80 88 81 T * alloc( size_t dim ) { 89 //printf( "X9\n" );90 82 return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc 91 83 } // alloc 92 84 93 85 T * alloc( size_t dim, char fill ) { 94 //printf( "X10\n" );95 86 T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc 96 87 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); // initial with fill value … … 98 89 99 90 T * alloc( T ptr[], size_t dim ) { 100 //printf( "X11\n" );101 91 return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc 102 92 } // alloc … … 109 99 static inline forall( dtype T | sized(T) ) { 110 100 T * align_alloc( size_t align ) { 111 //printf( "X13\n" );112 101 return (T *)memalign( align, sizeof(T) ); 113 102 } // align_alloc 114 103 115 104 T * align_alloc( size_t align, char fill ) { 116 //printf( "X14\n" );117 105 T * ptr = (T *)memalign( align, sizeof(T) ); 118 106 return (T *)memset( ptr, (int)fill, sizeof(T) ); … … 120 108 121 109 T * align_alloc( size_t align, size_t dim ) { 122 //printf( "X15\n" );123 110 return (T *)memalign( align, dim * sizeof(T) ); 124 111 } // align_alloc 125 112 126 113 T * align_alloc( size_t align, size_t dim, char fill ) { 127 //printf( "X16\n" ); 128 T * ptr = (T *)memalign( align, dim * sizeof(T) ); 129 return (T *)memset( ptr, (int)fill, dim * sizeof(T) ); 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; 130 122 } // align_alloc 131 123 } // distribution … … 136 128 137 129 T * memset( T * dest, char c ) { 138 //printf( "X17\n" );139 130 return (T *)memset( dest, c, sizeof(T) ); 140 131 } // memset 141 132 142 133 T * memcpy( T * dest, const T * src ) { 143 //printf( "X18\n" );144 134 return (T *)memcpy( dest, src, sizeof(T) ); 145 135 } // memcpy … … 150 140 151 141 T * memset( T dest[], size_t dim, char c ) { 152 //printf( "X19\n" );153 142 return (T *)(void *)memset( dest, c, dim * sizeof(T) ); // C memset 154 143 } // memset 155 144 156 145 T * memcpy( T dest[], const T src[], size_t dim ) { 157 //printf( "X20\n" );158 146 return (T *)(void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy 159 147 } // memcpy
Note:
See TracChangeset
for help on using the changeset viewer.