buffer.h 931 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _LSUP_BUFFER_H
  2. #define _LSUP_BUFFER_H
  3. #include "core.h"
  4. typedef struct LSUP_Buffer {
  5. void *addr;
  6. size_t size;
  7. } LSUP_Buffer;
  8. LSUP_Buffer *LSUP_buffer_new(size_t size);
  9. int LSUP_buffer_init(LSUP_Buffer *buf, size_t size);
  10. void LSUP_buffer_print(const LSUP_Buffer *buf);
  11. int LSUP_buffer_copy(LSUP_Buffer *dest, const LSUP_Buffer *src);
  12. void LSUP_buffer_done(LSUP_Buffer *buf);
  13. /**
  14. * Return whether two buffers are equal.
  15. *
  16. * This is faster than LSUP_buffer_cmp because it returns immediately if the
  17. * sizes of the buffers differ.
  18. */
  19. inline bool LSUP_buffer_eq(const LSUP_Buffer *buf1, const LSUP_Buffer *buf2)
  20. {
  21. if (buf1->size != buf2->size) return false;
  22. return (memcmp(buf1->addr, buf2->addr, buf1->size) == 0) ? true : false;
  23. }
  24. inline int LSUP_buffer_cmp(const LSUP_Buffer *buf1, const LSUP_Buffer *buf2)
  25. {
  26. return memcmp(buf1->addr, buf2->addr, max(buf1->size, buf2->size));
  27. }
  28. #endif