summaryrefslogtreecommitdiffstats
path: root/debug
diff options
context:
space:
mode:
authorConstantin Jucovschi <cj@ubuntu.localdomain>2009-04-24 07:20:22 -0400
committerConstantin Jucovschi <cj@ubuntu.localdomain>2009-04-24 07:20:22 -0400
commit8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 (patch)
treebd328a4dd4f92d32202241b5e3a7f36177792c5f /debug
downloadrasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.gz
rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.xz
rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.zip
Initial commitv8.0
Diffstat (limited to 'debug')
-rw-r--r--debug/README11
-rw-r--r--debug/debug-clt.hh35
-rw-r--r--debug/debug-srv.hh35
-rw-r--r--debug/debug.hh129
4 files changed, 210 insertions, 0 deletions
diff --git a/debug/README b/debug/README
new file mode 100644
index 0000000..7a776d1
--- /dev/null
+++ b/debug/README
@@ -0,0 +1,11 @@
+This directory contains an include file which helps to generate formatted trace output.
+See this file for usage directions.
+No executable is generated here.
+Has been taken from rasmgr; Makefiles still have to be reworked before removing it there.
+Tests to be done.
+ -- PB 2003-aug-19
+
+have 2 versions now, one for server and one for client side.
+functionality identical except that srv version uses RMInit::logOut to have the same output location (i.e., file).
+ -- PB 2003-nov-24
+
diff --git a/debug/debug-clt.hh b/debug/debug-clt.hh
new file mode 100644
index 0000000..4a37565
--- /dev/null
+++ b/debug/debug-clt.hh
@@ -0,0 +1,35 @@
+/*
+* This file is part of rasdaman community.
+*
+* Rasdaman community is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Rasdaman community is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
+*
+* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
+rasdaman GmbH.
+*
+* For more information please see <http://www.rasdaman.org>
+* or contact Peter Baumann via <baumann@rasdaman.com>.
+/
+/**
+ * SOURCE: debug-clt.hh
+ *
+ * MODULE: rasmgr/test (prelim)
+ *
+ * COMMENTS:
+ * - uses cout for output; except for that. identical to debug-srv.hh
+ *
+*/
+
+#define OSTREAM cout
+#include "debug.hh"
+
diff --git a/debug/debug-srv.hh b/debug/debug-srv.hh
new file mode 100644
index 0000000..2660355
--- /dev/null
+++ b/debug/debug-srv.hh
@@ -0,0 +1,35 @@
+/*
+* This file is part of rasdaman community.
+*
+* Rasdaman community is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Rasdaman community is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
+*
+* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
+rasdaman GmbH.
+*
+* For more information please see <http://www.rasdaman.org>
+* or contact Peter Baumann via <baumann@rasdaman.com>.
+/
+/**
+ * SOURCE: debug-srv.hh
+ *
+ * MODULE: rasmgr/test (prelim)
+ *
+ * COMMENTS:
+ * - uses RMInit::logOut, otherwise identical to debug-clt.hh
+ *
+*/
+
+#define OSTREAM RMInit::logOut
+#include "debug.hh"
+
diff --git a/debug/debug.hh b/debug/debug.hh
new file mode 100644
index 0000000..d9fb8b2
--- /dev/null
+++ b/debug/debug.hh
@@ -0,0 +1,129 @@
+/*
+* This file is part of rasdaman community.
+*
+* Rasdaman community is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Rasdaman community is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
+*
+* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
+rasdaman GmbH.
+*
+* For more information please see <http://www.rasdaman.org>
+* or contact Peter Baumann via <baumann@rasdaman.com>.
+/
+/**
+ * SOURCE: debug.hh
+ *
+ * MODULE: rasmgr/test (prelim)
+ *
+ * COMMENTS:
+ * - needs RMInit
+*/
+
+#ifndef DEBUG_HH
+#define DEBUG_HH
+
+/* activated through
+#define DEBUG
+in the target code; needs one main! */
+
+#include <iostream>
+
+#ifdef DEBUG
+// enable trace macros
+
+// allow output stream 'cout' to be overridden
+#ifndef OSTREAM
+ #define OSTREAM std::cout
+#endif // OSTREAM
+
+#define INDENT ". "
+
+// no output by default
+#define DEBUG_OUTPUT_DEFAULT false
+
+/// for C++, we declare refs as "C" to exclude them from name mangling;
+/// for C it's like always
+/// --- well nice, but doesn't work for now, so we set it back
+#ifdef __cplusplus
+# define EXTERN extern // "C"
+#else
+# define EXTERN extern
+#endif
+
+/// variables are allocated in the main module (i.e., the source where main() resides),
+/// and referened from all other places
+#ifdef DEBUG_MAIN
+ int indentLevel = 0;
+ bool debugOutput = DEBUG_OUTPUT_DEFAULT;
+#else
+ EXTERN int indentLevel;
+ EXTERN bool debugOutput;
+#endif // DEBUG_MAIN
+
+/// enable/disable debug output from program
+/// b == true: switch on output
+/// b == false: switch off output
+#define SET_OUTPUT(b) { debugOutput = b; }
+
+/// ENTER(a): write trace line for entering a function (increases indentation)
+#define ENTER(a) \
+ { \
+ if (debugOutput) \
+ { \
+ for (int i = 0; i < indentLevel; i++) \
+ OSTREAM << INDENT; \
+ OSTREAM << "ENTER " << a << std::endl << std::flush; \
+ indentLevel++; \
+ } \
+ }
+
+/// LEAVE(a): write trace line for leaving a function (decreases indentation)
+#define LEAVE(a) \
+ { \
+ if (debugOutput) \
+ { \
+ if (indentLevel > 0 ) \
+ indentLevel--; \
+ for (int i = 0; i < indentLevel; i++) \
+ OSTREAM << INDENT; \
+ OSTREAM << "LEAVE " << a << std::endl << std::flush; \
+ } \
+ }
+
+
+/// TALK(a): write trace line from within a function (leaves indentation unchanged)
+#define TALK(a) \
+ { \
+ if (debugOutput) \
+ { \
+ for (int i = 0; i < indentLevel; i++) \
+ OSTREAM << INDENT; \
+ OSTREAM << a << std::endl << std::flush; \
+ } \
+ }
+
+#else
+// disable all trace macros
+#undef SET_OUTPUT
+#undef ENTER
+#undef LEAVE
+#undef TALK
+
+#define SET_OUTPUT(b) { /* SET_OUTPUT(b) */ }
+#define ENTER(a) { /* ENTER(a) */ }
+#define LEAVE(a) { /* LEAVE(a) */ }
+#define TALK(a) { /* TALK(a) */ }
+
+#endif // DEBUG
+
+#endif // DEBUG_HH