- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

# bdmerror.h

Go to the documentation of this file.

    00001
    00013 #ifndef bdmerror_h
    00014 #define bdmerror_h
    00015
    00016 // modelled after IT++ assert macros, somewhat simplified
    00017
    00018 #include <sstream>
    00019 #include <string>
    00020
    00021 namespace bdm {
    00022
    00024 void bdm_assert_f(const std::string &ass, const std::string &msg, const std::string &file, int line);
    00025
    00027 void bdm_error_f(const std::string &msg, const std::string &file, int line);
    00028
    00030 void bdm_warning_f(const std::string &msg, const std::string &file, int line);
    00031
    00032 }
    00033
    00035 #define bdm_assert(t, s) \
    00036         if (!(t)) { \
    00037                 std::ostringstream bdm_out; \
    00038                 bdm_out << s; \
    00039                 bdm::bdm_assert_f(#t, bdm_out.str(), __FILE__, __LINE__); \
    00040         } else ((void) 0)
    00041
    00042 #if defined(NDEBUG)
    00044 #define bdm_assert_debug(t, s) ((void) 0)
    00045 #else
    00047 #define bdm_assert_debug(t, s) bdm_assert(t, s)
    00048 #endif // if defined(NDEBUG)
    00049
    00051 #define bdm_error(s) \
    00052         if (true) { \
    00053                 std::ostringstream bdm_out; \
    00054                 bdm_out << s; \
    00055                 bdm::bdm_error_f(bdm_out.str(), __FILE__, __LINE__); \
    00056         } else ((void) 0)
    00057
    00059 #define bdm_warning(s) \
    00060         if (true) { \
    00061                 std::ostringstream bdm_out; \
    00062                 bdm_out << s; \
    00063                 bdm::bdm_warning_f(bdm_out.str(), __FILE__, __LINE__); \
    00064         } else ((void) 0)
    00065
    00066 #endif
    00067