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