⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 str_base.cpp

📁 电能质量交换格式转换库
💻 CPP
字号:
/*
**  CPQDIF_StreamIO class. The base class for implementing "stream I/O" which
**  works along with a CPQDIF_PersistController class to supports a specific 
**  persistence mechanism.
**  --------------------------------------------------------------------------
**
**  File name:          $Workfile: str_base.cpp $
**  Last modified:      $Modtime: 9/21/00 9:09a $
**  Last modified by:   $Author: Bill $
**
**  VCS archive path:   $Archive: /Hank/DMM/FirmWare/Level3/ObDatMgr/str_base.cpp $
**  VCS revision:       $Revision: 8 $ 
*/
#include "PQDIF_classes.h"


//  Local constants
const   long    sizeDefaultGrowBy = 16*1024;

//  Construction
//  ============

CPQDIF_StreamIO::CPQDIF_StreamIO()
{
    m_processor = NULL;
	
    m_canWriteFull = false;
    m_canWriteInc  = false;

    m_buffRead.SetSize( 0, sizeDefaultGrowBy );
    m_posRead = 0;
    m_buffWrite.SetSize( 0, sizeDefaultGrowBy );
    m_posWrite = 0;
}


CPQDIF_StreamIO::~CPQDIF_StreamIO()
{
}


bool CPQDIF_StreamIO::ConnectProcessor( CPQDIF_StreamProcessor * proc )
{
    m_processor = proc;

    return TRUE;
}


long CPQDIF_StreamIO::GetChecksum( void )
{ 
    return m_processor->GetChecksum(); 
}


void CPQDIF_StreamIO::ResetChecksum( void )
{ 
    m_processor->ResetChecksum(); 
}


bool CPQDIF_StreamIO::ExecuteProcessorEncode( void )
{
    bool    status = false;

    if( m_processor )
    {
        //  Make sure we are connected to it
        m_processor->ConnectStream( this );

        status = m_processor->StreamEncode();
    }

    return status;
}


bool CPQDIF_StreamIO::ExecuteProcessorDecode( void )
{
    bool    status = false;

    if( m_processor )
    {
        //  Make sure we are connected to it
        m_processor->ConnectStream( this );

        status = m_processor->StreamDecode();
    }

    return status;
}


bool CPQDIF_StreamIO::ProcessRead( const BYTE * &buffer, long max, long& sizeActual )
{
    buffer = m_buffRead.GetData() + m_posRead;        //  Adjust to current position
    sizeActual = m_buffRead.GetSize() - m_posRead;    //  Get size minus current position
    if( max > 0 && max > sizeActual )
        sizeActual = max;
    return sizeActual > 0;
}


bool CPQDIF_StreamIO::ProcessWriteReserve( BYTE * & buffer, long size )
{
    buffer = NULL;
    bool status = m_buffWrite.SetSize( m_posWrite + size );
    if( status )
    {
        buffer = m_buffWrite.GetData() + m_posWrite;
    }
    return status;
}


bool CPQDIF_StreamIO::ProcessWriteRelease( long size )
{
    bool status = m_buffWrite.SetSize( m_posWrite + size );
    if( status )
        m_posWrite += size;
    return status;
}


bool CPQDIF_StreamIO::BeginBlock( void )
{
    bool    status = true;

    //  Clear buffers
    m_buffRead.SetSize( 0, sizeDefaultGrowBy );
    m_posRead = 0;

    return status;
}


bool CPQDIF_StreamIO::AppendBlock( BYTE * buffer, long size )
{
    bool    status = true;

    //  Fill the read buffer
    m_buffRead.Append( buffer, size );

    return status;
}

⌨️ 快捷键说明

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