///////////////////////////////////////////////////////////////////////////////
// Copyright (c) Winnov L.P., 1996.  All rights reserved
// time.cpp: CTime class implementation
///////////////////////////////////////////////////////////////////////////////

#include <windows.h>
#include "time.h"

///////////////////////////////////////////////////////////////////////////////

CTime::CTime ()
{
    fQueryPerformance = FALSE;
    liScale = 1;
}

CTime::~CTime ()
{
}

///////////////////////////////////////////////////////////////////////////////

void CTime::Begin (void)
{
    UINT64 n;

    n = 1000;
    QueryPerformanceFrequency ((LARGE_INTEGER *)&n);

    if (n == 1000)
	fQueryPerformance = FALSE;  // no workee
    else
	fQueryPerformance = TRUE;

    liScale = n / 1000;	// ticks/millisecond
}

///////////////////////////////////////////////////////////////////////////////

#if 0
#include <sys/types.h>
#include <sys/timeb.h>
#include <time.h>
#endif

DWORD CTime::GetTime (void)
{

#if 0	// gpf in ntvdm.exe
    struct _timeb timebuffer;

    _ftime( &timebuffer );
    return timebuffer.millitm + 1000 *timebuffer.time;
#endif

#if 1	// service start fails
    return timeGetTime ();
#endif

#if 0
    if (fQueryPerformance)
    {
        UINT64 n;

	n = 50000;
	if (!liScale) return 0;
	QueryPerformanceCounter ((LARGE_INTEGER *)&n);
	return (DWORD)(n / liScale);
    }
    else
	return GetCurrentTime ();
#endif
} 

///////////////////////////////////////////////////////////////////////////////
//				 End of File
///////////////////////////////////////////////////////////////////////////////
