HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HOM_Node.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * COMMENTS:
7  */
8 
9 #ifndef __HOM_Node_h__
10 #define __HOM_Node_h__
11 
12 #include "HOM_API.h"
13 #include "HOM_NetworkMovableItem.h"
14 #include "HOM_BinaryString.h"
15 #include "HOM_EnumModules.h"
16 #include "HOM_IterableList.h"
17 #include "HOM_PtrOrNull.h"
18 #include <PY/PY_OpaqueObject.h>
19 #include <string>
20 #include <vector>
21 
22 class HOM_StickyNote;
23 class HOM_NodeConnection;
24 class HOM_NodeGroup;
25 class HOM_NodeType;
27 class HOM_Parm;
28 class HOM_ParmTuple;
29 class HOM_IndirectInput;
31 class HOM_HDAModule;
34 class HOM_ParmTemplate;
35 class HOM_DopSimulation;
36 class HOM_DopObject;
38 class HOM_NodeInfoTree;
39 class CL_Clip;
40 
42 
43 class HOM_API HOM_Node : virtual public HOM_NetworkMovableItem
44 {
45 public:
47  : HOM_NetworkMovableItem(HOM_networkItemType::Node)
48  { HOM_CONSTRUCT_OBJECT(this) }
49  HOM_Node(const HOM_Node &node)
51  { HOM_CONSTRUCT_OBJECT(this) }
52  ~HOM_Node() override
53  { HOM_DESTRUCT_OBJECT(this) }
54 
55  virtual bool operator==(HOM_PtrOrNull<HOM_Node> node) = 0;
56  virtual bool operator!=(HOM_PtrOrNull<HOM_Node> node) = 0;
57 
58  int __hash__() override = 0;
59  std::string __repr__() override = 0;
60  virtual std::string __str__() = 0;
61 
62  virtual bool isNetwork() = 0;
63  virtual bool isEditable() = 0;
64 
65  SWIGOUT(%newobject type;)
66  SWIGOUT(%warnfilter(321) type;)
67  virtual HOM_NodeType *type() = 0;
68  virtual HOM_NodeTypeCategory *childTypeCategory() = 0;
69 
70  virtual bool isFlagReadable(HOM_EnumValue &flag) = 0;
71  virtual bool isFlagWritable(HOM_EnumValue &flag) = 0;
72  virtual bool isGenericFlagSet(HOM_EnumValue &flag) = 0;
73  virtual void setGenericFlag(HOM_EnumValue &flag, bool value) = 0;
74 
75  virtual bool isDisplayDescriptiveNameFlagSet() = 0;
76  virtual void setDisplayDescriptiveNameFlag(bool on) = 0;
77 
78  virtual std::vector<std::string> errors() = 0;
79  virtual std::vector<std::string> warnings() = 0;
80  virtual std::vector<std::string> messages() = 0;
81 
82  SWIGOUT(%newobject node;)
83  SWIGOUT(%kwargs node;)
84  virtual HOM_Node* node(const char* node_path) = 0;
85 
86  SWIGOUT(%kwargs nodes;)
87  virtual std::vector<HOM_ElemPtr<HOM_Node> > nodes(
88  const std::vector<std::string>& node_paths) = 0;
89 
90  SWIGOUT(%newobject item;)
91  SWIGOUT(%kwargs item;)
92  virtual HOM_NetworkMovableItem* item(const char* item_path) = 0;
93 
94  SWIGOUT(%kwargs items;)
95  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > items(
96  const std::vector<std::string>& item_paths) = 0;
97 
98  SWIGOUT(%kwargs glob;)
99  virtual std::vector<HOM_ElemPtr<HOM_Node> > glob(
100  const char *pattern, bool ignore_case=false) = 0;
101 
102  SWIGOUT(%kwargs recursiveGlob;)
103  virtual std::vector<HOM_ElemPtr<HOM_Node> > recursiveGlob(
104  const char *pattern,
105  HOM_EnumValue &filter = HOM_nodeTypeFilter::NoFilter,
106  bool include_subnets = true) = 0;
107 
108  SWIGOUT(%newobject createNode;)
109  SWIGOUT(%kwargs createNode;)
110  virtual HOM_Node* createNode(
111  const char* node_type_name,
112  const char* node_name=NULL,
113  bool run_init_scripts=true,
114  bool load_contents=true,
115  bool exact_type_name=false,
116  bool force_valid_node_name=false) = 0;
117 
118  virtual int inputIndex(const char *input_name) = 0;
119  virtual int outputIndex(const char *output_name) = 0;
120 
121  virtual void setInput(
122  int input_index,
123  HOM_NetworkMovableItem *item_to_become_input,
124  int output_index = 0) = 0;
125 
126  virtual void setNamedInput(
127  const char *input_name,
128  HOM_NetworkMovableItem *item_to_become_input,
129  const char *output_name) = 0;
130 
131  virtual void setNamedInput(
132  const char *input_name,
133  HOM_NetworkMovableItem *item_to_become_input,
134  int output_index) = 0;
135 
136  virtual void setFirstInput(
137  HOM_NetworkMovableItem *item_to_become_input,
138  int output_index = 0) = 0;
139 
140  SWIGOUT(%kwargs setNextInput;)
141  virtual void setNextInput(
142  HOM_NetworkMovableItem *item_to_become_input,
143  int output_index = 0,
144  bool unordered_only = false) = 0;
145 
146  virtual void insertInput(
147  int input_index,
148  HOM_NetworkMovableItem *item_to_become_input,
149  int output_index = 0) = 0;
150 
151  virtual int numOrderedInputs() = 0;
152 
153  virtual std::vector<HOM_ElemPtr<HOM_Node> > inputs() = 0;
154  virtual std::vector<HOM_ElemPtr<HOM_Node> > inputsFollowingOutputs() = 0;
155 
156  SWIGOUT(%warnfilter(321) input;)
157  virtual HOM_Node *input(int input_index) = 0;
158  virtual HOM_Node *inputFollowingOutputs(int input_index) = 0;
159 
160  virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> > inputConnections() = 0;
161 
162  SWIGOUT(%newobject inputConnectors;)
163  virtual HOM_IterableList<std::vector<HOM_ElemPtr<HOM_NodeConnection> > > *
164  inputConnectors() = 0;
165 
166  SWIGOUT(%kwargs inputAncestors;)
167  virtual std::vector<HOM_ElemPtr<HOM_Node> > inputAncestors(
168  bool include_ref_inputs = true,
169  bool follow_subnets = false,
170  bool only_used_inputs = false) = 0;
171 
172  virtual std::vector<std::string> inputNames() = 0;
173  virtual std::vector<std::string> inputLabels() = 0;
174 
175  virtual std::map<std::string, std::string> editableInputStrings(
176  int input_index) = 0;
177  virtual std::string editableInputString(int input_index,
178  const char *key) = 0;
179  virtual void setEditableInputString(int input_index,
180  const char *key, const char *value) = 0;
181 
182  virtual std::vector<std::string> outputNames() = 0;
183  virtual std::vector<std::string> outputLabels() = 0;
184 
185  virtual std::vector<HOM_ElemPtr<HOM_Node> > outputs() = 0;
186 
187  virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> >
188  outputConnections() = 0;
189 
190  SWIGOUT(%newobject outputConnectors;)
191  virtual HOM_IterableList<std::vector<HOM_ElemPtr<HOM_NodeConnection> > > *
192  outputConnectors() = 0;
193 
194  // Access things contained in this node (node must be a network).
195  virtual std::vector<HOM_ElemPtr<HOM_Node> > children() = 0;
196  SWIGOUT(%kwargs allSubChildren;)
197  virtual std::vector<HOM_ElemPtr<HOM_Node> > allSubChildren(
198  bool top_down = true,
199  bool recurse_in_locked_nodes = true,
200  bool sync_delayed_definition = false) = 0;
201  SWIGOUT(%kwargs selectedChildren;)
202  virtual std::vector<HOM_ElemPtr<HOM_Node> > selectedChildren(
203  bool include_hidden = false,
204  bool include_hidden_support_nodes = false) = 0;
205 
206  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > allItems() = 0;
207  SWIGOUT(%kwargs allSubItems;)
208  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > allSubItems(
209  bool top_down = true,
210  bool recurse_in_locked_nodes = true,
211  bool sync_delayed_definition = false) = 0;
212  SWIGOUT(%kwargs selectedItems;)
213  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > selectedItems(
214  bool include_hidden = false,
215  bool include_hidden_support_nodes = false) = 0;
216  SWIGOUT(%kwargs numItems;)
217  virtual int numItems(HOM_EnumValue *item_type = NULL,
218  bool selected_only = false,
219  bool include_hidden = false) = 0;
220 
221  // Picked child item copy/paste/delete methods.
222  SWIGOUT(%kwargs deleteItems;)
223  virtual void deleteItems(
224  const std::vector<HOM_NetworkMovableItem *>&
225  items = std::vector<HOM_NetworkMovableItem *>(),
226  bool disable_safety_checks = false) = 0;
227  virtual void copyItemsToClipboard(
228  const std::vector<HOM_NetworkMovableItem *> &items =
229  std::vector<HOM_NetworkMovableItem *>()) = 0;
230  virtual void pasteItemsFromClipboard(HOM_Vector2 *position = NULL) = 0;
231  SWIGOUT(%kwargs copyItems;)
232  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > copyItems(
233  const std::vector<HOM_NetworkMovableItem *> &items,
234  bool channel_reference_originals=false,
235  bool relative_references=true,
236  bool connect_outputs_to_multi_inputs=false) = 0;
237 
238  SWIGOUT(%newobject creator;)
239  virtual HOM_Node *creator() = 0;
240  SWIGOUT(%newobject network;)
242  { return creator(); }
243 
244  SWIGOUT(%newobject moveToGoodPosition;)
245  SWIGOUT(%kwargs moveToGoodPosition;)
246  virtual HOM_Vector2 *moveToGoodPosition(bool relative_to_inputs = true,
247  bool move_inputs = true,
248  bool move_outputs = true,
249  bool move_unconnected = true) = 0;
250 
251  // TODO: Have an argument to specify sorting orders once bug 25998 is fixed.
252  // Have an argument equivalent to oplayout -t once bug 26018 is fixed.
253  SWIGOUT(%kwargs layoutChildren);
254  virtual void layoutChildren
255  (const std::vector<HOM_NetworkMovableItem *> &items =
256  std::vector<HOM_NetworkMovableItem *>(),
257  double horizontal_spacing=-1,
258  double vertical_spacing=-1) = 0;
259 
260  virtual bool isCurrent() = 0;
261  SWIGOUT(%kwargs setCurrent;)
262  virtual void setCurrent(bool on, bool clear_all_selected = false) = 0;
263 
264  virtual bool isHidden() = 0;
265  virtual void hide(bool on) = 0;
266 
267  virtual std::string comment() = 0;
268  virtual void setComment(const char *comment) = 0;
269  virtual void appendComment(const char *comment) = 0;
270 
271  SWIGOUT(%kwargs destroy;)
272  virtual void destroy(bool disable_safety_checks=false) = 0;
273 
274  virtual std::vector<HOM_ElemPtr<HOM_NetworkBox> > networkBoxes() = 0;
275  SWIGOUT(%newobject iterNetworkBoxes;)
276  virtual HOM_IterableList<HOM_NetworkBox> *iterNetworkBoxes() = 0;
277  SWIGOUT(%newobject createNetworkBox;)
278  virtual HOM_NetworkBox *createNetworkBox(const char *name=NULL) = 0;
279  SWIGOUT(%newobject copyNetworkBox;)
280  virtual HOM_NetworkBox *copyNetworkBox(HOM_NetworkBox &network_box_to_copy,
281  const char *new_name=NULL, bool channel_reference_original=false) = 0;
282  SWIGOUT(%newobject findNetworkBox;)
283  virtual HOM_NetworkBox *findNetworkBox(const char *name) = 0;
284  virtual std::vector<HOM_ElemPtr<HOM_NetworkBox> >
285  findNetworkBoxes(const char *pattern) = 0;
286 
287  virtual std::vector<HOM_ElemPtr<HOM_NetworkDot> > networkDots() = 0;
288  SWIGOUT(%newobject createNetworkDot;)
289  virtual HOM_NetworkDot *createNetworkDot() = 0;
290 
291  virtual bool canCreateDigitalAsset() = 0;
292 
293  // Sub-Network methods.
294  SWIGOUT(%kwargs collapseIntoSubnet;)
295  SWIGOUT(%newobject collapseIntoSubnet;)
296  virtual HOM_Node *collapseIntoSubnet(
297  const std::vector<HOM_NetworkMovableItem*> &child_items,
298  const char *subnet_name=NULL, const char *subnet_type=NULL) = 0;
299 
300  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> >
301  extractAndDelete() = 0;
302 
303  virtual std::vector<HOM_ElemPtr<HOM_SubnetIndirectInput> >
304  indirectInputs() = 0;
305 
306  // get the nodes inside a subnet that feed its outputs
307  virtual std::vector<HOM_ElemPtr<HOM_Node> >
308  subnetOutputs() = 0;
309 
310  virtual bool isSubNetwork() = 0;
311 
312  // User data methods:
313  virtual void setUserData(const char *name, const std::string &value) = 0;
314  SWIGOUT(%ignore boostAnyUserData;)
315  virtual hboost::any boostAnyUserData(const char *name) = 0;
316  virtual void destroyUserData(const char *name, bool must_exist=true) = 0;
317  virtual void clearUserDataDict() = 0;
318  virtual std::map<std::string, std::string> userDataDict() = 0;
319 
320 #ifdef SWIG
321 %extend
322 {
323  InterpreterObject userData(const char *name)
324  { return HOMboostAnyToInterpreterObject(self->boostAnyUserData(name)); }
325 }
326 #endif
327 
328  // Sticky methods
329  SWIGOUT(%newobject createStickyNote;)
330  virtual HOM_StickyNote *createStickyNote(const char *name=NULL) = 0;
331  virtual std::vector<HOM_ElemPtr<HOM_StickyNote> > stickyNotes() = 0;
332  SWIGOUT(%newobject iterStickyNotes;)
333  virtual HOM_IterableList<HOM_StickyNote> *iterStickyNotes() = 0;
334  SWIGOUT(%newobject copyStickyNote;)
335  virtual HOM_StickyNote *copyStickyNote(HOM_StickyNote &sticky_note_to_copy,
336  const char *new_name=NULL) = 0;
337  SWIGOUT(%newobject findStickyNote;)
338  virtual HOM_StickyNote *findStickyNote(const char *name) = 0;
339  SWIGOUT(%newobject findStickyNotes;)
340  virtual std::vector<HOM_ElemPtr<HOM_StickyNote> > findStickyNotes(
341  const char *pattern) = 0;
342 };
343 
344 #endif
type
Definition: core.h:556
std::string ignore_case(std::string item)
Helper function to allow ignore_case to be passed to IsMember or Transform.
Definition: CLI11.h:3456
#define HOM_DESTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1343
Definition: Node.h:52
GLsizei const GLfloat * value
Definition: glcorearb.h:824
HOM_Node()
Definition: HOM_Node.h:46
#define SWIGOUT(x)
Definition: HOM_Defines.h:24
string __repr__(VtArray< T > const &self)
Definition: wrapArray.h:312
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
HOM_Node(const HOM_Node &node)
Definition: HOM_Node.h:49
bool any(const vbool4 &v)
Definition: simd.h:3600
#define HOM_API
Definition: HOM_API.h:13
void ignore(T const &) VULKAN_HPP_NOEXCEPT
Definition: vulkan.hpp:6508
HOM_Node * network()
Definition: HOM_Node.h:241
#define HOM_CONSTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1342
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons.
Definition: Mat3.h:556
~HOM_Node() override
Definition: HOM_Node.h:52
GLuint const GLchar * name
Definition: glcorearb.h:786
GLushort pattern
Definition: glad.h:2583
OIIO_UTIL_API bool rename(string_view from, string_view to, std::string &err)
SIM_API const UT_StringHolder position
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
Definition: Mat3.h:542
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glcorearb.h:1297