williamr@2: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // This file contains the API definition for the classes TUriC16 and williamr@2: // CUri16. These classes provide non-modifying (TUriC16) and modifying williamr@2: // (CUri16) functionality for the components of a Uri as described in williamr@2: // RFC2396. williamr@2: // williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file Uri16.h williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1 williamr@2: */ williamr@2: williamr@2: #ifndef __URI16_H__ williamr@2: #define __URI16_H__ williamr@2: williamr@2: // System includes williamr@2: // williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: class TUriC16 williamr@2: /** williamr@2: Dependencies : TUriComponent. williamr@2: Comments : Provides non-modifying functionality on the components of a uri object as williamr@2: defined in RFC2396. There are 5 components; scheme, authority, path, query and fragment. williamr@2: williamr@2: The object holds descriptor pointers to the parsed uri components and a descriptor pointer williamr@2: to the uri. It is non-owning. It uses 16-bit descriptors. williamr@2: williamr@2: The functionality provided by this API allows the uri components to be extracted from the williamr@2: parsed uri, checked for their presence in the uri and be compared with those in another williamr@2: TUriC16 object. williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1 williamr@2: @since 6.0 williamr@2: */ williamr@2: { williamr@2: public: // Methods williamr@2: williamr@2: IMPORT_C HBufC* GetFileNameL() const; williamr@2: IMPORT_C HBufC* GetFileNameL(TUriFileName aType) const; williamr@2: IMPORT_C const TDesC16& Extract(TUriComponent aComponent) const; williamr@2: IMPORT_C void UriWithoutFragment(TPtrC16& aUriNoFrag) const; williamr@2: williamr@2: IMPORT_C TBool IsPresent(TUriComponent aComponent) const; williamr@2: IMPORT_C TBool IsSchemeValid() const; williamr@2: williamr@2: IMPORT_C TInt Compare(const TUriC16& aUri, TUriComponent aComponent) const; williamr@2: williamr@2: IMPORT_C const TDesC16& UriDes() const; williamr@2: williamr@2: IMPORT_C TInt Validate() const; williamr@2: IMPORT_C TInt Equivalent(const TUriC16& aUri) const; williamr@2: IMPORT_C HBufC* DisplayFormL(TUriComponent aComponent = EUriComplete) const; williamr@2: williamr@2: protected: // Methods williamr@2: williamr@2: IMPORT_C TUriC16(); williamr@2: williamr@2: void Reset(); williamr@2: williamr@2: private: // Methods williamr@2: williamr@2: TInt ValidateL() const; williamr@2: TInt EquivalentL(const TDesC16& aUri) const; williamr@2: williamr@2: protected: // Attributes williamr@2: williamr@2: /** The array of descriptor pointers to the uri components. williamr@2: */ williamr@2: TPtrC16 iComponent[EUriMaxComponents]; williamr@2: williamr@2: /** The descriptor pointer to the uri. williamr@2: */ williamr@2: TPtrC16 iUriDes; williamr@2: williamr@2: /** williamr@2: A friend class. williamr@2: @see CUri16 williamr@2: @since 6.0 williamr@2: */ williamr@2: friend class CUri16; williamr@2: williamr@2: /** williamr@2: A friend class used for testing. williamr@2: @see TUriC16StateAccessor williamr@2: @since 6.0 williamr@2: @internalComponent williamr@2: */ williamr@2: friend class TUriC16StateAccessor; williamr@2: williamr@2: }; williamr@2: williamr@2: /** williamr@2: Dependencies : TUriC16 williamr@2: Comments : Provides functionality to parse a descriptor into the components of a uri as williamr@2: defined in RFC2396. There are 5 components; scheme, authority, path, query and fragment. williamr@2: williamr@2: It uses 16-bit descriptors. williamr@2: williamr@2: Format of a uri is; scheme://authority path?query\#fragment williamr@2: williamr@2: @warning The descriptor that is parsed by an object of this class will be referenced williamr@2: by that object. If the original descriptor is no longer in scope there will be undefined williamr@2: behaviour. williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1. Use UriUtils::CreateUriL() instead williamr@2: @since 6.0 williamr@2: */ williamr@2: class TUriParser16 : public TUriC16 williamr@2: { williamr@2: public: // Methods williamr@2: williamr@2: IMPORT_C TUriParser16(); williamr@2: IMPORT_C TInt Parse(const TDesC16& aUri); williamr@2: }; williamr@2: williamr@2: /** williamr@2: Dependencies : CBase, TUriC16. williamr@2: Comments : Provides modifying functionality on the components of a uri object, as williamr@2: defined in RFC2396. There are 5 components; scheme. authority, path, query and fragment. williamr@2: williamr@2: The object holds parsed uri information. It is owning. It uses 16-bit descriptors. williamr@2: williamr@2: The functionality provided by this API allows the uri components to be set or removed williamr@2: from this parsed uri. Also, it provides a reference to TUriC16 object so that the non-modifying williamr@2: functionality can be used. williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1 williamr@2: @since 6.0 williamr@2: */ williamr@2: class CUri16 : public CBase williamr@2: { williamr@2: public: // Methods williamr@2: IMPORT_C static CUri16* CreateFileUriL(const TDesC& aFullFileName, TUint aFlags = 0); williamr@2: IMPORT_C static CUri16* CreatePrivateFileUriL(const TDesC& aRelativeFileName, TDriveNumber aDrive, TInt aFlags = 0); williamr@2: williamr@2: IMPORT_C static CUri16* NewL(const TUriC16& aUri); williamr@2: IMPORT_C static CUri16* NewLC(const TUriC16& aUri); williamr@2: IMPORT_C static CUri16* NewL(); williamr@2: IMPORT_C static CUri16* NewLC(); williamr@2: williamr@2: IMPORT_C static CUri16* ResolveL(const TUriC16& aBaseUri, const TUriC16& aRefUri); williamr@2: williamr@2: IMPORT_C ~CUri16(); williamr@2: IMPORT_C const TUriC16& Uri() const; williamr@2: IMPORT_C void SetComponentL(const TDesC16& aData, TUriComponent aComponent); williamr@2: IMPORT_C void RemoveComponentL(TUriComponent aComponent); williamr@2: williamr@2: private: // Methods williamr@2: williamr@2: CUri16(const TUriC16& aNewUri); williamr@2: void ConstructL(); williamr@2: void FormUriL(); williamr@2: void InitializeFileUriComponentsL(const TDesC& aFileName, TDriveNumber aDrive, TUint aFlags); williamr@2: williamr@2: private: // Attributes williamr@2: williamr@2: /** The descriptor buffer that contains the uri. williamr@2: */ williamr@2: HBufC16* iUriBuf; williamr@2: williamr@2: /** The parsed uri object. williamr@2: */ williamr@2: TUriC16 iUri; williamr@2: williamr@2: /** williamr@2: A friend class used for testing. williamr@2: @see TUri16StateAccessor williamr@2: @since 6.0 williamr@2: @internalComponent williamr@2: */ williamr@2: friend class TUri16StateAccessor; williamr@2: williamr@2: }; williamr@2: williamr@2: /** williamr@2: Do not use. Use TUriC8 instead williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1 williamr@2: */ williamr@2: typedef TUriC16 TUriC; williamr@2: williamr@2: /** williamr@2: Do not use. Use TUriParser8 instead williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1 williamr@2: */ williamr@2: typedef TUriParser16 TUriParser; williamr@2: williamr@2: /** williamr@2: Do not use. Use CUri8 instead williamr@2: @publishedAll williamr@2: @deprecated Deprecated in 9.1 williamr@2: */ williamr@2: typedef CUri16 CUri; williamr@2: williamr@2: #endif // __URI16_H__