|
|
1.1 root 1: /*
2: * LIST.H
3: */
4:
5: enum {
6: LIST_ALPHA=3,
7: LIST_TIME=1,
8: LIST_PER_TIME=4,
9: LIST_CALLS=2,
10: LIST_TIME_TOTAL=LIST_TIME+8,
11: LIST_PER_TIME_TOTAL=LIST_PER_TIME+8
12: };
13:
14: class ListItem
15: {
16: TIMETYPE totalTime;
17: TIMETYPE timeAll;
18: CString strMod;
19: CString strFunc;
20: int calls;
21:
22: public:
23: ListItem(char * szModule, char * szName, int cCalls, TIMETYPE time, TIMETYPE timeAll);
24: ~ListItem(){;};
25:
26: TIMETYPE Time() { return totalTime; };
27: TIMETYPE TimeAll() { return timeAll; };
28: int Calls() { return calls; };
29: TIMETYPE TimePerCall()
30: {
31: TIMETYPE t;
32: if (calls < 2) return totalTime;
33: t = totalTime / calls;
34: return t;
35: }
36: TIMETYPE TimeAllPerCall()
37: {
38: TIMETYPE t;
39: if (calls < 2) return timeAll;
40: t = timeAll / calls;
41: return t;
42: }
43: CString& strModule() { return strMod;};
44: CString& strFunction() { return strFunc;};
45: void AddTime(int callsx, TIMETYPE time2, TIMETYPE timeFunc)
46: {
47: totalTime += timeFunc;
48: timeAll += time2;
49: calls += callsx;
50: return;
51: }
52: }; /* Class ListItem */
53:
54:
55: class ListArray : public CPtrArray
56: {
57: public:
58: int Search(char * szModule, char * szName);
59: void Sort(int (_CRTAPI1 * fnCmp)(const void *, const void *))
60: {
61: qsort(m_pData, GetSize(), sizeof(int *), fnCmp);
62: }
63: };
64:
65:
66:
67: class ListHead
68: {
69: ListArray rgAlpha;
70: ListArray rgCalls;
71: ListArray rgRoutineTime;
72: ListArray rgTreeTime;
73: ListArray rgRoutineTimePer;
74: ListArray rgTreeTimePer;
75:
76: TIMETYPE timeTotal;
77:
78: public:
79:
80: ListHead() { timeTotal = (int) 0; return; }
81:
82: void AddTiming(char * szModule, char * szName, int cCalls,
83: TIMETYPE time, TIMETYPE timeAll);
84:
85: int GetCount() { return rgAlpha.GetSize(); };
86: TIMETYPE TotalTime() { return timeTotal; };
87:
88: ListItem * GetPosition(int pos, int list = LIST_ALPHA)
89: {
90: switch( list ) {
91: case LIST_ALPHA: return (ListItem *) rgAlpha[pos];
92: case LIST_CALLS: return (ListItem *) rgCalls[pos];
93: case LIST_TIME: return (ListItem *) rgRoutineTime[pos];
94: case LIST_PER_TIME: return (ListItem *) rgRoutineTimePer[pos];
95: case LIST_TIME_TOTAL: return (ListItem *) rgTreeTime[pos];
96: case LIST_PER_TIME_TOTAL: return (ListItem *) rgTreeTimePer[pos];
97: default: return NULL;
98: }
99: }
100:
101: void SortByTotalTime();
102: void SortByPerTime();
103: void SortByCallCount();
104: void SortByTimeAll();
105: void SortByTPerTime();
106: }; /* class ListHead */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.