secureswitools/swisistools/source/sisxlibrary/exception.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/sisxlibrary/exception.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 
+ @publishedPartner
+ @released
+*/
+
+#ifndef __EXCEPTION_H__
+#define __EXCEPTION_H__
+
+#include <exception>
+
+#include "utility.h"
+
+
+class CSISException : public std::exception 
+	{
+public:
+	/**
+	 * Enumeration which represents errors while handling a sis file.
+	 */
+	typedef enum 
+		{
+		ENone,
+		EFileFormat,
+		EVerification,
+		EMemory,
+		EFileProblem,
+		ESyntax,
+		ECompress,
+		ECrypto,
+		ELanguage,
+		EUID,
+		ENotSigned,
+		EIllegal,
+		EInvalidDestination,
+		EInvalidInstallOption,
+		EDirIsFile,
+		EPermissionDenied,
+		ELegacyFormat,
+		ENotSupported
+		} TCategory;
+
+public:
+	/**
+	 * Constructor
+	 * @param aCategory type of exception
+	 * @param aContext context for the exception
+	 */
+	explicit CSISException (const TCategory aCategory, const std::string& aContext);
+	/**
+	 * Constructor
+	 * @param aCategory type of exception
+	 * @param aContext context for the exception
+	 */
+	explicit CSISException (const TCategory aCategory, const std::wstring& aContext);
+	/**
+	 * Cleanup owned resources
+	 */
+	virtual ~CSISException() throw ();
+	/**
+	 * Gets the exception detail or message.
+	 */
+	virtual const char *what () const throw() ;
+	/**
+	 * Gets the exception detail or message.
+	 */
+	virtual const wchar_t *widewhat () const throw();
+	/**
+	 * Gets the exception category
+	 */
+	TCategory ErrorCategory() const;
+
+	/**
+	 * Throws an exception if the condition is true.
+	 * @param aCondidtion Throws an exception if the condition is true.
+	 * @param aCategory type of exception
+	 * @param aContext context for the exception
+	 */
+	static void ThrowIf (const bool aCondition, const TCategory aCategory, const std::string& aContext);
+	/**
+	 * Throws an exception if the condition is true.
+	 * @param aCondidtion Throws an exception if the condition is true.
+	 * @param aCategory type of exception
+	 * @param aContext context for the exception
+	 */
+	static void ThrowIf (const bool aCondition, const TCategory aCategory, const std::wstring& aContext);
+
+
+private:
+	std::wstring iDescription;
+	TCategory iCategory;
+	};
+
+
+inline CSISException::CSISException (const TCategory aCategory, const std::string& aContext) :
+		std::exception (),
+		iDescription (string2wstring (aContext)),
+		iCategory (aCategory)
+	{
+	}
+	
+
+inline CSISException::CSISException (const TCategory aCategory, const std::wstring& aContext) :
+		std::exception (),
+		iDescription (aContext),
+		iCategory (aCategory)
+	{
+	}
+	
+
+inline CSISException::~CSISException () throw()
+	{
+	}
+
+
+inline void CSISException::ThrowIf (const bool aCondition, const TCategory aCategory, const std::string& aContext)
+	{
+	if (aCondition)
+		{
+		throw CSISException (aCategory, string2wstring (aContext));
+		}
+	}
+
+inline void CSISException::ThrowIf (const bool aCondition, const TCategory aCategory, const std::wstring& aContext)
+	{
+	if (aCondition)
+		{
+		throw CSISException (aCategory, aContext);
+		}
+	}
+
+inline CSISException::TCategory CSISException::ErrorCategory() const
+	{
+	return iCategory;
+	}
+
+
+#endif // __EXCEPTION_H__
+