bool TimeIsLater(uint32 earlier, uint32 later) { #if EFFICIENT_IMPLEMENTATION int32 diff = later - earlier; return (diff > 0 && static_cast<uint32>(diff) < HALF); #else const bool earlier_or_equal = TimeIsBetween(later, earlier, later + HALF); return !earlier_or_equal; #endif }
bool TimeIsLater(U32 earlier, U32 later) { #if EFFICIENT_IMPLEMENTATION S32 diff = later - earlier; return (diff > 0 && (U32)(diff) < HALF); #else const bool earlier_or_equal = TimeIsBetween(later, earlier, later + HALF); return !earlier_or_equal; #endif }
int32 TimeDiff(uint32 later, uint32 earlier) { #if EFFICIENT_IMPLEMENTATION return later - earlier; #else const bool later_or_equal = TimeIsBetween(earlier, later, earlier + HALF); if (later_or_equal) { if (earlier <= later) { return static_cast<long>(later - earlier); } else { return static_cast<long>(later + (LAST - earlier) + 1); } } else { if (later <= earlier) { return -static_cast<long>(earlier - later); } else { return -static_cast<long>(earlier + (LAST - later) + 1); } } #endif }
S32 TimeDiff(U32 later, U32 earlier) { #if EFFICIENT_IMPLEMENTATION return later - earlier; #else const bool later_or_equal = TimeIsBetween(earlier, later, earlier + HALF); if (later_or_equal) { if (earlier <= later) { return (long)(later - earlier); } else { return (long)(later + (U32_MAX - earlier) + 1); } } else { if (later <= earlier) { return -(long)(earlier - later); } else { return -(long)(earlier + (U32_MAX - later) + 1); } } #endif }