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

📄 str_base.cpp

📁 PQDIF软件包(SDK,Software Development Kit),它能转换、生成并且显示PQDIF文件.对于开发电力系统的数据输出非常有用。
💻 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: 3/24/98 10:49a $
**  Last modified by:   $Author: Rob $
**
**  VCS archive path:   $Archive: /Hank/DMM/FirmWare/Level3/ObDatMgr/str_base.cpp $
**  VCS revision:       $Revision: 6 $ 
*/
#include "PQDIF_classes.h"


//  Local constants
const   long    sizeDefaultGrowBy = 256;

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


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( BYTE * buffer, long max, long& sizeActual )
{
    bool    status = false;
    long    sizeLeft = m_buffRead.GetSize() - m_posRead;    //  Get size minus current position
    BYTE *  buffSource = m_buffRead.GetData() + m_posRead;  //  Adjust to current position

    sizeActual = min( max, sizeLeft );
    if( sizeActual > 0 && buffSource )
    {
        memcpy( buffer, buffSource, sizeActual );
        m_posRead += sizeActual;    //  Move us out past the part we just read
        status = true;
    }

    return status;
}


bool CPQDIF_StreamIO::ProcessWrite( BYTE * buffer, long size )
{
    bool    status = false;

    m_buffWrite.Append( buffer, size );

    if( size > 0 )
        status = true;

    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 + -