7 #ifndef PXR_USD_SDF_ABSTRACT_DATA_H 
    8 #define PXR_USD_SDF_ABSTRACT_DATA_H 
   23 #include <type_traits> 
   33 #define SDF_DATA_TOKENS                  \ 
   34         ((TimeSamples, "timeSamples")) 
  116     virtual bool Equals(
const SdfAbstractDataRefPtr &rhs) 
const;
 
  211                         const TfToken& fieldName) 
const = 0;
 
  222     virtual std::type_info 
const &
 
  253                    const T& defaultValue = 
T()) 
const;
 
  330     virtual std::set<double>
 
  334     virtual std::set<double>
 
  340                              double* tUpper) 
const = 0;
 
  350                                     double* tLower, 
double* tUpper) 
const = 0;
 
  367                                  double* tPrevious) 
const;
 
  372                     VtValue *optionalValue = NULL) 
const = 0;
 
  402     const TfToken& field, 
const T& defaultVal)
 const 
  423         using Type = std::remove_cv_t<std::remove_reference_t<T>>;
 
  425         if constexpr (std::is_same_v<Type, VtValue>) {
 
  426             return _StoreVtValue(std::forward<T>(
v));
 
  431         if constexpr (std::is_same_v<Type, SdfValueBlock>) {
 
  436             *
static_cast<Type*
>(
value) = std::forward<T>(
v);
 
  488         return v.UncheckedRemove<
T>();
 
  491     template <
class Value>
 
  492     bool _StoreVtValueImpl(
Value &&
v) {
 
  495         if (
ARCH_LIKELY(std::forward<Value>(
v).
template IsHolding<T>())) {
 
  496             *
static_cast<T*
>(
value) = _Get(std::forward<Value>(
v));
 
  497             if (std::is_same_v<T, SdfValueBlock>) {
 
  503         if (std::forward<Value>(
v).template IsHolding<SdfValueBlock>()) {
 
  514     _StoreVtValue(
const VtValue& 
v)
 override {
 
  515         return _StoreVtValueImpl(v);
 
  519     _StoreVtValue(
VtValue &&
v)
 override {
 
  520         return _StoreVtValueImpl(
v);
 
  537             *v = *
static_cast<const T*
>(
value);
 
  550                               const std::type_info& valueType_)
 
  590     const T& _GetValue()
 const  
  592         return *
static_cast<const T*
>(
value);
 
  603     typedef char CharArray[
N];
 
  639 #endif // PXR_USD_SDF_ABSTRACT_DATA_H 
virtual bool GetValue(VtValue *v) const 
 
virtual SDF_API bool IsEmpty() const 
 
virtual SDF_API std::vector< TfToken > ListDictKeys(const SdfPath &path, const TfToken &fieldName, const TfToken &keyPath) const 
 
SdfAbstractDataConstTypedValue(const CharArray *value)
 
PXR_NAMESPACE_OPEN_SCOPE TF_DECLARE_WEAK_AND_REF_PTRS(SdfAbstractData)
 
virtual SDF_API bool Has(const SdfPath &path, const TfToken &fieldName, SdfAbstractDataValue *value) const =0
 
T const & UncheckedGet() const &
 
virtual SDF_API size_t GetNumTimeSamplesForPath(const SdfPath &path) const =0
 
virtual SDF_API void CopyFrom(const SdfAbstractDataConstPtr &source)
 
SdfAbstractDataConstValue(const void *value_, const std::type_info &valueType_)
 
virtual SDF_API void CreateSpec(const SdfPath &path, SdfSpecType specType)=0
 
virtual SDF_API bool HasSpecAndField(const SdfPath &path, const TfToken &fieldName, SdfAbstractDataValue *value, SdfSpecType *specType) const 
 
GT_API const UT_StringHolder time
 
GLsizei const GLchar *const * string
 
GLsizei const GLfloat * value
 
GLsizei const GLchar *const * path
 
virtual SDF_API ~SdfAbstractData()
 
virtual SDF_API bool HasDictKey(const SdfPath &path, const TfToken &fieldName, const TfToken &keyPath, SdfAbstractDataValue *value) const 
 
const std::type_info & valueType
 
virtual SDF_API std::set< double > ListAllTimeSamples() const =0
 
virtual bool IsEqual(const VtValue &value) const =0
 
virtual SDF_API bool GetBracketingTimeSamplesForPath(const SdfPath &path, double time, double *tLower, double *tUpper) const =0
 
virtual SDF_API std::set< double > ListTimeSamplesForPath(const SdfPath &path) const =0
 
virtual SDF_API void WriteToStream(std::ostream &out) const 
 
virtual SDF_API void EraseSpec(const SdfPath &path)=0
 
virtual SDF_API std::vector< TfToken > List(const SdfPath &path) const =0
Return the names of all the fields that are set at path. 
 
T GetAs(const SdfPath &path, const TfToken &fieldName, const T &defaultValue=T()) const 
 
SDF_API void VisitSpecs(SdfAbstractDataSpecVisitor *visitor) const 
 
virtual SDF_API VtValue Get(const SdfPath &path, const TfToken &fieldName) const =0
 
virtual SDF_API VtValue GetDictValueByKey(const SdfPath &path, const TfToken &fieldName, const TfToken &keyPath) const 
 
SdfAbstractDataValue(void *value_, const std::type_info &valueType_)
 
virtual SDF_API void Erase(const SdfPath &path, const TfToken &fieldName)=0
Remove the field at path and fieldName, if one exists. 
 
A generic, discriminated value, whose type may be queried dynamically. 
 
SdfAbstractDataTypedValue(T *value)
 
TF_DECLARE_PUBLIC_TOKENS(SdfDataTokens, SDF_API, SDF_DATA_TOKENS)
 
virtual SDF_API bool VisitSpec(const SdfAbstractData &data, const SdfPath &path)=0
 
virtual SDF_API bool IsDetached() const 
 
GLsizei GLsizei GLchar * source
 
virtual bool GetValue(VtValue *value) const =0
 
virtual SDF_API void EraseTimeSample(const SdfPath &path, double time)=0
 
virtual SDF_API bool Equals(const SdfAbstractDataRefPtr &rhs) const 
 
virtual SDF_API bool StreamsData() const =0
 
virtual SDF_API bool GetBracketingTimeSamples(double time, double *tLower, double *tUpper) const =0
 
virtual SDF_API std::type_info const & GetTypeid(const SdfPath &path, const TfToken &fieldName) const 
 
virtual SDF_API void Done(const SdfAbstractData &data)=0
 
virtual SDF_API bool QueryTimeSample(const SdfPath &path, double time, VtValue *optionalValue=NULL) const =0
 
virtual SDF_API void Set(const SdfPath &path, const TfToken &fieldName, const VtValue &value)=0
 
const std::type_info & valueType
 
virtual SDF_API void EraseDictValueByKey(const SdfPath &path, const TfToken &fieldName, const TfToken &keyPath)
 
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
 
bool GetValue(T *v) const 
 
virtual bool IsEqual(const VtValue &v) const 
 
#define PXR_NAMESPACE_CLOSE_SCOPE
 
GA_API const UT_StringHolder N
 
virtual SDF_API void _VisitSpecs(SdfAbstractDataSpecVisitor *visitor) const =0
 
virtual SDF_API void SetDictValueByKey(const SdfPath &path, const TfToken &fieldName, const TfToken &keyPath, const VtValue &value)
 
virtual SDF_API void MoveSpec(const SdfPath &oldPath, const SdfPath &newPath)=0
 
virtual SDF_API void SetTimeSample(const SdfPath &path, double time, const VtValue &value)=0
 
PXR_NAMESPACE_OPEN_SCOPE bool TfSafeTypeCompare(const std::type_info &t1, const std::type_info &t2)
 
virtual SDF_API bool HasSpec(const SdfPath &path) const =0
Return true if this data has a spec for path. 
 
SdfAbstractDataConstTypedValue(const T *value)
 
virtual SDF_API ~SdfAbstractDataSpecVisitor()
 
virtual SDF_API bool GetPreviousTimeSampleForPath(const SdfPath &path, double time, double *tPrevious) const 
 
virtual SdfSpecType GetSpecType(const SdfPath &path) const =0