Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #include "fitz.h"
  2.  
  3. fz_buffer *
  4. fz_new_buffer(int size)
  5. {
  6.         fz_buffer *b;
  7.  
  8.         size = size > 1 ? size : 16;
  9.  
  10.         b = fz_malloc(sizeof(fz_buffer));
  11.         b->refs = 1;
  12.         b->data = fz_malloc(size);
  13.         b->cap = size;
  14.         b->len = 0;
  15.  
  16.         return b;
  17. }
  18.  
  19. fz_buffer *
  20. fz_keep_buffer(fz_buffer *buf)
  21. {
  22.         buf->refs ++;
  23.         return buf;
  24. }
  25.  
  26. void
  27. fz_drop_buffer(fz_buffer *buf)
  28. {
  29.         if (--buf->refs == 0)
  30.         {
  31.                 fz_free(buf->data);
  32.                 fz_free(buf);
  33.         }
  34. }
  35.  
  36. void
  37. fz_resize_buffer(fz_buffer *buf, int size)
  38. {
  39.         buf->data = fz_realloc(buf->data, size, 1);
  40.         buf->cap = size;
  41.         if (buf->len > buf->cap)
  42.                 buf->len = buf->cap;
  43. }
  44.  
  45. void
  46. fz_grow_buffer(fz_buffer *buf)
  47. {
  48.         fz_resize_buffer(buf, (buf->cap * 3) / 2);
  49. }
  50.