epoc32/include/mw/ineturilistdef.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
// Copyright (c) 2008-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@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.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@4
    16
//
williamr@2
    17
williamr@2
    18
/**
williamr@2
    19
 @file
williamr@2
    20
 @publishedAll
williamr@2
    21
 @released
williamr@2
    22
*/
williamr@2
    23
williamr@2
    24
#ifndef __INETURILISTDEF_H__
williamr@2
    25
#define __INETURILISTDEF_H__
williamr@2
    26
williamr@2
    27
#include <e32base.h>
williamr@2
    28
williamr@2
    29
/**
williamr@2
    30
@publishedAll
williamr@2
    31
@released
williamr@2
    32
*/
williamr@2
    33
namespace InetUriList
williamr@2
    34
	{
williamr@2
    35
	/**
williamr@2
    36
	Types of supported service type.
williamr@2
    37
	
williamr@2
    38
	@publishedAll
williamr@2
    39
	@released
williamr@2
    40
	*/		
williamr@2
    41
	enum TServiceType
williamr@2
    42
		{
williamr@2
    43
		/** Browser */
williamr@2
    44
		EBrowser =0x01, 
williamr@2
    45
		/** WapPush */
williamr@2
    46
		EWapPush =0x02,
williamr@2
    47
		/** PushEMail */ 
williamr@2
    48
		EPushEMail =0x03,
williamr@2
    49
		/** DevProv */
williamr@2
    50
		EDevProv =0x04,
williamr@2
    51
		/** VOIP */
williamr@2
    52
		EVoip =0x05
williamr@2
    53
		};
williamr@2
    54
williamr@2
    55
	/**
williamr@2
    56
	Types of supported list type.
williamr@2
    57
williamr@2
    58
	@publishedAll
williamr@2
    59
	@released
williamr@2
    60
	*/	
williamr@2
    61
	 enum TListType
williamr@2
    62
		{
williamr@2
    63
		/** BlackList **/
williamr@2
    64
		EBlackList =0x01,
williamr@2
    65
		/** WhiteList **/
williamr@2
    66
		EWhiteList =0x02
williamr@2
    67
		};
williamr@2
    68
	
williamr@2
    69
	/**
williamr@2
    70
	Types of permission.
williamr@2
    71
williamr@2
    72
	@publishedAll
williamr@2
    73
	@released
williamr@2
    74
	*/	
williamr@2
    75
	enum TPermission
williamr@2
    76
		{
williamr@2
    77
		/** ReadOnly **/
williamr@2
    78
		EReadOnly =0x01,
williamr@2
    79
		/** ReadWrite **/ 
williamr@2
    80
		EReadWrite =0x02
williamr@2
    81
		};
williamr@2
    82
	
williamr@2
    83
	/**
williamr@4
    84
	Types of TLD Query type.
williamr@4
    85
	
williamr@4
    86
	@publishedAll
williamr@4
    87
	@released
williamr@4
    88
	*/
williamr@4
    89
	enum TTLDQueryType
williamr@4
    90
		{
williamr@4
    91
		/** Top Level Domain List type **/
williamr@4
    92
		EPolicyListType=0x01,
williamr@4
    93
		/** Top Level Domain Policy data **/
williamr@4
    94
		EPolicyCharSet=0x02
williamr@4
    95
		};
williamr@4
    96
	
williamr@4
    97
	/**
williamr@2
    98
	Types of matches.
williamr@2
    99
	
williamr@2
   100
	@publishedAll
williamr@2
   101
	@released
williamr@2
   102
	*/
williamr@2
   103
	enum TURIMatch
williamr@2
   104
		{
williamr@2
   105
		/** Exact match **/	
williamr@2
   106
		EExact =0x01,
williamr@2
   107
		/** Domain match **/
williamr@2
   108
		EDomain =0x02,
williamr@2
   109
		/** Exact path match **/
williamr@2
   110
		EExactPath =0x03,
williamr@2
   111
		/** partial prefix path match **/
williamr@2
   112
		EPartialPrefixPath =0x04,
williamr@2
   113
		/** Partial suffix path match **/
williamr@2
   114
		EPartialSuffixPath =0x05
williamr@2
   115
		};
williamr@2
   116
		
williamr@2
   117
	/**
williamr@2
   118
	Error codes error numbers -7650 to -7699 have been reserved for InetUriList.
williamr@2
   119
	*/
williamr@2
   120
	static const TInt KErrorBase 			= -7650;	
williamr@2
   121
	/**
williamr@2
   122
	URI already exists in database.
williamr@2
   123
	*/
williamr@2
   124
	static const TInt KErrUriAlreadyExists 			= KErrorBase;
williamr@2
   125
	/**
williamr@2
   126
	URI not found in database. 
williamr@2
   127
	*/
williamr@2
   128
	static const TInt KErrUriNotFound	 			= KErrorBase - 1;
williamr@2
   129
	/** 
williamr@2
   130
	Addition of URI failed. 
williamr@2
   131
	*/
williamr@2
   132
	static const TInt KErrUriAddFailed				= KErrorBase - 2;
williamr@2
   133
	/** 
williamr@2
   134
	Removal of URI failed.
williamr@2
   135
	*/
williamr@2
   136
	static const TInt KErrUriRemoveFailed			= KErrorBase - 3;
williamr@2
   137
	/** 
williamr@2
   138
	Updation of URI properties failed.
williamr@2
   139
	*/
williamr@2
   140
	static const TInt KErrUriUpdateFailed			= KErrorBase - 4;
williamr@2
   141
	/** 
williamr@2
   142
	URI is read only.
williamr@2
   143
	*/
williamr@2
   144
	static const TInt KErrUriReadOnly				= KErrorBase - 5;
williamr@2
   145
	/** 
williamr@2
   146
	Service type of URI is missing.
williamr@2
   147
	*/
williamr@2
   148
	static const TInt KErrServiceTypeNotPresent 	= KErrorBase - 6;	
williamr@2
   149
	/** 
williamr@2
   150
	Handle is not open.
williamr@2
   151
	*/
williamr@2
   152
	static const TInt KErrNotOpen				 	= KErrorBase - 7;	
williamr@2
   153
	/**
williamr@2
   154
	Invalid stream handle
williamr@2
   155
	*/
williamr@2
   156
	static const TInt KErrInvalidStreamHandle 		= KErrorBase - 8;
williamr@4
   157
	/** 
williamr@4
   158
	Tld URI is missing.
williamr@4
   159
	*/
williamr@4
   160
	static const TInt KErrTldUriNotPresent 			= KErrorBase - 9;
williamr@4
   161
	/** 
williamr@4
   162
	Query Type of URI is missing.
williamr@4
   163
	*/
williamr@4
   164
	static const TInt KErrTldQueryTypeNotPresent 	= KErrorBase - 10;
williamr@4
   165
	/** 
williamr@4
   166
	Policy Data is not present.
williamr@4
   167
	*/
williamr@4
   168
	static const TInt KErrPolicyDataNotPresent 		= KErrorBase - 11;	
williamr@4
   169
	/** 
williamr@4
   170
	TLD list type is not present.
williamr@4
   171
	*/
williamr@4
   172
	static const TInt KErrPolicyListTypeNotPresent	= KErrorBase - 12;	
williamr@4
   173
	/** 
williamr@4
   174
	Requested TLD  type is not supported.
williamr@4
   175
	*/
williamr@4
   176
	static const TInt KErrInvalidTLD				= KErrorBase - 13;	
williamr@2
   177
	/** 
williamr@2
   178
	Panic text if handle is not open.
williamr@2
   179
	*/
williamr@2
   180
	_LIT(KInetUriListErrHandleNotOpen,		"Handle not open");
williamr@4
   181
	/** 
williamr@4
   182
	Panic text if handle is not open.
williamr@4
   183
	*/
williamr@4
   184
	_LIT(KTldInvalidRequest,				"Invalid Request");
williamr@2
   185
williamr@2
   186
	}
