williamr@2: // Copyright (c) 2007-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: // Place holder for common constants, type definitions and enums. williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: #ifndef __INETURILISTDEF_H__ williamr@2: #define __INETURILISTDEF_H__ williamr@2: williamr@2: #include williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: namespace InetUriList williamr@2: { williamr@2: /** williamr@2: Types of supported service type. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TServiceType williamr@2: { williamr@2: /** Browser */ williamr@2: EBrowser =0x01, williamr@2: /** WapPush */ williamr@2: EWapPush =0x02, williamr@2: /** PushEMail */ williamr@2: EPushEMail =0x03, williamr@2: /** DevProv */ williamr@2: EDevProv =0x04, williamr@2: /** VOIP */ williamr@2: EVoip =0x05 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Types of supported list type. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TListType williamr@2: { williamr@2: /** BlackList **/ williamr@2: EBlackList =0x01, williamr@2: /** WhiteList **/ williamr@2: EWhiteList =0x02 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Types of permission. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TPermission williamr@2: { williamr@2: /** ReadOnly **/ williamr@2: EReadOnly =0x01, williamr@2: /** ReadWrite **/ williamr@2: EReadWrite =0x02 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Types of matches. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TURIMatch williamr@2: { williamr@2: /** Exact match **/ williamr@2: EExact =0x01, williamr@2: /** Domain match **/ williamr@2: EDomain =0x02, williamr@2: /** Exact path match **/ williamr@2: EExactPath =0x03, williamr@2: /** partial prefix path match **/ williamr@2: EPartialPrefixPath =0x04, williamr@2: /** Partial suffix path match **/ williamr@2: EPartialSuffixPath =0x05 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Error codes error numbers -7650 to -7699 have been reserved for InetUriList. williamr@2: */ williamr@2: static const TInt KErrorBase = -7650; williamr@2: /** williamr@2: URI already exists in database. williamr@2: */ williamr@2: static const TInt KErrUriAlreadyExists = KErrorBase; williamr@2: /** williamr@2: URI not found in database. williamr@2: */ williamr@2: static const TInt KErrUriNotFound = KErrorBase - 1; williamr@2: /** williamr@2: Addition of URI failed. williamr@2: */ williamr@2: static const TInt KErrUriAddFailed = KErrorBase - 2; williamr@2: /** williamr@2: Removal of URI failed. williamr@2: */ williamr@2: static const TInt KErrUriRemoveFailed = KErrorBase - 3; williamr@2: /** williamr@2: Updation of URI properties failed. williamr@2: */ williamr@2: static const TInt KErrUriUpdateFailed = KErrorBase - 4; williamr@2: /** williamr@2: URI is read only. williamr@2: */ williamr@2: static const TInt KErrUriReadOnly = KErrorBase - 5; williamr@2: /** williamr@2: Service type of URI is missing. williamr@2: */ williamr@2: static const TInt KErrServiceTypeNotPresent = KErrorBase - 6; williamr@2: /** williamr@2: Handle is not open. williamr@2: */ williamr@2: static const TInt KErrNotOpen = KErrorBase - 7; williamr@2: /** williamr@2: Invalid stream handle williamr@2: */ williamr@2: static const TInt KErrInvalidStreamHandle = KErrorBase - 8; williamr@2: williamr@2: /** williamr@2: Panic text if handle is not open. williamr@2: */ williamr@2: _LIT(KInetUriListErrHandleNotOpen, "Handle not open"); williamr@2: williamr@2: } williamr@2: williamr@2: /** williamr@2: This class defines the argument parameters for the query operation. It is possible to williamr@2: set the arguments in various combinations. The argument types can be ServiceType, williamr@2: ListType, URI in TDesC8 form, and URIMatch. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TQueryArgs williamr@2: { williamr@2: public: williamr@2: /** williamr@2: The argument types. williamr@2: williamr@2: @internalComponent williamr@2: */ williamr@2: enum TArgType williamr@2: { williamr@2: EUri = 1, williamr@2: EServiceType, williamr@2: EListType, williamr@2: EURIMatch williamr@2: }; williamr@2: /** williamr@2: Bit width of the type. williamr@2: williamr@2: @internalComponent williamr@2: */ williamr@2: enum williamr@2: { williamr@2: KBitsPerType = 3 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Default constructor williamr@2: */ williamr@2: inline TQueryArgs () williamr@2: :iFlags ( 0 ) williamr@2: {} williamr@2: williamr@2: williamr@2: /** williamr@2: A templated constructor that constructs the query argument. williamr@2: It takes one argument. williamr@2: */ williamr@2: template < class T0 > williamr@2: explicit inline TQueryArgs ( T0 a0 ) williamr@2: { williamr@2: Assign ( a0 ); williamr@2: iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)); williamr@2: } williamr@2: williamr@2: /** williamr@2: A templated constructor that constructs the query argument. williamr@2: It takes two arguments. williamr@2: */ williamr@2: template < class T0, class T1 > williamr@2: inline TQueryArgs ( T0 a0, T1 a1 ) williamr@2: { williamr@2: Assign ( a0 ); williamr@2: Assign ( a1 ); williamr@2: iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) | williamr@2: (Type(a1)<<(( Type(a1))*KBitsPerType)); williamr@2: } williamr@2: williamr@2: /** williamr@2: A templated constructor that constructs the query argument. williamr@2: It takes three arguments. williamr@2: */ williamr@2: template < class T0, class T1, class T2 > williamr@2: inline TQueryArgs ( T0 a0, T1 a1, T2 a2 ) williamr@2: { williamr@2: Assign ( a0 ); williamr@2: Assign ( a1 ); williamr@2: Assign ( a2 ); williamr@2: iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | williamr@2: (Type(a1)<<(Type(a1)*KBitsPerType)) | williamr@2: (Type(a2)<<(Type(a2)*KBitsPerType)); williamr@2: } williamr@2: williamr@2: /** williamr@2: A templated constructor that constructs the query argument. williamr@2: It takes four arguments. williamr@2: */ williamr@2: template < class T0, class T1, class T2, class T3 > williamr@2: inline TQueryArgs ( T0 a0, T1 a1, T2 a2, T3 a3 ) williamr@2: { williamr@2: Assign ( a0 ); williamr@2: Assign ( a1 ); williamr@2: Assign ( a2 ); williamr@2: Assign ( a3 ); williamr@2: iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | williamr@2: (Type(a1)<<(Type(a1)*KBitsPerType)) | williamr@2: (Type(a2)<<(Type(a2)*KBitsPerType)) | williamr@2: (Type(a3)<<(Type(a3)*KBitsPerType)); williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Checks whether the flag is set for the given argument type. williamr@2: williamr@2: @internalComponent williamr@2: */ williamr@2: TBool IsSet ( TArgType aType ) const williamr@2: { williamr@2: TInt val = iFlags & ( aType << ( aType * KBitsPerType ) ); williamr@2: return iFlags & ( aType << ( aType * KBitsPerType ) ); williamr@2: } williamr@2: williamr@2: /** williamr@2: Returns the argument if set, otherwise returns KErrNotFound. williamr@2: williamr@2: @internalComponent williamr@2: */ williamr@2: TInt Get ( TArgType aType ) const williamr@2: { williamr@2: if ( IsSet ( aType ) ) williamr@2: return iArgs[aType - 1]; williamr@2: return KErrNotFound; williamr@2: } williamr@2: williamr@2: /** williamr@2: Maximum number of arguments. Currently set as 4. williamr@2: williamr@2: @internalComponent williamr@2: */ williamr@2: enum williamr@2: { williamr@2: KMaxArguments = 4 williamr@2: }; williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: TArgType Type ( const TDesC8* ) williamr@2: { williamr@2: return EUri; williamr@2: } williamr@2: williamr@2: TArgType Type ( InetUriList::TServiceType ) williamr@2: { williamr@2: return EServiceType; williamr@2: } williamr@2: williamr@2: TArgType Type ( InetUriList::TListType ) williamr@2: { williamr@2: return EListType; williamr@2: } williamr@2: williamr@2: TArgType Type ( InetUriList::TURIMatch ) williamr@2: { williamr@2: return EURIMatch; williamr@2: } williamr@2: williamr@2: void Assign ( const TDesC8* aValue ) williamr@2: { williamr@2: iArgs[Type(aValue)-1] = (TInt)aValue; williamr@2: } williamr@2: williamr@2: void Assign ( InetUriList::TServiceType aValue ) williamr@2: { williamr@2: iArgs[Type(aValue)-1] = aValue; williamr@2: } williamr@2: williamr@2: void Assign ( InetUriList::TListType aValue ) williamr@2: { williamr@2: iArgs[Type(aValue)-1] = aValue; williamr@2: } williamr@2: williamr@2: void Assign ( InetUriList::TURIMatch aValue ) williamr@2: { williamr@2: iArgs[Type(aValue)-1] = aValue; williamr@2: } williamr@2: williamr@2: private: williamr@2: TInt iArgs [KMaxArguments]; williamr@2: TInt iFlags; williamr@2: }; williamr@2: williamr@2: #endif // __INETURILISTDEF_H__