epoc32/include/mw/ineturilistdef.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 epoc32/include/ineturilistdef.h@2fe1408b6811
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// 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
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
// Place holder for common constants, type definitions and enums.
williamr@2
    15
//
williamr@2
    16
williamr@2
    17
williamr@2
    18
williamr@2
    19
/**
williamr@2
    20
 @file
williamr@2
    21
 @publishedAll
williamr@2
    22
 @released
williamr@2
    23
*/
williamr@2
    24
williamr@2
    25
#ifndef __INETURILISTDEF_H__
williamr@2
    26
#define __INETURILISTDEF_H__
williamr@2
    27
williamr@2
    28
#include <e32base.h>
williamr@2
    29
williamr@2
    30
/**
williamr@2
    31
@publishedAll
williamr@2
    32
@released
williamr@2
    33
*/
williamr@2
    34
namespace InetUriList
williamr@2
    35
	{
williamr@2
    36
	/**
williamr@2
    37
	Types of supported service type.
williamr@2
    38
	
williamr@2
    39
	@publishedAll
williamr@2
    40
	@released
williamr@2
    41
	*/		
williamr@2
    42
	enum TServiceType
williamr@2
    43
		{
williamr@2
    44
		/** Browser */
williamr@2
    45
		EBrowser =0x01, 
williamr@2
    46
		/** WapPush */
williamr@2
    47
		EWapPush =0x02,
williamr@2
    48
		/** PushEMail */ 
williamr@2
    49
		EPushEMail =0x03,
williamr@2
    50
		/** DevProv */
williamr@2
    51
		EDevProv =0x04,
williamr@2
    52
		/** VOIP */
williamr@2
    53
		EVoip =0x05
williamr@2
    54
		};
williamr@2
    55
williamr@2
    56
	/**
williamr@2
    57
	Types of supported list type.
williamr@2
    58
williamr@2
    59
	@publishedAll
williamr@2
    60
	@released
williamr@2
    61
	*/	
williamr@2
    62
	 enum TListType
williamr@2
    63
		{
williamr@2
    64
		/** BlackList **/
williamr@2
    65
		EBlackList =0x01,
williamr@2
    66
		/** WhiteList **/
williamr@2
    67
		EWhiteList =0x02
williamr@2
    68
		};
williamr@2
    69
	
williamr@2
    70
	/**
williamr@2
    71
	Types of permission.
williamr@2
    72
williamr@2
    73
	@publishedAll
williamr@2
    74
	@released
williamr@2
    75
	*/	
williamr@2
    76
	enum TPermission
williamr@2
    77
		{
williamr@2
    78
		/** ReadOnly **/
williamr@2
    79
		EReadOnly =0x01,
williamr@2
    80
		/** ReadWrite **/ 
williamr@2
    81
		EReadWrite =0x02
williamr@2
    82
		};
williamr@2
    83
	
williamr@2
    84
	/**
williamr@2
    85
	Types of matches.
williamr@2
    86
	
williamr@2
    87
	@publishedAll
williamr@2
    88
	@released
williamr@2
    89
	*/
williamr@2
    90
	enum TURIMatch
williamr@2
    91
		{
williamr@2
    92
		/** Exact match **/	
williamr@2
    93
		EExact =0x01,
williamr@2
    94
		/** Domain match **/
williamr@2
    95
		EDomain =0x02,
williamr@2
    96
		/** Exact path match **/
williamr@2
    97
		EExactPath =0x03,
williamr@2
    98
		/** partial prefix path match **/
williamr@2
    99
		EPartialPrefixPath =0x04,
williamr@2
   100
		/** Partial suffix path match **/
williamr@2
   101
		EPartialSuffixPath =0x05
williamr@2
   102
		};
williamr@2
   103
		
williamr@2
   104
	/**
williamr@2
   105
	Error codes error numbers -7650 to -7699 have been reserved for InetUriList.
williamr@2
   106
	*/
williamr@2
   107
	static const TInt KErrorBase 			= -7650;	
williamr@2
   108
	/**
williamr@2
   109
	URI already exists in database.
williamr@2
   110
	*/
williamr@2
   111
	static const TInt KErrUriAlreadyExists 			= KErrorBase;
williamr@2
   112
	/**
williamr@2
   113
	URI not found in database. 
williamr@2
   114
	*/
williamr@2
   115
	static const TInt KErrUriNotFound	 			= KErrorBase - 1;
williamr@2
   116
	/** 
williamr@2
   117
	Addition of URI failed. 
williamr@2
   118
	*/
williamr@2
   119
	static const TInt KErrUriAddFailed				= KErrorBase - 2;
williamr@2
   120
	/** 
williamr@2
   121
	Removal of URI failed.
williamr@2
   122
	*/
williamr@2
   123
	static const TInt KErrUriRemoveFailed			= KErrorBase - 3;
williamr@2
   124
	/** 
williamr@2
   125
	Updation of URI properties failed.
williamr@2
   126
	*/
williamr@2
   127
	static const TInt KErrUriUpdateFailed			= KErrorBase - 4;
williamr@2
   128
	/** 
williamr@2
   129
	URI is read only.
williamr@2
   130
	*/
williamr@2
   131
	static const TInt KErrUriReadOnly				= KErrorBase - 5;
williamr@2
   132
	/** 
williamr@2
   133
	Service type of URI is missing.
williamr@2
   134
	*/
williamr@2
   135
	static const TInt KErrServiceTypeNotPresent 	= KErrorBase - 6;	
williamr@2
   136
	/** 
williamr@2
   137
	Handle is not open.
williamr@2
   138
	*/
williamr@2
   139
	static const TInt KErrNotOpen				 	= KErrorBase - 7;	
williamr@2
   140
	/**
williamr@2
   141
	Invalid stream handle
williamr@2
   142
	*/
williamr@2
   143
	static const TInt KErrInvalidStreamHandle 		= KErrorBase - 8;
williamr@2
   144
	
williamr@2
   145
	/** 
williamr@2
   146
	Panic text if handle is not open.
williamr@2
   147
	*/
williamr@2
   148
	_LIT(KInetUriListErrHandleNotOpen,		"Handle not open");
williamr@2
   149
williamr@2
   150
	}
