stif/Parser/src/StifItemParser.cpp
branchRCL_3
changeset 40 07b41fa8d1dd
parent 39 3406c99bc375
child 43 ca8a1b6995f6
--- a/stif/Parser/src/StifItemParser.cpp	Thu Jul 15 20:25:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1247 +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 CStifItemParser 
-* class member functions.
-*
-*/
-
-// INCLUDE FILES
-#include <e32std.h>
-#include "StifItemParser.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
-
-/*
--------------------------------------------------------------------------------
-
-    DESCRIPTION
-
-    This module contains implementation of CStifItemParser class member
-    functions.
-
--------------------------------------------------------------------------------
-*/
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: CStifItemParser
-
-    Description: Default constructor
-
-    C++ default constructor can NOT contain any code, that
-    might leave.
-    
-    Parameters: TPtrC aSection: in: Parsed section
-                TInt aStartPos: in: Start point of parsing
-                TInt aLength: in: Length of parsed section
-    
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CStifItemParser::CStifItemParser( TPtrC aSection,
-                                    TInt aStartPos,
-                                    TInt aLength ) :
-    iItemLineSection( aSection.Mid( aStartPos, aLength ) ),
-    iItemSkipAndMarkPos( 0 ),
-    iGetMethodsIndicator( EFalse ),
-    iParsingType( CStifItemParser::ENormalParsing ) // Mode ON
-    {
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: ConstructL
-
-    Description: Symbian OS second phase constructor
-
-    Symbian OS default constructor can leave.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CStifItemParser::ConstructL()
-    {
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: NewL
-
-    Description: Two-phased constructor.
-
-    Parameters: TPtrC aSection: in: Parsed section
-                TInt aStartPos: in: Start point of parsing
-                TInt aLength: in: Length of parsed section
-
-    Return Values: CStifItemParser*: pointer to CStifItemParser object
-
-    Errors/Exceptions:  Leaves if memory allocation fails
-                        Leaves if ConstructL leaves
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CStifItemParser* CStifItemParser::NewL( TPtrC aSection,
-                                                    TInt aStartPos,
-                                                    TInt aLength )
-    {
-    CStifItemParser* item = new (ELeave) CStifItemParser( aSection, aStartPos,
-                                                            aLength );
-
-    CleanupStack::PushL( item );
-    item->ConstructL();
-    CleanupStack::Pop( item );
-
-    return item;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: ~CStifItemParser
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/    
-CStifItemParser::~CStifItemParser()
-    {
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: ParseStartAndEndPos
-
-    Description: Start and end position parser.
-                 Handles also quote feature parsing. EQuoteStyleParsing
-                 option removes correctly setted quotes(" and ").
-
-    Parameters: TPtrC aSection: in: Parsed section
-                const TDesC& aStartTag: in: Start tag of parsing
-                TInt& aStartPos: inout: Start point of parsing
-                TInt& aEndPos: inout: End point of parsing
-                TInt& aLength: inout: Length of parsed section
-                TInt& aExtraEndPos: inout: Used if end position needs to
-                                           set, e.g. used in quote cases.
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-
-TInt CStifItemParser::ParseStartAndEndPos( TPtrC aSection,
-                                        const TDesC& aStartTag,
-                                        TInt& aStartPos,
-                                        TInt& aEndPos,
-                                        TInt& aLength,
-                                        TInt& aExtraEndPos )
-    {
-    aStartPos = 0;
-    aEndPos = 0;
-    aExtraEndPos = 0; // Normally this is 0    
-    
-    RBuf tag( aStartTag.AllocL() );
-    // Remove whitespaces at the begining and end of the tag
-    tag.Trim();
-    
-    // Create parser
-    TLex lex( aSection );
-    // Move parsing pointer to position from which parsing will start 
-    lex.SkipAndMark( iItemSkipAndMarkPos );
-    
-    TBool tagWithEqualMark = EFalse;
-    
-    // Check if tag is defined
-    if ( tag.Length() != 0 )
-    	{
-    	// Check if tag contains '=' character at the end.
-    	// If tag is "=" then we treat it as normal tag (not as tag with '=' 
-    	// character).
-        if ( ( tag.Length() > 1 ) && ( tag.Right( 1 ) == _L("=") ) )
-        	{
-        	// Tag contains '=' character. Remove '=' so only clean tag remains. 
-        	tagWithEqualMark = ETrue;
-        	tag.SetLength( tag.Length() - 1 );
-        	tag.Trim();
-        	}
-
-		// Search for specified tag in parsed text
-		while( !lex.Eos() )
-			{
-			lex.SkipSpaceAndMark();
-			TPtrC token = lex.NextToken();
-			if ( tagWithEqualMark ) 
-				{
-				if ( ( token == tag ) && ( !lex.Eos() ) ) // "tag = val" or "tag =val" 
-					{
-					lex.SkipSpaceAndMark();
-					TPtrC val = lex.NextToken();
-					lex.UnGetToMark();
-					if ( val == _L("=") ) // "tag = val"
-						{
-						lex.Inc();
-						break;
-						}
-					else	// "tag =val"
-						{
-						if ( val.Left( 1 ) == _L("=") )
-							{
-							// Skip "=" character.
-							lex.Inc();
-							break;
-							}
-						else // We didn't find any variation of "tag="
-							{
-							lex.UnGetToMark();
-							}
-						}
-					}
-				else // "tag=val" or "tag= val"
-					{
-					// It handles both situations
-					if ( ( token.Find( tag ) == 0 ) && ( token.Find( _L("=") ) == tag.Length() ) )
-						{
-						lex.UnGetToMark();
-						lex.SkipAndMark( tag.Length() + 1 );
-						lex.SkipSpace();
-						break;
-						}
-					}
-				}
-			else
-				{
-				// Tag without '=' character. Just compare.
-    			if ( token == tag )
-    				{
-    				break;
-    				}
-				}
-			}
-		
-		// Check if we are at the end of parsed text
-		if ( lex.Eos() )
-			{
-			// We are at the end of parsed text. Eaven if we found tag its value
-			// is not defined.
-			tag.Close();
-			return KErrNotFound;
-			}
-    		    	
-    	}
-    
-    tag.Close();       
-
-	if( iParsingType == CStifItemParser::ENormalParsing )
-		{
-        TPtrC ptr = lex.NextToken();
-        aEndPos = lex.Offset();             // End position
-        aStartPos = aEndPos - ptr.Length(); // Start position    		
-		}
-	else
-		{
-		lex.SkipSpaceAndMark();		
-		TPtrC token = lex.NextToken();
-		lex.UnGetToMark();
-		
-		if ( token.Length() == 0 )
-			{
-			return KErrNotFound;
-			}
-		
-		if ( token.Left( 1 ) == _L("\"") )
-			{
-			lex.Inc();
-			aStartPos = lex.Offset();
-			
-			TBool foundEndingQuoteMark = false;
-			while( !lex.Eos() )
-				{
-				if ( lex.Get() == '"' ) 
-					{
-					foundEndingQuoteMark = ETrue;
-					break;;
-					}
-				}
-
-			if ( foundEndingQuoteMark )
-				{
-				aEndPos = lex.Offset() - 1;
-				if ( aEndPos > aStartPos )
-					{
-					aExtraEndPos = 1;
-					}
-				else
-					{
-					aStartPos--;
-					aEndPos++;
-					}
-				}
-			else
-				{
-				lex.UnGetToMark();
-				aStartPos = lex.Offset();
-	            TPtrC ptr = lex.NextToken();
-	            aEndPos = lex.Offset();             // End position	            
-				}			
-			}
-		else
-			{
-            TPtrC ptr = lex.NextToken();
-            aEndPos = lex.Offset();             // End position
-            aStartPos = aEndPos - ptr.Length(); // Start position    		
-			}
-		}
-
-    aLength = ( aEndPos - aStartPos );      
-    
-    // aStartPos is negative (0 is allowed) or length is negative
-    if( ( aLength <= 0 ) && ( iParsingType == CStifItemParser::ENormalParsing ) )
-        {
-        return KErrNotFound;
-        }
-    
-    return KErrNone;    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetString
-
-    Description: Get a string.
-
-    Search an item from the section and return everything after the item until
-    separator cut the parsing.
-    If start tag is empty the first string will be parsed and returned.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TPtrC& aString: inout: Parsed string
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetString( const TDesC& aTag, TPtrC& aString )
-    {
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-
-    iItemSkipAndMarkPos = 0;
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret)
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos + extraEndPos;
-
-    // Take string
-    aString.Set( (TUint16*)&iItemLineSection[startPos], length );
-
-    // Indicator that GetString has been used
-    iGetMethodsIndicator = ETrue;
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextString
-
-    Description: Get a next string.
-
-    Get next string until separator cut the parsing. GetString or GetInt or
-    GetChar must be called before call GetNextString method.
-
-    Parameters: TPtrC& aString: inout: Parsed string
-    
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-    
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextString( TPtrC& aString )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, KNullDesC, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret)
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos + extraEndPos;
-
-    // Take string
-    aString.Set( (TUint16*)&iItemLineSection[startPos], length );
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextString
-
-    Description: Get a next string with tag.
-
-    Get next string with tag until separator cut the parsing. If start tag is
-    empty the next string will be parsed and returned.
-    GetString or GetInt or GetChar must be called before call GetNextString
-    method.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TPtrC& aString: inout: Parsed string
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextString( const TDesC& aTag,
-                                                TPtrC& aString )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret)
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos + extraEndPos;
-
-    // Take string
-    aString.Set( (TUint16*)&iItemLineSection[startPos], length );
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetInt
-
-    Description: Get a integer.
-
-    Search an item from the section and return integer after the item until 
-    separator cut the parsing.
-    If start tag is empty the first integer will be parsed and returned.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TInt& aInteger: inout: Parsed integer
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetInt( const TDesC& aTag, TInt& aInteger )
-    {
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-
-    iItemSkipAndMarkPos = 0;
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos;
-
-    // Indicator that GetInt has been used
-    iGetMethodsIndicator = ETrue;
-
-    // Take integer
-    TLex lex( iItemLineSection );
-    // Mark to current position of parsing
-    lex.SkipAndMark( startPos );
-    lex.SkipSpace();
-    return lex.Val( aInteger );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextInt
-
-    Description: Get a next integer.
-
-    Get next integer until separator cut the parsing and returns it.
-    GetString or GetInt or GetChar must be called before call GetNextInt
-    method.
-
-    Parameters: TInt& aInteger: inout: Parsed integer
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextInt( TInt& aInteger )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, KNullDesC, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos;
-
-    // Take integer
-    TLex lex( iItemLineSection );
-    // Mark to current position of parsing
-    lex.SkipAndMark( startPos );
-    lex.SkipSpace();
-    return lex.Val( aInteger );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextInt
-
-    Description: Get a next integer with tag.
-
-    Get next integer with tag until separator cut the parsing. If start tag is
-    empty the next integer will be parsed and returned.
-    GetString or GetInt or GetChar must be called before call GetNextInt
-    method.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TInt& aInteger: inout: Parsed integer
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextInt( const TDesC& aTag, TInt& aInteger )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos;
-
-    // Take integer
-    TLex lex( iItemLineSection );
-    // Mark to current position of parsing
-    lex.SkipAndMark( startPos );
-    lex.SkipSpace();
-    return lex.Val( aInteger );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetInt
-
-    Description: Get a integer.
-
-    Search an item from the section and return integer after the item until 
-    separator cut the parsing.
-    If start tag is empty the first integer will be parsed and returned.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TUint& aInteger: inout: Parsed integer
-                TRadix aRadix: in: Convert a number into different
-                presentation. For default: EDecimal.
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetInt( const TDesC& aTag,
-                                        TUint& aInteger,
-                                        TRadix aRadix )
-    {
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-
-    iItemSkipAndMarkPos = 0;
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos;
-
-    // Indicator that GetInt has been used
-    iGetMethodsIndicator = ETrue;
-
-    // Take integer
-    TLex lex( iItemLineSection );
-    // Mark to current position of parsing
-    lex.SkipAndMark( startPos );
-    lex.SkipSpace();
-    // NOTE: If parsed integer is e.g. '-1' and aRadix is EDesimal the lex will
-    // return error code -2(KErrGeneral). Main reason is for this new TUint
-    // method that cast operation does not work in above case and -2 returned.
-    // In this case use GetInt method that reference type is TInt.
-    return lex.Val( aInteger, aRadix );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextInt
-
-    Description: Get a next integer.
-
-    Get next integer until separator cut the parsing and returns it.
-    GetString or GetInt or GetChar must be called before call GetNextInt
-    method.
-
-    Parameters: TUint& aInteger: inout: Parsed integer
-                TRadix aRadix: in: Convert a number into different
-                presentation. For default: EDecimal.
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextInt( TUint& aInteger,
-                                            TRadix aRadix )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, KNullDesC, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos;
-
-    // Take integer
-    TLex lex( iItemLineSection );
-    // Mark to current position of parsing
-    lex.SkipAndMark( startPos );
-    lex.SkipSpace();
-    // NOTE: If parsed integer is e.g. '-1' and aRadix is EDesimal the lex will
-    // return error code -2(KErrGeneral). Main reason is for this new TUint
-    // method that cast operation does not work in above case and -2 returned.
-    // In this case use GetNextInt method that reference type is TInt.
-    return lex.Val( aInteger, aRadix );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextInt
-
-    Description: Get a next integer with tag.
-
-    Get next integer with tag until separator cut the parsing. If start tag is
-    empty the next integer will be parsed and returned.
-    GetString or GetInt or GetChar must be called before call GetNextInt
-    method.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TUint& aInteger: inout: Parsed integer
-                TRadix aRadix: in: Convert a number into different
-                presentation. For default: EDecimal.
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextInt( const TDesC& aTag,
-                                            TUint& aInteger,
-                                            TRadix aRadix )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = endPos;
-
-    // Take integer
-    TLex lex( iItemLineSection );
-    // Mark to current position of parsing
-    lex.SkipAndMark( startPos );
-    lex.SkipSpace();
-    // NOTE: If parsed integer is e.g. '-1' and aRadix is EDesimal the lex will
-    // return error code -2(KErrGeneral). Main reason is for this new TUint
-    // method that cast operation does not work in above case and -2 returned.
-    // In this case use GetNextInt method that reference type is TInt.
-    return lex.Val( aInteger, aRadix );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetChar
-
-    Description: Get a character.
-
-    Search an item from the section and return character after the item.
-    If start tag is empty the first character will be parsed and returned.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TChar& aCharacter: inout: Parsed character
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetChar( const TDesC& aTag, TChar& aCharacter )
-    {
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-
-    iItemSkipAndMarkPos = 0;
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = startPos + 1;
-
-    // Take character
-    aCharacter = iItemLineSection[startPos];
-
-    // Indicator that GetChar has been used
-    iGetMethodsIndicator = ETrue;
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextChar
-
-    Description: Get a next character.
-
-    Get next character and returns it.
-    GetString or GetInt or GetChar must be called before call GetNextChar
-    method.
-
-    Parameters: TChar& aCharacter: inout: Parsed character
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextChar( TChar& aCharacter )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, KNullDesC, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = startPos + 1;
-
-    // Take character
-    aCharacter = iItemLineSection[startPos];
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: GetNextChar
-
-    Description: Get a next character with tag.
-
-    Get next character with tag until separator cut the parsing. If start tag
-    is empty the next character will be parsed and returned.
-    GetString or GetInt or GetChar must be called before call GetNextChar
-    method.
-
-    Parameters: const TDesC& aTag: in: Indicates parsing start point
-                TChar& aCharacter: inout: Parsed character
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::GetNextChar( const TDesC& aTag,
-                                            TChar& aCharacter )
-    {
-    // GetString(), GetInt() or GetChar() is not called
-    if ( !iGetMethodsIndicator )
-        {
-        return KErrNotReady;
-        }
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    TInt startPos( 0 );
-    TInt endPos( 0 );
-    TInt length( 0 );
-    TInt extraEndPos( 0 );
-    TInt ret = ParseStartAndEndPos( iItemLineSection, aTag, startPos,
-                                    endPos, length, extraEndPos );
-    if ( KErrNone != ret )
-        {
-        // Nothing to parse
-        return ret;
-        }
-
-    // Current position for forward parsing operations
-    iItemSkipAndMarkPos = startPos + 1;
-
-    // Take character
-    aCharacter = iItemLineSection[startPos];
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: Remainder
-
-    Description: Get remaining strings in parsed line.
-                 
-                 Note: This method does not support the quote(TParsingType)
-                 feature, only GetString and GetNextString methods include
-                 support.
-
-    Parameters: TPtrC& aString: inout: Parsed string
-
-    Return Values: TInt: Error code
-
-    Errors/Exceptions: None
-
-    Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::Remainder( TPtrC& aString )
-    {
-    
-    if ( 0 == iItemLineSection.Length() )
-        {
-        // Probably parsering is failed
-        return KErrNotFound;
-        }
-
-    if( iItemLineSection.Length() <= iItemSkipAndMarkPos )
-        {
-        // Nothing to parse, check here to avoid lex's crash
-        return KErrNotFound;
-        }
-
-    // Skip space
-    TLex lex( iItemLineSection );
-    lex.SkipAndMark( iItemSkipAndMarkPos );
-    lex.SkipSpace();
-    
-    if( lex.Eos() )
-        {
-        // Remaining are only spaces. To avoid Set()'s panic
-        return KErrNotFound;
-        }
-
-    // Take string
-    aString.Set( (TUint16*)&iItemLineSection[ lex.Offset() ], 
-                 iItemLineSection.Length() - lex.Offset() );
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: SetParsingType
-
-    Description: Parsing type can be given when parsing string(GetString and
-                 GetNextString). Please see TParsingType enumeration for more
-                 inforamtion.
-
-    Parameters: CStifItemParser::TParsingType aType: in: Sets a parsing type.
-
-    Return Values: TInt: Symbian error code
-
-    Errors/Exceptions: None
-
-    Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CStifItemParser::SetParsingType( 
-                                    CStifItemParser::TParsingType aType )
-    {
-    iParsingType = aType;
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStifItemParser
-
-    Method: ParsingType
-
-    Description: Get current parsing type. Please see TParsingType enumeration
-                 for more inforamtion.
-
-    Parameters: None
-
-    Return Values: CStifItemParser::TParsingType: Current parsing type.
-
-    Errors/Exceptions: None
-
-    Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CStifItemParser::TParsingType CStifItemParser::ParsingType()
-    {
-    return iParsingType;
-
-    }
-
-// ================= OTHER EXPORTED FUNCTIONS =================================
-
-// End of File