1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
template <typename ChronoClock>
inline ClockBase<ChronoClock>::ClockBase(TimePoint const &timePoint)
:
d_timePoint(timePoint)
{}
template <typename ChronoClock>
template <typename ClockTp>
inline ClockBase<ChronoClock>::ClockBase(ClockBase<ClockTp> const &clock)
:
d_timePoint(clock.timePoint())
{}
template <typename ChronoClock>
inline ClockBase<ChronoClock>::Duration ClockBase<ChronoClock>::elapsed() const
{
return d_timePoint.time_since_epoch();
}
template <typename ChronoClock>
inline long int ClockBase<ChronoClock>::count() const
{
return elapsed().count();
}
template <typename ChronoClock>
inline ChronoClock::time_point const &ClockBase<ChronoClock>::timePoint() const
{
return d_timePoint;
}
template <typename ChronoClock>
inline std::ostream &operator<<(std::ostream &out,
ClockBase<ChronoClock> const &clock)
{
return out << clock.d_timePoint;
}
template <typename ChronoClock>
ClockBase<ChronoClock> &ClockBase<ChronoClock>::operator+=(int amount)
{
d_timePoint += std::chrono::seconds{ amount };
return *this;
}
template <typename ChronoClock>
template <typename Ratio>
ClockBase<ChronoClock> &ClockBase<ChronoClock>::operator+=(
std::chrono::duration<int64_t, Ratio> const &amount)
{
d_timePoint += amount;
return *this;
}
template <typename ChronoClock, typename Ratio>
inline ClockBase<ChronoClock> operator+(
ClockBase<ChronoClock> const &lhs,
std::chrono::duration<int64_t, Ratio> const &amount)
{
return ClockBase<ChronoClock>{ lhs } += amount;
}
template <typename ChronoClock, typename Ratio>
inline ClockBase<ChronoClock> operator+(
std::chrono::duration<int64_t, Ratio> const &amount,
ClockBase<ChronoClock> const &rhs)
{
return ClockBase<ChronoClock>{ rhs } += amount;
}
template <typename ChronoClock>
inline ClockBase<ChronoClock> operator+(ClockBase<ChronoClock> const &lhs,
int amount)
{
return ClockBase<ChronoClock>{ lhs } += amount;
}
template <typename ChronoClock>
inline ClockBase<ChronoClock> operator+(int amount,
ClockBase<ChronoClock> const &rhs)
{
return ClockBase<ChronoClock>{ rhs } += amount;
}
template <typename ChronoClock>
ClockBase<ChronoClock> &ClockBase<ChronoClock>::operator-=(int amount)
{
d_timePoint -= std::chrono::seconds{ amount };
return *this;
}
template <typename ChronoClock>
template <typename Ratio>
ClockBase<ChronoClock> &ClockBase<ChronoClock>::operator-=(
std::chrono::duration<int64_t, Ratio> const &amount)
{
d_timePoint -= amount;
return *this;
}
template <typename ChronoClock, typename Ratio>
inline ClockBase<ChronoClock> operator-(
ClockBase<ChronoClock> const &lhs,
std::chrono::duration<int64_t, Ratio> const &amount)
{
return ClockBase<ChronoClock>{ lhs } -= amount;
}
template <typename ChronoClock, typename Ratio>
inline ClockBase<ChronoClock> operator-(ClockBase<ChronoClock> const &lhs,
int amount)
{
return ClockBase<ChronoClock>{ lhs } -= amount;
}
// static
template <typename ChronoClock>
inline ClockBase<ChronoClock>::TimePoint ClockBase<ChronoClock>::now()
{
return ChronoClock::now();
}
// static
template <typename ChronoClock>
inline ClockBase<ChronoClock>::TimePoint ClockBase<ChronoClock>::min()
{
return TimePoint::min();
}
// static
template <typename ChronoClock>
inline ClockBase<ChronoClock>::TimePoint ClockBase<ChronoClock>::max()
{
return TimePoint::max();
}
template <typename ChronoClock>
template <typename Dest>
inline double ClockBase<ChronoClock>::toDouble() const
{
return FBB::toDouble<Dest>(elapsed());
}
|