williamr@2
   151
williamr@2
   152
/**
williamr@2
   153
This class defines the argument parameters for the query operation. It is possible to 
williamr@2
   154
set the arguments in various combinations. The argument types can be ServiceType, 
williamr@2
   155
ListType, URI in TDesC8 form, and URIMatch.
williamr@2
   156
williamr@2
   157
@publishedAll
williamr@2
   158
@released
williamr@2
   159
*/
williamr@2
   160
class TQueryArgs
williamr@2
   161
	{
williamr@2
   162
	public:
williamr@2
   163
		/**
williamr@2
   164
		The argument types.
williamr@2
   165
		
williamr@2
   166
		@internalComponent
williamr@2
   167
		*/
williamr@2
   168
		enum TArgType
williamr@2
   169
			{
williamr@2
   170
			EUri = 1,
williamr@2
   171
			EServiceType,
williamr@2
   172
			EListType,
williamr@2
   173
			EURIMatch
williamr@2
   174
			};
williamr@2
   175
		/**
williamr@2
   176
		Bit width of the type.
williamr@2
   177
		
williamr@2
   178
		@internalComponent
williamr@2
   179
		*/
williamr@2
   180
		enum 
williamr@2
   181
			{
williamr@2
   182
			KBitsPerType = 3			
williamr@2
   183
			};
williamr@2
   184
		
williamr@2
   185
		/**
williamr@2
   186
		Default constructor
williamr@2
   187
		*/
williamr@2
   188
		inline TQueryArgs ()
williamr@2
   189
			:iFlags ( 0 )
williamr@2
   190
			{}
williamr@2
   191
williamr@2
   192
williamr@2
   193
		/**
williamr@2
   194
		A templated constructor that constructs the query argument.
williamr@2
   195
		It takes one argument.
williamr@2
   196
		*/
williamr@2
   197
		template < class T0 >
williamr@2
   198
		explicit inline TQueryArgs ( T0 a0 )
williamr@2
   199
			{
williamr@2
   200
			Assign ( a0 );
williamr@2
   201
			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
williamr@2
   202
			}
williamr@2
   203
williamr@2
   204
		/**
williamr@2
   205
		A templated constructor that constructs the query argument.
williamr@2
   206
		It takes two arguments.
williamr@2
   207
		*/
williamr@2
   208
		template < class T0, class T1 >
williamr@2
   209
		inline TQueryArgs ( T0 a0, T1 a1 )
williamr@2
   210
			{
williamr@2
   211
			Assign ( a0 );
williamr@2
   212
			Assign ( a1 );
williamr@2
   213
			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
williamr@2
   214
					(Type(a1)<<(( Type(a1))*KBitsPerType));
williamr@2
   215
			}
williamr@2
   216
williamr@2
   217
		/**
williamr@2
   218
		A templated constructor that constructs the query argument.
williamr@2
   219
		It takes three arguments.
williamr@2
   220
		*/
williamr@2
   221
		template < class T0, class T1, class T2 >
williamr@2
   222
		inline TQueryArgs ( T0 a0, T1 a1, T2 a2 )
williamr@2
   223
			{
williamr@2
   224
			Assign ( a0 );
williamr@2
   225
			Assign ( a1 );
williamr@2
   226
			Assign ( a2 );
williamr@2
   227
			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
williamr@2
   228
					(Type(a1)<<(Type(a1)*KBitsPerType)) |
williamr@2
   229
					(Type(a2)<<(Type(a2)*KBitsPerType));
williamr@2
   230
			}
williamr@2
   231
williamr@2
   232
		/**
williamr@2
   233
		A templated constructor that constructs the query argument.
williamr@2
   234
		It takes four arguments.
williamr@2
   235
		*/
williamr@2
   236
		template < class T0, class T1, class T2, class T3 >
williamr@2
   237
		inline TQueryArgs ( T0 a0, T1 a1, T2 a2, T3 a3 )
williamr@2
   238
			{
williamr@2
   239
			Assign ( a0 );
williamr@2
   240
			Assign ( a1 );
williamr@2
   241
			Assign ( a2 );
williamr@2
   242
			Assign ( a3 );				
williamr@2
   243
			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
williamr@2
   244
					(Type(a1)<<(Type(a1)*KBitsPerType)) |
williamr@2
   245
					(Type(a2)<<(Type(a2)*KBitsPerType)) |
williamr@2
   246
					(Type(a3)<<(Type(a3)*KBitsPerType));
williamr@2
   247
			}
williamr@2
   248
		
williamr@2
   249
williamr@2
   250
		/**
williamr@2
   251
		Checks whether the flag is set for the given argument type.
williamr@2
   252
				
williamr@2
   253
		@internalComponent
williamr@2
   254
		*/
williamr@2
   255
		TBool IsSet ( TArgType aType ) const
williamr@2
   256
			{
williamr@2
   257
			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
williamr@2
   258
			return iFlags & ( aType << ( aType  * KBitsPerType ) );
williamr@2
   259
			}
williamr@2
   260
		
williamr@2
   261
		/**
williamr@2
   262
		Returns the argument if set, otherwise returns KErrNotFound.
williamr@2
   263
		
williamr@2
   264
		@internalComponent
williamr@2
   265
		*/		
williamr@2
   266
		TInt Get ( TArgType aType ) const
williamr@2
   267
			{
williamr@2
   268
			if ( IsSet ( aType ) )
williamr@2
   269
				return iArgs[aType - 1];
williamr@2
   270
			return KErrNotFound;			
williamr@2
   271
			}
williamr@2
   272
		
williamr@2
   273
		/**
williamr@2
   274
		Maximum number of arguments. Currently set as 4.
williamr@2
   275
		
williamr@2
   276
		@internalComponent
williamr@2
   277
		*/
williamr@2
   278
		enum
williamr@2
   279
			{
williamr@2
   280
			KMaxArguments = 4
williamr@2
   281
			};
williamr@2
   282
					
williamr@2
   283
	private:
williamr@2
   284
williamr@2
   285
		/**
williamr@2
   286
		@internalComponent
williamr@2
   287
		*/			
williamr@2
   288
		TArgType Type ( const TDesC8* )
williamr@2
   289
			{
williamr@2
   290
			return EUri;				
williamr@2
   291
			}
williamr@2
   292
			
williamr@2
   293
		TArgType Type ( InetUriList::TServiceType )
williamr@2
   294
			{
williamr@2
   295
			return EServiceType;				
williamr@2
   296
			}
williamr@2
   297
williamr@2
   298
		TArgType Type ( InetUriList::TListType )
williamr@2
   299
			{
williamr@2
   300
			return EListType;				
williamr@2
   301
			}
williamr@2
   302
williamr@2
   303
		TArgType Type ( InetUriList::TURIMatch )
williamr@2
   304
			{
williamr@2
   305
			return EURIMatch;				
williamr@2
   306
			}
williamr@2
   307
		
williamr@2
   308
		void Assign ( const TDesC8* aValue )
williamr@2
   309
			{
williamr@2
   310
			iArgs[Type(aValue)-1] = (TInt)aValue;
williamr@2
   311
			}
williamr@2
   312
			
williamr@2
   313
		void Assign ( InetUriList::TServiceType aValue )
williamr@2
   314
			{
williamr@2
   315
			iArgs[Type(aValue)-1] = aValue;
williamr@2
   316
			}
williamr@2
   317
			
williamr@2
   318
		void Assign ( InetUriList::TListType aValue )
williamr@2
   319
			{
williamr@2
   320
			iArgs[Type(aValue)-1] = aValue;
williamr@2
   321
			}
williamr@2
   322
			
williamr@2
   323
		void Assign ( InetUriList::TURIMatch aValue )
williamr@2
   324
			{
williamr@2
   325
			iArgs[Type(aValue)-1] = aValue;
williamr@2
   326
			}
williamr@2
   327
			
williamr@2
   328
	private:	
williamr@2
   329
		TInt iArgs [KMaxArguments];
williamr@2
   330
		TInt iFlags;			
williamr@2
   331
	};
williamr@2
   332
williamr@2
   333
#endif // __INETURILISTDEF_H__