同步操作将从 腾硕软件/vc-client 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//DoubleBuffering.cpp Source File#include "stdafx.h"#include "DoubleBuffering.h"#include <cassert>#include <exception>using namespace std;CDoubleBuffering::CDoubleBuffering(ifstream& in, char* pcBuff, int iSize, int iDataLen) : m_rin(in),m_iDataLen(iDataLen), m_bEOF(false), m_iSize(iSize), m_iSize2(iSize >> 1), m_pcBuff(pcBuff){//m_iSize should be evenif(m_iSize%2 != 0)throw runtime_error("CDoubleBuffering: m_iSize should be Even Number!");//Check fileif(!in.is_open() || in.bad())throw runtime_error("CDoubleBuffering: Referenced File not Opened or in Bad State!");//Check construction dataif(m_iDataLen<1 || m_iSize2<m_iDataLen)throw runtime_error("CDoubleBuffering: Illegal Construction Data!");in.read(m_pcBuff, m_iSize2);m_iEnd = m_rin.gcount();m_iCurPos = 0;m_iBuf = 0;}int CDoubleBuffering::GetData(char* pszDataBuf, int iDataLen){if(-1 == iDataLen)iDataLen = m_iDataLen;if(iDataLen<1 || m_iSize2<iDataLen)throw runtime_error("CDoubleBuffering::GetData(): Illegal iDataLen!");if(true == m_bEOF)return 0;//Estimate the next positionint iCurPos = m_iCurPos + iDataLen;if(0 == m_iBuf) //First Buffer{if(iCurPos >= m_iEnd){//Read the next bufferif(m_rin.eof()){m_bEOF = true;//Take everything remainedint iRead = m_iEnd-m_iCurPos;memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);return iRead;}else{m_rin.read(m_pcBuff+m_iEnd, m_iSize2);m_iEnd += m_rin.gcount();if(iCurPos > m_iEnd) //Still greater, then EOF attained{assert(m_rin.eof());m_bEOF = true;//Take everything remainedint iRead = m_iEnd-m_iCurPos;memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);return iRead;}else{memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iDataLen);m_iCurPos = iCurPos;assert(m_iCurPos >= m_iSize2);m_iBuf = 1;return iDataLen;}}}else{memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iDataLen);m_iCurPos = iCurPos;return iDataLen;}}else //1 == m_iBuf, Second Buffer{if(iCurPos >= m_iEnd){//Read the next bufferif(m_rin.eof()){m_bEOF = true;//Take everything remainedint iRead = m_iEnd-m_iCurPos;memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);return iRead;}else{m_rin.read(m_pcBuff, m_iSize2);m_iEnd = m_rin.gcount();iCurPos %= m_iSize;if(iCurPos > m_iEnd) //Still greater, then EOF attained{assert(m_rin.eof());m_bEOF = true;//Take everything remainedint iRead = m_iSize-m_iCurPos;memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);memcpy(pszDataBuf+iRead, m_pcBuff, m_iEnd);return iRead + m_iEnd;}else{int iRead = m_iSize-m_iCurPos;memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);memcpy(pszDataBuf+iRead, m_pcBuff, iDataLen-iRead);m_iCurPos = iCurPos;assert(m_iCurPos < m_iSize2);m_iBuf = 0;return iDataLen;}}}else{memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iDataLen);m_iCurPos = iCurPos;return iDataLen;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。