2 * psychlops_io_clock_OSX.cpp
3 * Psychlops Standard Library (MacOSX)
5 * Last Modified 2005/12/19 by Kenchi HOSOKAWA
6 * (C) 2005 Kenchi HOSOKAWA, Kazushi MARUYA, Takao SATO
14 #include <ApplicationServices/ApplicationServices.h>
15 #include <CoreServices/CoreServices.h>
16 #include <mach/mach.h>
17 #include <mach/mach_time.h>
19 #include "psychlops_io_clock_OSX.h"
20 #include "../../core/devices/psychlops_io_clock.h"
26 void Clock::initialize() {
31 Clock::Clock(CLOCK_UNIT nativeclock_) {
32 clock_ = nativeclock_;
35 void Clock::update() {
36 clock_ = mach_absolute_time();
38 Clock Clock::operator +(Clock &rhs) {
39 return Clock(clock_ + rhs.clock_);
41 Clock Clock::operator -(Clock &rhs) {
42 return Clock(clock_ - rhs.clock_);
44 Clock & Clock::operator +=(Clock &rhs) {
45 (*this) = (*this) + rhs;
48 Clock & Clock::operator -=(Clock &rhs) {
49 (*this) = (*this) - rhs;
52 bool Clock::operator ==(Clock &rhs) {
53 return (clock_==rhs.clock_);
55 bool Clock::operator !=(Clock &rhs) {
56 return (clock_!=rhs.clock_);
58 bool Clock::operator >(Clock &rhs) {
59 return (clock_>rhs.clock_);
61 bool Clock::operator <(Clock &rhs) {
62 return (clock_<rhs.clock_);
64 bool Clock::operator >=(Clock &rhs) {
65 return (clock_>=rhs.clock_);
67 bool Clock::operator <=(Clock &rhs) {
68 return (clock_<=rhs.clock_);
70 double Clock::at_msec() {
73 nano = AbsoluteToNanoseconds( *(AbsoluteTime *) &clock_ );
77 return (val/(1000000.0));
85 time_now = mach_absolute_time();
86 nano = AbsoluteToNanoseconds( *(AbsoluteTime *) &time_now );
90 return val/(1000000.0);
95 } /* <- namespace Psycholops */