1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/*
GameSpy GT2 SDK
Dan "Mr. Pants" Schoenblum
dan@gamespy.com
Copyright 2002 GameSpy Industries, Inc
devsupport@gamespy.com
*/
#include "gt2Buffer.h"
#include <stdlib.h>
GT2Bool gti2AllocateBuffer(GTI2Buffer * buffer, int size)
{
buffer->buffer = (GT2Byte *)gsimalloc((unsigned int)size);
if(!buffer->buffer)
return GT2False;
buffer->size = size;
return GT2True;
}
int gti2GetBufferFreeSpace(const GTI2Buffer * buffer)
{
return (buffer->size - buffer->len);
}
void gti2BufferWriteByte(GTI2Buffer * buffer, GT2Byte b)
{
assert(buffer->len < buffer->size);
#if 0
if(buffer->len >= buffer->size)
return;
#endif
buffer->buffer[buffer->len++] = b;
}
void gti2BufferWriteUShort(GTI2Buffer * buffer, unsigned short s)
{
assert((buffer->len + 2) <= buffer->size);
#if 0
if((buffer->len + 2) > buffer->size)
return;
#endif
buffer->buffer[buffer->len++] = (GT2Byte)((s >> 8) & 0xFF);
buffer->buffer[buffer->len++] = (GT2Byte)(s & 0xFF);
}
void gti2BufferWriteData(GTI2Buffer * buffer, const GT2Byte * data, int len)
{
if(!data || !len)
return;
if(len == -1)
len = (int)strlen((const char *)data);
assert((buffer->len + len) <= buffer->size);
#if 0
if(buffer->len >= buffer->size)
return;
#endif
memcpy(buffer->buffer + buffer->len, data, (unsigned int)len);
buffer->len += len;
}
void gti2BufferShorten(GTI2Buffer * buffer, int start, int shortenBy)
{
if(start == -1)
start = (buffer->len - shortenBy);
assert(start <= buffer->len);
assert(shortenBy <= (buffer->len - start));
memmove(buffer->buffer + start, buffer->buffer + start + shortenBy, (unsigned int)(buffer->len - start - shortenBy));
buffer->len -= shortenBy;
}
|