Guest User

Untitled

a guest
Dec 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.98 KB | None | 0 0
  1. #ifndef _ARRAY_H_
  2. #define _ARRAY_H_
  3.  
  4. // #include <string.h>
  5.  
  6.  
  7. #define _allocArray(blockPtr, arraySize, elementType) \
  8. realloc(blockPtr, (arraySize * sizeof(elementType)))
  9.  
  10.  
  11. #define _deallocArray(blockPtr) \
  12. free(blockPtr)
  13.  
  14.  
  15. #define _arrayIndexPtr(blockPtr, arrayIndex, elSize) \
  16. (void*)((unsigned long int)blockPtr + (arrayIndex * elSize))
  17.  
  18.  
  19. #define _getValAt(blockPtr, arrayIndex, elementType) \
  20. (elementType*)_arrayIndexPtr(blockPtr, arrayIndex, sizeof(elementType))
  21.  
  22.  
  23. #define _aryCpy(srcAry, srcIndex, destAry, destIndex, len, elementType) \
  24. memcpy(_arrayIndexPtr(destAry, destIndex, sizeof(elementType)), \
  25. _arrayIndexPtr(srcAry, srcIndex, sizeof(elementType)), \
  26. (len * sizeof(elementType)))
  27.  
  28.  
  29. #define _setValAt(blockPtr, arrayIndex, elementType, newVal) \
  30. *(elementType*) memset(_arrayIndexPtr(blockPtr, arrayIndex, \
  31. sizeof(newVal)), newVal, sizeof(elementType))
  32.  
  33.  
  34. #define _fillArray(blockPtr, startIndex, endIndex, newVal) \
  35. memset(_arrayIndexPtr(blockPtr, startIndex, sizeof(newVal)), \
  36. newVal, (endIndex-startIndex))
  37.  
  38.  
  39. #define _aryLen(blockPtr, elementType) \
  40. _getAryLen(blockPtr, sizeof(elementType))
  41. inline unsigned long int _getAryLen(void* aryPtr, unsigned long int elSize) {
  42. unsigned long int aryLen;
  43. for(aryLen = 0;
  44. *(unsigned char*)_arrayIndexPtr(aryPtr, aryLen, elSize) != 0x00;
  45. aryLen++);
  46.  
  47. return aryLen;
  48. }
  49.  
  50.  
  51. #endif // ifndef _ARRAY_H_
Add Comment
Please, Sign In to add comment