15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 7zBuf.c -- Byte Buffer
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)2008-03-28
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Igor Pavlov
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Public domain */
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "7zBuf.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Buf_Init(CBuf *p)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p->data = 0;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p->size = 0;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p->size = 0;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (size == 0)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    p->data = 0;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p->data = (Byte *)alloc->Alloc(alloc, size);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (p->data != 0)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    p->size = size;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Buf_Free(CBuf *p, ISzAlloc *alloc)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  alloc->Free(alloc, p->data);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p->data = 0;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p->size = 0;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
37