75 lines
1.4 KiB
C++
75 lines
1.4 KiB
C++
#include "StdAfx.h"
|
|
#include "static_array.h"
|
|
//*********************************************************************
|
|
Cstatic_array::Cstatic_array(int size)
|
|
{
|
|
n=m=0;
|
|
buf=NULL;
|
|
z=size;
|
|
incremento=100;
|
|
}
|
|
//*********************************************************************
|
|
Cstatic_array::~Cstatic_array(void)
|
|
{
|
|
borra();
|
|
}
|
|
//*********************************************************************
|
|
void Cstatic_array::borra()
|
|
{
|
|
n=m=0;
|
|
if (buf)
|
|
free(buf);
|
|
buf=NULL;
|
|
incremento=100;
|
|
}
|
|
//*********************************************************************
|
|
BOOL Cstatic_array::reserva( int p )
|
|
{
|
|
BYTE *bb;
|
|
if (n+p>m)
|
|
{
|
|
m+=incremento;
|
|
if (n>incremento)
|
|
m+=n;
|
|
if (buf)
|
|
bb=(BYTE*)realloc(buf,m*z);
|
|
else
|
|
bb=(BYTE*)malloc(m*z);
|
|
if(bb)
|
|
buf=bb;
|
|
else
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
//*********************************************************************
|
|
BYTE* Cstatic_array::get( int i )
|
|
{
|
|
if (i<0||i>=n)
|
|
return NULL;
|
|
return &buf[i*z];
|
|
}
|
|
//*********************************************************************
|
|
void Cstatic_array::add( BYTE* e )
|
|
{
|
|
reserva();
|
|
memcpy(&buf[n*z],e,z);
|
|
n++;
|
|
}
|
|
//*********************************************************************
|
|
BYTE* Cstatic_array::get_cp( int i )
|
|
{
|
|
BYTE* b;
|
|
BYTE* r;
|
|
b=get(i);
|
|
if (b)
|
|
{
|
|
r=(BYTE*)malloc(z);
|
|
memcpy(r,b,z);
|
|
return r;
|
|
}
|
|
return NULL;
|
|
|
|
}
|
|
//*********************************************************************
|