memarea.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /* Copyright (c) 2008-2019, The Tor Project, Inc. */
  2. /* See LICENSE for licensing information */
  3. /**
  4. * \file memarea.h
  5. *
  6. * \brief Header for memarea.c
  7. **/
  8. #ifndef TOR_MEMAREA_H
  9. #define TOR_MEMAREA_H
  10. #include <stddef.h>
  11. typedef struct memarea_t memarea_t;
  12. memarea_t *memarea_new(void);
  13. void memarea_drop_all_(memarea_t *area);
  14. #define memarea_drop_all(area) \
  15. do { \
  16. memarea_drop_all_(area); \
  17. (area) = NULL; \
  18. } while (0)
  19. void memarea_clear(memarea_t *area);
  20. int memarea_owns_ptr(const memarea_t *area, const void *ptr);
  21. void *memarea_alloc(memarea_t *area, size_t sz);
  22. void *memarea_alloc_zero(memarea_t *area, size_t sz);
  23. void *memarea_memdup(memarea_t *area, const void *s, size_t n);
  24. char *memarea_strdup(memarea_t *area, const char *s);
  25. char *memarea_strndup(memarea_t *area, const char *s, size_t n);
  26. void memarea_get_stats(memarea_t *area,
  27. size_t *allocated_out, size_t *used_out);
  28. void memarea_assert_ok(memarea_t *area);
  29. #endif /* !defined(TOR_MEMAREA_H) */