thug/Code/Gel/Movies/Ngps/readbuf.cpp

82 lines
1.5 KiB
C++
Raw Permalink Normal View History

2016-02-13 21:39:12 +00:00
#include "gel/movies/ngps/defs.h"
#include "gel/movies/ngps/readbuf.h"
#define BUFF_SIZE (N_READ_UNIT * READ_UNIT_SIZE)
namespace Flx
{
// ////////////////////////////////////////////////////////////////
//
// Create read buffer
//
void readBufCreate(ReadBuf *b)
{
b->put = b->count = 0;
b->size = BUFF_SIZE;
}
// ////////////////////////////////////////////////////////////////
//
// Delete read buffer
//
void readBufDelete(ReadBuf *b)
{
}
// ////////////////////////////////////////////////////////////////
//
// Get empty area
//
int readBufBeginPut(ReadBuf *b, u_char **ptr)
{
int size = b->size - b->count;
if (size) {
*ptr = b->data + b->put;
}
return size;
}
// ////////////////////////////////////////////////////////////////
//
// Proceed 'write' pointer
//
int readBufEndPut(ReadBuf *b, int size)
{
int size_ok = min(b->size - b->count, size);
b->put = (b->put + size_ok) % b->size;
b->count += size_ok;
return size_ok;
}
// ////////////////////////////////////////////////////////////////
//
// Get data area
//
int readBufBeginGet(ReadBuf *b, u_char **ptr)
{
if (b->count) {
*ptr = b->data + (b->put - b->count + b->size) % b->size;
}
return b->count;
}
// ////////////////////////////////////////////////////////////////
//
// Proceed 'read' pointer
//
int readBufEndGet(ReadBuf *b, int size)
{
int size_ok = min(b->count, size);
b->count -= size_ok;
return size_ok;
}
} // namespace Flx