本文整理汇总了C++中COpcText::SetEof方法的典型用法代码示例。如果您正苦于以下问题:C++ COpcText::SetEof方法的具体用法?C++ COpcText::SetEof怎么用?C++ COpcText::SetEof使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类COpcText
的用法示例。
在下文中一共展示了COpcText::SetEof方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindDelimited
// FindDelimited
bool COpcTextReader::FindDelimited(COpcText& cToken)
{
OPC_ASSERT(m_szBuf != NULL);
OPC_ASSERT(m_uLength != 0);
// skip leading whitespace
UINT uPosition = SkipWhitespace(cToken);
// check if there is still data left to read.
if (uPosition >= m_uEndOfData)
{
return false;
}
// read until a delimiter.
for (UINT ii = uPosition; ii < m_uEndOfData; ii++)
{
// check if search halted.
if (CheckForHalt(cToken, ii))
{
return false;
}
// check if delimiter found.
if (CheckForDelim(cToken, ii))
{
// copy token - empty tokens are valid.
CopyData(cToken, uPosition, ii);
return true;
}
}
// check for end of data - true if EOF is a delim.
if (ii >= m_uEndOfData)
{
cToken.SetEof();
if (cToken.GetEofDelim())
{
CopyData(cToken, uPosition, ii);
return true;
}
}
return false;
}
示例2: CheckForHalt
// CheckForHalt
bool COpcTextReader::CheckForHalt(COpcText& cToken, UINT uPosition)
{
// check if max chars exceeded.
if (cToken.GetMaxChars() > 0)
{
if (cToken.GetMaxChars() <= uPosition)
{
return false;
}
}
// check for end of data - halts if EOF is not a delim.
if (uPosition >= m_uEndOfData)
{
cToken.SetEof();
return !cToken.GetEofDelim();
}
// check for one of halt characters.
LPCWSTR szHaltChars = cToken.GetHaltChars();
if (szHaltChars == NULL)
{
return false;
}
UINT uCount = wcslen(szHaltChars);
for (UINT ii = 0; ii < uCount; ii++)
{
if (IsEqual(cToken, m_szBuf[uPosition], szHaltChars[ii]))
{
cToken.SetHaltChar(szHaltChars[ii]);
return true;
}
}
return false;
}
示例3: GetNext
// GetNext
bool COpcTextReader::GetNext(COpcText& cToken)
{
// no more data to get - give up
if (m_uEndOfData == 0)
{
return false;
}
// find the token
if (!FindToken(cToken))
{
return false;
}
// all done if token is not being extracted.
if (cToken.GetNoExtract())
{
return true;
}
UINT uEndOfToken = cToken.GetEnd() + 1;
UINT uDataLeft = m_uEndOfData - uEndOfToken;
// extract the delimiter if extracting token.
// new line delimiter found.
if (cToken.GetNewLine())
{
if (cToken.GetDelimChar() == _T('\r'))
{
uEndOfToken += 2;
uDataLeft -= 2;
}
else
{
uEndOfToken += 1;
uDataLeft -= 1;
}
}
// specific delimiter found.
else if (cToken.GetDelimChar() > 0 && !cToken.GetEof())
{
uEndOfToken++;
uDataLeft--;
}
// move leftover data to the start of the buffer
for (UINT ii = 0; ii < uDataLeft; ii++)
{
m_szBuf[ii] = m_szBuf[uEndOfToken+ii];
}
m_szBuf[ii] = L'\0';
m_uEndOfData = uDataLeft;
// set EOF flag if no data left in buffer.
if (m_uEndOfData == 0)
{
cToken.SetEof();
}
return true;
}