Index: trunk/psLib/src/sys/psTrace.h
===================================================================
--- trunk/psLib/src/sys/psTrace.h	(revision 556)
+++ trunk/psLib/src/sys/psTrace.h	(revision 560)
@@ -1,5 +1,6 @@
 #if !defined(PS_TRACE_H)
 #define PS_TRACE_H 1
-#define UNKNOWN_TRACE_LEVEL -9999               // we don't know this name's level
+#define UNKNOWN_TRACE_LEVEL -9999         // we don't know this name's level
+#define DEFAULT_TRACE_LEVEL 0
 
 /** \file psTrace.h
@@ -7,4 +8,18 @@
  *  \ingroup SystemGroup
  */
+
+/*****************************************************************************
+    A component is a string of the form aaa.bbb.ccc, and may itself contain
+    further subcomponents.  The Component structure doesn't in fact contain
+    it's full name, but only the last part.
+ *****************************************************************************/
+typedef struct Component
+{
+    const char *name;                     // last part of name of component
+    int level;                            // trace level for this component
+    int n;                                // number of subcomponents
+    struct Component **subcomp;           // next level of subcomponents
+}
+Component;
 
 /** Functions **************************************************************/
@@ -28,6 +43,10 @@
 ;
 
-/// turn off all tracing, and free trace's allocated memory
-void psTraceReset(void)
+/// Set all trace levels to zero (do not free nodes in the component tree).
+void psTraceReset()
+;
+
+/// Free all nodes in the component tree.
+void psTraceFree()
 ;
 
