applayerpluginsandutils/uripermissionservices/inc/tldlistdef.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/uripermissionservices/inc/tldlistdef.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,476 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+
+
+/** @file
+@publishedAll
+@released
+*/
+
+#ifndef __TLDLISTDEF_H__
+#define __TLDLISTDEF_H__
+
+#include <e32base.h>
+#include <ineturilistdef.h>
+
+using namespace InetUriList;
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+
+class TBase
+	{
+  friend class TPolicyQueryArgs;
+  friend class TQueryResults;
+
+public:			
+	/**
+	Default constructor
+	*/
+	inline TBase ()
+		:iFlags ( 0 )
+		{}
+
+private:
+	 /**
+	 Bit width of the type.	
+	 */
+	 enum 
+		{
+	    KBitsPerType = 3			
+		};
+		
+	 /**
+	 Maximum number of arguments. Currently set as 4.	
+	 */
+	 enum
+		{
+	    KMaxArguments = 4
+		};
+
+protected:	
+	TInt iArgs [KMaxArguments];
+	TInt iFlags;
+	};
+
+//-----------------------------------------------------------------
+class TPolicyQueryArgs:public TBase
+	{
+	public:
+		/**
+		The argument types.		
+		*/
+		enum TPolicyArgType
+			{
+			ETldUri = 1,
+			ETldListType,
+			ETldQueryType
+			};
+
+		/**
+		Default constructor
+		*/
+		inline TPolicyQueryArgs ()
+			:TBase()
+			{}
+
+		/**
+		A templated constructor that constructs the query argument.
+		It takes one argument.
+		*/
+		template < class T0 >
+		explicit inline TPolicyQueryArgs ( T0 a0 )
+			{
+			Assign ( a0 );
+			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
+			}
+
+		/**
+		A templated constructor that constructs the query argument.
+		It takes two arguments.
+		*/
+		template < class T0, class T1 >
+		inline TPolicyQueryArgs ( T0 a0, T1 a1 )
+			{
+			Assign ( a0 );
+			Assign ( a1 );
+			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
+					(Type(a1)<<(( Type(a1))*KBitsPerType));
+			}
+
+		/**
+		A templated constructor that constructs the query argument.
+		It takes three arguments.
+		*/
+		template < class T0, class T1, class T2 >
+		inline TPolicyQueryArgs ( T0 a0, T1 a1, T2 a2 )
+			{
+			Assign ( a0 );
+			Assign ( a1 );
+			Assign ( a2 );
+			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
+					(Type(a1)<<(Type(a1)*KBitsPerType)) |
+					(Type(a2)<<(Type(a2)*KBitsPerType));
+			}
+		/**
+		Returns the argument if set, otherwise returns KErrNotFound.	
+		*/		
+		TInt Get ( TPolicyArgType aType ) const
+			{
+			if ( IsSet ( aType ) )
+				return iArgs[aType - 1];
+			return KErrNotFound;			
+			}
+						
+	private:	   
+		/**
+		Checks whether the flag is set for the given argument type.		
+		*/
+		TBool IsSet ( TPolicyArgType aType ) const
+			{
+			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
+			return iFlags & ( aType << ( aType  * KBitsPerType ) );
+			}		
+		
+		TPolicyArgType Type ( const TDesC8* )
+			{
+			return ETldUri;				
+			}
+			
+		TPolicyArgType Type ( InetUriList::TListType )
+			{
+			return ETldListType;				
+			}
+
+		TPolicyArgType Type ( InetUriList::TTLDQueryType )
+			{
+			return ETldQueryType;				
+			}
+		
+		void Assign ( const TDesC8* aValue )
+			{
+			iArgs[Type(aValue)-1] = (TInt)aValue;
+			}
+			
+		void Assign ( InetUriList::TListType aValue )
+			{
+			iArgs[Type(aValue)-1] = aValue;
+			}
+			
+		void Assign ( InetUriList::TTLDQueryType aValue )
+			{
+			iArgs[Type(aValue)-1] = aValue;
+			}
+			
+	
+	};
+
+#else
+class TBase
+	{
+public:	
+	/**
+	Bit width of the type.
+	
+	@internalComponent
+	*/
+	enum 
+		{
+		KBitsPerType = 3			
+		};
+	
+	/**
+	Maximum number of arguments. Currently set as 4.
+
+	@internalComponent
+	*/
+	enum
+		{
+		KMaxArguments = 4
+		};
+	
+	/**
+	Default constructor
+	*/
+	inline TBase ()
+		:iFlags ( 0 )
+		{}
+
+protected:	
+	TInt iArgs [KMaxArguments];
+	TInt iFlags;
+	};
+
+//-----------------------------------------------------------------
+class TPolicyQueryArgs:public TBase
+	{
+	public:
+		/**
+		The argument types.
+		
+		@internalComponent
+		*/
+		enum TPolicyArgType
+			{
+			ETldUri = 1,
+			ETldListType,
+			ETldQueryType
+			};
+
+		/**
+		Default constructor
+		*/
+		inline TPolicyQueryArgs ()
+			:TBase()
+			{}
+
+
+		/**
+		A templated constructor that constructs the query argument.
+		It takes one argument.
+		*/
+		template < class T0 >
+		explicit inline TPolicyQueryArgs ( T0 a0 )
+			{
+			Assign ( a0 );
+			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
+			}
+
+		/**
+		A templated constructor that constructs the query argument.
+		It takes two arguments.
+		*/
+		template < class T0, class T1 >
+		inline TPolicyQueryArgs ( T0 a0, T1 a1 )
+			{
+			Assign ( a0 );
+			Assign ( a1 );
+			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
+					(Type(a1)<<(( Type(a1))*KBitsPerType));
+			}
+
+		/**
+		A templated constructor that constructs the query argument.
+		It takes three arguments.
+		*/
+		template < class T0, class T1, class T2 >
+		inline TPolicyQueryArgs ( T0 a0, T1 a1, T2 a2 )
+			{
+			Assign ( a0 );
+			Assign ( a1 );
+			Assign ( a2 );
+			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
+					(Type(a1)<<(Type(a1)*KBitsPerType)) |
+					(Type(a2)<<(Type(a2)*KBitsPerType));
+			}
+
+		/**
+		Checks whether the flag is set for the given argument type.
+				
+		@internalComponent
+		*/
+		TBool IsSet ( TPolicyArgType aType ) const
+			{
+			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
+			return iFlags & ( aType << ( aType  * KBitsPerType ) );
+			}
+		
+		/**
+		Returns the argument if set, otherwise returns KErrNotFound.
+		
+		@internalComponent
+		*/		
+		TInt Get ( TPolicyArgType aType ) const
+			{
+			if ( IsSet ( aType ) )
+				return iArgs[aType - 1];
+			return KErrNotFound;			
+			}
+		
+				
+	private:
+
+		/**
+		@internalComponent
+		*/			
+		TPolicyArgType Type ( const TDesC8* )
+			{
+			return ETldUri;				
+			}
+			
+		TPolicyArgType Type ( InetUriList::TListType )
+			{
+			return ETldListType;				
+			}
+
+		TPolicyArgType Type ( InetUriList::TTLDQueryType )
+			{
+			return ETldQueryType;				
+			}
+		
+		void Assign ( const TDesC8* aValue )
+			{
+			iArgs[Type(aValue)-1] = (TInt)aValue;
+			}
+			
+		void Assign ( InetUriList::TListType aValue )
+			{
+			iArgs[Type(aValue)-1] = aValue;
+			}
+			
+		void Assign ( InetUriList::TTLDQueryType aValue )
+			{
+			iArgs[Type(aValue)-1] = aValue;
+			}
+			
+	
+	};
+
+
+#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
+
+	
+//------------------------------------------------------------------------
+class TQueryResults: public TBase
+	{
+	public:
+		/**
+		Default constructor
+		*/
+		inline TQueryResults ()
+			:TBase()
+			{}
+		
+		~TQueryResults ()
+			{
+			if ( IsSet( TQueryResults::ETldCharSet ) )
+				{
+				//Delete memory on Heap.
+				HBufC8* uriBuf = (reinterpret_cast<HBufC8*> ( Get ( TQueryResults::ETldCharSet ) ));
+				delete uriBuf;
+				}
+			}
+			
+		/**
+		returns a pointer to policydata
+		*/
+		HBufC8* CharsetL()
+			{
+			__ASSERT_ALWAYS( IsSet(TQueryResults::ETldCharSet), User::Panic( KTldInvalidRequest, KErrPolicyDataNotPresent ));
+			const TDesC8& uri = *( reinterpret_cast<TDesC8*> (Get ( TQueryResults::ETldCharSet ) ) );
+			return uri.AllocL();
+			}
+
+		/**
+		returns a list type
+		*/
+		InetUriList::TListType ListType()
+			{
+			__ASSERT_ALWAYS( IsSet(TQueryResults::ETldListType), User::Panic( KTldInvalidRequest, KErrPolicyListTypeNotPresent ));
+			return (static_cast<InetUriList::TListType> (Get ( TQueryResults::ETldListType ) ));
+			}
+			
+		/**
+		A templated constructor that constructs the query argument.
+		It takes one argument. --Check this
+		*/
+		template < class T0 >
+		inline void Set ( T0 a0 )
+			{
+			Assign ( a0 );
+			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
+			}
+
+	private:
+		#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+		/**
+		The argument types.	
+		*/
+		#else
+		/**
+		The argument types.
+		
+		@internalComponent
+		*/
+		#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
+		enum TResultsArgType
+			{
+			ETldCharSet = 1,
+			ETldListType
+			};	
+		
+		#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+       /**
+		Checks whether the flag is set for the given argument type.		
+		*/
+		#else
+		/**
+		Checks whether the flag is set for the given argument type.
+				
+		@internalComponent
+		*/
+		#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
+		TBool IsSet ( TResultsArgType aType ) const
+			{
+			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
+			return iFlags & ( aType << ( aType  * KBitsPerType ) );
+			}
+
+		#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+		/**
+		Returns the argument if set, otherwise returns KErrNotFound.		
+		*/	
+		#else
+		/**
+		Returns the argument if set, otherwise returns KErrNotFound.
+		
+		@internalComponent
+		*/		
+		#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
+		TInt Get ( TResultsArgType aType ) const
+			{
+			if ( IsSet ( aType ) )
+				return iArgs[aType - 1];
+			return KErrNotFound;			
+			}		
+	
+	private:
+		#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+		/**
+		@internalComponent
+		*/			
+		#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
+		
+		TResultsArgType Type ( const TDesC8* )
+			{
+			return ETldCharSet;				
+			}
+			
+		TResultsArgType Type ( InetUriList::TListType )
+			{
+			return ETldListType;				
+			}
+
+		void Assign ( const TDesC8* aValue )
+			{
+			iArgs[Type(aValue)-1] = (TInt)aValue;
+			}
+			
+		void Assign ( InetUriList::TListType aValue )
+			{
+			iArgs[Type(aValue)-1] = aValue;
+			}
+	};
+
+#endif // __TLDLISTDEF_H__
+