Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
52 lines
934 B
C++
52 lines
934 B
C++
#include "stdafx.h"
|
|
#include "Buffer.h"
|
|
#include "BufferFactory.h"
|
|
|
|
CBuffer::CBuffer(CBufferFactory& bufferfactory)
|
|
: internal_buffer_(0), rd_ptr_(0), wr_ptr_(0), buffer_size_(0),
|
|
bufferfactory_(bufferfactory), next_(0), prev_(0)
|
|
{
|
|
|
|
}
|
|
|
|
CBuffer::~CBuffer()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void CBuffer::init(char* internal_buffer, unsigned long buffer_size)
|
|
{
|
|
rd_ptr_ = wr_ptr_ = internal_buffer_ = internal_buffer;
|
|
buffer_size_ = buffer_size;
|
|
|
|
next_ = 0;
|
|
prev_ = 0;
|
|
|
|
address_.clear();
|
|
}
|
|
|
|
|
|
bool CBuffer::push(const void* ptr, size_t n)
|
|
{
|
|
if(NULL != wr_ptr_ && n <= capacity() - length())
|
|
{
|
|
memcpy(wr_ptr_, ptr, n);
|
|
wr_ptr_ += n;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void CBuffer::pop_read_data()
|
|
{
|
|
if(NULL != internal_buffer_)
|
|
{
|
|
size_t n = length();
|
|
memmove(internal_buffer_, rd_ptr_, n);
|
|
wr_ptr_ = internal_buffer_ + n;
|
|
rd_ptr_ = internal_buffer_;
|
|
}
|
|
}
|