chiark / gitweb /
New function allowing an atom's length to be specified at intern time.
[mLib] / trace.h
diff --git a/trace.h b/trace.h
index 591f69fdd1c5b98a71bdf964c18818ce92a64315..6ebc0648d8136c301cb95e04b76d81b785a62df6 100644 (file)
--- a/trace.h
+++ b/trace.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: trace.h,v 1.3 1999/05/06 19:51:35 mdw Exp $
+ * $Id: trace.h,v 1.5 1999/12/10 23:42:04 mdw Exp $
  *
  * Tracing functions for debugging
  *
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: trace.h,v $
+ * Revision 1.5  1999/12/10 23:42:04  mdw
+ * Change header file guard names.
+ *
+ * Revision 1.4  1999/10/22 22:39:52  mdw
+ * New documented interface for tracing.
+ *
  * Revision 1.3  1999/05/06 19:51:35  mdw
  * Reformatted the LGPL notice a little bit.
  *
  *
  */
 
-#ifndef TRACE_H
-#define TRACE_H
+#ifndef MLIB_TRACE_H
+#define MLIB_TRACE_H
 
 #ifdef __cplusplus
   extern "C" {
 #endif
 
+/*----- Header files ------------------------------------------------------*/
+
 #include <stdio.h>
 
+/*----- Data structures ---------------------------------------------------*/
+
+typedef struct trace_opt {
+  char ch;
+  unsigned f;
+  const char *help;
+} trace_opt;
+
 /*----- Functions provided ------------------------------------------------*/
 
 /* --- @trace@ --- *
  *
- * Arguments:  @unsigned int l@ = trace level for output
+ * Arguments:  @unsigned l@ = trace level for output
  *             @const char *f@ = a @printf@-style format string
  *             @...@ = other arguments
  *
  * Use:                Reports a message to the trace output.
  */
 
-extern void trace(unsigned int /*l*/, const char */*f*/, ...);
+extern void trace(unsigned /*l*/, const char */*f*/, ...);
 
 /* --- @trace_block@ --- *
  *
- * Arguments:  @unsigned int l@ = trace level for output
+ * Arguments:  @unsigned l@ = trace level for output
  *             @const char *s@ = some header string to write
  *             @const void *b@ = pointer to a block of memory to dump
  *             @size_t sz@ = size of the block of memory
@@ -77,31 +93,31 @@ extern void trace(unsigned int /*l*/, const char */*f*/, ...);
  * Use:                Dumps the contents of a block to the trace output.
  */
 
-extern void trace_block(unsigned int /*l*/, const char */*s*/,
+extern void trace_block(unsigned /*l*/, const char */*s*/,
                        const void */*b*/, size_t /*sz*/);
 
 /* --- @trace_on@ --- *
  *
  * Arguments:  @FILE *fp@ = a file to trace on
- *             @unsigned int l@ = trace level to set
+ *             @unsigned l@ = trace level to set
  *
  * Returns:    ---
  *
  * Use:                Enables tracing to a file.
  */
 
-extern void trace_on(FILE */*fp*/, unsigned int /*l*/);
+extern void trace_on(FILE */*fp*/, unsigned /*l*/);
 
-/* --- @trace_setLevel@ --- *
+/* --- @trace_level@ --- *
  *
- * Arguments:  @unsigned int l@ = trace level to set
+ * Arguments:  @unsigned l@ = trace level to set
  *
  * Returns:    ---
  *
  * Use:                Sets the tracing level.
  */
 
-extern void trace_setLevel(unsigned int /*l*/);
+extern void trace_level(unsigned /*l*/);
 
 /* --- @tracing@ --- *
  *
@@ -112,7 +128,24 @@ extern void trace_setLevel(unsigned int /*l*/);
  * Use:                Informs the caller whether tracing is enabled.
  */
 
-extern unsigned int tracing(void);
+extern unsigned tracing(void);
+
+/* --- @traceopt@ --- *
+ *
+ * Arguments:  @trace_opt *t@ = pointer to trace options table
+ *             @const char *p@ = option string supplied by user
+ *             @unsigned f@ = initial tracing flags
+ *             @unsigned bad@ = forbidden tracing flags
+ *
+ * Returns:    Trace flags as set by user.
+ *
+ * Use:                Parses an option string from the user and sets the
+ *             appropriate trace flags.  If the argument is null or a single
+ *             `?' character, a help message is displayed.
+ */
+
+extern unsigned traceopt(trace_opt */*t*/, const char */*p*/,
+                        unsigned /*f*/, unsigned /*bad*/);
 
 /*----- Tracing macros ----------------------------------------------------*/