24 #ifndef _GUSD_DEFAULTARRAY_H_
25 #define _GUSD_DEFAULTARRAY_H_
29 #include <UT/UT_Array.h>
32 PXR_NAMESPACE_OPEN_SCOPE
42 using array_type = UT_Array<T>;
47 memset((
void*)&_default, 0,
sizeof(T));
51 : _default(defaultVal) {}
54 {
return _array.size(); }
57 {
return _array.clear(); }
59 bool IsConstant()
const {
return size() == 0; }
61 bool IsVarying()
const {
return size() > 0; }
63 T& GetDefault() {
return _default; }
64 const T& GetDefault()
const {
return _default; }
66 void SetDefault(
const T& val) {_default = val; }
75 T& operator()(exint i)
76 {
return IsVarying() ? _array(i) : GetDefault(); }
78 const T& operator()(exint i)
const
79 {
return IsVarying() ? _array(i) : GetDefault(); }
81 array_type& GetArray() {
return _array; }
83 const array_type& GetArray()
const {
return _array; }
91 PXR_NAMESPACE_CLOSE_SCOPE
void SetConstant(const T &val)
Turn this into a constant array, with value val.
Simple array wrapper, providing an array that may either hold a single constant value, or an array of values.