24 #ifndef PXR_USD_USD_PRIM_FLAGS_H
25 #define PXR_USD_USD_PRIM_FLAGS_H
80 #include <hboost/functional/hash.hpp>
124 return !(*
this == other);
230 template <
class PrimPtr>
231 bool _Eval(
const PrimPtr &prim,
bool isInstanceProxy)
const {
239 return ((primFlags &
_mask) == (
_values & _mask)) ^ _negate;
244 template <
class PrimPtr>
247 bool isInstanceProxy) {
248 return pred._Eval(prim, isInstanceProxy);
254 template <
class PrimPtr>
257 const SdfPath &proxyPrimPath) {
267 lhs._negate == rhs._negate;
273 return !(lhs == rhs);
278 size_t hash = p.
_mask.to_ulong();
279 hboost::hash_combine(hash, p.
_values.to_ulong());
280 hboost::hash_combine(hash, p._negate);
374 return (tmp && lhs) && rhs;
495 extern unspecified UsdPrimIsActive;
497 extern unspecified UsdPrimIsLoaded;
499 extern unspecified UsdPrimIsModel;
501 extern unspecified UsdPrimIsGroup;
503 extern unspecified UsdPrimIsAbstract;
505 extern unspecified UsdPrimIsDefined;
507 extern unspecified UsdPrimIsInstance;
509 extern unspecified UsdPrimHasDefiningSpecifier;
595 #endif // PXR_USD_USD_PRIM_FLAGS_H
bool operator!=(Usd_Term other) const
Usd_Term(Usd_PrimFlags flag, bool negated)
Usd_PrimFlagsDisjunction & operator|=(Usd_Term term)
Add an additional term to this disjunction.
bool _IsContradiction() const
void _MakeContradiction()
friend Usd_PrimFlagsConjunction operator&&(Usd_Term lhs, Usd_Term rhs)
Combine two terms to make a conjunction.
bool _IsTautology() const
Usd_PrimFlagsConjunction operator&&(Usd_Term lhs, Usd_Term rhs)
Usd_PrimFlagsConjunction(Usd_Term term)
Construct with a term.
friend size_t hash_value(const Usd_PrimFlagsPredicate &p)
Usd_PrimFlagsPredicate & _Negate()
Usd_PrimFlagsConjunction()
Default constructed conjunction is a tautology.
Usd_PrimFlagsPredicate _GetNegated() const
Usd_PrimFlagsPredicate & TraverseInstanceProxies(bool traverse)
friend class Usd_PrimFlagsDisjunction
Usd_PrimFlagsPredicate(Usd_PrimFlags flag)
static Usd_PrimFlagsPredicate Tautology()
bool Usd_IsInstanceProxy(const PrimDataPtr &p, const SdfPath &proxyPrimPath)
bool IncludeInstanceProxiesInTraversal() const
friend bool Usd_EvalPredicate(const Usd_PrimFlagsPredicate &pred, const PrimPtr &prim, const SdfPath &proxyPrimPath)
Usd_PrimFlagsPredicate UsdTraverseInstanceProxies(Usd_PrimFlagsPredicate predicate)
friend bool Usd_EvalPredicate(const Usd_PrimFlagsPredicate &pred, const PrimPtr &prim, bool isInstanceProxy)
friend Usd_PrimFlagsDisjunction operator||(Usd_Term lhs, Usd_Term rhs)
Combine two terms to make a disjunction.
Usd_PrimFlagsDisjunction()
Usd_Term operator!(Usd_PrimFlags flag)
static Usd_PrimFlagsPredicate Contradiction()
USD_API const Usd_PrimFlagsConjunction UsdPrimDefaultPredicate
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Usd_Term(Usd_PrimFlags flag)
USD_API const Usd_PrimFlagsPredicate UsdPrimAllPrimsPredicate
Usd_PrimFlagsDisjunction(Usd_Term term)
friend bool operator==(const Usd_PrimFlagsPredicate &lhs, const Usd_PrimFlagsPredicate &rhs)
#define PXR_NAMESPACE_CLOSE_SCOPE
friend bool operator!=(const Usd_PrimFlagsPredicate &lhs, const Usd_PrimFlagsPredicate &rhs)
Usd_Term operator!() const
Usd_PrimFlagsConjunction & operator&=(Usd_Term term)
Add an additional term to this conjunction.
bool operator==(Usd_Term other) const
USD_API bool operator()(const class UsdPrim &prim) const
GU_API ComputeHierarchyResult traverse(const GU_Detail *gdp, GA_OffsetArray &roots, GA_OffsetArray &nodes, GA_OffsetArray &parents, UT_Map< GA_Offset, GA_OffsetArray > *children=nullptr)
std::bitset< Usd_PrimNumFlags > Usd_PrimFlagBits
Usd_PrimFlagsDisjunction operator||(Usd_Term lhs, Usd_Term rhs)
Usd_PrimFlagsPredicate(Usd_Term term)
friend class Usd_PrimFlagsConjunction