All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dependency.h File Reference
#include "pxr/pxr.h"
#include "pxr/usd/pcp/api.h"
#include "pxr/usd/pcp/mapFunction.h"
#include "pxr/usd/sdf/path.h"
#include "pxr/base/tf/declarePtrs.h"
#include <vector>
+ Include dependency graph for dependency.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


struct  PcpDependency
 Description of a dependency. More...
struct  PcpCulledDependency


typedef unsigned int PcpDependencyFlags
 A typedef for a bitmask of flags from PcpDependencyType. More...
using PcpDependencyVector = std::vector< PcpDependency >
using PcpCulledDependencyVector = std::vector< PcpCulledDependency >


enum  PcpDependencyType {
  PcpDependencyTypeNone = 0, PcpDependencyTypeRoot = (1 << 0), PcpDependencyTypePurelyDirect = (1 << 1), PcpDependencyTypePartlyDirect = (1 << 2),
  PcpDependencyTypeAncestral = (1 << 3), PcpDependencyTypeVirtual = (1 << 4), PcpDependencyTypeNonVirtual = (1 << 5), PcpDependencyTypeDirect,
  PcpDependencyTypeAnyNonVirtual, PcpDependencyTypeAnyIncludingVirtual


PCP_API bool PcpNodeIntroducesDependency (const PcpNodeRef &n)
PCP_API PcpDependencyFlags PcpClassifyNodeDependency (const PcpNodeRef &n)
PCP_API std::string PcpDependencyFlagsToString (const PcpDependencyFlags flags)

Typedef Documentation

Definition at line 152 of file dependency.h.

typedef unsigned int PcpDependencyFlags

A typedef for a bitmask of flags from PcpDependencyType.

Definition at line 108 of file dependency.h.

using PcpDependencyVector = std::vector<PcpDependency>

Definition at line 131 of file dependency.h.

Enumeration Type Documentation

A classification of PcpPrimIndex->PcpSite dependencies by composition structure.


No type of dependency.


The root dependency of a cache on its root site. This may be useful to either include, as when invalidating caches in response to scene edits, or to exclude, as when scanning dependency arcs to compensate for a namespace edit.


Purely direct dependencies involve only arcs introduced directly at this level of namespace.


Partly direct dependencies involve at least one arc introduced directly at this level of namespace; they may also involve ancestral arcs along the chain as well.


Ancestral dependencies involve only arcs from ancestral levels of namespace, and no direct arcs.


Virtual dependencies do not contribute scene description, yet represent sites whose scene description (or ancestral scene description) informed the structure of the cache.

One case of this is when a reference or payload arc does not specify a prim, and the target layerStack does not provide defaultPrim metadata either. In that case a virtual dependency to the root of that layer stack will represent the latent dependency on that site's metadata.

Another case of this is "spooky ancestral" dependencies from relocates. These are referred to as "spooky" dependencies because they can be seen as a form of action-at-a-distance. They only occur as a result of relocation arcs.


Combined mask value representing both pure and partly direct deps.


Combined mask value representing any kind of dependency, except virtual ones.


Combined mask value representing any kind of dependency.

Definition at line 47 of file dependency.h.

Function Documentation

PCP_API PcpDependencyFlags PcpClassifyNodeDependency ( const PcpNodeRef n)

Classify the dependency represented by a node, by analyzing its structural role in its PcpPrimIndex. Returns a bitmask of flags from PcpDependencyType.

PCP_API std::string PcpDependencyFlagsToString ( const PcpDependencyFlags  flags)
PCP_API bool PcpNodeIntroducesDependency ( const PcpNodeRef n)

Returns true if this node introduces a dependency in its PcpPrimIndex, false otherwise. This is equivalent to PcpClassifyNodeDependency(n) != PcpDependencyTypeNone, but is faster.