File:  [WindowsNT SDKs] / mstools / samples / sdktools / capview / list.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 18:24:28 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: ntsdk-jul-1993, HEAD
Microsoft Windows NT Build 511 (SDK Final Release) 07-24-1993

/*
 *   LIST.H
 */

enum {
    LIST_ALPHA=3,
    LIST_TIME=1,
    LIST_PER_TIME=4,
    LIST_CALLS=2,
    LIST_TIME_TOTAL=LIST_TIME+8,
    LIST_PER_TIME_TOTAL=LIST_PER_TIME+8
};

class ListItem
{
    TIMETYPE    totalTime;
    TIMETYPE    timeAll;
    CString     strMod;
    CString     strFunc;
    int         calls;

public:
    ListItem(char * szModule, char * szName, int cCalls, TIMETYPE time, TIMETYPE timeAll);
    ~ListItem(){;};

    TIMETYPE    Time() { return totalTime; };
    TIMETYPE    TimeAll() { return timeAll; };
    int         Calls() { return calls; };
    TIMETYPE    TimePerCall()
    {
        TIMETYPE t;
        if (calls < 2) return totalTime;
        t = totalTime / calls;
        return t;
    }
    TIMETYPE    TimeAllPerCall()
    {
        TIMETYPE t;
        if (calls < 2) return timeAll;
        t = timeAll / calls;
        return t;
    }
    CString& strModule() { return strMod;};
    CString& strFunction() { return strFunc;};
    void AddTime(int callsx, TIMETYPE time2, TIMETYPE timeFunc)
    {
        totalTime += timeFunc;
        timeAll += time2;
        calls += callsx;
        return;
    }
};                               /* Class ListItem */


class ListArray : public CPtrArray
{
public:
    int Search(char * szModule, char * szName);
    void Sort(int (_CRTAPI1 * fnCmp)(const void *, const void *))
    {
    	qsort(m_pData, GetSize(), sizeof(int *), fnCmp);
    }
};



class ListHead
{
    ListArray           rgAlpha;
    ListArray           rgCalls;
    ListArray           rgRoutineTime;
    ListArray           rgTreeTime;
    ListArray           rgRoutineTimePer;
    ListArray           rgTreeTimePer;

    TIMETYPE            timeTotal;

public:

    ListHead() { timeTotal = (int) 0; return; }

    void AddTiming(char * szModule, char * szName, int cCalls,
                   TIMETYPE time, TIMETYPE timeAll);

    int GetCount() { return rgAlpha.GetSize(); };
    TIMETYPE TotalTime() { return timeTotal; };

    ListItem * GetPosition(int pos, int list = LIST_ALPHA)
    {
        switch( list ) {
        case LIST_ALPHA:                return (ListItem *) rgAlpha[pos];
        case LIST_CALLS:                return (ListItem *) rgCalls[pos];
        case LIST_TIME:                 return (ListItem *) rgRoutineTime[pos];
        case LIST_PER_TIME:             return (ListItem *) rgRoutineTimePer[pos];
        case LIST_TIME_TOTAL:           return (ListItem *) rgTreeTime[pos];
        case LIST_PER_TIME_TOTAL:       return (ListItem *) rgTreeTimePer[pos];
        default:                        return NULL;
        }
    }

    void SortByTotalTime();
    void SortByPerTime();
    void SortByCallCount();
    void SortByTimeAll();
    void SortByTPerTime();
};                              /* class ListHead */

unix.superglobalmegacorp.com

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