本文整理汇总了C++中TLex::Remainder方法的典型用法代码示例。如果您正苦于以下问题:C++ TLex::Remainder方法的具体用法?C++ TLex::Remainder怎么用?C++ TLex::Remainder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TLex
的用法示例。
在下文中一共展示了TLex::Remainder方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SkipToNextCommand
TInt SkipToNextCommand(TLex& aLex)
{
if ((aLex.Offset() == 0) && (aLex.Remainder().Find(KPartialCommandStart) == 0))
{
return KErrNone;
}
return SkipTo(aLex, KCommandStart);
}
示例2: SkipToEnd
TInt SkipToEnd(TLex& aLex, const TDesC& aDes)
{
TInt ret = aLex.Remainder().Find(aDes);
if (ret >= 0)
{
aLex.Inc(ret + aDes.Length());
return KErrNone;
}
return KErrNotFound;
}
示例3: LineRemainder
TPtrC LineRemainder(TLex& aLex)
{
aLex.Mark();
if (SkipTo(aLex, KNewLine) == KErrNone)
{
return aLex.MarkedToken();
}
else
{
return aLex.Remainder();
}
}
示例4: NextCommand
TPtrC NextCommand(TLex& aLex)
{
TPtrC command;
if (SkipToNextCommand(aLex) == KErrNone)
{
SkipToEnd(aLex, KPartialCommandStart);
aLex.Mark();
aLex.SkipCharacters();
command.Set(aLex.MarkedToken());
}
else
{
aLex.Inc(aLex.Remainder().Length());
}
return command;
}
示例5: TextToNextCommand
TPtrC TextToNextCommand(TLex& aLex)
{
aLex.Mark();
if (SkipToNextCommand(aLex) != KErrNone)
{
aLex.Inc(aLex.Remainder().Length());
}
TLex lex(aLex.MarkedToken());
// Strip leading white space.
while (!lex.Eos())
{
if (lex.Peek().IsSpace())
{
lex.Get();
}
else
{
break;
}
}
lex.Mark();
TInt startOffset = lex.Offset();
// Remove trailing white space.
lex.Inc(lex.Remainder().Length());
while (lex.Offset() > startOffset)
{
lex.UnGet();
if (!lex.Peek().IsSpace())
{
lex.Get();
break;
}
}
return lex.MarkedToken();
}
示例6: AddSubCommandL
void CCommandInfoFile::AddSubCommandL(TLex& aNameLex, TLex& aDataLex, RFs& aFs, const TDesC& aFileName)
{
TPtrC subCommandName(NextWord(aNameLex));
TBool found(EFalse);
for (TInt i = (iChildren.Count() - 1); i >= 0; --i)
{
if (iChildren[i]->Name() == subCommandName)
{
iChildren[i]->AddSubCommandL(aNameLex, aDataLex, aFs, aFileName);
found = ETrue;
break;
}
}
__ASSERT_ALWAYS(found || (aNameLex.Remainder().Length() == 0), IoUtils::Panic(ECifSubCommandParentNotFound));
if (!found)
{
CCommandInfoFile* subCommand = new(ELeave) CCommandInfoFile(*this);
CleanupStack::PushL(subCommand);
subCommand->iName.Set(subCommandName);
subCommand->ReadDetailsL(aDataLex, aFs, aFileName);
iChildren.AppendL(subCommand);
CleanupStack::Pop(subCommand);
}
}
示例7: ParseMessageL
//.........这里部分代码省略.........
TPtrC fieldName;
TPtrC fieldValue;
// reset parsedfield array
for(TInt i = iParsedFieldArray->Count();--i>=0;)
(*iParsedFieldArray)[i]->SetFieldValueL(_L(""));
// Set extraction mark at first character
iSms.SkipSpaceAndMark();
if(iSms.Peek() == KCharSlash)
{
// Check first line is <header>
iSms.SkipCharacters();
if (iSms.MarkedToken() != KEmailHeader)
{
User::Leave(KBspInvalidMessage);
}
// Get <new-amount> from second line and check for terminating linefeed
iSms.SkipSpaceAndMark();
}
// Val() seeks forward from next char position, looking for valid
// digits and incrementing next char as it goes.
if (!(iSms.Val(iMessageCount) == KErrNone && iMessageCount >= 0)) // If marked token is not a valid positive integer
{
iMessageCount = 0;
User::Leave(KBspInvalidMessage);
}
else
{
fieldValue.Set(iSms.MarkedToken()); // The message count..
AddParsedFieldL(KHeaderNumberMessages, fieldValue, ETrue);
}
// Next character may now be at newline or space after integer.
// If at space, advance to newline.
while (iSms.Peek() != KCharLineFeed && !iSms.Eos())
iSms.Inc();
iSms.SkipSpaceAndMark();
// Now parse the rest of the fields, if any.
while (!iSms.Eos())
{
while (iSms.Peek() != KCharLineFeed && !iSms.Eos())
iSms.Inc(); // Skip to next delimiter
if (iSms.Eos())
break; // we've finished break out of the function
if (iSms.TokenLength() == 0)
User::Leave(KBspSmartMessageInvalidToken);
// Parsing....
tokenLex.Assign(iSms.MarkedToken()); // Assign token to a new TLex
while (tokenLex.Peek() != KCharColon && !tokenLex.Eos())
tokenLex.Inc(); // Advance to a ':'
if (tokenLex.Eos() || tokenLex.TokenLength() == 0)
User::Leave(KBspSmartMessageInvalidToken);
fieldName.Set(tokenLex.MarkedToken()); // Store (pointer to) field name
tokenLex.Inc();
//fix for DEF017686
LeaveIfEmptyFieldsL(fieldName,tokenLex);
tokenLex.SkipSpaceAndMark(); // Step past optional spaces
//fix for DEF017686
LeaveIfEmptyFieldsL(fieldName,tokenLex);
// if it's the server id field try to extract the id value
// and match to an existing email service
if(fieldName.CompareF(KHeaderServerId)==KErrNone)
{
TInt valErr = tokenLex.Val(iServerId);
if(valErr != KErrNone)
iServerId = 0;
else
GetEmailServicesL();
tokenLex.UnGetToMark();
}
fieldValue.Set(tokenLex.Remainder()); // Store (pointer to) field value
if(!isSimpleNotification)
{
AddParsedFieldL(fieldName, fieldValue, EFalse);
}
// Successfully parsed a token. Move iSms's next character past the
// (linefeed) delimiter, set the extraction mark and reiterate to
// look for next token.
iSms.SkipSpaceAndMark();
}
}