--- /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__
+