|
|
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.