90 lines
1.4 KiB
C++
90 lines
1.4 KiB
C++
// File name: $Workfile: pqbytearray.cpp $
|
|
// Last modified: $Modtime: 9/21/00 8:51a $
|
|
// Last modified by: $Author: Bill $
|
|
//
|
|
// VCS archive path: $Archive: /Hank/DMM/FirmWare/Level3/ObDatMgr/pqbytearray.cpp $
|
|
// VCS revision: $Revision: 7 $
|
|
|
|
#include "PQDIF_classes.h"
|
|
|
|
|
|
CPQByteArray::CPQByteArray()
|
|
{
|
|
m_data = NULL;
|
|
m_size = 0;
|
|
m_max = 0;
|
|
m_growBy = 64;
|
|
}
|
|
|
|
|
|
CPQByteArray::~CPQByteArray()
|
|
{
|
|
if( m_data )
|
|
{
|
|
free( m_data );
|
|
}
|
|
}
|
|
|
|
|
|
bool CPQByteArray::SetSize( int NewSize, int GrowBy )
|
|
{
|
|
|
|
if( GrowBy > 0 )
|
|
m_growBy = GrowBy;
|
|
|
|
// Grow?
|
|
if( NewSize > m_max )
|
|
{
|
|
int max = (( NewSize/m_growBy ) + 1)*m_growBy;
|
|
BYTE * data = (BYTE *) realloc( (void *) m_data, max );
|
|
if( data != NULL || max == 0 )
|
|
{
|
|
m_data = data;
|
|
m_size = NewSize;
|
|
m_max = max;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_size = NewSize;
|
|
}
|
|
|
|
return ( m_size == NewSize );
|
|
|
|
}
|
|
|
|
|
|
int CPQByteArray::Add( BYTE value )
|
|
{
|
|
int pos = m_size;
|
|
|
|
if( SetSize( m_size + 1 ) )
|
|
{
|
|
m_data[ pos ] = value;
|
|
return pos;
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
int CPQByteArray::Append( BYTE * values, int count )
|
|
{
|
|
int pos = m_size;
|
|
|
|
if( SetSize( m_size + count, m_growBy ) )
|
|
{
|
|
memcpy( m_data + pos, values, count );
|
|
return pos;
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
|