24#ifndef PXR_USD_USD_TIME_CODE_H
25#define PXR_USD_USD_TIME_CODE_H
28#include "pxr/usd/usd/api.h"
39PXR_NAMESPACE_OPEN_SCOPE
42#define USD_TIME_CODE_TOKENS \
91 : _value(timeCode.GetValue()) {}
102 return UsdTimeCode(std::numeric_limits<double>::lowest());
113 return UsdTimeCode(std::numeric_limits<double>::quiet_NaN());
125 static constexpr double
126 SafeStep(
double maxValue=1e6,
double maxCompression=10.0) {
127 return std::numeric_limits<double>::epsilon() *
128 maxValue * maxCompression * 2.0;
134 return IsNumeric() && (_value == std::numeric_limits<double>::lowest());
140 return std::isnan(_value);
153 _IssueGetValueOnDefaultError();
165 return !(lhs == rhs);
192 return !(lhs <= rhs);
197 return TfHash()(time._value);
202 void _IssueGetValueOnDefaultError()
const;
212std::istream& operator>>(std::istream& is,
UsdTimeCode& time);
215PXR_NAMESPACE_CLOSE_SCOPE
Value type that represents a time code.
A user-extensible hashing mechanism for use with runtime hash tables.
Represent a time value, which may be either numeric, holding a double value, or a sentinel value UsdT...
friend size_t hash_value(const UsdTimeCode &time)
Hash function.
constexpr UsdTimeCode(const SdfTimeCode &timeCode) noexcept
Construct and implicitly cast from SdfTimeCode.
static constexpr double SafeStep(double maxValue=1e6, double maxCompression=10.0)
Produce a safe step value such that for any numeric UsdTimeCode t in [-maxValue, maxValue],...
friend bool operator<=(const UsdTimeCode &lhs, const UsdTimeCode &rhs)
Less-equal.
static constexpr UsdTimeCode EarliestTime()
Produce a UsdTimeCode representing the lowest/earliest possible timeCode.
friend bool operator==(const UsdTimeCode &lhs, const UsdTimeCode &rhs)
Equality comparison.
friend bool operator>=(const UsdTimeCode &lhs, const UsdTimeCode &rhs)
Greater-equal.
static constexpr UsdTimeCode Default()
Produce a UsdTimeCode representing the sentinel value for 'default'.
friend bool operator<(const UsdTimeCode &lhs, const UsdTimeCode &rhs)
Less-than.
friend bool operator>(const UsdTimeCode &lhs, const UsdTimeCode &rhs)
Greater-than.
double GetValue() const
Return the numeric value for this time.
bool IsDefault() const
Return true if this time represents the 'default' sentinel value, false otherwise.
bool IsNumeric() const
Return true if this time represents a numeric value, false otherwise.
constexpr UsdTimeCode(double t=0.0) noexcept
Construct with optional time value. Impilicitly convert from double.
bool IsEarliestTime() const
Return true if this time represents the lowest/earliest possible timeCode, false otherwise.
friend bool operator!=(const UsdTimeCode &lhs, const UsdTimeCode &rhs)
Inequality comparison.
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].
This file defines some macros that are useful for declaring and using static TfTokens.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.