summaryrefslogtreecommitdiff
path: root/ace/Trace.h
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
commita5fdebc5f6375078ec1763850a4ca23ec7fe6458 (patch)
treebcf0a25c3d45a209a6e3ac37b233a4812f29c732 /ace/Trace.h
downloadATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz
Initial revision
Diffstat (limited to 'ace/Trace.h')
-rw-r--r--ace/Trace.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/ace/Trace.h b/ace/Trace.h
new file mode 100644
index 00000000000..8943b7a8055
--- /dev/null
+++ b/ace/Trace.h
@@ -0,0 +1,77 @@
+/* -*- C++ -*- */
+// $Id$
+
+
+// ============================================================================
+//
+// = LIBRARY
+// ace
+//
+// = FILENAME
+// Trace.h
+//
+// = AUTHOR
+// Doug Schmidt
+//
+// ============================================================================
+
+#if !defined (ACE_TRACE_H)
+#define ACE_TRACE_H
+
+class ACE_Export ACE_Trace
+ // = TITLE
+ // A C++ trace facility that keeps track of which methods are
+ // entered and exited.
+ //
+ // = DESCRIPTION
+ // This class uses C++ constructors and destructors to automate
+ // the ACE_Trace nesting. In addition, thread-specific storage
+ // is used to enable multiple threads to work correctly.
+{
+public:
+ // = Initialization and termination methods.
+
+ ACE_Trace (const char *n, int line = 0, const char *file = "");
+ // Perform the first part of the trace, which prints out the string
+ // N, the LINE, and the ACE_FILE as the function is entered.
+
+ ~ACE_Trace (void);
+ // Perform the second part of the trace, which prints out the NAME
+ // as the function is exited.
+
+ // = Control the tracing level.
+ static void start_tracing (void);
+ // Enable the tracing facility.
+
+ static void stop_tracing (void);
+ // Disable the tracing facility.
+
+ static void set_nesting_indent (int indent);
+ // Change the nesting indentation level.
+
+ void dump (void) const;
+ // Dump the state of an object.
+
+private:
+ // Keeps track of how deeply the call stack is nested (this is
+ // maintained in thread-specific storage to ensure correctness in
+ // multiple threads of control.
+
+ const char *name_;
+ // Name of the method we are in.
+
+ static int nesting_indent_;
+ // Keeps track of how far to indent per trace call.
+
+ static int enable_tracing_;
+ // Is tracing enabled?
+
+ // Default values.
+ enum
+ {
+ DEFAULT_INDENT = 3,
+ DEFAULT_TRACING = 1
+ };
+};
+
+#endif /* ACE_TRACE_H */