mem.h 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. #ifndef VIRTUALMATH_MEM_H
  2. #define VIRTUALMATH_MEM_H
  3. #include <string.h>
  4. #include <__macro.h>
  5. extern jmp_buf memVirtualMath_Env;
  6. extern bool memVirtualMathUseJmp;
  7. void *memCalloc(size_t num, size_t size);
  8. void *memRealloc(void *old, size_t size);
  9. char *memStrcpy(const char *str);
  10. wchar_t *memWidecpy(const wchar_t *str);
  11. wchar_t *memWideCharcpy(wchar_t *str, size_t nsize, bool free_old, bool write, ...);
  12. wchar_t *memWideExpansion(wchar_t *str, size_t nsize, bool free_old);
  13. char *memStrcatIter(char *base, bool free_base, ...);
  14. char *memStrcat(char *first, char *second, bool free_first, bool free_last);
  15. wchar_t *memWidecat(wchar_t *first, wchar_t *second, bool free_first, bool free_last);
  16. wchar_t *memWidecpySelf(wchar_t *str, long times);
  17. wchar_t *memWiderev(wchar_t *str);
  18. char *memWcsToStr(wchar_t *wcs, bool free_old);
  19. wchar_t *memStrToWcs(char *str, bool free_old);
  20. #define memFree(p) ((p)=((p) != NULL ? (free((p)), NULL) : NULL))
  21. #define eqString(str1, str2) (!strcmp((str1), (str2)))
  22. #define eqWide(wid1, wid2) (!wcscmp((wchar_t *)(wid1), (wchar_t *)(wid2)))
  23. #define memString(size) (char *)memCalloc((size) + 1, sizeof(char))
  24. #define memWide(size) (wchar_t *)memCalloc((size) + 1, sizeof(wchar_t))
  25. #define memStrlen(p) (((p) == NULL) ? 0 :strlen((p)))
  26. #define memWidelen(p) (((p) == NULL) ? 0 :wcslen((p)))
  27. #endif //VIRTUALMATH_MEM_H