File: exception.h

package info (click to toggle)
c%2B%2B-annotations 7.2.0-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 11,484 kB
  • ctags: 2,902
  • sloc: cpp: 15,844; makefile: 2,997; ansic: 165; perl: 90; sh: 29
file content (36 lines) | stat: -rw-r--r-- 914 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    #ifndef EXCEPTION_H_
    #define EXCEPTION_H_

    #include <iostream>
    #include <string>

    class Exception
    {
        friend std::ostream &operator<<(std::ostream &str,
                                        Exception const &e);
        std::string d_reason;

        public:
            virtual ~Exception();
            virtual void process() const = 0;
            virtual operator std::string() const;
        protected:
            Exception(char const *reason);
    };

        inline Exception::~Exception()
        {}
        inline Exception::operator std::string() const
        {
            return d_reason;
        }
        inline Exception::Exception(char const *reason)
        :
            d_reason(reason)
        {}
        inline std::ostream &operator<<(std::ostream &str, Exception const &e)
        {
            return str << e.operator std::string();
        }

    #endif