toolsandutils/e32tools/inc/h_utl.h
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolsandutils/e32tools/inc/h_utl.h	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,216 @@
+// Copyright (c) 1995-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:
+//
+
+#if !defined(__H_UTL_H__)
+#define __H_UTL_H__
+//
+#include <stdio.h>
+
+#ifdef __VC32__
+ #ifdef __MSVCDOTNET__
+  #include <iostream>
+  #include <strstream>
+  #include <fstream>
+  using namespace std;
+ #else //!__MSVCDOTNET__
+  #include <iostream.h>
+  #include <strstrea.h>
+  #include <fstream.h>
+ #endif //__MSVCDOTNET__
+#else //!__VC32__
+#ifdef __TOOLS2__ 
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+using namespace std;
+#else // !__TOOLS2__ OR __VC32__ OR __MSVCDOTNET__
+  #include <iostream.h>
+  #include <strstream.h>
+  #include <fstream.h>
+#endif
+#endif 
+
+#ifdef __LINUX__
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>
+
+
+#define _close close
+#define _filelength filelength
+#define _lseek lseek
+#define _read read
+#define _snprintf snprintf
+#define _vsnprintf vsnprintf
+
+// linux case insensitive stromg comparisons have different names
+#define stricmp  strcasecmp		
+#define _stricmp strcasecmp		
+#define strnicmp strncasecmp	
+
+// to fix the linux problem: memcpy does not work with overlapped areas.
+#define memcpy memmove
+
+// hand-rolled strupr function for converting a string to all uppercase
+char* strupr(char *a);
+
+// return the length of a file
+off_t filelength (int filedes);
+#endif
+
+
+#include <e32cmn.h>
+#include <e32def.h>
+#include <e32def_private.h>
+
+#define ALIGN4K(a) ((a+0xfff)&0xfffff000)
+#define ALIGN4(a) ((a+0x3)&0xfffffffc)
+
+
+#ifdef HEAPCHK
+#define NOIMAGE
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+void HeapCheck();
+#endif
+#define Print H.PrintString
+//
+const TInt KMaxStringLength=0x400;
+//
+class HFile
+	{
+public:
+	static TBool Open(const TText * const aFileName, TInt32 * const aFileHandle);
+	static TBool Read(const TInt32 aFileHandle, TAny * const aBuffer, const TUint32 aCount);
+	static TBool Seek(const TInt32 aFileHandle, const TUint32 aOffset);
+	static TUint32 GetPos(const TInt32 aFileHandle);
+	static TAny Close(const TInt32 aFileHandle);
+	static TUint32 GetLength(const TInt32 aFileHandle);
+	static TUint32 GetLength(TText *aName);
+	static TUint32 Read(TText *aName, TAny *someMem);
+	};
+//
+//inline TAny* operator new(TUint /*aSize*/, TAny* aBase)
+//	{return aBase;}
+
+class HMem
+	{
+public:
+	static TAny *Alloc(TAny * const aBaseAddress,const TUint32 aImageSize);
+	static void Free(TAny * const aMem);
+	static void Copy(TAny * const aDestAddr,const TAny * const aSourceAddr,const TUint32 aLength);
+	static void Move(TAny * const aDestAddr,const TAny * const aSourceAddr,const TUint32 aLength);
+	static void Set(TAny * const aDestAddr, const TUint8 aFillChar, const TUint32 aLength);
+	static void FillZ(TAny * const aDestAddr, const TUint32 aLength);
+
+	static TUint CheckSum(TUint *aPtr, TInt aSize);
+	static TUint CheckSum8(TUint8 *aPtr, TInt aSize);
+	static TUint CheckSumOdd8(TUint8 *aPtr, TInt aSize);
+	static TUint CheckSumEven8(TUint8 *aPtr, TInt aSize);
+
+	static void Crc32(TUint32& aCrc, const TAny* aPtr, TInt aLength);
+	};
+//
+enum TPrintType {EAlways, EScreen, ELog, EWarning, EError, EPeError, ESevereError, EDiagnostic};
+//
+class HPrint
+	{
+public:
+	~HPrint();
+	void SetLogFile(TText *aFileName);
+	void CloseLogFile();						//	Added to close intermediate log files.
+	TInt PrintString(TPrintType aType,const char *aFmt,...);
+public:
+	TText iText[KMaxStringLength];
+	TBool iVerbose;
+private:
+	ofstream iLogFile;
+	};
+//
+extern HPrint H;
+extern TBool PVerbose;
+//
+TAny *operator new(TUint aSize);
+void operator delete(TAny *aPtr);
+//
+#ifdef __TOOLS2__
+istringstream &operator>>(istringstream &is, TVersion &aVersion);
+#else
+istrstream &operator>>(istrstream &is, TVersion &aVersion);
+#endif
+//
+TInt StringToTime(TInt64 &aTime, char *aString);
+
+void ByteSwap(TUint &aVal);
+void ByteSwap(TUint16 &aVal);
+void ByteSwap(TUint *aPtr, TInt aSize);
+
+extern TBool gLittleEndian;
+
+
+/**
+ Convert string to number.
+*/
+template <class T>
+TInt Val(T& aVal, char* aStr)
+	{
+
+	T x;
+	#ifdef __TOOLS2__
+	istringstream val(aStr);
+	#else
+	istrstream val(aStr,strlen(aStr));
+	#endif
+	#if defined(__MSVCDOTNET__) || defined (__TOOLS2__) 
+		val >> setbase(0);
+	#endif //__MSVCDOTNET__                             
+	val >> x;
+	if (!val.eof() || val.fail())
+		return KErrGeneral;
+	aVal=x;
+	return KErrNone;
+	}
+
+// Filename decompose routines
+enum TDecomposeFlag
+	{
+	EUidPresent=1,
+	EVerPresent=2
+	};
+
+class TFileNameInfo
+	{
+public:
+	TFileNameInfo(const char* aFileName, TBool aLookForUid);
+public:
+	const char* iFileName;
+	TInt iTotalLength;
+	TInt iBaseLength;
+	TInt iExtPos;
+	TUint32 iUid3;
+	TUint32 iModuleVersion;
+	TUint32 iFlags;
+	};
+
+extern char* NormaliseFileName(const char* aName);
+extern char* SplitFileName(const char* aName, TUint32& aUid, TUint32& aModuleVersion, TUint32& aFlags);
+extern char* SplitFileName(const char* aName, TUint32& aModuleVersion, TUint32& aFlags);
+extern TInt ParseCapabilitiesArg(SCapabilitySet& aCapabilities, const char *aText);
+extern TInt ParseBoolArg(TBool& aValue, const char *aText);
+
+#endif
+