got rid of //
[charm.git] / src / conv-perf / traceCore.h
1 #ifndef __TRACE_CORE_H__
2 #define __TRACE_CORE_H__
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7
8 #include "converse.h"
9
10 /* Prototype Declarations */
11 class TraceCore; 
12 class TraceLogger; 
13 class LogEntry;
14 class LogPool;
15
16 /* Class Declarations */
17 class TraceCore 
18 {
19   private:
20         LogPool* logPool;
21
22   public:
23         TraceCore(char** argv);
24         ~TraceCore();
25
26         void RegisterLanguage(int lID); //TODO temporary
27         void RegisterLanguage(int lID, char* lName);
28         void RegisterEvent(int lID, int eID);
29         void LogEvent(int lID, int eID);
30         void LogEvent(int lID, int eID, int iLen, int* iData);
31         void LogEvent(int lID, int eID, int sLen, char* sData);
32         void LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData);
33 };
34
35 //TODO: probably not required at this point. Since we are writing only to file
36 class TraceLogger {};
37
38 class LogEntry
39 {
40   public:
41         int    languageID;
42         int    eventID;
43         double timestamp;
44         int    eLen;
45         int*   entity;
46         int    iLen;
47         int*   iData;
48         int    sLen;
49         char*  sData;
50
51         LogEntry() {}
52         LogEntry(int lID, int eID, double ts, int el, int* e, 
53                          int il, int* i, int sl, char* s): 
54                          languageID(lID), eventID(eID), timestamp(ts), 
55                          eLen(el), entity(e), iLen(il), iData(i), sLen(sl), sData(s) {}
56         LogEntry(int lID, int eID, double ts,
57                          int il, int* i, int sl, char* s): 
58                          languageID(lID), eventID(eID), timestamp(ts), 
59                          eLen(0), entity(NULL), iLen(il), iData(i), sLen(sl), sData(s) {}
60         ~LogEntry();
61
62     void *operator new(size_t s) {void*ret=malloc(s);_MEMCHECK(ret);return ret;}
63     void *operator new(size_t, void *ptr) { return ptr; }
64     void operator delete(void *ptr) { free(ptr); }
65 #ifdef WIN32
66     void operator delete(void *, void *) { }
67 #endif
68
69         void write(FILE* fp, int prevLID, int prevSeek, int nextLID, int nextSeek);
70 };
71
72 class LogPool
73 {
74   private:
75     int poolSize;
76     int numEntries;
77     LogEntry *pool;
78         
79 #define MAX_NUM_LANGUAGES  10                   //NOTE: fixed temporarily
80
81         int   numLangs;
82         char *lName[MAX_NUM_LANGUAGES];         // Language Name 
83     char *fName[MAX_NUM_LANGUAGES];             // File name
84     FILE *fptrs[MAX_NUM_LANGUAGES];             // File pointer
85     int   binary;
86
87   public:
88     LogPool(char* program, int b);
89     ~LogPool();
90
91         void RegisterLanguage(int lID, char* ln);
92
93     void write(void);
94     void writeBinary(void);
95         void writeSts(void);
96
97     void add(int lID, int eID, double timestamp, int iLen, int* iData, int sLen, char* sData);
98
99   private:
100         void openLogFiles();
101         void closeLogFiles();
102
103         char* pgm;
104 };
105
106 #endif