Esempio n. 1
0
CBin::t_size CBin::Copy( CBin *x_p )
{_STT();

	// Just ensuring our internal buffer is unshared?
	if ( !x_p )
	{
		// Where's the buffer we're dealing with?
		t_size nUsed = getUsed();
		const CBin::t_byte* ptr = Ptr();

		// Valid buffer?
		if ( 0 >= nUsed || !ptr )
		{	Destroy();
			return 0;
		} // end if

		// User ptr buffer?
		if ( m_ptr )
			m_buf.MemCpy( ptr, nUsed ), FreePtr();

		// Make a copy of shared pointer
		else
		{	t_buffer buf;
			buf.MemCpy( ptr, nUsed );
			m_buf.Assume( buf );
		} // end else if

		// Restore used count
		m_nUsed = nUsed;
		m_nOffset = 0;

		return nUsed;

	} // end if

	// Valid buffer?
	if ( !x_p->Ptr() || !x_p->getUsed() )
	{	Destroy();
		return 0;
	} // end if

	// Lose Ptr buffer if any
	FreePtr();
	m_nUsed = x_p->getUsed();

	// Ptr buffer?
	m_buf.MemCpy( x_p->Ptr(), m_nUsed );

	return m_nUsed;
}
template <class T,int Overhead> void LIST<T,Overhead>::DeleteAll(void){
      for(int i=0;i<Items;i++)
        _DestroyListItem(&Ptr[i]);
    if (Ptr)
      FreePtr((void *)Ptr);
    Ptr=NULL;
    ItemsAlloced=Items=0;
}
void MEMBLOCK::SetSize(int len){
    if(!len){
        FreePtr(Ptr);
        Ptr=NULL;
    } else
        ResizePtr(&Ptr,len);
    Len=len;
}
Esempio n. 4
0
CBin::t_size CBin::LShift( CBin::t_size x_nBytes )
{_STT();

	// Anything to do?
	if ( !x_nBytes && !m_nOffset )
		return 0;

	// All of it?
	if ( x_nBytes >= getUsed() )
	{	FreePtr();
		return 0;
	} // end if

	// Account for the offset
	x_nBytes += m_nOffset;
	m_nOffset = 0;

	// Are we doing any work?
	if ( !x_nBytes )
		return m_nUsed;

	// Copy Ptr buffer if needed
	if ( m_ptr )
	{
		// What's the new size?
		m_nUsed -= x_nBytes;
		if ( !m_buf.OexNew( m_nUsed ).Ptr() )
			return 0;

		// Copy to private buffer
		m_buf.MemCpy( &m_ptr[ x_nBytes ], m_nUsed );

	} // end if
	else
	{
		// Just shift the buffer
		m_buf.LShift( x_nBytes, m_nUsed - x_nBytes ),
		m_nUsed -= x_nBytes;

	} // end else

	return m_nUsed;
}
Esempio n. 5
0
OEX_USING_NAMESPACE

