00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00037 #if !defined( _OESS_1__DEFS__ERR_CODE_HPP_ )
00038 #define _OESS_1__DEFS__ERR_CODE_HPP_
00039
00040 #include <oess_1/defs/h/declspec.hpp>
00041
00042 #include <iostream>
00043
00044 #include <string>
00045
00046 #include <oess_1/defs/h/types.hpp>
00047
00048 namespace oess_1 {
00049
00051
00056 struct OESS_1__DEFS__TYPE err_code_t {
00058 int_t m_code;
00059
00061 std::string m_file;
00062
00065
00070 int m_line;
00071
00073
00083 std::string m_desc;
00084
00090 err_code_t(
00092 const std::string & file,
00095 int line );
00096
00100 err_code_t(
00102 int_t code,
00104 const std::string & file,
00107 int line,
00109 const std::string & desc );
00110
00112 err_code_t(
00113 const err_code_t & o );
00114
00115 ~err_code_t();
00116
00118 err_code_t &
00119 operator=(
00120 const err_code_t & o );
00121
00123
00127 inline
00128 operator bool() const {
00129 return ( 0 != m_code );
00130 }
00131
00133
00139 inline bool
00140 operator==( int c ) const {
00141 return ( c == m_code );
00142 }
00143
00145
00148 inline bool
00149 operator==( const err_code_t & o ) const {
00150 return ( m_code == o.m_code );
00151 }
00152
00154
00160 inline bool
00161 operator!=( int c ) const {
00162 return ( c != m_code );
00163 }
00164
00166
00169 inline bool
00170 operator!=( const err_code_t & o ) const {
00171 return ( m_code != o.m_code );
00172 }
00173
00175
00180 inline bool
00181 operator!() const {
00182 return ( !m_code );
00183 }
00184 };
00185
00187
00206 #define oess_1_make_err(code, desc) oess_1::err_code_t(code, __FILE__, __LINE__, desc)
00207
00209
00217 OESS_1__DEFS__FUNC( std::ostream & )
00218 err_code_to_std_ostream( std::ostream & o, const err_code_t & c );
00219
00221
00226 inline std::ostream &
00227 operator<<( std::ostream & o, const err_code_t & c )
00228 {
00229 return err_code_to_std_ostream( o, c );
00230 }
00231
00232 }
00233
00234 #endif