Annotation of truecrypt/platform/exception.h, revision 1.1

1.1     ! root        1: /*
        !             2:  Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
        !             3: 
        !             4:  Governed by the TrueCrypt License 2.4 the full text of which is contained
        !             5:  in the file License.txt included in TrueCrypt binary and source code
        !             6:  distribution packages.
        !             7: */
        !             8: 
        !             9: #ifndef TC_HEADER_Platform_Exception
        !            10: #define TC_HEADER_Platform_Exception
        !            11: 
        !            12: #include <exception>
        !            13: #include "PlatformBase.h"
        !            14: #include "Serializable.h"
        !            15: 
        !            16: namespace TrueCrypt
        !            17: {
        !            18: #define TC_SERIALIZABLE_EXCEPTION(TYPE) TC_SERIALIZABLE (TYPE); \
        !            19:        virtual Exception *CloneNew () { return new TYPE (*this); } \
        !            20:        virtual void Throw () const { throw *this; }
        !            21: 
        !            22:        struct Exception : public exception, public Serializable
        !            23:        {
        !            24:        public:
        !            25:                Exception () { }
        !            26:                Exception (const string &message) : Message (message) { }
        !            27:                Exception (const string &message, const wstring &subject) : Message (message), Subject (subject) { }
        !            28:                virtual ~Exception () throw () { }
        !            29: 
        !            30:                TC_SERIALIZABLE_EXCEPTION (Exception);
        !            31: 
        !            32:                virtual const char *what () const throw () { return Message.c_str(); }
        !            33:                virtual const wstring &GetSubject() const { return Subject; }
        !            34: 
        !            35:        protected:
        !            36:                string Message;
        !            37:                wstring Subject;
        !            38:        };
        !            39: 
        !            40:        struct ExecutedProcessFailed : public Exception
        !            41:        {
        !            42:                ExecutedProcessFailed () { }
        !            43:                ExecutedProcessFailed (const string &message, const string &command, int exitCode, const string &errorOutput)
        !            44:                        : Exception (message), Command (command), ExitCode (exitCode), ErrorOutput (errorOutput) { }
        !            45:                virtual ~ExecutedProcessFailed () throw () { }
        !            46: 
        !            47:                TC_SERIALIZABLE_EXCEPTION (ExecutedProcessFailed);
        !            48: 
        !            49:                string GetCommand () const { return Command; }
        !            50:                int64 GetExitCode () const { return ExitCode; }
        !            51:                string GetErrorOutput () const { return ErrorOutput; }
        !            52: 
        !            53:        protected:
        !            54:                string Command;
        !            55:                int64 ExitCode;
        !            56:                string ErrorOutput;
        !            57:        };
        !            58: 
        !            59: #define TC_EXCEPTION_DECL(NAME,BASE) \
        !            60:        struct NAME  : public BASE \
        !            61:        { \
        !            62:                NAME () { } \
        !            63:                NAME (const string &message) : BASE (message) { } \
        !            64:                NAME (const string &message, const wstring &subject) : BASE (message, subject) { } \
        !            65:                virtual Exception *CloneNew () { return new NAME (*this); } \
        !            66:                static Serializable *GetNewSerializable () { return new NAME (); } \
        !            67:                virtual void Throw () const { throw *this; } \
        !            68:        }
        !            69: 
        !            70: #define TC_EXCEPTION_NODECL(dummy) //
        !            71: #define TC_EXCEPTION(NAME) TC_EXCEPTION_DECL(NAME,Exception)
        !            72: 
        !            73: #ifdef TC_EXCEPTION_SET
        !            74: #undef TC_EXCEPTION_SET
        !            75: #endif
        !            76: #define TC_EXCEPTION_SET \
        !            77:        TC_EXCEPTION_NODECL (Exception); \
        !            78:        TC_EXCEPTION_NODECL (ExecutedProcessFailed); \
        !            79:        TC_EXCEPTION (AlreadyInitialized); \
        !            80:        TC_EXCEPTION (AssertionFailed); \
        !            81:        TC_EXCEPTION (ExternalException); \
        !            82:        TC_EXCEPTION (InsufficientData); \
        !            83:        TC_EXCEPTION (NotApplicable); \
        !            84:        TC_EXCEPTION (NotImplemented); \
        !            85:        TC_EXCEPTION (NotInitialized); \
        !            86:        TC_EXCEPTION (ParameterIncorrect); \
        !            87:        TC_EXCEPTION (ParameterTooLarge); \
        !            88:        TC_EXCEPTION (StringConversionFailed); \
        !            89:        TC_EXCEPTION (TestFailed); \
        !            90:        TC_EXCEPTION (TimeOut); \
        !            91:        TC_EXCEPTION (UnknownException)
        !            92: 
        !            93:        TC_EXCEPTION_SET;
        !            94: 
        !            95: #undef TC_EXCEPTION
        !            96: }
        !            97: 
        !            98: #ifdef assert
        !            99: #      undef assert
        !           100: #endif
        !           101: 
        !           102: #ifdef DEBUG
        !           103: #      define assert(condition) do { if (!(condition)) throw AssertionFailed (SRC_POS); } while (false)
        !           104: #else
        !           105: #      define assert(condition) ((void) 0)
        !           106: #endif
        !           107: 
        !           108: #endif // TC_HEADER_Platform_Exception

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.