2 * psychlops_io_clock_Win32.cpp
3 * Psychlops Standard Library (MacOSX)
5 * Last Modified 2005/12/21 by Kenchi HOSOKAWA
6 * (C) 2005 Kenchi HOSOKAWA, Kazushi MARUYA, Takao SATO
16 #include "../../core/ApplicationInterfaces/psychlops_code.h"
18 #include "psychlops_io_clock_Win32.h"
19 #include "../../core/devices/psychlops_io_clock.h"
24 void Clock::initialize() {
25 if(QueryPerformanceFrequency((_LARGE_INTEGER *)&clocks_per_a_milisecond_)==0) {
26 throw Exception(typeid(Clock), "HARDWARE NOT SUPPORTED", "This computer does not support high-resolution performance counter.");
28 clocks_per_a_milisecond_.QuadPart /= 1000;
34 Clock::Clock(CLOCK_UNIT native_clock) {
35 clock_ = native_clock;
38 void Clock::update() {
39 QueryPerformanceCounter((_LARGE_INTEGER *)&clock_);
41 // Clock Clock::operator -() {
\r
42 // return Clock(-clock_);
\r
44 Clock Clock::operator +(Clock &rhs) {
46 tmp.QuadPart = clock_.QuadPart + rhs.clock_.QuadPart;
49 Clock Clock::operator -(Clock &rhs) {
51 tmp.QuadPart = clock_.QuadPart - rhs.clock_.QuadPart;
54 Clock & Clock::operator +=(Clock &rhs) {
55 (*this) = (*this) + rhs;
58 Clock & Clock::operator -=(Clock &rhs) {
59 (*this) = (*this) - rhs;
62 bool Clock::operator ==(Clock &rhs) {
63 return (clock_.QuadPart==rhs.clock_.QuadPart);
66 bool Clock::operator !=(Clock &rhs) {
67 return (clock_.QuadPart!=rhs.clock_.QuadPart);
69 bool Clock::operator >(Clock &rhs) {
70 return (clock_.QuadPart>rhs.clock_.QuadPart);
72 bool Clock::operator <(Clock &rhs) {
73 return (clock_.QuadPart<rhs.clock_.QuadPart);
75 bool Clock::operator >=(Clock &rhs) {
76 return (clock_.QuadPart>=rhs.clock_.QuadPart);
78 bool Clock::operator <=(Clock &rhs) {
79 return (clock_.QuadPart<=rhs.clock_.QuadPart);
81 double Clock::at_msec() {
82 return (double)clock_.QuadPart/(double)clocks_per_a_milisecond_.QuadPart;
85 CLOCK_UNIT Clock::clocks_per_a_milisecond_;
94 } /* <- namespace Psycholops */