00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00027 #ifndef _TERMREASON_H_
00028 #define _TERMREASON_H_
00029
00030 #include <string>
00031 #include <map>
00032
00033
00034
00035 extern std::map<std::string,std::string> __termr_message__;
00036
00037 class termination_reason
00038 {
00039 private:
00040 std::string termr_string;
00041 int termr_code;
00042 std::map<std::string,std::string>& termr_message;
00043
00044 public:
00045 termination_reason() : termr_string(std::string("SUCCESS")), termr_code(0),
00046 termr_message(__termr_message__) {}
00047
00048 termination_reason(int termr_r, const std::string& termr_ref)
00049 : termr_string(termr_ref), termr_code(termr_r),
00050 termr_message(__termr_message__) {}
00051
00052 termination_reason(const termination_reason& __t)
00053 : termr_string(__t.termr_string), termr_code(__t.termr_code),
00054 termr_message(__t.termr_message) {}
00055
00056 termination_reason& operator=(const termination_reason& __t)
00057 {
00058 termr_string = __t.termr_string;
00059 termr_code = __t.termr_code;
00060 termr_message = __t.termr_message;
00061 return *this;
00062 }
00063
00064 const std::string& get_message() const
00065 {
00066 std::map<std::string,std::string>::const_iterator __i;
00067 __i = termr_message.find(termr_string);
00068 if(__i == termr_message.end())
00069 return termr_string;
00070 else
00071 return (*__i).second;
00072 }
00073
00074 int get_code() const { return termr_code; }
00075
00076 friend std::ostream& operator<< (std::ostream& o, const termination_reason& __x);
00077 };
00078
00079 inline std::ostream& operator<< (std::ostream& o, const termination_reason& __x)
00080 {
00081 return o << __x.get_message();
00082 }
00083
00084 #endif