94 lines
1.3 KiB
C++
94 lines
1.3 KiB
C++
|
#include "OysterByte.h"
|
||
|
|
||
|
using namespace Oyster::Network;
|
||
|
|
||
|
OysterByte::OysterByte()
|
||
|
{
|
||
|
size = 0;
|
||
|
capacity = 10;
|
||
|
byteArray = new unsigned char[capacity];
|
||
|
}
|
||
|
|
||
|
OysterByte::OysterByte(int cap)
|
||
|
{
|
||
|
size = 0;
|
||
|
capacity = cap;
|
||
|
byteArray = new unsigned char[capacity];
|
||
|
}
|
||
|
|
||
|
OysterByte::~OysterByte()
|
||
|
{
|
||
|
delete[] byteArray;
|
||
|
}
|
||
|
|
||
|
void OysterByte::Clear(unsigned int cap)
|
||
|
{
|
||
|
delete[] byteArray;
|
||
|
byteArray = new unsigned char[cap];
|
||
|
size = 0;
|
||
|
}
|
||
|
|
||
|
int OysterByte::GetSize()
|
||
|
{
|
||
|
return size;
|
||
|
}
|
||
|
|
||
|
unsigned char* OysterByte::GetByteArray()
|
||
|
{
|
||
|
return byteArray;
|
||
|
}
|
||
|
|
||
|
void OysterByte::AddSize(unsigned int size)
|
||
|
{
|
||
|
int oldSize = this->size;
|
||
|
this->size += size;
|
||
|
|
||
|
if(this->size >= capacity)
|
||
|
{
|
||
|
IncreaseCapacity(oldSize);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void OysterByte::SetBytes(unsigned char* bytes)
|
||
|
{
|
||
|
delete[] byteArray;
|
||
|
byteArray = bytes;
|
||
|
}
|
||
|
|
||
|
void OysterByte::SetSize(unsigned int size)
|
||
|
{
|
||
|
this->size = size;
|
||
|
}
|
||
|
|
||
|
OysterByte::operator char*()
|
||
|
{
|
||
|
return (char*)byteArray;
|
||
|
}
|
||
|
|
||
|
OysterByte::operator const char*()
|
||
|
{
|
||
|
return (const char*)byteArray;
|
||
|
}
|
||
|
|
||
|
OysterByte::operator unsigned char*()
|
||
|
{
|
||
|
return byteArray;
|
||
|
}
|
||
|
|
||
|
/////////////
|
||
|
// Private //
|
||
|
/////////////
|
||
|
|
||
|
void OysterByte::IncreaseCapacity(unsigned int oldSize)
|
||
|
{
|
||
|
capacity = size * 2;
|
||
|
unsigned char* temp = new unsigned char[capacity];
|
||
|
|
||
|
for(int i = 0; i < oldSize; i++)
|
||
|
{
|
||
|
temp[i] = byteArray[i];
|
||
|
}
|
||
|
|
||
|
delete[] byteArray;
|
||
|
byteArray = temp;
|
||
|
}
|