williamr@2
   187
williamr@2
   188
/**
williamr@2
   189
This class defines the argument parameters for the query operation. It is possible to 
williamr@2
   190
set the arguments in various combinations. The argument types can be ServiceType, 
williamr@2
   191
ListType, URI in TDesC8 form, and URIMatch.
williamr@2
   192
williamr@2
   193
@publishedAll
williamr@2
   194
@released
williamr@2
   195
*/
williamr@4
   196
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
   197
class TQueryArgs
williamr@2
   198
	{
williamr@4
   199
  	public:
williamr@2
   200
		/**
williamr@4
   201
		The argument types.	
williamr@2
   202
		*/
williamr@2
   203
		enum TArgType
williamr@2
   204
			{
williamr@2
   205
			EUri = 1,
williamr@2
   206
			EServiceType,
williamr@2
   207
			EListType,
williamr@2
   208
			EURIMatch
williamr@2
   209
			};
williamr@2
   210
		
williamr@2
   211
		/**
williamr@2
   212
		Default constructor
williamr@2
   213
		*/
williamr@2
   214
		inline TQueryArgs ()
williamr@2
   215
			:iFlags ( 0 )
williamr@2
   216
			{}
williamr@2
   217
williamr@2
   218
williamr@2
   219
		/**
williamr@2
   220
		A templated constructor that constructs the query argument.
williamr@2
   221
		It takes one argument.
williamr@2
   222
		*/
williamr@2
   223
		template < class T0 >
williamr@2
   224
		explicit inline TQueryArgs ( T0 a0 )
williamr@2
   225
			{
williamr@2
   226
			Assign ( a0 );
williamr@2
   227
			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
williamr@2
   228
			}
williamr@2
   229
williamr@2
   230
		/**
williamr@2
   231
		A templated constructor that constructs the query argument.
williamr@2
   232
		It takes two arguments.
williamr@2
   233
		*/
williamr@2
   234
		template < class T0, class T1 >
williamr@2
   235
		inline TQueryArgs ( T0 a0, T1 a1 )
williamr@2
   236
			{
williamr@2
   237
			Assign ( a0 );
williamr@2
   238
			Assign ( a1 );
williamr@2
   239
			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
williamr@2
   240
					(Type(a1)<<(( Type(a1))*KBitsPerType));
williamr@2
   241
			}
williamr@2
   242
williamr@2
   243
		/**
williamr@2
   244
		A templated constructor that constructs the query argument.
williamr@2
   245
		It takes three arguments.
williamr@2
   246
		*/
williamr@2
   247
		template < class T0, class T1, class T2 >
williamr@2
   248
		inline TQueryArgs ( T0 a0, T1 a1, T2 a2 )
williamr@2
   249
			{
williamr@2
   250
			Assign ( a0 );
williamr@2
   251
			Assign ( a1 );
williamr@2
   252
			Assign ( a2 );
williamr@2
   253
			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
williamr@2
   254
					(Type(a1)<<(Type(a1)*KBitsPerType)) |
williamr@2
   255
					(Type(a2)<<(Type(a2)*KBitsPerType));
williamr@2
   256
			}
williamr@2
   257
williamr@2
   258
		/**
williamr@2
   259
		A templated constructor that constructs the query argument.
williamr@2
   260
		It takes four arguments.
williamr@2
   261
		*/
williamr@2
   262
		template < class T0, class T1, class T2, class T3 >
williamr@2
   263
		inline TQueryArgs ( T0 a0, T1 a1, T2 a2, T3 a3 )
williamr@2
   264
			{
williamr@2
   265
			Assign ( a0 );
williamr@2
   266
			Assign ( a1 );
williamr@2
   267
			Assign ( a2 );
williamr@2
   268
			Assign ( a3 );				
williamr@2
   269
			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
williamr@2
   270
					(Type(a1)<<(Type(a1)*KBitsPerType)) |
williamr@2
   271
					(Type(a2)<<(Type(a2)*KBitsPerType)) |
williamr@2
   272
					(Type(a3)<<(Type(a3)*KBitsPerType));
williamr@2
   273
			}
williamr@2
   274
		
williamr@4
   275
		/**
williamr@4
   276
		Returns the argument if set, otherwise returns KErrNotFound.		
williamr@4
   277
		*/		
williamr@4
   278
		TInt Get ( TArgType aType ) const
williamr@4
   279
			{
williamr@4
   280
			if ( IsSet ( aType ) )
williamr@4
   281
				return iArgs[aType - 1];
williamr@4
   282
			return KErrNotFound;			
williamr@4
   283
			}
williamr@4
   284
							
williamr@4
   285
	private:		
williamr@4
   286
		/**
williamr@4
   287
		Bit width of the type.		
williamr@4
   288
		*/
williamr@4
   289
		enum 
williamr@4
   290
			{
williamr@4
   291
			KBitsPerType = 3			
williamr@4
   292
			};
williamr@4
   293
		/**
williamr@4
   294
		Maximum number of arguments. Currently set as 4.
williamr@4
   295
		*/
williamr@4
   296
		enum
williamr@4
   297
			{
williamr@4
   298
			KMaxArguments = 4
williamr@4
   299
			};
williamr@4
   300
		/**
williamr@4
   301
		Checks whether the flag is set for the given argument type.
williamr@4
   302
		*/
williamr@4
   303
		TBool IsSet ( TArgType aType ) const
williamr@4
   304
			{
williamr@4
   305
			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
williamr@4
   306
			return iFlags & ( aType << ( aType  * KBitsPerType ) );
williamr@4
   307
			}
williamr@2
   308
williamr@4
   309
		TArgType Type ( const TDesC8* )
williamr@4
   310
			{
williamr@4
   311
			return EUri;				
williamr@4
   312
			}
williamr@4
   313
			
williamr@4
   314
		TArgType Type ( InetUriList::TServiceType )
williamr@4
   315
			{
williamr@4
   316
			return EServiceType;				
williamr@4
   317
			}
williamr@4
   318
williamr@4
   319
		TArgType Type ( InetUriList::TListType )
williamr@4
   320
			{
williamr@4
   321
			return EListType;				
williamr@4
   322
			}
williamr@4
   323
williamr@4
   324
		TArgType Type ( InetUriList::TURIMatch )
williamr@4
   325
			{
williamr@4
   326
			return EURIMatch;				
williamr@4
   327
			}
williamr@4
   328
		
williamr@4
   329
		void Assign ( const TDesC8* aValue )
williamr@4
   330
			{
williamr@4
   331
			iArgs[Type(aValue)-1] = (TInt)aValue;
williamr@4
   332
			}
williamr@4
   333
			
williamr@4
   334
		void Assign ( InetUriList::TServiceType aValue )
williamr@4
   335
			{
williamr@4
   336
			iArgs[Type(aValue)-1] = aValue;
williamr@4
   337
			}
williamr@4
   338
			
williamr@4
   339
		void Assign ( InetUriList::TListType aValue )
williamr@4
   340
			{
williamr@4
   341
			iArgs[Type(aValue)-1] = aValue;
williamr@4
   342
			}
williamr@4
   343
			
williamr@4
   344
		void Assign ( InetUriList::TURIMatch aValue )
williamr@4
   345
			{
williamr@4
   346
			iArgs[Type(aValue)-1] = aValue;
williamr@4
   347
			}
williamr@4
   348
			
williamr@4
   349
	private:	
williamr@4
   350
		TInt iArgs [KMaxArguments];
williamr@4
   351
		TInt iFlags;
williamr@4
   352
	};
