Loading...
Searching...
No Matches
extensibleNode.h
Go to the documentation of this file.
1//
2// Copyright 2025 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_EXEC_VDF_EXTENSIBLE_NODE_H
8#define PXR_EXEC_VDF_EXTENSIBLE_NODE_H
9
11
12#include "pxr/pxr.h"
13
14#include "pxr/exec/vdf/api.h"
16#include "pxr/exec/vdf/node.h"
18
19#include <vector>
20
21PXR_NAMESPACE_OPEN_SCOPE
22
23class VdfInput;
24class VdfOutput;
25class VdfNetwork;
26
32class VDF_API_TYPE VdfExtensibleNode : public VdfNode
33{
34public:
35
36 VDF_API
38 VdfNetwork *network,
39 const VdfInputSpecs &inputSpecs,
40 const VdfOutputSpecs &outputSpecs);
41
45 VDF_API
47 const VdfOutputSpecs &specs,
48 std::vector<VdfOutput*> *resultOutputs);
49
53 VDF_API
55 const VdfInputSpecs &specs,
56 std::vector<VdfInput*> *resultInputs);
57
58protected:
59
64 VDF_API
66 const VdfInputSpecs &inputSpecs,
67 const VdfOutputSpecs &outputSpecs);
68
73 VDF_API
75 const VdfInputAndOutputSpecs *specs);
76
77 VDF_API
78 virtual ~VdfExtensibleNode();
79
80private:
81
82 // Our own local input and output specs so that we can append to them
83 // very quickly.
84 VdfInputAndOutputSpecs _inputAndOutputSpecs;
85
86};
87
88PXR_NAMESPACE_CLOSE_SCOPE
89
90#endif
Base class for nodes that support dynamic creation of input and output connectors.
VDF_API void AddOutputSpecs(const VdfOutputSpecs &specs, std::vector< VdfOutput * > *resultOutputs)
Appends the supplied specs to this node, and creates and stores additional outputs from them.
virtual VDF_API const VdfInputAndOutputSpecs * _AcquireInputAndOutputSpecsPointer(const VdfInputSpecs &inputSpecs, const VdfOutputSpecs &outputSpecs)
Gets an input/output specs pointer that the node can use.
virtual VDF_API void _ReleaseInputAndOutputSpecsPointer(const VdfInputAndOutputSpecs *specs)
Releases an input/output specs pointer that was acquired with a previous call to _AcquireInputAndOutp...
VDF_API void AddInputSpecs(const VdfInputSpecs &specs, std::vector< VdfInput * > *resultInputs)
Appends the supplied specs to this node, and creates and stores additional inputs from them.
Hashable holder of a VdfInputSpec and VdfOutputSpec.
A VdfInput is used to connect a VdfNode to one or more VdfNodes' outputs.
Definition: input.h:36
VdfInputSpecs is a container for VdfInputSpec objects.
A VdfNetwork is a collection of VdfNodes and their connections.
Definition: network.h:60
This is the base class for all nodes in a VdfNetwork.
Definition: node.h:53
A VdfOutput represents an output on a node.
Definition: output.h:32
VdfOutputSpecs is a container for VdfOutputSpec objects.