secureswitools/swisistools/source/rscparser/commontypes.h
branchRCL_3
changeset 25 7333d7932ef7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/commontypes.h	Tue Aug 31 15:21:33 2010 +0300
@@ -0,0 +1,308 @@
+// Copyright (c) 2009 - 2010 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 commontypes.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef	COMMONTYPES_H
+#define	COMMONTYPES_H
+
+#include "symbiantypes.h"
+#include "uidtype.h"
+#include <vector>
+using namespace std;
+using namespace rscparser;
+
+/** 
+Returns the smaller of two values.
+ 
+@param aLeft  The first value to be compared.
+@param aRight The second value to be compared.
+
+@return The smaller value.
+*/
+template <class T>
+inline T Min(T aLeft,T aRight)
+    {return(aLeft<aRight ? aLeft : aRight);}
+
+/**
+Returns the smaller of two objects, where the right hand object is a treated
+as a TInt for the  purpose of comparison.
+
+@param aLeft  The first value to be compared.
+@param aRight The second value to be compared.
+
+@return The smaller value.
+*/
+template <class T>
+inline T Min(T aLeft,TUint aRight)
+    {return(aLeft<(TInt)aRight ? aLeft : (T)aRight);}
+
+/** 
+Returns the larger of two values.
+
+@param aLeft  The first value to be compared.
+@param aRight The second value to be compared.
+
+@return The larger value.
+*/
+template <class T>
+inline T Max(T aLeft,T aRight)
+    {return(aLeft<aRight ? aRight : aLeft);}
+
+/**
+Returns the larger of two objects, where the right hand object is a treated
+as a TInt for the  purpose of comparison.
+
+@param aLeft  The first value to be compared.
+@param aRight The second value to be compared.
+
+@return The larger value.
+ */
+template <class T>
+inline T Max(T aLeft,TUint aRight)
+    {return(aLeft<(TInt)aRight ? (TInt)aRight : aLeft);}
+
+/**
+Class to allocate heap memory and store a pointer to it 
+for unicode data.
+The maximun allocated length and current length would also 
+be maintained.
+*/
+class Ptr8
+{
+
+public:
+	/**
+	Allocate heap of the specified size and 
+	store the pointer to it.
+	@param aSize Size of the heap to be allocated.
+	*/
+	Ptr8(const TUint32& aSize);
+
+	/**
+	Free the allocated heap 
+	*/
+	~Ptr8();
+
+	/**
+	Get the pointer to the allocated heap
+	*/
+	TUint8* GetPtr() const;
+	/**
+	Set the pointer
+	*/
+	void SetPtr(TUint8* aPtr);
+
+	/**
+	Set the length
+	*/
+	void SetLength(const TUint32& aLength);
+	void ForceLength(const TUint32& aLength);
+	
+	/**
+	Update the length of the current pointer
+	with the length provided
+	@param aLength Length to be updated
+	*/
+	TBool UpdateLength(const TUint32& aLength);
+
+	/**
+	To fetch the current length
+	*/
+	TUint32 GetLength() const;
+
+	/**
+	To fetch the Max length
+	*/
+	TUint32 GetMaxLength() const;
+
+ 	TUint8 operator[](TInt anIndex) const;
+
+	void Append(TUint8* aBuffer, TInt aLen);
+
+private:
+	TUint8* iPtr;
+	TUint32 iLength;
+	const TUint32 iMaxLength;
+};
+
+
+/**
+Class to allocate heap memory and store a pointer to it 
+for non-unicode data.
+The maximun allocated length and current length would also 
+be maintained.
+*/
+class Ptr16
+{
+
+public:
+	/**
+	Allocate heap of the specified size and 
+	store the pointer to it.
+	@param aSize Size of the heap to be allocated.
+	*/
+	Ptr16(const TUint32& aSize);
+
+	/**
+	Free the allocated heap 
+	*/
+	~Ptr16();
+
+	/**
+	Get the pointer to the allocated heap
+	*/
+	TUint16* GetPtr() const;
+
+	/**
+	Set the pointer
+	*/
+	void SetPtr(TUint16* aPtr);
+
+	/**
+	Update the length of the current pointer
+	with the length provided
+	@param aLength Length to be updated
+	*/
+	TBool UpdateLength(const TUint32& aLength);
+	
+	/**
+	To fetch the current length
+	*/
+	TUint32 GetLength() const;
+
+ 	TUint16 operator[](TInt anIndex) const;
+
+private:
+	TUint16* iPtr;
+	TUint32 iLength;
+	const TUint32 iMaxLength;
+};
+
+
+/**
+Structure to represent TPtrC8 from symbian data type
+*/
+struct PtrC8
+{	
+	PtrC8();
+	~PtrC8();
+	const TUint8* iPtr;
+	TUint32 iMaxLength;
+};
+
+
+/**
+Structure to represent TPtrC16 from symbian data type
+*/
+struct PtrC16
+{	
+	PtrC16();
+	~PtrC16();
+	TUint16* iPtr;
+	TUint32 iMaxLength;
+};
+
+
+/**
+Structure to hold the UIDs of the RSC file
+*/
+
+struct sTUid
+{	
+	sTUid();
+	TUint32 iUid1;
+	TUint32 iUid2;
+	TUint32 iUid3;
+};
+
+/**
+System wide error code -1 : item not found.
+
+A system wide error code indicates an error in the environment, or in
+user input from which a program may recover.
+*/
+const TInt KErrNotFound=(-1); // Must remain set to -1
+
+/**
+System wide error code 0 : this represents the no-error condition.
+
+A system wide error code indicates an error in the environment, or in
+user input from which a program may recover.
+*/
+const TInt KErrNone=0; 
+
+/**
+System wide error code -25 : indicates that end of file has been reached.
+
+A system wide error code indicates an error in the environment, or in
+user input from which a program may recover.
+
+Note that RFile::Read() is a higher-level interface. When the end of
+the file is reached, it returns zero bytes in the destination descriptor, and
+a KErrNone return value. KErrEof is not used for this purpose; other error
+conditions are returned only if some other error condition was indicated on
+the file.
+*/
+const TInt KErrEof=(-25);
+
+
+const TInt KExecutableImageUidValue=0x1000007a;
+
+const TUid KExecutableImageUidVal={KExecutableImageUidValue};
+
+/** The hexadecimal value of the 2nd UID that defines a DLL as being a Unicode 
+UI application. In .mmp files, the hexadecimal number is explicitly inserted 
+as the first value following the UID keyword.
+
+@publishedAll 
+@released
+@see KAppUidValue */
+const TInt KAppUidValue16 = 0x100039CE;
+
+/** The 2nd UID that defines a DLL as being a Unicode UI application.
+
+@publishedAll 
+@released
+@see KUidApp */
+const TUid KUidApp16={KAppUidValue16};
+
+/** The type-independent 2nd UID that identifies a DLL as being a UI application.
+
+@publishedAll 
+@released
+@see KUidApp16 */
+#define KUidApp KUidApp16
+
+/** 
+The uid for the Open service.
+
+@publishedPartner
+@released
+*/
+const TUid KOpenServiceUid = { 0x10208DCA };
+
+/** An application group name.
+
+This is a name that allows applications to be categorized, for instance "Games" 
+or "Utilities". 
+
+@publishedAll 
+@released */
+typedef Ptr16* TAppGroupName;
+#endif	/* COMMONTYPES_H */