7 #ifndef PXR_EXEC_VDF_NODE_H
8 #define PXR_EXEC_VDF_NODE_H
27 #include "pxr/base/tf/mallocTag.h"
33 #include <type_traits>
66 TF_MALLOC_TAG_NEW(
"Vdf",
"new VdfNode");
146 template<
typename TYPE>
149 return dynamic_cast<const TYPE *
>(
this);
158 return _specs->GetInputSpecs();
165 return const_cast<VdfNode *
>(
this)->GetInput(inputName);
185 if (i->second->GetNumConnections())
195 if (output->second->GetConnections().size())
220 return _specs->GetOutputSpecs();
228 return const_cast<VdfNode *
>(
this)->GetOutput(name);
250 return const_cast<VdfNode *
>(
this)->GetOptionalOutput(name);
261 return const_cast<VdfNode *
>(
this)->GetOutput();
284 return _outputs.size();
290 return _inputs.size();
305 void SetDebugName(
const std::string &
name);
332 const std::string GetDebugName()
const;
340 virtual size_t GetMemoryUsage()
const;
353 virtual void Compute(
const VdfContext &context)
const = 0;
360 virtual bool IsSpeculationNode()
const;
387 VdfMask ComputeOutputDependencyMask(
389 const VdfMask &inputDependencyMask,
397 void ComputeOutputDependencyMasks(
399 const VdfMask &inputDependencyMask,
430 bool skipAssociatedInputs)
const;
446 bool IsEqual(
const VdfNode &rhs)
const;
469 std::vector<VdfInput*> *resultingInputs = NULL);
479 std::vector<VdfOutput*> *resultingOutputs = NULL);
488 virtual bool _IsDerivedEqual(
const VdfNode &rhs)
const;
502 virtual void _DidAddInputConnection(
const VdfConnection *
c,
int atIndex);
550 virtual void _ReleaseInputAndOutputSpecsPointer(
559 void _InitializeInputAndOutputSpecs(
569 void _ClearInputAndOutputSpecsPointer();
586 template <
typename BaseClassType,
typename ClassType>
589 return c.BaseClassType::GetMemoryUsage() +
590 (
sizeof(ClassType) -
sizeof(BaseClassType)) +
615 virtual VdfMask _ComputeOutputDependencyMask(
617 const VdfMask &inputDependencyMask,
628 virtual bool _ComputeOutputDependencyMasks(
630 const VdfMask &inputDependencyMask,
679 bool skipAssociatedInputs)
const;
701 _TokenInputMap _inputs;
707 _TokenOutputMap _outputs;
uint32_t VdfVersion
The version type for Vdf objects.
const InputMapIterator GetInputsIterator() const
typename _Vector::const_reverse_iterator const_reverse_iterator
void SetDebugNameCallback(F &&f)
#define PXR_NAMESPACE_OPEN_SCOPE
bool HasInputConnections() const
A VdfMask is placed on connections to specify the data flowing through them.
const VdfOutput * GetOutput(const TfToken &name) const
const VdfInput * GetInput(const TfToken &inputName) const
const VdfInputSpecs & GetInputSpecs() const
Fast, compressed bit array which is capable of performing logical operations without first decompress...
const VdfOutput * GetOptionalOutput(const TfToken &name) const
bool HasOutputConnections() const
VdfNetwork & GetNetwork()
std::vector< VdfConnectionAndMask > VdfConnectionAndMaskVector
A vector of VdfConnectionAndMasks.
#define __ARCH_PRETTY_FUNCTION__
const VdfNetwork & GetNetwork() const
const_iterator begin() const
GLuint const GLchar * name
static VdfIndex GetIndexFromId(const VdfId id)
size_t GetNumInputs() const
Class to hold on to an externally owned output and a mask.
GT_API const UT_StringHolder version
const VdfOutputSpecs & GetOutputSpecs() const
const VdfOutput * GetOutput() const
const_iterator end() const
static VdfVersion GetVersionFromId(const VdfId id)
typename _Vector::const_iterator const_iterator
_TokenOutputMap::const_reverse_iterator const_reverse_iterator
#define PXR_NAMESPACE_CLOSE_SCOPE
_TokenOutputMap::const_iterator const_iterator
const_reverse_iterator rend() const
#define TF_FOR_ALL(iter, c)
static size_t _GetMemoryUsage(const ClassType &c, size_t dynamicSize)
void _SetId(const VdfVersion version, const VdfIndex index)
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values...
const_reverse_iterator rbegin() const
OutputMapIterator(const _TokenOutputMap &map)
const OutputMapIterator GetOutputsIterator() const
std::vector< VdfMaskedOutput > VdfMaskedOutputVector
std::function< std::string()> VdfNodeDebugNameCallback
Type of callback for building a node debug name.
size_t GetNumOutputs() const
uint64_t VdfId
The unique identifier type for Vdf objects.
uint32_t VdfIndex
The index type for Vdf objects.