diff -r 000000000000 -r e4d67989cc36 genericservices/httputils/inc/DelimitedPath8.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericservices/httputils/inc/DelimitedPath8.h Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,153 @@ +// Copyright (c) 2001-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: +// + +#ifndef __DELIMITEDPATH8_H__ +#define __DELIMITEDPATH8_H__ + +/** + @file DelimitedPath8.h + Comments : This file contains the API definition for the classes + TDelimitedPathParser8 and CDelimitedPath16. + @publishedAll + @released + */ + +// System includes +// +#include +#include + + +/** +Dependencies : TDelimitedParserBase8 +Comments : Derived class from TDelimitedParserBase providing a class for parsing +paths delimited by a '/' as defined in RFC2396. +@publishedAll +@released +@since 6.0 +*/ +class TDelimitedPathParser8 : public TDelimitedParserBase8 + { +public: // Methods + + IMPORT_C TDelimitedPathParser8(); + + IMPORT_C void Parse(const TDesC8& aPath); + + IMPORT_C void ParseReverse(const TDesC8& aPath); + }; + +/** +Dependencies : CDelimitedStringBase8 +Comments : Provides functionality to create a delimited path where components of the +path delimited by '/' as defined in RFC2396. +@publishedAll +@released +@since 6.0 +*/ +class CDelimitedPath8 : public CDelimitedDataBase8 + { +public: // Methods + +/** + Static factory constructor. Uses two phase construction and leaves nothing + on the CleanupStack. + @since 6.0 + @param aPath A descriptor with the initial path. + @return A pointer to created object. + @post Nothing left on the CleanupStack. + */ + IMPORT_C static CDelimitedPath8* NewL(const TDesC8& aPath); + +/** + Static factory constructor. Uses two phase construction and leaves a + pointer to created object on the CleanupStack. + @since 6.0 + @param aPath A descriptor with the initial path. + @return A pointer to created object. + @post Pointer to created object left of CleanupStack. + */ + IMPORT_C static CDelimitedPath8* NewLC(const TDesC8& aPath); + +/** + Destructor. + @since 6.0 + */ + IMPORT_C ~CDelimitedPath8(); + +/** + Escape encodes the segment then inserts the escaped version in a + position before the current parsed segment. The new segment should only contain a + single path segment, as any path delimiters in the segment will be converted to an + escape triple. The parser is left in a state where its current segment is the same + one as before the insertion. + @since 6.0 + @param aSegment A descriptor with the unescaped path segment. + @pre The path must have been initially parsed. + @post The path will have been extended to include the new segment. The + current segment will remain as the one before the insertion. + */ + IMPORT_C void InsertAndEscapeCurrentL(const TDesC8& aSegment); + +/** + Escape encodes the segment then inserts the escaped version at + the front of the path. The new segment should only contain a single path segment, + as any path delimiters in the segment will be converted to an escape triple. The + parser is left in a state where its current segment is the same one as before + the insertion. + @warning A re-parse is required to ensure that the parser is valid. + @since 6.0 + @param aSegment A descriptor with the unescaped path segment. + @pre The delimiter must have been set. + @post The path will have been extended to include the new segment. + */ + IMPORT_C void PushAndEscapeFrontL(const TDesC8& aSegment); + +/** + Escape encodes the segment then inserts the escaped version at + the back of the path. The new segment should only contain a single path segment, + as any path delimiters in the segment will be converted to an escape triple. The + parser is left in a state where its current segment is the same one as before + the insertion. + @warning A re-parse is required to ensure that the parser is valid. + @since 6.0 + @param aSegment A descriptor with the unescaped path segment. + @pre The delimiter must have been set. + @post The path will have been extended to include the new segment. + */ + IMPORT_C void PushAndEscapeBackL(const TDesC8& aSegment); + +private: // Methods + +/** + Constructor. First phase of two-phase construction method. Does + non-allocating construction. + @since 6.0 + */ + CDelimitedPath8(); + +/** + Second phase of two-phase construction method. Does any allocations required + to fully construct the object. + @since 6.0 + @param aPath A descriptor with the initial path. + @pre First phase of construction is complete. + @post The object is fully constructed. + */ + void ConstructL(const TDesC8& aPath); + + }; + +#endif // __DELIMITEDPATH8_H__