Annotation of mstools/samples/sdktools/capview/list.cpp, revision 1.1

1.1     ! root        1: #include <afxwin.h>
        !             2: #include <afxcoll.h>
        !             3: 
        !             4: #include "types.h"
        !             5: #include "list.h"
        !             6: 
        !             7: extern "C" char * UnDName(char *);
        !             8: 
        !             9: ListItem::ListItem(char * szModule, char * szName, int cCalls, TIMETYPE time2, TIMETYPE timeFunc) :
        !            10:        strMod(szModule), strFunc(szName)
        !            11: {
        !            12:     totalTime = timeFunc;
        !            13:     timeAll = time2;
        !            14:     calls = cCalls;
        !            15: 
        !            16:     return;
        !            17: }
        !            18: 
        !            19: int ListArray::Search(char * szModule, char * szName)
        !            20: {
        !            21:     int         i = 0;
        !            22:     int         j = GetUpperBound();
        !            23:     int         k;
        !            24:     ListItem *  pli;
        !            25: 
        !            26:     if (j == -1) {
        !            27:         return 0;
        !            28:     }
        !            29: 
        !            30:     while ( i < j ) {
        !            31:         k = (i + j) / 2;
        !            32:         pli = (ListItem *) GetAt(k);
        !            33: 
        !            34:         if (pli->strModule() < szModule) {
        !            35:             i = k + 1;
        !            36:         } else if (pli->strModule() > szModule) {
        !            37:             j = k - 1;
        !            38:         } else if (pli->strFunction() < szName) {
        !            39:             i = k + 1;
        !            40:         } else if (pli->strFunction() > szName) {
        !            41:             j = k - 1;
        !            42:         } else {
        !            43:             return k;
        !            44:         }
        !            45:     }
        !            46: 
        !            47:     pli = (ListItem *) GetAt(i);
        !            48:     if (pli->strModule() < szModule) {
        !            49:         i += 1;
        !            50:     } else if ((pli->strModule() == szModule) &&
        !            51:                (pli->strFunction() < szName)) {
        !            52:         i += 1;
        !            53:     }
        !            54: 
        !            55:     return i;
        !            56: }                               /* ListArray::Search() */
        !            57: 
        !            58: void ListHead::AddTiming(char * szModule, char * szName, int cCalls,
        !            59:                          TIMETYPE timeAll, TIMETYPE timeFunc)
        !            60: {
        !            61:     int         i;
        !            62:     ListItem *  pli1;
        !            63: 
        !            64:     /*
        !            65:      *  Keep track of the total tree time from the root
        !            66:      */
        !            67: 
        !            68:     timeTotal += timeFunc;
        !            69: 
        !            70:     /*
        !            71:      *  Find if the item is in the array already
        !            72:      */
        !            73: 
        !            74:     i = rgAlpha.Search(szModule, szName);
        !            75:     if (i <= rgAlpha.GetUpperBound()) {
        !            76:         pli1 = (ListItem *) rgAlpha[i];
        !            77: 
        !            78:         if ((pli1->strModule() == szModule) &&
        !            79:             (pli1->strFunction() == szName)) {
        !            80: 
        !            81:             pli1->AddTime(cCalls, timeAll, timeFunc);
        !            82:             return;
        !            83:         }
        !            84:     }
        !            85: 
        !            86:     pli1 = new ListItem(szModule, szName, cCalls, timeAll, timeFunc);
        !            87:     rgAlpha.InsertAt(i, pli1);
        !            88: 
        !            89:     return;
        !            90: }                               /* ListHead::AddTiming() */
        !            91: 
        !            92: 
        !            93: int _CRTAPI1 a(const void * pv1, const void * pv2)
        !            94: {
        !            95:     ListItem * p1 = *(ListItem **) pv1;
        !            96:     ListItem *  p2 = *(ListItem **) pv2;
        !            97: 
        !            98:     if (p1->Time() > p2->Time()) {
        !            99:         return -1;
        !           100:     } else if (p2->Time() > p1->Time()) {
        !           101:        return  1;
        !           102:     }
        !           103:     return 0;
        !           104: }
        !           105: 
        !           106: void ListHead::SortByTotalTime()
        !           107: {
        !           108:     rgRoutineTime.SetSize(rgAlpha.GetSize());
        !           109: 
        !           110:     for (int i=0; i < rgAlpha.GetSize(); i++) {
        !           111:         rgRoutineTime[i] = rgAlpha[i];
        !           112:     }
        !           113: 
        !           114:     rgRoutineTime.Sort(a);
        !           115:     return;
        !           116: }                               /* ListHead::SortByTotalTime() */
        !           117: 
        !           118: 
        !           119: int _CRTAPI1 b(const void * pv1, const void * pv2)
        !           120: {
        !           121:     ListItem * p1 = *(ListItem **) pv1;
        !           122:     ListItem *  p2 = *(ListItem **) pv2;
        !           123: 
        !           124:     if (p1->TimePerCall() > p2->TimePerCall()) {
        !           125:         return -1;
        !           126:     } else if (p2->TimePerCall() > p1->TimePerCall()) {
        !           127:        return  1;
        !           128:     }
        !           129:     return 0;
        !           130: }
        !           131: 
        !           132: void ListHead::SortByPerTime()
        !           133: {
        !           134:     rgRoutineTimePer.SetSize(rgAlpha.GetSize());
        !           135: 
        !           136:     for (int i=0; i < rgAlpha.GetSize(); i++) {
        !           137:         rgRoutineTimePer[i] = rgAlpha[i];
        !           138:     }
        !           139:     rgRoutineTimePer.Sort(b);
        !           140:     return;
        !           141: }                               /* ListHead::SortByPerTime() */
        !           142: 
        !           143: 
        !           144: int _CRTAPI1 c(const void * pv1, const void * pv2)
        !           145: {
        !           146:     ListItem * p1 = *(ListItem **) pv1;
        !           147:     ListItem *  p2 = *(ListItem **) pv2;
        !           148: 
        !           149:     if (p1->Calls() > p2->Calls()) {
        !           150:         return -1;
        !           151:     } else if (p2->Calls() > p1->Calls()) {
        !           152:        return  1;
        !           153:     }
        !           154:     return 0;
        !           155: }
        !           156: 
        !           157: void ListHead::SortByCallCount()
        !           158: {
        !           159:     rgCalls.SetSize(rgAlpha.GetSize());
        !           160: 
        !           161:     for (int i=0; i < rgAlpha.GetSize(); i++) {
        !           162:         rgCalls[i] = rgAlpha[i];
        !           163:     }
        !           164:     rgCalls.Sort(c);
        !           165:     return;
        !           166: }                               /* ListHead::SortByCallCount() */
        !           167: 
        !           168: int _CRTAPI1 d(const void * pv1, const void * pv2)
        !           169: {
        !           170:     ListItem * p1 = *(ListItem **) pv1;
        !           171:     ListItem *  p2 = *(ListItem **) pv2;
        !           172: 
        !           173:     if (p1->TimeAll() > p2->TimeAll()) {
        !           174:         return -1;
        !           175:     } else if (p2->TimeAll() > p1->TimeAll()) {
        !           176:        return  1;
        !           177:     }
        !           178:     return 0;
        !           179: }
        !           180: 
        !           181: void ListHead::SortByTimeAll()
        !           182: {
        !           183:     rgTreeTime.SetSize(rgAlpha.GetSize());
        !           184: 
        !           185:     for (int i=0; i < rgAlpha.GetSize(); i++) {
        !           186:         rgTreeTime[i] = rgAlpha[i];
        !           187:     }
        !           188:     rgTreeTime.Sort(d);
        !           189:     return;
        !           190: }                               /* ListHead::SortByTimeAll() */
        !           191: 
        !           192: 
        !           193: int _CRTAPI1 e(const void * pv1, const void * pv2)
        !           194: {
        !           195:     ListItem * p1 = *(ListItem **) pv1;
        !           196:     ListItem *  p2 = *(ListItem **) pv2;
        !           197: 
        !           198:     if (p1->TimeAllPerCall() > p2->TimeAllPerCall()) {
        !           199:         return -1;
        !           200:     } else if (p2->TimeAllPerCall() > p1->TimeAllPerCall()) {
        !           201:        return  1;
        !           202:     }
        !           203:     return 0;
        !           204: }
        !           205: 
        !           206: void ListHead::SortByTPerTime()
        !           207: {
        !           208:     rgTreeTimePer.SetSize(rgAlpha.GetSize());
        !           209: 
        !           210:     for (int i=0; i < rgAlpha.GetSize(); i++) {
        !           211:         rgTreeTimePer[i] = rgAlpha[i];
        !           212:     }
        !           213:     rgTreeTimePer.Sort(e);
        !           214:     return;
        !           215: }                               /* ListHead::SortByTPerTime() */
        !           216: 
        !           217: 
        !           218: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.