pqbytearray.cpp

来自「电能质量交换格式转换库」· C++ 代码 · 共 90 行

CPP
90
字号
//  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;
    }
}



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?