24 #ifndef PXR_USD_SDF_LIST_OP_H
25 #define PXR_USD_SDF_LIST_OP_H
31 #include <hboost/functional/hash.hpp>
32 #include <hboost/optional/optional_fwd.hpp>
108 if (_addedItems.size() != 0 ||
109 _prependedItems.size() != 0 ||
110 _appendedItems.size() != 0 ||
111 _deletedItems.size() != 0) {
114 return _orderedItems.size() != 0;
129 return _explicitItems;
141 return _prependedItems;
147 return _appendedItems;
153 return _deletedItems;
159 return _orderedItems;
182 typedef std::function<
206 hboost::optional<SdfListOp<T>>
210 typedef std::function<
211 hboost::optional<ItemType>(
const ItemType&)
236 hboost::hash_combine(h, op._isExplicit);
237 hboost::hash_combine(h, op._explicitItems);
238 hboost::hash_combine(h, op._addedItems);
239 hboost::hash_combine(h, op._prependedItems);
240 hboost::hash_combine(h, op._appendedItems);
241 hboost::hash_combine(h, op._deletedItems);
242 hboost::hash_combine(h, op._orderedItems);
247 return _isExplicit == rhs._isExplicit &&
248 _explicitItems == rhs._explicitItems &&
249 _addedItems == rhs._addedItems &&
250 _prependedItems == rhs._prependedItems &&
251 _appendedItems == rhs._appendedItems &&
252 _deletedItems == rhs._deletedItems &&
253 _orderedItems == rhs._orderedItems;
257 return !(*
this == rhs);
261 void _SetExplicit(
bool isExplicit);
264 typedef std::list<ItemType> _ApplyList;
265 typedef std::map<ItemType, typename _ApplyList::iterator, _ItemComparator>
269 _ApplyList*
result, _ApplyMap* search)
const;
271 _ApplyList*
result, _ApplyMap* search)
const;
273 _ApplyList*
result, _ApplyMap* search)
const;
275 _ApplyList*
result, _ApplyMap* search)
const;
277 _ApplyList*
result, _ApplyMap* search)
const;
298 template <
class ItemType>
301 const std::vector<ItemType>&
order);
305 template <
typename T>
307 std::ostream & operator<<( std::ostream &, const SdfListOp<T> & );
323 #endif // PXR_USD_SDF_LIST_OP_H
void swap(ArAssetInfo &lhs, ArAssetInfo &rhs)
ItemVector value_vector_type
const ItemVector & GetPrependedItems() const
Returns the explicit items.
SDF_API void ComposeOperations(const SdfListOp< T > &stronger, SdfListOpType op)
GLuint GLdouble GLdouble GLint GLint order
const ItemVector & GetExplicitItems() const
Returns the explicit items.
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
const ItemVector & GetAppendedItems() const
Returns the explicit items.
SDF_API const ItemVector & GetItems(SdfListOpType type) const
Return the item vector identified by type.
SDF_API bool ReplaceOperations(const SdfListOpType op, size_t index, size_t n, const ItemVector &newItems)
class SdfListOp< class SdfReference > SdfReferenceListOp
SDF_API void ClearAndMakeExplicit()
Removes all items and changes the list to be explicit.
class SdfListOp< uint64_t > SdfUInt64ListOp
SDF_API void Swap(SdfListOp< T > &rhs)
class SdfListOp< class SdfPayload > SdfPayloadListOp
class SdfListOp< class SdfUnregisteredValue > SdfUnregisteredValueListOp
class SdfListOp< class SdfPath > SdfPathListOp
SDF_API bool ModifyOperations(const ModifyCallback &callback)
GLint GLint GLsizei GLint GLenum GLenum type
class SdfListOp< int > SdfIntListOp
const ItemVector & GetOrderedItems() const
Returns the ordered items.
const ItemVector & GetAddedItems() const
Returns the explicit items.
std::function< hboost::optional< ItemType >SdfListOpType, const ItemType &) > ApplyCallback
Callback type for ApplyOperations.
const ItemVector & GetDeletedItems() const
Returns the deleted items.
GLsizei const GLchar *const * string
class SdfListOp< std::string > SdfStringListOp
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
SDF_API void SetOrderedItems(const ItemVector &items)
SDF_API void SetExplicitItems(const ItemVector &items)
SDF_API void Clear()
Removes all items and changes the list to be non-explicit.
class SdfListOp< int64_t > SdfInt64ListOp
class SdfListOp< TfToken > SdfTokenListOp
class SdfListOp< unsigned int > SdfUIntListOp
SDF_API SdfListOp()
Create an empty ListOp in non-explicit mode.
bool operator!=(const SdfListOp< T > &rhs) const
GLfloat GLfloat GLfloat GLfloat h
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
SDF_API void SetAddedItems(const ItemVector &items)
SDF_API void ApplyOperations(ItemVector *vec, const ApplyCallback &cb=ApplyCallback()) const
static SDF_API SdfListOp CreateExplicit(const ItemVector &explicitItems=ItemVector())
Create a ListOp in explicit mode with the given explicitItems.
SDF_API void SdfApplyListOrdering(std::vector< ItemType > *v, const std::vector< ItemType > &order)
#define PXR_NAMESPACE_CLOSE_SCOPE
std::vector< ItemType > ItemVector
SDF_API void SetDeletedItems(const ItemVector &items)
SDF_API void SetItems(const ItemVector &items, SdfListOpType type)
Sets the item vector for the given operation type.
std::function< hboost::optional< ItemType >const ItemType &) > ModifyCallback
Callback type for ModifyOperations.
static SDF_API SdfListOp Create(const ItemVector &prependedItems=ItemVector(), const ItemVector &appendedItems=ItemVector(), const ItemVector &deletedItems=ItemVector())
SDF_API void SetPrependedItems(const ItemVector &items)
bool operator==(const SdfListOp< T > &rhs) const
std::less< T > ItemComparator
SDF_API bool HasItem(const T &item) const
Returns true if the given item is in any of the item lists.
bool IsExplicit() const
Returns true if the list is explicit.
SDF_API void SetAppendedItems(const ItemVector &items)
friend size_t hash_value(const SdfListOp &op)