dol: initial dol commit
[jump.git] / dol / src / dol / visitor / hds / lib / functional_trace.h
1 #ifndef _FUNCTIONAL_H\r
2 #define _FUNCTIONAL_H\r
3 \r
4 #include "trace.h"\r
5 \r
6 typedef struct EVENT_ENTRY\r
7 {\r
8     char event_type;\r
9     int start_line;\r
10     int end_line;\r
11     int data_num;\r
12     char *channel_name;\r
13 \r
14     EVENT_ENTRY *next;\r
15 }EVENT_ENTRY;\r
16 \r
17 class Process_Trace\r
18 {\r
19 private:\r
20     char _process_name[NAME_LENGTH];\r
21     EVENT_ENTRY *_head;\r
22     EVENT_ENTRY *_tail;\r
23 \r
24 public:\r
25     Process_Trace(const char *process_name);\r
26     ~Process_Trace();\r
27 \r
28     const char *get_name();\r
29     int add_entry(TRACE_EVENT *trace_event_ptr);\r
30     EVENT_ENTRY *get_head_entry();\r
31 };\r
32 \r
33 class functional_trace\r
34 {\r
35 public:\r
36     char trace_file_name[NAME_LENGTH];\r
37     unsigned long event_num;\r
38     int file_index;\r
39 \r
40     list<Process_Trace *> _list_process_trace;\r
41     list<Process_Trace *>::iterator _iter_process_trace;\r
42 \r
43     functional_trace();\r
44     ~functional_trace();\r
45 \r
46     void add_event_node(TRACE_EVENT &trace_event);\r
47     void create_computation_event(const char *process_name, int start_line, int end_line);\r
48     void create_read_event(const char *process_name, int data_num, const char *channel_name);\r
49     void create_write_event(const char *process_name, int data_num, const char *channel_name);\r
50     int write_to_file(const char *trace_file_name);\r
51     Process_Trace *get_process_trace(const char *process_name);\r
52     void free_traces();\r
53 };\r
54 \r
55 extern functional_trace dol_functional_trace;\r
56 \r
57 #endif\r