15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 7zBuf.c -- Byte Buffer
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)2008-03-28
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Igor Pavlov
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Public domain */
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "7zBuf.h"
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Buf_Init(CBuf *p)
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  p->data = 0;
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  p->size = 0;
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc)
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  p->size = 0;
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  if (size == 0)
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  {
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    p->data = 0;
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return 1;
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  }
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  p->data = (Byte *)alloc->Alloc(alloc, size);
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  if (p->data != 0)
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  {
2553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    p->size = size;
2653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    return 1;
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  }
2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)  return 0;
2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)}
3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)void Buf_Free(CBuf *p, ISzAlloc *alloc)
3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){
33e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)  alloc->Free(alloc, p->data);
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)  p->data = 0;
3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)  p->size = 0;
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)}
3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)