dol: initial dol commit
[jump.git] / dol / src / dol / visitor / hds / lib / functional_trace.h
diff --git a/dol/src/dol/visitor/hds/lib/functional_trace.h b/dol/src/dol/visitor/hds/lib/functional_trace.h
new file mode 100644 (file)
index 0000000..f3f0a8b
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef _FUNCTIONAL_H\r
+#define _FUNCTIONAL_H\r
+\r
+#include "trace.h"\r
+\r
+typedef struct EVENT_ENTRY\r
+{\r
+    char event_type;\r
+    int start_line;\r
+    int end_line;\r
+    int data_num;\r
+    char *channel_name;\r
+\r
+    EVENT_ENTRY *next;\r
+}EVENT_ENTRY;\r
+\r
+class Process_Trace\r
+{\r
+private:\r
+    char _process_name[NAME_LENGTH];\r
+    EVENT_ENTRY *_head;\r
+    EVENT_ENTRY *_tail;\r
+\r
+public:\r
+    Process_Trace(const char *process_name);\r
+    ~Process_Trace();\r
+\r
+    const char *get_name();\r
+    int add_entry(TRACE_EVENT *trace_event_ptr);\r
+    EVENT_ENTRY *get_head_entry();\r
+};\r
+\r
+class functional_trace\r
+{\r
+public:\r
+    char trace_file_name[NAME_LENGTH];\r
+    unsigned long event_num;\r
+    int file_index;\r
+\r
+    list<Process_Trace *> _list_process_trace;\r
+    list<Process_Trace *>::iterator _iter_process_trace;\r
+\r
+    functional_trace();\r
+    ~functional_trace();\r
+\r
+    void add_event_node(TRACE_EVENT &trace_event);\r
+    void create_computation_event(const char *process_name, int start_line, int end_line);\r
+    void create_read_event(const char *process_name, int data_num, const char *channel_name);\r
+    void create_write_event(const char *process_name, int data_num, const char *channel_name);\r
+    int write_to_file(const char *trace_file_name);\r
+    Process_Trace *get_process_trace(const char *process_name);\r
+    void free_traces();\r
+};\r
+\r
+extern functional_trace dol_functional_trace;\r
+\r
+#endif\r