diff -r 3406c99bc375 -r 07b41fa8d1dd stif/Parser/src/StifSectionParser.cpp --- a/stif/Parser/src/StifSectionParser.cpp Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1107 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This module contains implementation of -* CStifSectionParser class member functions. -* -*/ - -// INCLUDE FILES -#include -#include "StifSectionParser.h" -#include "ParserTracing.h" - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ==================== LOCAL FUNCTIONS ======================================= -// None - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: CStifSectionParser - - Description: Default constructor. - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: const TInt aLength: in: Parsed section length - - Return Values: None - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -CStifSectionParser::CStifSectionParser( const TInt aLength ) : - iSection( 0, 0 ), - iLength( aLength ), - iSkipAndMarkPos( 0 ), - iLineIndicator( EFalse ) - { - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: ConstructL - - Description: Symbian OS second phase constructor. - - Symbian OS default constructor can leave. - - Parameters: None - - Return Values: None - - Errors/Exceptions: Leaves if iLength is negative - Leaves if called NewL method fails - - Status: Approved - -------------------------------------------------------------------------------- -*/ -void CStifSectionParser::ConstructL() - { - // Construct modifiable heap-based descriptor - iHBufferSection = HBufC::NewL( iLength ); - iSection.Set(iHBufferSection->Des()); - - iSubOffset = 0; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: NewL - - Description: Two-phased constructor. - - Parameters: const TInt aLength: in: Parsed section length - - Return Values: CStifSectionParser* : pointer to CStifSectionParser object - - Errors/Exceptions: Leaves if section length is negative - Leaves if construction fails - - Status: Approved - -------------------------------------------------------------------------------- -*/ -CStifSectionParser* CStifSectionParser::NewL( const TInt aLength ) - { - __TRACE( KInfo, ( _L( "STIFPARSER: Create a section" ) ) ); - __ASSERT_ALWAYS( aLength > 0, User::Leave( KErrArgument ) ); - - CStifSectionParser* item = new (ELeave) CStifSectionParser( aLength ); - - CleanupStack::PushL( item ); - item->ConstructL(); - CleanupStack::Pop( item ); - - return item; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: ~CStifSectionParser - - Description: Destructor - - Parameters: None - - Return Values: None - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -CStifSectionParser::~CStifSectionParser() - { - __TRACE( KInfo, ( _L( "STIFPARSER: Call destructor '~CStifSectionParser'" ) ) ); - - delete iHBufferSection; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: ParseStartAndEndPos - - Description: Start and end position parser. - - Parameters: TPtrC aSection: in: Parsed section - const TDesC& aStartTag: in: Start tag of parsing - TTagToReturnValue aTagIndicator: in: Will aStartTag included to - the returned values - TInt& aStartPos: inout: Start point of parsing - TInt& aEndPos: inout: End point of parsing - TInt& aLength: inout: Length of parsed section - - Return Values: TInt: Error code - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TInt CStifSectionParser::ParseStartAndEndPos( TPtrC aSection, - const TDesC& aStartTag, - TTagToReturnValue aTagIndicator, - TInt& aStartPos, - TInt& aEndPos, - TInt& aLength ) - { - TLex lex( aSection ); - lex.SkipAndMark( iSkipAndMarkPos ); - - // Check is aStartTag given - if ( aStartTag.Length() == 0 ) - { - // Skip line break, tabs, spaces etc. - lex.SkipSpace(); - aStartPos = lex.Offset(); - } - else - { - // While end of section and aStartTag is given - while ( !lex.Eos() ) - { - lex.SkipSpace(); - TPtrC line = SubstractLine( lex.Remainder() ); - TInt tagStartPos = 0; - TInt tagEndPos = 0; - if ( FindTag( line, aStartTag, tagStartPos, tagEndPos ) == KErrNone ) - { - if ( aTagIndicator == ETag ) - { - aStartPos = lex.Offset(); - } - else - { - aStartPos = lex.Offset() + tagEndPos; - if ( line.Length() - tagEndPos == 0 ) - { - return KErrNotFound; - } - } - break; - } - - GotoEndOfLine( lex ); - } - } - - // End tag parsing starts and if we are end of the section - if( lex.Eos() ) - { - return KErrNotFound; - } - - // "Delete" white spaces(includes line break) - aEndPos = GotoEndOfLine( lex ); - // Position where start next parsing.(End position, includes white spaces) - iSkipAndMarkPos = lex.Offset(); - // The length includes spaces and end of lines - aLength = ( aEndPos - aStartPos ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: SubstractLine - - Description: Substracts line from selected text - - Parameters: TPtrC& aText: in: text. - - Return Values: TPtrC: Substracted line. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TPtrC CStifSectionParser::SubstractLine( const TPtrC& aText ) - { - TLex lex( aText ); - - while( !lex.Eos() ) - { - if ( lex.Get() == 0x0A ) // "\n" character. Unix style - { - break; - } - } - - return aText.Left( lex.Offset() ); - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: FindTag - - Description: Searches for selected tag in text - - Parameters: const TPtrC& aText: in: text, - const TPtrC& aTag: in: tag, - TInt& aStartPos: out: tag start position, - TInt& aEndPos: out: tag end position. - - Return Values: TInt: KErrNone, if tag was found. KErrNotFound if it was not found. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TInt CStifSectionParser::FindTag( const TDesC& aText, const TDesC& aTag, TInt& aStartPos, TInt& aEndPos ) { - TBool tagWithEqualChar = EFalse; - - HBufC* tagBuf = NULL; - TRAPD( err, tagBuf = aTag.AllocL() ); - if ( err != KErrNone ) - { - return err; - } - - RBuf tag( tagBuf ); - tag.Trim(); - if ( tag.Right( 1 ) == _L("=") ) - { - tagWithEqualChar = ETrue; - tag.SetLength( tag.Length() - 1 ); - } - - TLex lex(aText); - lex.SkipSpaceAndMark(); - TInt startPos = lex.Offset(); - TPtrC token = lex.NextToken(); - - - if ( !tagWithEqualChar ) - { - if ( token == tag ) - { - aStartPos = startPos; - lex.SkipSpace(); - aEndPos = lex.Offset(); - tag.Close(); - return KErrNone; - } - } - else - { - lex.UnGetToMark(); - TPtrC remText = lex.Remainder(); - if ( remText.Find( tag ) == 0 ) - { - lex.SkipAndMark( tag.Length() ); - lex.SkipSpaceAndMark(); - if ( !lex.Eos() ) - { - if ( lex.Get() == '=' ) - { - aStartPos = startPos; - lex.SkipSpace(); - aEndPos = lex.Offset(); - tag.Close(); - return KErrNone; - } - } - } - } - - tag.Close(); - return KErrNotFound; -} - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GotoEndOfLine - - Description: Goes end of the line. - - Parameters: TLex& lex: inout: Parsed line. - - Return Values: TInt: Last item's end position. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TInt CStifSectionParser::GotoEndOfLine( TLex& lex ) - { - // End position of the last token(Initialized with current position) - TInt lastItemPosition( lex.Offset() ); - - // LINE BREAK NOTE: - // Line break in SOS, WIN: '\r\n' - // Line break in UNIX: '\n' - - do - { - // Peek next character(10 or '\n' in UNIX style ) - if( lex.Peek() == 0x0A ) - { - lex.Inc(); - break; - } - - // Peek next character(13 or '\r' in Symbian OS) - if ( lex.Peek() == 0x0D ) - { - // Increment the lex position - lex.Inc(); - // Peek next character(10 or '\n' in Symbian OS) - if ( lex.Peek() == 0x0A ) - { - // End of the section is found and increment the lex position - lex.Inc(); - break; - } - // 0x0A not found, decrement position - lex.UnGet(); - } - // Peek for tabulator(0x09) and space(0x20) - else if ( lex.Peek() == 0x09 || lex.Peek() == 0x20 ) - { - // Increment the lex position - lex.Inc(); - continue; - } - - // If white spaces not found take next token - lex.NextToken(); - lastItemPosition = lex.Offset(); - - } while ( !lex.Eos() ); - - return lastItemPosition; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetItemLineL - - Description: Parses a line for items parsing. - - If start tag is empty the parsing starts beging of the section. - - Parameters: const TDesC& aTag: in: Indicates parsing start point. - TTagToReturnValue aTagIndicator: in: Will aTag included to the - returned object(For default the tag will be added) - - Return Values: CStifItemParser* : pointer to CStifItemParser object - NULL will return if ParseStartAndEndPos() method returns -1 - NULL will return if length is 0 or negative - NULL will return if iStartPos is 0 - - Errors/Exceptions: Leaves if called CStifItemParser::NewL method fails - - Status: Approved - -------------------------------------------------------------------------------- -*/ -EXPORT_C CStifItemParser* CStifSectionParser::GetItemLineL( const TDesC& aTag, - TTagToReturnValue aTagIndicator ) - { - TInt startPos( 0 ); - TInt endPos( 0 ); - TInt length( 0 ); - - // Indicator that GetItemLineL has been used - iLineIndicator = ETrue; - - iSkipAndMarkPos = 0; - - TInt ret = ParseStartAndEndPos( iSection, aTag, aTagIndicator, - startPos, endPos, length ); - - // No parsing found - if ( KErrNone != ret || length <= 0 || startPos < 0 ) - { - __TRACE( - KInfo, ( _L( "STIFPARSER: GetItemLineL method returns a NULL" ) ) ); - return NULL; - } - - CStifItemParser* line = CStifItemParser::NewL( - iSection, startPos, length ); - - return line; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetNextItemLineL - - Description: Parses a next line for items parsing. - - Parameters: None - - Return Values: CStifItemParser* : pointer to CStifItemParser object - NULL will return if iLineIndicator is false - NULL will return if ParseStartAndEndPos() method returns -1 - NULL will return if length is 0 or negative - NULL will return if iStartPos is 0 - - Errors/Exceptions: Leaves if called CStifItemParser::NewL method fails - - Status: Approved - -------------------------------------------------------------------------------- -*/ -EXPORT_C CStifItemParser* CStifSectionParser::GetNextItemLineL() - { - // GetLine() or GetItemLineL() method is not called - if ( !iLineIndicator ) - { - __TRACE( KInfo, - ( _L( "STIFPARSER: GetNextItemLineL method returns a NULL" ) ) ); - return NULL; - } - - TInt startPos( 0 ); - TInt endPos( 0 ); - TInt length( 0 ); - - // tagIndicator has no meaning in this method - TTagToReturnValue tagIndicator( ETag ); - - TInt ret = ParseStartAndEndPos( iSection, KNullDesC, tagIndicator, - startPos, endPos, length ); - - // No parsing found - if ( KErrNone != ret || length <= 0 || startPos < 0 ) - { - __TRACE( KInfo, - ( _L( "STIFPARSER: GetNextItemLineL method returns a NULL" ) ) ); - return NULL; - } - - CStifItemParser* line = CStifItemParser::NewL( - iSection, startPos, length ); - - return line; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetNextItemLineL - - Description: Parses a next line for items parsing with a tag. - - If start tag is empty the parsing starts beging of the section. - - Parameters: const TDesC& aTag: in: Indicates parsing start point - TTagToReturnValue aTagIndicator: in: Will aTag included to the - returned object(For default the tag will be added) - - Return Values: CStifItemParser* : pointer to CStifItemParser object - NULL will return if iLineIndicator is false - NULL will return if ParseStartAndEndPos() method returns -1 - NULL will return if length is 0 or negative - NULL will return if iStartPos is 0 - - Errors/Exceptions: Leaves if called CStifItemParser::NewL method fails - - Status: Approved - -------------------------------------------------------------------------------- -*/ -EXPORT_C CStifItemParser* CStifSectionParser::GetNextItemLineL( - const TDesC& aTag, - TTagToReturnValue aTagIndicator ) - { - // GetLine() or GetItemLineL() method is not called - if ( !iLineIndicator ) - { - __TRACE( KInfo, - ( _L( "STIFPARSER: GetNextItemLineL method returns a NULL" ) ) ); - return NULL; - } - - TInt startPos( 0 ); - TInt endPos( 0 ); - TInt length( 0 ); - - TInt ret = ParseStartAndEndPos( iSection, aTag, aTagIndicator, - startPos, endPos, length ); - // No parsing found - if ( KErrNone != ret || length <= 0 || startPos < 0 ) - { - __TRACE( KInfo, - ( _L( "STIFPARSER: GetNextItemLineL method returns a NULL" ) ) ); - return NULL; - } - - CStifItemParser* line = CStifItemParser::NewL( - iSection, startPos, length ); - - return line; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: SubSectionL - - Description: Parses sub sections from the main section. - - If start tag is empty the parsing starts begin of the section. - If end tag is empty the parsing goes end of section. - This method starts always from beginning of parsed section and parses - first subsection if aSeeked parameters is not given. - If parsed section includes several subsections with both start and end - tags so aSeeked parameter seeks the required subsection. The aSeeked - parameters indicates subsection that will be parsed. - - Parameters: const TDesC& aStartTag: in: Indicates parsing start point - const TDesC& aEndTag: in: Indicates parsing end point - TInt aSeeked: in: a seeked subsection which will be parsed - - Return Values: CStifItemParser* : pointer to CStifItemParser object - NULL will return if end tag is not found - NULL will return if length is 0 or negative - NULL will return if lengthStart is 0 - - Errors/Exceptions: Leaves if called CStifSectionParser::NewL method fails - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -EXPORT_C CStifSectionParser* CStifSectionParser::SubSectionL( - const TDesC& aStartTag, - const TDesC& aEndTag, - TInt aSeeked ) - { - - iSubOffset = 0; - return NextSubSectionL( aStartTag, aEndTag, aSeeked ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: SubSectionL - - Description: Parses subsections from the main section. - - If start tag is empty the parsing starts begin of the section. - If end tag is empty the parsing goes end of section. - This method will parse next subsection after the earlier subsection if - aSeeked parameter is not given. - If parser section includes several subsections with both start and end - tags so aSeeked parameter seeks the required subsection. The aSeeked - parameter indicates subsection that will be parsed. - - Parameters: const TDesC& aStartTag: in: Indicates parsing start point - const TDesC& aEndTag: in: Indicates parsing end point - TInt aSeeked: in: a seeked subsection which will be parsed - - Return Values: CStifItemParser* : pointer to CStifItemParser object - NULL will return if end tag is not found - NULL will return if length is 0 or negative - NULL will return if lengthStart is 0 - - Errors/Exceptions: Leaves if called CStifSectionParser::NewL method fails - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -EXPORT_C CStifSectionParser* CStifSectionParser::NextSubSectionL( - const TDesC& aStartTag, - const TDesC& aEndTag, - TInt aSeeked ) - { - - TLex lex( iSection ); - - lex.SkipAndMark( iSubOffset ); - - // Get the required sub section length - TInt length( 0 ); - TInt lengthStartPos( 0 ); - TInt lengthEndPos( 0 ); - TBool eos( EFalse ); - TInt tagCount( 1 ); - - // Check is aStartTag given - if ( aStartTag.Length() == 0 ) - { - // Skip line break, tabs, spaces etc. - lex.SkipSpace(); - lengthStartPos = lex.Offset(); - } - else - { - // While end of section and aStartTag is given - while ( !lex.Eos() ) - { - TPtrC ptr = lex.NextToken(); - // Start of the section is found and correct section - if ( ptr == aStartTag && tagCount == aSeeked ) - { - // Start position - lengthStartPos = lex.Offset(); - break; - } - // Start tag is found but not correct section - else if ( ptr == aStartTag ) - { - tagCount++; - } - } - } - - // If we are end of section lex.Eos() and eos will be ETrue - eos = lex.Eos(); - - // Seeked section is not found - if ( tagCount != aSeeked ) - { - __TRACE( KInfo, ( _L( "STIFPARSER: NextSubSectionL method: Seeked subsection is not found" ) ) ); - User::Leave( KErrNotFound ); - } - - // Check is aEndTag given - if ( aEndTag.Length() == 0 ) - { - lengthEndPos = iSection.MaxLength(); - } - else - { - // While end of section and aEndTag is given - while ( !lex.Eos() ) - { - TPtrC ptr = lex.NextToken(); - // End tag of the section is found - if ( ptr == aEndTag ) - { - // End position - lengthEndPos = lex.Offset(); - // Because Offset() position is after the aEndTag - lengthEndPos -= aEndTag.Length(); - break; - } - } - } - - // If we are end of section and lengthEndPos is 0 - if ( lengthEndPos == 0 ) - { - // lex.Eos() and eos will be ETrue - eos = lex.Eos(); - } - - // The length includes spaces and end of lines - length = ( lengthEndPos - lengthStartPos ); - - CStifSectionParser* section = NULL; - - // If eos is true or length is negative - if ( eos || length <= 0 ) - { - __TRACE( KInfo, - ( _L( "STIFPARSER: SubSectionL method returns a NULL" ) ) ); - } - else - { - // Position where start next parsing.(End position, - // includes white spaces) - iSubOffset = lex.Offset(); - - // Make CStifSectionParser object and alloc required length - section = CStifSectionParser::NewL( length ); - CleanupStack::PushL( section ); - - // Copy required data to the section object - section->SetData( iSection, lengthStartPos, length ); - - CleanupStack::Pop( section ); - } - - return section; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetLine - - Description: Get a line. - - Search an item from the section and return rest of the line. If start tag - is empty the parsing starts beging of the section. - - Parameters: const TDesC& aTag: in: Indicates parsing start point - TPtr& aLine: inout: Parsed line - TTagToReturnValue aTagIndicator: in: Will aTag included to the - returned value(For default the tag will be added) - - Return Values: TInt: Error code - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifSectionParser::GetLine( const TDesC& aTag, - TPtrC& aLine, - TTagToReturnValue aTagIndicator ) - { - TInt ret( KErrNone ); - - if ( 0 == iSection.Length() ) - { - return KErrNotFound; - } - - // Indicator that GetLine has been used - iLineIndicator = ETrue; - - TInt startPos( 0 ); - TInt endPos( 0 ); - TInt length( 0 ); - - iSkipAndMarkPos = 0; - - ret = ParseStartAndEndPos( iSection, aTag, aTagIndicator, - startPos, endPos, length ); - - if ( KErrNone != ret ) - { - // Nothing to parse - return ret; - } - - aLine.Set( &iSection[startPos], length ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetNextLine - - Description: Get a line - - Search an item from the section and return rest of the line. - - Parameters: TPtr& aLine: inout: Parsed line - - Return Values: TInt: Error code - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifSectionParser::GetNextLine( TPtrC& aLine ) - { - TInt ret( KErrNone ); - - // GetLine() or GetItemLineL() method is not called - if ( !iLineIndicator ) - { - return KErrNotReady; - } - - TInt startPos( 0 ); - TInt endPos( 0 ); - TInt length( 0 ); - - // tagIndicator has no meaning in this method - TTagToReturnValue tagIndicator( ETag ); - - ret = ParseStartAndEndPos( iSection, KNullDesC, tagIndicator, - startPos, endPos, length ); - if ( KErrNone != ret ) - { - // Nothing to parse - return ret; - } - - aLine.Set( &iSection[startPos], length ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetNextLine - - Description: Get a line with tag - - Search a next line with the required tag from the section. If start tag - is empty the parsing starts beging of the section. - - Parameters: const TDesC& aTag: in: Indicates parsing start point - TPtr& aLine: inout: Parsed line - TTagToReturnValue aTagIndicator: in: Will aTag included to the - returned value(For default the tag will be added) - - Return Values: TInt: Error code - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifSectionParser::GetNextLine( const TDesC& aTag, TPtrC& aLine, - TTagToReturnValue aTagIndicator ) - { - TInt ret( KErrNone ); - - // GetLine() or GetItemLineL() method is not called - if ( !iLineIndicator ) - { - return KErrNotReady; - } - - TInt startPos( 0 ); - TInt endPos( 0 ); - TInt length( 0 ); - - ret = ParseStartAndEndPos( iSection, aTag, aTagIndicator, - startPos, endPos, length ); - if ( KErrNone != ret ) - { - // Nothing to parse - return ret; - } - - aLine.Set( &iSection[startPos], length ); - - return KErrNone; - - } - - /* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: GetPosition - - Description: Get current position. - - Returns current parsing position, which - can be used as parameter for SetPosition afterwards to go back - to old parsing position. - - Parameters: None - - Return Values: TInt: Current parsing position. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifSectionParser::GetPosition() - { - - return iSkipAndMarkPos; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: SetPosition - - Description: Set current position. - - SetPosition can be used to set parsing position, e.g. to rewind - back to some old position retrieved with GetPosition. - - Parameters: TInt aPos: in: new parsing position. - - Return Values: TInt: Error code - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifSectionParser::SetPosition( TInt aPos ) - { - - if( aPos < 0 || aPos >= iSection.Length() ) - { - return KErrArgument; - } - - iSkipAndMarkPos = aPos; - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: SetData - - Description: Create a section. - - Parameters: const TPtr aData: in: Data to be parsed - TInt aStartPos: in: Indicates parsing start position - TInt aLength: in: Indicates length of parsed section - - Return Values: None - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -void CStifSectionParser::SetData( TPtr aData, - TInt aStartPos, - TInt aLength ) - { - iSection.Copy( aData.Mid( aStartPos, aLength ) ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifSectionParser - - Method: Des - - Description: Returns a section. - - Parameters: None - - Return Values: const TPtrC: Returns a current section - - Errors/Exceptions: None - - Status: Approved - -------------------------------------------------------------------------------- -*/ -const TPtrC CStifSectionParser::Des() - { - return (TPtrC)iSection; - - } - -// ================= OTHER EXPORTED FUNCTIONS ================================= - -// End of File