utiles_v2017/static_array.cpp

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;
}
//*********************************************************************