r118: *** empty log message ***
[ctsim.git] / include / trace.h
1 #ifndef TRACE_H
2 #define TRACE_H
3
4 enum {
5   TRACE_NONE,           /* No tracing */
6   TRACE_TEXT,           /* Minimal status */
7   TRACE_PHM,            /* Show phantom */
8   TRACE_RAYS,           /* Show all rays */
9   TRACE_PLOT,           /* Plot raysums */
10   TRACE_CLIPPING        /* Plot clipping */
11 };
12
13 static const char TRACE_NONE_STR[]=     "none";
14 static const char TRACE_TEXT_STR[]=     "text";
15 static const char TRACE_PHM_STR[]=      "phm";
16 static const char TRACE_RAYS_STR[]=     "rays";
17 static const char TRACE_PLOT_STR[]=     "plot";
18 static const char TRACE_CLIPPING_STR[]= "clipping";
19
20 class TraceLevel
21 {
22  public:
23     TraceLevel (const char* const traceString);
24
25     addTrace (const char* const traceString);
26
27     bool isTrace (const char* const traceQuery) const;
28
29  private:
30
31     bool addTraceElements (const char* const traceString);
32 };
33
34
35 inline int 
36 opt_set_trace (const char *traceString)
37 {
38   int traceID;
39
40   if (strcasecmp (traceString, TRACE_NONE_STR) == 0)
41     traceID = TRACE_NONE;
42   else if (strcasecmp (traceString, TRACE_TEXT_STR) == 0)
43     traceID = TRACE_TEXT;
44   else if (strcasecmp (traceString, TRACE_PHM_STR) == 0)
45     traceID = TRACE_PHM;
46   else if (strcasecmp (traceString, TRACE_PLOT_STR) == 0)
47     traceID = TRACE_PLOT;
48   else if (strcasecmp (traceString, TRACE_CLIPPING_STR) == 0)
49     traceID = TRACE_CLIPPING;
50   else if (strcasecmp (traceString, TRACE_RAYS_STR) == 0)
51     traceID = TRACE_RAYS;
52   else {
53     sys_error(ERR_WARNING,"Invalid trace option %s\n", traceString);
54     traceID = -1;
55   }
56
57   return (traceID);
58 }
59
60
61 #endif
62