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