QuickBuf.h 558 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef NULLSOFT_IN_FLAC_QUICKBUF_H
  2. #define NULLSOFT_IN_FLAC_QUICKBUF_H
  3. #include <malloc.h>
  4. class QuickBuf
  5. {
  6. public:
  7. QuickBuf() : buffer(0), len(0)
  8. {
  9. }
  10. void Reserve(size_t res)
  11. {
  12. if (res > len)
  13. {
  14. len=res;
  15. free(buffer);
  16. buffer = malloc(len);
  17. }
  18. }
  19. void Free()
  20. {
  21. free(buffer);
  22. buffer=0;
  23. len=0;
  24. }
  25. void Move(size_t offset)
  26. {
  27. memmove(buffer, (char *)buffer + offset, len-offset);
  28. }
  29. operator void *()
  30. {
  31. return buffer;
  32. }
  33. operator char *()
  34. {
  35. return (char *)buffer;
  36. }
  37. private:
  38. void *buffer;
  39. size_t len;
  40. };
  41. #endif