#ifndef FXEXCEPTION_H
#define FXEXCEPTION_H

namespace fx {

    /**
     * @brief Класс исключений
     */
    class exception
    {
    public:

        exception(unsigned int code, const char* message = 0): _message(0)
        {
            set_code(code);
            set_message(message);
        }

        ~exception()
        {
            delete[] _message;
        }

        unsigned int get_code() const
        {
            return _code;
        }

        void set_code(unsigned int code)
        {
            _code = code;
        }

        const char* get_message() const
        {
            return _message;
        }

        void set_message(const char* message = 0)
        {
            delete[] _message;
            if(message) {
                _message = new char[strlen(message) + 1];
                while(*_message++ = *message++);
            } else {
                _message = 0;
            }
        }

    private:
        char* _message;
        unsigned int _code;
    };
}

#endif // FXEXCEPTION_H
