]> Dogcows Code - chaz/yoink/blobdiff - src/stlplus/portability/debug.cpp
cleanup stlplus files
[chaz/yoink] / src / stlplus / portability / debug.cpp
index 562518eff9d86bdf0515067e1a229f813258be6c..d5b153489c086b4613863e1eafaba83c9648542f 100644 (file)
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-//   Author:    Andy Rushton\r
-//   Copyright: (c) Southampton University 1999-2004\r
-//              (c) Andy Rushton           2004-2009\r
-//   License:   BSD License, see ../docs/license.html\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-#include "debug.hpp"\r
-#include "dprintf.hpp"\r
-#include <string.h>\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-namespace stlplus\r
-{\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-  static std::string format(const char* file, int line, const char* function, const char* message)\r
-  {\r
-    return dformat("%s:%d:%s: assertion failed: %s",\r
-                   (file ? file : ""),\r
-                   line,\r
-                   (function ? function : "") ,\r
-                   (message ? message : ""));\r
-  }\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-  assert_failed::assert_failed(const char* file, int line, const char* function, const char* message)\r
-    throw() : \r
-    std::logic_error(format(file, line, function, message))\r
-  {\r
-  }\r
-\r
-  assert_failed::~assert_failed(void) throw()\r
-  {\r
-  }\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-  static unsigned _debug_depth = 0;\r
-  static bool _debug_global = false;\r
-  static bool _debug_set = false;\r
-  static bool _debug_recurse = false;\r
-  static bool _debug_read = false;\r
-  static char* _debug_match = 0;\r
-  static const debug_trace* debug_last = 0;\r
-\r
-  void debug_global(const char* file, int line, const char* function, bool state)\r
-  {\r
-    _debug_global = state;\r
-    fprintf(stderr, "%s:%i:[%i]%s ", file, line, _debug_depth, function ? function : "");\r
-    fprintf(stderr, "debug global : %s\n", _debug_global ? "on" : "off");\r
-  }\r
-\r
-  void debug_assert_fail(const char* file, int line, const char* function, const char* test) \r
-    throw(assert_failed)\r
-  {\r
-    fprintf(stderr, "%s:%i:[%i]%s: assertion failed: %s\n", \r
-            file, line, _debug_depth, function ? function : "", test);\r
-    if (debug_last) debug_last->stackdump();\r
-    throw assert_failed(file, line, function, test);\r
-  }\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-  debug_trace::debug_trace(const char* f, int l, const char* fn) :\r
-    m_file(f), m_line(l), m_function(fn ? fn : ""), \r
-    m_depth(0), m_last(debug_last), m_dbg(false), m_old(false)\r
-  {\r
-    if (!_debug_read)\r
-    {\r
-      _debug_match = getenv("DEBUG");\r
-      _debug_recurse = getenv("DEBUG_LOCAL") == 0;\r
-      _debug_read = true;\r
-    }\r
-    m_dbg = _debug_set || (_debug_match && (!_debug_match[0] || (strcmp(_debug_match, m_file) == 0)));\r
-    m_old = _debug_set;\r
-    if (m_dbg && _debug_recurse)\r
-      _debug_set = true;\r
-    m_depth = ++_debug_depth;\r
-    debug_last = this;\r
-    if (debug()) report(std::string("entering ") + (m_function ? m_function : ""));\r
-  }\r
-\r
-  debug_trace::~debug_trace(void)\r
-  {\r
-    if (debug()) report("leaving");\r
-    --_debug_depth;\r
-    _debug_set = m_old;\r
-    debug_last = m_last;\r
-  }\r
-\r
-  const char* debug_trace::file(void) const\r
-  {\r
-    return m_file;\r
-  }\r
-\r
-  int debug_trace::line(void) const\r
-  {\r
-    return m_line;\r
-  }\r
-\r
-  bool debug_trace::debug(void) const\r
-  {\r
-    return m_dbg || _debug_global;\r
-  }\r
-\r
-  void debug_trace::debug_on(int l, bool recurse)\r
-  {\r
-    m_dbg = true;\r
-    m_old = _debug_set;\r
-    if (recurse)\r
-      _debug_set = true;\r
-    report(l, std::string("debug on") + (recurse ? " recursive" : ""));\r
-  }\r
-\r
-  void debug_trace::debug_off(int l)\r
-  {\r
-    if (debug()) report(l, std::string("debug off"));\r
-    m_dbg = false;\r
-    _debug_set = m_old;\r
-  }\r
-\r
-  void debug_trace::prefix(int l) const\r
-  {\r
-    fprintf(stderr, "%s:%i:[%i]%s ", m_file, l, m_depth, m_function ? m_function : "");\r
-  }\r
-\r
-  void debug_trace::do_report(int l, const std::string& message) const\r
-  {\r
-    prefix(l);\r
-    fprintf(stderr, "%s\n", message.c_str());\r
-    fflush(stderr);\r
-  }\r
-\r
-  void debug_trace::do_report(const std::string& message) const\r
-  {\r
-    do_report(m_line, message);\r
-  }\r
-\r
-  void debug_trace::report(int l, const std::string& message) const\r
-  {\r
-    do_report(l, message);\r
-  }\r
-\r
-  void debug_trace::report(const std::string& message) const\r
-  {\r
-    report(m_line, message);\r
-  }\r
-\r
-  void debug_trace::error(int l, const std::string& message) const\r
-  {\r
-    do_report(l, "ERROR: " + message);\r
-  }\r
-\r
-  void debug_trace::error(const std::string& message) const\r
-  {\r
-    error(m_line, message);\r
-  }\r
-\r
-  void debug_trace::stackdump(int l, const std::string& message) const\r
-  {\r
-    do_report(l, message);\r
-    stackdump();\r
-  }\r
-\r
-  void debug_trace::stackdump(const std::string& message) const\r
-  {\r
-    stackdump(m_line, message);\r
-  }\r
-\r
-  void debug_trace::stackdump(void) const\r
-  {\r
-    for (const debug_trace* item = this; item; item = item->m_last)\r
-      item->do_report("...called from here");\r
-  }\r
-\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-} // end namespace stlplus\r
+////////////////////////////////////////////////////////////////////////////////
+
+//   Author:    Andy Rushton
+//   Copyright: (c) Southampton University 1999-2004
+//              (c) Andy Rushton           2004-2009
+//   License:   BSD License, see ../docs/license.html
+
+////////////////////////////////////////////////////////////////////////////////
+
+#include "debug.hpp"
+#include "dprintf.hpp"
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+////////////////////////////////////////////////////////////////////////////////
+
+namespace stlplus
+{
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+  static std::string format(const char* file, int line, const char* function, const char* message)
+  {
+    return dformat("%s:%d:%s: assertion failed: %s",
+                   (file ? file : ""),
+                   line,
+                   (function ? function : "") ,
+                   (message ? message : ""));
+  }
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+  assert_failed::assert_failed(const char* file, int line, const char* function, const char* message)
+    throw() : 
+    std::logic_error(format(file, line, function, message))
+  {
+  }
+
+  assert_failed::~assert_failed(void) throw()
+  {
+  }
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+  static unsigned _debug_depth = 0;
+  static bool _debug_global = false;
+  static bool _debug_set = false;
+  static bool _debug_recurse = false;
+  static bool _debug_read = false;
+  static char* _debug_match = 0;
+  static const debug_trace* debug_last = 0;
+
+  void debug_global(const char* file, int line, const char* function, bool state)
+  {
+    _debug_global = state;
+    fprintf(stderr, "%s:%i:[%i]%s ", file, line, _debug_depth, function ? function : "");
+    fprintf(stderr, "debug global : %s\n", _debug_global ? "on" : "off");
+  }
+
+  void debug_assert_fail(const char* file, int line, const char* function, const char* test) 
+    throw(assert_failed)
+  {
+    fprintf(stderr, "%s:%i:[%i]%s: assertion failed: %s\n", 
+            file, line, _debug_depth, function ? function : "", test);
+    if (debug_last) debug_last->stackdump();
+    throw assert_failed(file, line, function, test);
+  }
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+  debug_trace::debug_trace(const char* f, int l, const char* fn) :
+    m_file(f), m_line(l), m_function(fn ? fn : ""), 
+    m_depth(0), m_last(debug_last), m_dbg(false), m_old(false)
+  {
+    if (!_debug_read)
+    {
+      _debug_match = getenv("DEBUG");
+      _debug_recurse = getenv("DEBUG_LOCAL") == 0;
+      _debug_read = true;
+    }
+    m_dbg = _debug_set || (_debug_match && (!_debug_match[0] || (strcmp(_debug_match, m_file) == 0)));
+    m_old = _debug_set;
+    if (m_dbg && _debug_recurse)
+      _debug_set = true;
+    m_depth = ++_debug_depth;
+    debug_last = this;
+    if (debug()) report(std::string("entering ") + (m_function ? m_function : ""));
+  }
+
+  debug_trace::~debug_trace(void)
+  {
+    if (debug()) report("leaving");
+    --_debug_depth;
+    _debug_set = m_old;
+    debug_last = m_last;
+  }
+
+  const char* debug_trace::file(void) const
+  {
+    return m_file;
+  }
+
+  int debug_trace::line(void) const
+  {
+    return m_line;
+  }
+
+  bool debug_trace::debug(void) const
+  {
+    return m_dbg || _debug_global;
+  }
+
+  void debug_trace::debug_on(int l, bool recurse)
+  {
+    m_dbg = true;
+    m_old = _debug_set;
+    if (recurse)
+      _debug_set = true;
+    report(l, std::string("debug on") + (recurse ? " recursive" : ""));
+  }
+
+  void debug_trace::debug_off(int l)
+  {
+    if (debug()) report(l, std::string("debug off"));
+    m_dbg = false;
+    _debug_set = m_old;
+  }
+
+  void debug_trace::prefix(int l) const
+  {
+    fprintf(stderr, "%s:%i:[%i]%s ", m_file, l, m_depth, m_function ? m_function : "");
+  }
+
+  void debug_trace::do_report(int l, const std::string& message) const
+  {
+    prefix(l);
+    fprintf(stderr, "%s\n", message.c_str());
+    fflush(stderr);
+  }
+
+  void debug_trace::do_report(const std::string& message) const
+  {
+    do_report(m_line, message);
+  }
+
+  void debug_trace::report(int l, const std::string& message) const
+  {
+    do_report(l, message);
+  }
+
+  void debug_trace::report(const std::string& message) const
+  {
+    report(m_line, message);
+  }
+
+  void debug_trace::error(int l, const std::string& message) const
+  {
+    do_report(l, "ERROR: " + message);
+  }
+
+  void debug_trace::error(const std::string& message) const
+  {
+    error(m_line, message);
+  }
+
+  void debug_trace::stackdump(int l, const std::string& message) const
+  {
+    do_report(l, message);
+    stackdump();
+  }
+
+  void debug_trace::stackdump(const std::string& message) const
+  {
+    stackdump(m_line, message);
+  }
+
+  void debug_trace::stackdump(void) const
+  {
+    for (const debug_trace* item = this; item; item = item->m_last)
+      item->do_report("...called from here");
+  }
+
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+} // end namespace stlplus
This page took 0.035062 seconds and 4 git commands to generate.