24#ifndef PXR_BASE_TF_BIT_UTILS_H
25#define PXR_BASE_TF_BIT_UTILS_H
35PXR_NAMESPACE_OPEN_SCOPE
44#define TF_BITS_FOR_VALUES(n) \
45 Tf_NumBits<n-1>::type::value
47template <
size_t N,
size_t SUM=0,
size_t BIT=
sizeof(N)*8/2>
55 typedef typename std::conditional<N >= (1ULL<<BIT),
56 Tf_NumBits<(N>>BIT), SUM+BIT, BIT/2>,
57 Tf_NumBits<N, SUM, BIT/2> >::type _func;
58 typedef typename _func::type type;
61template <
size_t N,
size_t SUM>
62struct Tf_NumBits<N, SUM, 0>
64 typedef std::integral_constant<size_t, SUM+1> type;
77#define TF_BITS_FOR_ENUM_VALUES(n) \
78 (TF_BITS_FOR_VALUES(n) + 1)
80PXR_NAMESPACE_CLOSE_SCOPE