8#ifndef PXR_BASE_TS_VALUE_TYPE_DISPATCH_H
9#define PXR_BASE_TS_VALUE_TYPE_DISPATCH_H
12#include "pxr/base/ts/typeHelpers.h"
14#include "pxr/base/tf/type.h"
19PXR_NAMESPACE_OPEN_SCOPE
21#define _MAKE_CLAUSE(unused, tuple) \
22if (valueType == Ts_GetType<TS_SPLINE_VALUE_CPP_TYPE(tuple)>()) \
24 Cls<TS_SPLINE_VALUE_CPP_TYPE(tuple)>()(std::forward<Args>(args)...); \
51 template <
typename T>
class Cls,
53void TsDispatchToValueTypeTemplate(
54 TfType valueType, Args&&... args)
56TF_PP_SEQ_FOR_EACH(_MAKE_CLAUSE, ~, TS_SPLINE_SUPPORTED_VALUE_TYPES)
64 template <
typename T>
class Cls,
66void TsDispatchToStorageValueTypeTemplate(
67 TfType valueType, Args&&... args)
69TF_PP_SEQ_FOR_EACH(_MAKE_CLAUSE, ~, TS_SPLINE_STORAGE_VALUE_TYPES)
71 if (valueType == Ts_GetType<GfTimeCode>())
73 Cls<double>()(std::forward<Args>(args)...);
80PXR_NAMESPACE_CLOSE_SCOPE
Low-level utilities for informing users of various internal and external diagnostic conditions.
TfType represents a dynamic runtime type.
#define TF_CODING_ERROR(fmt, args)
Issue an internal programming error, but continue execution.
This header serves to simply bring in the half float datatype and provide a hash_value function.