hti/PC_Tools/DataGateway/INC/util.h
branchRCL_3
changeset 59 8ad140f3dd41
parent 0 a03f92240627
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/PC_Tools/DataGateway/INC/util.h	Wed Oct 13 16:17:58 2010 +0300
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 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:
+*   This file contains the header file of the Util and UtilError.
+*/
+
+#ifndef UTIL_H
+#define UTIL_H
+
+#pragma warning (push, 3)
+#pragma warning( disable : 4702 ) // Unreachable code warning
+#pragma warning( disable : 4290 ) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
+#pragma warning ( disable : 4786 )
+
+// INCLUDE FILES
+#include <iostream>
+#include <fstream>
+#include <map>
+#include <string>
+#include <time.h>
+#include <windows.h>
+#include <sys/timeb.h>
+#include "error.h"
+
+#define ENABLE_LOG_SYNC //makes logging methods synced to access by multiple threads
+
+#ifdef ENABLE_LOG_SYNC 
+	#include "sync.h"
+#endif
+
+using namespace std;
+
+//**********************************************************************************
+// Class UtilError
+//
+// Error class which is thrown if an exception occurs
+// in Util operations. Holds error code and string.
+//**********************************************************************************
+class UtilError
+{
+public:
+	string iError;
+	HRESULT iResult;
+	UtilError(string aError, HRESULT aResult)
+	{
+		iError = aError;
+		iResult = aResult;
+	}
+};
+
+//**********************************************************************************
+// Class Util
+//
+// Provides static utility functions for logging and string handling.
+//**********************************************************************************
+class Util
+{
+public: // Enumerations
+	enum VerboseLevel {none,     // no output
+		               result,   // only result is reported
+					   error,    // errors reported
+					   info,     // more info reported
+					   debug};
+
+public: // Constructors
+	/*
+	 * Default constructor which initializes logging level.
+	 */
+	Util(const VerboseLevel aVerbose = none) { iVerbose = aVerbose; }
+
+public:
+	/*
+	 * Returns current verbose level.
+	 */
+	static VerboseLevel GetVerboseLevel();
+
+	/*
+	 * Sets new verbose level by string "none", "result", "error", "info" or "debug"
+	 */
+	static void SetVerboseLevel(const string& aVerbose);
+
+	/*
+	 * Sets new verbose level by enumeration.
+	 */
+	static void SetVerboseLevel(const VerboseLevel aVerbose);
+
+	/*
+	 * Enables/disables timestamp from output by string "yes" or "no"
+	 */
+	static void SetTimestamp(const string& aTimestamp);
+
+	/*
+	 * Enables/disables timestamp from output. 0 is disabled.
+	 */
+	static void SetTimestamp(const int aTimestamp);
+
+	/*
+	 * Parses command line parameters to map.
+	 */
+	static void ParseCmdLine(const int aArgc, char **aArgs, map<string, string>& aMap) throw (UtilError);
+
+	/*
+	 * Returns value by key from a map.
+	 */
+	static void GetValue(const string& aKey, const map<string, string>& aMap, string& aValue)  throw (UtilError);
+
+	/*
+	 * Reads properties from a file to a map.
+	 */
+	static void ReadProperties(const string& aFilename, map<string, string>& aMap)  throw (UtilError);
+
+	/*
+	 * Prints message to output in error level.
+	 */
+	static void Error(const string& aMsg);
+
+	/*
+	 * Prints message to output in error level with error code number.
+	 */
+	static void Error(const string& aMsg, const long aCode);
+
+	/*
+	 * Prints hex dump of data to output.
+	 */
+	static void Hex(void *aData, const int aLength);
+
+	/*
+	 * Prints hex dump of char table to output.
+	 */
+	static void Hex(const char aData[]);
+
+	/*
+	 * Prints hex dump of string to output.
+	 */
+	static void Hex(const string& aMsg);
+
+	/*
+	 * Prints hex dump of data to output.
+	 */
+	static void Hex(const unsigned char* aData, const int aLength);
+
+	/*
+	 * Prints hex dump of data to output.
+	 */
+	static void Hex(void* aData, const int aLength, string* aHexDump);
+
+	/*
+	 * Prints message to output in result level.
+	 */
+	static void Log(const string& aMsg);
+
+	/*
+	 * Prints message to output in info level.
+	 */
+	static void Info(const string& aMsg);
+
+	/*
+	 * Prints message to output in debug level.
+	 */
+	static void Debug(const string& aMsg);
+
+	/*
+	 * Prints output to a stream.
+	 */
+	static void Print(ostream& out,
+		              const string& aMsg,
+					  const VerboseLevel aLevel = none,
+					  const long aCode = 0);
+
+	/*
+	 * Converts string to lower case.
+	 */
+	static string& ToLower(string& aString);
+
+	/*
+	 * Converts string to upper case.
+	 */
+	static string& ToUpper(string& aString);
+	
+	/*
+	 * Sets paramvalue if command line parameter is found
+	 */
+	static void CheckCommandlineParam( const string& paramname, string& paramvalue );
+
+private:
+	static VerboseLevel iVerbose;
+	static int iTimestamp;
+#ifdef ENABLE_LOG_SYNC 
+	static Mutex iCritical;
+#endif
+};
+
+#pragma warning (pop)
+
+#endif
+
+// End of file
\ No newline at end of file