williamr@4
   353
williamr@4
   354
#else
williamr@4
   355
williamr@4
   356
class TQueryArgs
williamr@4
   357
	{
williamr@4
   358
	public:
williamr@4
   359
		/**
williamr@4
   360
		The argument types.
williamr@4
   361
		
williamr@4
   362
		@internalComponent
williamr@4
   363
		*/
williamr@4
   364
		enum TArgType
williamr@4
   365
			{
williamr@4
   366
			EUri = 1,
williamr@4
   367
			EServiceType,
williamr@4
   368
			EListType,
williamr@4
   369
			EURIMatch
williamr@4
   370
			};
williamr@4
   371
		/**
williamr@4
   372
		Bit width of the type.
williamr@4
   373
		
williamr@4
   374
		@internalComponent
williamr@4
   375
		*/
williamr@4
   376
		enum 
williamr@4
   377
			{
williamr@4
   378
			KBitsPerType = 3			
williamr@4
   379
			};
williamr@4
   380
		
williamr@4
   381
		/**
williamr@4
   382
		Default constructor
williamr@4
   383
		*/
williamr@4
   384
		inline TQueryArgs ()
williamr@4
   385
			:iFlags ( 0 )
williamr@4
   386
			{}
williamr@4
   387
williamr@4
   388
williamr@4
   389
		/**
williamr@4
   390
		A templated constructor that constructs the query argument.
williamr@4
   391
		It takes one argument.
williamr@4
   392
		*/
williamr@4
   393
		template < class T0 >
williamr@4
   394
		explicit inline TQueryArgs ( T0 a0 )
williamr@4
   395
			{
williamr@4
   396
			Assign ( a0 );
williamr@4
   397
			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
williamr@4
   398
			}
williamr@4
   399
williamr@4
   400
		/**
williamr@4
   401
		A templated constructor that constructs the query argument.
williamr@4
   402
		It takes two arguments.
williamr@4
   403
		*/
williamr@4
   404
		template < class T0, class T1 >
williamr@4
   405
		inline TQueryArgs ( T0 a0, T1 a1 )
williamr@4
   406
			{
williamr@4
   407
			Assign ( a0 );
williamr@4
   408
			Assign ( a1 );
williamr@4
   409
			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
williamr@4
   410
					(Type(a1)<<(( Type(a1))*KBitsPerType));
williamr@4
   411
			}
williamr@4
   412
williamr@4
   413
		/**
williamr@4
   414
		A templated constructor that constructs the query argument.
williamr@4
   415
		It takes three arguments.
williamr@4
   416
		*/
williamr@4
   417
		template < class T0, class T1, class T2 >
williamr@4
   418
		inline TQueryArgs ( T0 a0, T1 a1, T2 a2 )
williamr@4
   419
			{
williamr@4
   420
			Assign ( a0 );
williamr@4
   421
			Assign ( a1 );
williamr@4
   422
			Assign ( a2 );
williamr@4
   423
			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
williamr@4
   424
					(Type(a1)<<(Type(a1)*KBitsPerType)) |
williamr@4
   425
					(Type(a2)<<(Type(a2)*KBitsPerType));
williamr@4
   426
			}
williamr@4
   427
williamr@4
   428
		/**
williamr@4
   429
		A templated constructor that constructs the query argument.
williamr@4
   430
		It takes four arguments.
williamr@4
   431
		*/
williamr@4
   432
		template < class T0, class T1, class T2, class T3 >
williamr@4
   433
		inline TQueryArgs ( T0 a0, T1 a1, T2 a2, T3 a3 )
williamr@4
   434
			{
williamr@4
   435
			Assign ( a0 );
williamr@4
   436
			Assign ( a1 );
williamr@4
   437
			Assign ( a2 );
williamr@4
   438
			Assign ( a3 );				
williamr@4
   439
			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
williamr@4
   440
					(Type(a1)<<(Type(a1)*KBitsPerType)) |
williamr@4
   441
					(Type(a2)<<(Type(a2)*KBitsPerType)) |
williamr@4
   442
					(Type(a3)<<(Type(a3)*KBitsPerType));
williamr@4
   443
			}
williamr@4
   444
williamr@4
   445
			
williamr@2
   446
		/**
williamr@2
   447
		Checks whether the flag is set for the given argument type.
williamr@2
   448
				
williamr@2
   449
		@internalComponent
williamr@2
   450
		*/
williamr@2
   451
		TBool IsSet ( TArgType aType ) const
williamr@2
   452
			{
williamr@2
   453
			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
williamr@2
   454
			return iFlags & ( aType << ( aType  * KBitsPerType ) );
williamr@2
   455
			}
williamr@2
   456
		
williamr@2
   457
		/**
williamr@2
   458
		Returns the argument if set, otherwise returns KErrNotFound.
williamr@2
   459
		
williamr@2
   460
		@internalComponent
williamr@2
   461
		*/		
williamr@2
   462
		TInt Get ( TArgType aType ) const
williamr@2
   463
			{
williamr@2
   464
			if ( IsSet ( aType ) )
williamr@2
   465
				return iArgs[aType - 1];
williamr@2
   466
			return KErrNotFound;			
williamr@2
   467
			}
williamr@2
   468
		
williamr@2
   469
		/**
williamr@2
   470
		Maximum number of arguments. Currently set as 4.
williamr@4
   471
williamr@2
   472
		@internalComponent
williamr@2
   473
		*/
williamr@2
   474
		enum
williamr@2
   475
			{
williamr@2
   476
			KMaxArguments = 4
williamr@2
   477
			};
williamr@2
   478
					
williamr@2
   479
	private:
williamr@2
   480
williamr@2
   481
		/**
williamr@2
   482
		@internalComponent
williamr@2
   483
		*/			
williamr@2
   484
		TArgType Type ( const TDesC8* )
williamr@2
   485
			{
williamr@2
   486
			return EUri;				
williamr@2
   487
			}
williamr@2
   488
			
williamr@2
   489
		TArgType Type ( InetUriList::TServiceType )
williamr@2
   490
			{
williamr@2
   491
			return EServiceType;				
williamr@2
   492
			}
williamr@2
   493
williamr@2
   494
		TArgType Type ( InetUriList::TListType )
williamr@2
   495
			{
williamr@2
   496
			return EListType;				
williamr@2
   497
			}
williamr@2
   498
williamr@2
   499
		TArgType Type ( InetUriList::TURIMatch )
williamr@2
   500
			{
williamr@2
   501
			return EURIMatch;				
williamr@2
   502
			}
williamr@2
   503
		
williamr@2
   504
		void Assign ( const TDesC8* aValue )
williamr@2
   505
			{
williamr@2
   506
			iArgs[Type(aValue)-1] = (TInt)aValue;
williamr@2
   507
			}
williamr@2
   508
			
williamr@2
   509
		void Assign ( InetUriList::TServiceType aValue )
williamr@2
   510
			{
williamr@2
   511
			iArgs[Type(aValue)-1] = aValue;
williamr@2
   512
			}
williamr@2
   513
			
williamr@2
   514
		void Assign ( InetUriList::TListType aValue )
williamr@2
   515
			{
williamr@2
   516
			iArgs[Type(aValue)-1] = aValue;
williamr@2
   517
			}
williamr@2
   518
			
williamr@2
   519
		void Assign ( InetUriList::TURIMatch aValue )
williamr@2
   520
			{
williamr@2
   521
			iArgs[Type(aValue)-1] = aValue;
williamr@2
   522
			}
williamr@2
   523
			
williamr@2
   524
	private:	
williamr@2
   525
		TInt iArgs [KMaxArguments];
williamr@4
   526
		TInt iFlags;
williamr@2
   527
	};
williamr@2
   528
williamr@4
   529
williamr@4
   530
#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@4
   531
	
williamr@2
   532
#endif // __INETURILISTDEF_H__