const CBin::t_byte* CBin::Resize( CBin::t_size x_nNewSize )
{_STT();

	// Ptr buffer?
	if ( m_ptr )
	{
		// Is the buffer just getting smaller?
		if ( m_nUsed > x_nNewSize )
			m_nUsed = x_nNewSize;

		// Must allocate more space
		else
		{
			// Make a new buffer and copy data
			if ( !m_buf.OexNew( x_nNewSize ).Ptr() )
				return 0;

			// Remember how many are used
			t_size nUsed = m_nUsed;

			// Copy the data
			oexMemCpy( m_buf.Ptr(), m_ptr, nUsed );

			// Free the user pointer
			FreePtr();

			// Restore used amount
			m_nUsed = nUsed;

		} // end else

	} // end if

	// Simple resize
	else
		m_buf.OexResize( x_nNewSize );

	// How did it go?
	return Ptr();
}
Esempio n. 6
0
CBin::t_size CBin::AppendBuffer( const CBin::t_byte *x_pBuf, CBin::t_size x_nBytes )
{_STT();

	// Null Append?
	if ( !x_pBuf || !x_nBytes )
		return m_nUsed;

	// Ptr pointer?
	if ( m_ptr )
	{
		// Remember how many bytes are being used
		t_size nUsed = m_nUsed;
	
		// Copy Ptr buffer
		if ( nUsed )
			m_buf.MemCpy( m_ptr, nUsed );

		// Append new data
		m_buf.MemCpyAt( (t_byte*)x_pBuf, nUsed, x_nBytes );

		// No Ptr buffer anymore
		FreePtr();

		// New used amount
		m_nUsed = nUsed + x_nBytes;

		return m_nUsed;
	}

	// Verify m_nUsed
	if ( (unsigned int)m_nUsed > m_buf.Size() )
		m_nUsed = m_buf.Size();

	// Append new data
	m_buf.MemCpyAt( (t_byte*)x_pBuf, m_nUsed, x_nBytes );
	m_nUsed += x_nBytes;

	return m_nUsed;
}
Esempio n. 7
0
CBin::t_size CBin::Share( CBin *x_p )
{_STT();

	if ( !x_p || !x_p->getUsed() )
	{	Destroy();
		return 0;
	} // end if

	// Lose any Ptr buffer
	FreePtr();

	// Ptr buffer?
	if ( x_p->m_ptr )
		setBuffer( x_p->m_ptr, x_p->m_nUsed, x_p->m_nOffset, x_p->m_bFree );

	// Share native buffer
	else
		m_nUsed = x_p->m_nUsed,
		m_nOffset = x_p->m_nOffset,
		m_buf.Share( x_p->m_buf );

	return m_nUsed;
}
Esempio n. 8
0
// Generic free memory
void CMSEXPORT _cmsFree(cmsContext ContextID, void* Ptr)
{
    if (Ptr != NULL) FreePtr(ContextID, Ptr);
}
Esempio n. 9
0
void Micropolis::destroyMapArrays()
{

    if (mapPtr) {
        FreePtr(mapPtr);
        mapPtr = NULL;
    }

    memset(Map, 0, sizeof(short *) * WORLD_X);

    if (popPtr) {
        FreePtr(popPtr);
        popPtr = NULL;
    }

    if (trfPtr) {
        FreePtr(trfPtr);
        trfPtr = NULL;
    }

    if (polPtr) {
        FreePtr(polPtr);
        polPtr = NULL;
    }

    if (landPtr) {
        FreePtr(landPtr);
        landPtr = NULL;
    }

    if (crimePtr) {
        FreePtr(crimePtr);
        crimePtr = NULL;
    }

    if (tem1Base) {
        FreePtr(tem1Base);
        tem1Base = NULL;
    }

    if (tem2Base) {
        FreePtr(tem2Base);
        tem2Base = NULL;
    }

    auxPopPtr = NULL;
    auxTrfPtr = NULL;
    auxPolPtr = NULL;
    auxLandPtr = NULL;
    auxCrimePtr = NULL;

    memset(PopDensity, 0, sizeof(Byte *) * HWLDX);
    memset(TrfDensity, 0, sizeof(Byte *) * HWLDX);
    memset(PollutionMem, 0, sizeof(Byte *) * HWLDX);
    memset(LandValueMem, 0, sizeof(Byte *) * HWLDX);
    memset(CrimeMem, 0, sizeof(Byte *) * HWLDX);
    memset(tem, 0, sizeof(Byte *) * HWLDX);
    memset(tem2, 0, sizeof(Byte *) * HWLDX);
    memset(tem2, 0, sizeof(Byte *) * HWLDX);

    brettPtr = NULL;

    if (terrainBase) {
        FreePtr(terrainBase);
        terrainBase = NULL;
    }

    if (qTemBase) {
        FreePtr(qTemBase);
        qTemBase = NULL;
    }

    memset(TerrainMem, 0, sizeof(Byte *) * QWX);
    memset(Qtem, 0, sizeof(Byte *) * QWX);

    if (ResHis) {
        FreePtr(ResHis);
        ResHis = NULL;
    }

    if (ComHis) {
        FreePtr(ComHis);
        ComHis = NULL;
    }

    if (IndHis) {
        FreePtr(IndHis);
        IndHis = NULL;
    }

    if (MoneyHis) {
        FreePtr(MoneyHis);
        MoneyHis = NULL;
    }

    if (PollutionHis) {
        FreePtr(PollutionHis);
        PollutionHis = NULL;
    }

    if (CrimeHis) {
        FreePtr(CrimeHis);
        CrimeHis = NULL;
    }

    if (MiscHis) {
        FreePtr(MiscHis);
        MiscHis = NULL;
    }

    if (PowerMap) {
        FreePtr(PowerMap);
        PowerMap = NULL;
    }

}