HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_VolumeVop.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_VolumeVopEnums
24 {
25  enum class Vexsrc
26  {
27  MYSELF = 0,
28  SHOP,
29  SCRIPT,
30  SNIPPET
31  };
32 
34  getToken(Vexsrc enum_value)
35  {
36  using namespace UT::Literal;
37  switch (enum_value) {
38  case Vexsrc::MYSELF: return "myself"_sh;
39  case Vexsrc::SHOP: return "shop"_sh;
40  case Vexsrc::SCRIPT: return "script"_sh;
41  case Vexsrc::SNIPPET: return "snippet"_sh;
42  default: UT_ASSERT(false); return ""_sh;
43  }
44  }
45 
46 }
47 
48 
50 {
51 public:
52  static int version() { return 1; }
53  struct Bindings
54  {
58 
59 
61  {
62  bindprimname = ""_UTsh;
63  bindprim = 0;
64  bindname = ""_UTsh;
65 
66  }
67 
68  bool operator==(const Bindings &src) const
69  {
70  if (bindprimname != src.bindprimname) return false;
71  if (bindprim != src.bindprim) return false;
72  if (bindname != src.bindname) return false;
73 
74  return true;
75  }
76  bool operator!=(const Bindings &src) const
77  {
78  return !operator==(src);
79  }
80 
81  };
82 
84  {
86 
87  buf.strcat("[ ");
88  for (int i = 0; i < list.entries(); i++)
89  {
90  if (i)
91  buf.strcat(", ");
92  buf.strcat("( ");
93  buf.append("");
94  { UT_String tmp; tmp = UT_StringWrap(list(i).bindprimname).makeQuotedString('"'); buf.strcat(tmp); }
95  buf.append(", ");
96  buf.appendSprintf("%d", (int) list(i).bindprim);
97  buf.append(", ");
98  { UT_String tmp; tmp = UT_StringWrap(list(i).bindname).makeQuotedString('"'); buf.strcat(tmp); }
99 
100  buf.strcat(" )");
101  }
102  buf.strcat(" ]");
103 
105  return result;
106  }
107 
109  {
110  myVexsrc = 0;
111  myShoppath = ""_UTsh;
112  myScript = "null"_UTsh;
113  myVop_compiler = "vcc -q $VOP_INCLUDEPATH -o $VOP_OBJECTFILE -e $VOP_ERRORFILE $VOP_SOURCEFILE"_UTsh;
114  mySnippet = ""_UTsh;
115  myExportList = "*"_UTsh;
116  myEnforcePrototypes = false;
117  myStrictVariables = true;
118  myVex_cwdpath = ""_UTsh;
119  myVex_outputmask = "*"_UTsh;
120  myVex_multithread = true;
121  myPruneVDBBlocks = true;
122  myVex_geometrygenerator = false;
123  myVdb_signedflood = true;
124  myAutobind = true;
125  myBindeach = false;
126  myBindings.setSize(0);
127  myVexPrecision = "auto"_UTsh;
128 
129  }
130 
131  explicit SOP_VolumeVopParms(const SOP_VolumeVopParms &) = default;
132  SOP_VolumeVopParms &operator=(const SOP_VolumeVopParms &) = default;
133  SOP_VolumeVopParms(SOP_VolumeVopParms &&) noexcept = default;
134  SOP_VolumeVopParms &operator=(SOP_VolumeVopParms &&) noexcept = default;
135 
136  ~SOP_VolumeVopParms() override {}
137 
138  bool operator==(const SOP_VolumeVopParms &src) const
139  {
140  if (myVexsrc != src.myVexsrc) return false;
141  if (myShoppath != src.myShoppath) return false;
142  if (myScript != src.myScript) return false;
143  if (myVop_compiler != src.myVop_compiler) return false;
144  if (mySnippet != src.mySnippet) return false;
145  if (myExportList != src.myExportList) return false;
146  if (myEnforcePrototypes != src.myEnforcePrototypes) return false;
147  if (myStrictVariables != src.myStrictVariables) return false;
148  if (myVex_cwdpath != src.myVex_cwdpath) return false;
149  if (myVex_outputmask != src.myVex_outputmask) return false;
150  if (myVex_multithread != src.myVex_multithread) return false;
151  if (myPruneVDBBlocks != src.myPruneVDBBlocks) return false;
152  if (myVex_geometrygenerator != src.myVex_geometrygenerator) return false;
153  if (myVdb_signedflood != src.myVdb_signedflood) return false;
154  if (myAutobind != src.myAutobind) return false;
155  if (myBindeach != src.myBindeach) return false;
156  if (myBindings != src.myBindings) return false;
157  if (myVexPrecision != src.myVexPrecision) return false;
158 
159 
160  if (baseGetSignature() != src.baseGetSignature()) return false;
161 
162  return true;
163  }
164  bool operator!=(const SOP_VolumeVopParms &src) const
165  {
166  return !operator==(src);
167  }
169 
170 
171 
172  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
173  {
174  myVexsrc = 0;
175  if (true)
176  graph->evalOpParm(myVexsrc, nodeidx, "vexsrc", time, graph->isDirect()?nullptr:depnode);
177  myShoppath = ""_UTsh;
178  if (true && ( (true&&!(((int64(getVexsrc())!=1)))) ) )
179  graph->evalOpParm(myShoppath, nodeidx, "shoppath", time, graph->isDirect()?nullptr:depnode);
180  myScript = "null"_UTsh;
181  if (true && ( (true&&!(((int64(getVexsrc())!=2)))) ) )
182  graph->evalOpParm(myScript, nodeidx, "script", time, graph->isDirect()?nullptr:depnode);
183  myVop_compiler = "vcc -q $VOP_INCLUDEPATH -o $VOP_OBJECTFILE -e $VOP_ERRORFILE $VOP_SOURCEFILE"_UTsh;
184  if (true && ( (true&&!(((int64(getVexsrc())!=0)))) ) )
185  graph->evalOpParm(myVop_compiler, nodeidx, "vop_compiler", time, graph->isDirect()?nullptr:depnode);
186  mySnippet = ""_UTsh;
187  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
188  graph->evalOpParm(mySnippet, nodeidx, "vexsnippet", time, graph->isDirect()?nullptr:depnode);
189  myExportList = "*"_UTsh;
190  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
191  graph->evalOpParm(myExportList, nodeidx, "vex_exportlist", time, graph->isDirect()?nullptr:depnode);
192  myEnforcePrototypes = false;
193  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
194  graph->evalOpParm(myEnforcePrototypes, nodeidx, "vex_strict", time, graph->isDirect()?nullptr:depnode);
195  myStrictVariables = true;
196  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
197  graph->evalOpParm(myStrictVariables, nodeidx, "vex_strictvariables", time, graph->isDirect()?nullptr:depnode);
198  myVex_cwdpath = ""_UTsh;
199  if (true)
200  graph->evalOpParm(myVex_cwdpath, nodeidx, "vex_cwdpath", time, graph->isDirect()?nullptr:depnode);
201  myVex_outputmask = "*"_UTsh;
202  if (true)
203  graph->evalOpParm(myVex_outputmask, nodeidx, "vex_outputmask", time, graph->isDirect()?nullptr:depnode);
204  myVex_multithread = true;
205  if (true)
206  graph->evalOpParm(myVex_multithread, nodeidx, "vex_multithread", time, graph->isDirect()?nullptr:depnode);
207  myPruneVDBBlocks = true;
208  if (true)
209  graph->evalOpParm(myPruneVDBBlocks, nodeidx, "prunevdbblocks", time, graph->isDirect()?nullptr:depnode);
210  myVex_geometrygenerator = false;
211  if (true)
212  graph->evalOpParm(myVex_geometrygenerator, nodeidx, "vex_geometrygenerator", time, graph->isDirect()?nullptr:depnode);
213  myVdb_signedflood = true;
214  if (true)
215  graph->evalOpParm(myVdb_signedflood, nodeidx, "vdb_signedflood", time, graph->isDirect()?nullptr:depnode);
216  myAutobind = true;
217  if (true)
218  graph->evalOpParm(myAutobind, nodeidx, "autobind", time, graph->isDirect()?nullptr:depnode);
219  myBindeach = false;
220  if (true && ( (true&&!(((getAutobind()==1)))) ) )
221  graph->evalOpParm(myBindeach, nodeidx, "bindeach", time, graph->isDirect()?nullptr:depnode);
222  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) )
223  {
224  int64 length = 0;
225  graph->evalOpParm(length, nodeidx, "bindings", time, graph->isDirect()?nullptr:depnode);
226  if (length < 0) length = 0;
227  myBindings.setSize(length);
228  for (exint i = 0; i < length; i++)
229  {
230  int parmidx[1];
231  int offsets[1];
232  parmidx[0] = i+1;
233  offsets[0] = 1;
234  auto && _curentry = myBindings(i);
235  (void) _curentry;
236  _curentry.bindprimname = ""_UTsh;
237  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) && ( (true&&!(((getAutobind()==1))||((getBindeach()==1))||((getAutobind()==1))||((getBindeach()==1)))) ) )
238  graph->evalOpParmInst(_curentry.bindprimname, nodeidx, "bindprimname#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
239  _curentry.bindprim = 0;
240  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) && ( (true&&!(((getAutobind()==1))||((getBindeach()==1))||((getAutobind()==1))||((getBindeach()==1)))) ) )
241  graph->evalOpParmInst(_curentry.bindprim, nodeidx, "bindprim#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
242  _curentry.bindname = ""_UTsh;
243  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) && ( (true&&!(((getAutobind()==1))||((getBindeach()==1))||((getAutobind()==1))||((getBindeach()==1)))) ) )
244  graph->evalOpParmInst(_curentry.bindname, nodeidx, "bindname#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
245 
246  }
247  }
248  else
249  myBindings.clear();
250  myVexPrecision = "auto"_UTsh;
251  if (true)
252  graph->evalOpParm(myVexPrecision, nodeidx, "vex_precision", time, graph->isDirect()?nullptr:depnode);
253 
254  }
255 
256 
257  void loadFromOpSubclass(const LoadParms &loadparms) override
258  {
259  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
260  }
261 
262 
263  void copyFrom(const OP_NodeParms *src) override
264  {
265  *this = *((const SOP_VolumeVopParms *)src);
266  }
267 
268  template <typename T>
269  void
270  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
271  {
272  if (idx.size() < 1)
273  return;
274  UT_ASSERT(idx.size() == instance.size()+1);
275  if (idx.size() != instance.size()+1)
276  return;
277  switch (idx[0])
278  {
279  case 0:
280  coerceValue(value, myVexsrc);
281  break;
282  case 1:
283  coerceValue(value, myShoppath);
284  break;
285  case 2:
286  coerceValue(value, myScript);
287  break;
288  case 3:
289  coerceValue(value, myVop_compiler);
290  break;
291  case 4:
292  coerceValue(value, mySnippet);
293  break;
294  case 5:
295  coerceValue(value, myExportList);
296  break;
297  case 6:
298  coerceValue(value, myEnforcePrototypes);
299  break;
300  case 7:
301  coerceValue(value, myStrictVariables);
302  break;
303  case 8:
304  coerceValue(value, myVex_cwdpath);
305  break;
306  case 9:
307  coerceValue(value, myVex_outputmask);
308  break;
309  case 10:
310  coerceValue(value, myVex_multithread);
311  break;
312  case 11:
313  coerceValue(value, myPruneVDBBlocks);
314  break;
315  case 12:
316  coerceValue(value, myVex_geometrygenerator);
317  break;
318  case 13:
319  coerceValue(value, myVdb_signedflood);
320  break;
321  case 14:
322  coerceValue(value, myAutobind);
323  break;
324  case 15:
325  coerceValue(value, myBindeach);
326  break;
327  case 16:
328  if (idx.size() == 1)
329  coerceValue(value, myBindings.entries());
330  else if (instance[0] < myBindings.entries())
331  {
332  auto && _data = myBindings(instance[0]);
333  switch (idx[1])
334  {
335  case 0:
336  coerceValue(value, _data.bindprimname);
337  break;
338  case 1:
339  coerceValue(value, _data.bindprim);
340  break;
341  case 2:
342  coerceValue(value, _data.bindname);
343  break;
344 
345  }
346  }
347  break;
348  case 17:
349  coerceValue(value, myVexPrecision);
350  break;
351 
352  }
353  }
354 
355  bool isParmColorRamp(exint idx) const override
356  {
357  switch (idx)
358  {
359 
360  }
361  return false;
362  }
363 
364  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
365  { doGetParmValue(idx, instance, value); }
366  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
367  { doGetParmValue(idx, instance, value); }
368  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
369  { doGetParmValue(idx, instance, value); }
370  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
371  { doGetParmValue(idx, instance, value); }
372  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
373  { doGetParmValue(idx, instance, value); }
374  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
375  { doGetParmValue(idx, instance, value); }
376  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
377  { doGetParmValue(idx, instance, value); }
378  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
379  { doGetParmValue(idx, instance, value); }
380  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
381  { doGetParmValue(idx, instance, value); }
382  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
383  { doGetParmValue(idx, instance, value); }
384  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
385  { doGetParmValue(idx, instance, value); }
386 
387  template <typename T>
388  void
389  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
390  {
391  if (idx.size() < 1)
392  return;
393  UT_ASSERT(idx.size() == instance.size()+1);
394  if (idx.size() != instance.size()+1)
395  return;
396  switch (idx[0])
397  {
398  case 0:
399  coerceValue(myVexsrc, clampMinValue(0, clampMaxValue(3, value ) ));
400  break;
401  case 1:
402  coerceValue(myShoppath, ( ( value ) ));
403  break;
404  case 2:
405  coerceValue(myScript, ( ( value ) ));
406  break;
407  case 3:
408  coerceValue(myVop_compiler, ( ( value ) ));
409  break;
410  case 4:
411  coerceValue(mySnippet, ( ( value ) ));
412  break;
413  case 5:
414  coerceValue(myExportList, ( ( value ) ));
415  break;
416  case 6:
417  coerceValue(myEnforcePrototypes, ( ( value ) ));
418  break;
419  case 7:
420  coerceValue(myStrictVariables, ( ( value ) ));
421  break;
422  case 8:
423  coerceValue(myVex_cwdpath, ( ( value ) ));
424  break;
425  case 9:
426  coerceValue(myVex_outputmask, ( ( value ) ));
427  break;
428  case 10:
429  coerceValue(myVex_multithread, ( ( value ) ));
430  break;
431  case 11:
432  coerceValue(myPruneVDBBlocks, ( ( value ) ));
433  break;
434  case 12:
435  coerceValue(myVex_geometrygenerator, ( ( value ) ));
436  break;
437  case 13:
438  coerceValue(myVdb_signedflood, ( ( value ) ));
439  break;
440  case 14:
441  coerceValue(myAutobind, ( ( value ) ));
442  break;
443  case 15:
444  coerceValue(myBindeach, ( ( value ) ));
445  break;
446  case 16:
447  if (idx.size() == 1)
448  {
449  exint newsize;
450  coerceValue(newsize, value);
451  if (newsize < 0) newsize = 0;
452  myBindings.setSize(newsize);
453  }
454  else
455  {
456  if (instance[0] < 0)
457  return;
458  myBindings.setSizeIfNeeded(instance[0]+1);
459  auto && _data = myBindings(instance[0]);
460  switch (idx[1])
461  {
462  case 0:
463  coerceValue(_data.bindprimname, value);
464  break;
465  case 1:
466  coerceValue(_data.bindprim, value);
467  break;
468  case 2:
469  coerceValue(_data.bindname, value);
470  break;
471 
472  }
473  }
474  break;
475  case 17:
476  coerceValue(myVexPrecision, ( ( value ) ));
477  break;
478 
479  }
480  }
481 
482  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
483  { doSetParmValue(idx, instance, value); }
484  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
485  { doSetParmValue(idx, instance, value); }
486  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
487  { doSetParmValue(idx, instance, value); }
488  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
489  { doSetParmValue(idx, instance, value); }
490  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
491  { doSetParmValue(idx, instance, value); }
492  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
493  { doSetParmValue(idx, instance, value); }
494  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
495  { doSetParmValue(idx, instance, value); }
496  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
497  { doSetParmValue(idx, instance, value); }
498  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
499  { doSetParmValue(idx, instance, value); }
500  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
501  { doSetParmValue(idx, instance, value); }
502  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
503  { doSetParmValue(idx, instance, value); }
504 
505  exint getNestNumParms(TempIndex idx) const override
506  {
507  if (idx.size() == 0)
508  return 18;
509  switch (idx[0])
510  {
511  case 16:
512  return 3;
513 
514  }
515  // Invalid
516  return 0;
517  }
518 
519  const char *getNestParmName(TempIndex fieldnum) const override
520  {
521  if (fieldnum.size() < 1)
522  return 0;
523  switch (fieldnum[0])
524  {
525  case 0:
526  return "vexsrc";
527  case 1:
528  return "shoppath";
529  case 2:
530  return "script";
531  case 3:
532  return "vop_compiler";
533  case 4:
534  return "vexsnippet";
535  case 5:
536  return "vex_exportlist";
537  case 6:
538  return "vex_strict";
539  case 7:
540  return "vex_strictvariables";
541  case 8:
542  return "vex_cwdpath";
543  case 9:
544  return "vex_outputmask";
545  case 10:
546  return "vex_multithread";
547  case 11:
548  return "prunevdbblocks";
549  case 12:
550  return "vex_geometrygenerator";
551  case 13:
552  return "vdb_signedflood";
553  case 14:
554  return "autobind";
555  case 15:
556  return "bindeach";
557  case 16:
558  if (fieldnum.size() == 1)
559  return "bindings";
560  switch (fieldnum[1])
561  {
562  case 0:
563  return "bindprimname#";
564  case 1:
565  return "bindprim#";
566  case 2:
567  return "bindname#";
568 
569  }
570  return 0;
571  case 17:
572  return "vex_precision";
573 
574  }
575  return 0;
576  }
577 
578  ParmType getNestParmType(TempIndex fieldnum) const override
579  {
580  if (fieldnum.size() < 1)
581  return PARM_UNSUPPORTED;
582  switch (fieldnum[0])
583  {
584  case 0:
585  return PARM_INTEGER;
586  case 1:
587  return PARM_STRING;
588  case 2:
589  return PARM_STRING;
590  case 3:
591  return PARM_STRING;
592  case 4:
593  return PARM_STRING;
594  case 5:
595  return PARM_STRING;
596  case 6:
597  return PARM_INTEGER;
598  case 7:
599  return PARM_INTEGER;
600  case 8:
601  return PARM_STRING;
602  case 9:
603  return PARM_STRING;
604  case 10:
605  return PARM_INTEGER;
606  case 11:
607  return PARM_INTEGER;
608  case 12:
609  return PARM_INTEGER;
610  case 13:
611  return PARM_INTEGER;
612  case 14:
613  return PARM_INTEGER;
614  case 15:
615  return PARM_INTEGER;
616  case 16:
617  if (fieldnum.size() == 1)
618  return PARM_MULTIPARM;
619  switch (fieldnum[1])
620  {
621  case 0:
622  return PARM_STRING;
623  case 1:
624  return PARM_INTEGER;
625  case 2:
626  return PARM_STRING;
627 
628  }
629  return PARM_UNSUPPORTED;
630  case 17:
631  return PARM_STRING;
632 
633  }
634  return PARM_UNSUPPORTED;
635  }
636 
637  // Boiler plate to load individual types.
638  static void loadData(UT_IStream &is, int64 &v)
639  { is.bread(&v, 1); }
640  static void loadData(UT_IStream &is, bool &v)
641  { int64 iv; is.bread(&iv, 1); v = iv; }
642  static void loadData(UT_IStream &is, fpreal64 &v)
643  { is.bread<fpreal64>(&v, 1); }
644  static void loadData(UT_IStream &is, UT_Vector2D &v)
645  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
646  static void loadData(UT_IStream &is, UT_Vector3D &v)
647  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
648  is.bread<fpreal64>(&v.z(), 1); }
649  static void loadData(UT_IStream &is, UT_Vector4D &v)
650  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
651  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
652  static void loadData(UT_IStream &is, UT_Matrix2D &v)
653  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
654  static void loadData(UT_IStream &is, UT_Matrix3D &v)
655  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
656  static void loadData(UT_IStream &is, UT_Matrix4D &v)
657  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
658  static void loadData(UT_IStream &is, UT_Vector2I &v)
659  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
660  static void loadData(UT_IStream &is, UT_Vector3I &v)
661  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
662  is.bread<int64>(&v.z(), 1); }
663  static void loadData(UT_IStream &is, UT_Vector4I &v)
664  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
665  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
667  { is.bread(v); }
669  { UT_StringHolder rampdata;
670  loadData(is, rampdata);
671  if (rampdata.isstring())
672  {
673  v.reset(new UT_Ramp());
674  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
675  v->load(istr);
676  }
677  else v.reset();
678  }
681  loadData(is, data);
682  if (data.isstring())
683  {
684  // Find the data type.
685  const char *colon = UT_StringWrap(data).findChar(':');
686  if (colon)
687  {
688  int typelen = colon - data.buffer();
690  type.strncpy(data.buffer(), typelen);
691  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
692 
693  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
694  }
695  }
696  else v.reset();
697  }
698 
699  static void saveData(std::ostream &os, int64 v)
700  { UTwrite(os, &v); }
701  static void saveData(std::ostream &os, bool v)
702  { int64 iv = v; UTwrite(os, &iv); }
703  static void saveData(std::ostream &os, fpreal64 v)
704  { UTwrite<fpreal64>(os, &v); }
705  static void saveData(std::ostream &os, UT_Vector2D v)
706  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
707  static void saveData(std::ostream &os, UT_Vector3D v)
708  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
709  UTwrite<fpreal64>(os, &v.z()); }
710  static void saveData(std::ostream &os, UT_Vector4D v)
711  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
712  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
713  static void saveData(std::ostream &os, UT_Matrix2D v)
715  static void saveData(std::ostream &os, UT_Matrix3D v)
717  static void saveData(std::ostream &os, UT_Matrix4D v)
719  static void saveData(std::ostream &os, UT_StringHolder s)
720  { UT_StringWrap(s).saveBinary(os); }
721  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
723  UT_OStringStream ostr;
724  if (s) s->save(ostr);
725  result = ostr.str();
726  saveData(os, result);
727  }
728  static void saveData(std::ostream &os, PRM_DataItemHandle s)
730  UT_OStringStream ostr;
731  if (s)
732  {
733  ostr << s->getDataTypeToken();
734  ostr << ":";
735  s->saveBinary(ostr);
736  }
737  result = ostr.str();
738  saveData(os, result);
739  }
740 
741 
742  void save(std::ostream &os) const
743  {
744  int32 v = version();
745  UTwrite(os, &v);
746  saveData(os, myVexsrc);
747  saveData(os, myShoppath);
748  saveData(os, myScript);
749  saveData(os, myVop_compiler);
750  saveData(os, mySnippet);
751  saveData(os, myExportList);
752  saveData(os, myEnforcePrototypes);
753  saveData(os, myStrictVariables);
754  saveData(os, myVex_cwdpath);
755  saveData(os, myVex_outputmask);
756  saveData(os, myVex_multithread);
757  saveData(os, myPruneVDBBlocks);
758  saveData(os, myVex_geometrygenerator);
759  saveData(os, myVdb_signedflood);
760  saveData(os, myAutobind);
761  saveData(os, myBindeach);
762  {
763  int64 length = myBindings.entries();
764  UTwrite(os, &length);
765  for (exint i = 0; i < length; i++)
766  {
767  auto && _curentry = myBindings(i);
768  (void) _curentry;
769  saveData(os, _curentry.bindprimname);
770  saveData(os, _curentry.bindprim);
771  saveData(os, _curentry.bindname);
772 
773  }
774  }
775  saveData(os, myVexPrecision);
776 
777  }
778 
779  bool load(UT_IStream &is)
780  {
781  int32 v;
782  is.bread(&v, 1);
783  if (version() != v)
784  {
785  // Fail incompatible versions
786  return false;
787  }
788  loadData(is, myVexsrc);
789  loadData(is, myShoppath);
790  loadData(is, myScript);
791  loadData(is, myVop_compiler);
792  loadData(is, mySnippet);
793  loadData(is, myExportList);
794  loadData(is, myEnforcePrototypes);
795  loadData(is, myStrictVariables);
796  loadData(is, myVex_cwdpath);
797  loadData(is, myVex_outputmask);
798  loadData(is, myVex_multithread);
799  loadData(is, myPruneVDBBlocks);
800  loadData(is, myVex_geometrygenerator);
801  loadData(is, myVdb_signedflood);
802  loadData(is, myAutobind);
803  loadData(is, myBindeach);
804  {
805  int64 length;
806  is.read(&length, 1);
807  myBindings.setSize(length);
808  for (exint i = 0; i < length; i++)
809  {
810  auto && _curentry = myBindings(i);
811  (void) _curentry;
812  loadData(is, _curentry.bindprimname);
813  loadData(is, _curentry.bindprim);
814  loadData(is, _curentry.bindname);
815 
816  }
817  }
818  loadData(is, myVexPrecision);
819 
820  return true;
821  }
822 
823  Vexsrc getVexsrc() const { return Vexsrc(myVexsrc); }
824  void setVexsrc(Vexsrc val) { myVexsrc = int64(val); }
825  Vexsrc opVexsrc(const SOP_NodeVerb::CookParms &cookparms) const
826  {
827  SOP_Node *thissop = cookparms.getNode();
828  if (!thissop) return getVexsrc();
829  int64 result;
830  OP_Utils::evalOpParm(result, thissop, "vexsrc", cookparms.getCookTime(), 0);
831  return Vexsrc(result);
832  }
833  const UT_StringHolder & getShoppath() const { return myShoppath; }
834  void setShoppath(const UT_StringHolder & val) { myShoppath = val; }
836  {
837  SOP_Node *thissop = cookparms.getNode();
838  if (!thissop) return getShoppath();
840  OP_Utils::evalOpParm(result, thissop, "shoppath", cookparms.getCookTime(), 0);
841  return result;
842  }
843  const UT_StringHolder & getScript() const { return myScript; }
844  void setScript(const UT_StringHolder & val) { myScript = val; }
846  {
847  SOP_Node *thissop = cookparms.getNode();
848  if (!thissop) return getScript();
850  OP_Utils::evalOpParm(result, thissop, "script", cookparms.getCookTime(), 0);
851  return result;
852  }
853  const UT_StringHolder & getVop_compiler() const { return myVop_compiler; }
854  void setVop_compiler(const UT_StringHolder & val) { myVop_compiler = val; }
856  {
857  SOP_Node *thissop = cookparms.getNode();
858  if (!thissop) return getVop_compiler();
860  OP_Utils::evalOpParm(result, thissop, "vop_compiler", cookparms.getCookTime(), 0);
861  return result;
862  }
863  const UT_StringHolder & getSnippet() const { return mySnippet; }
864  void setSnippet(const UT_StringHolder & val) { mySnippet = val; }
866  {
867  SOP_Node *thissop = cookparms.getNode();
868  if (!thissop) return getSnippet();
870  OP_Utils::evalOpParm(result, thissop, "vexsnippet", cookparms.getCookTime(), 0);
871  return result;
872  }
873  const UT_StringHolder & getExportList() const { return myExportList; }
874  void setExportList(const UT_StringHolder & val) { myExportList = val; }
876  {
877  SOP_Node *thissop = cookparms.getNode();
878  if (!thissop) return getExportList();
880  OP_Utils::evalOpParm(result, thissop, "vex_exportlist", cookparms.getCookTime(), 0);
881  return result;
882  }
883  bool getEnforcePrototypes() const { return myEnforcePrototypes; }
884  void setEnforcePrototypes(bool val) { myEnforcePrototypes = val; }
885  bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
886  {
887  SOP_Node *thissop = cookparms.getNode();
888  if (!thissop) return getEnforcePrototypes();
889  bool result;
890  OP_Utils::evalOpParm(result, thissop, "vex_strict", cookparms.getCookTime(), 0);
891  return result;
892  }
893  bool getStrictVariables() const { return myStrictVariables; }
894  void setStrictVariables(bool val) { myStrictVariables = val; }
895  bool opStrictVariables(const SOP_NodeVerb::CookParms &cookparms) const
896  {
897  SOP_Node *thissop = cookparms.getNode();
898  if (!thissop) return getStrictVariables();
899  bool result;
900  OP_Utils::evalOpParm(result, thissop, "vex_strictvariables", cookparms.getCookTime(), 0);
901  return result;
902  }
903  const UT_StringHolder & getVex_cwdpath() const { return myVex_cwdpath; }
904  void setVex_cwdpath(const UT_StringHolder & val) { myVex_cwdpath = val; }
906  {
907  SOP_Node *thissop = cookparms.getNode();
908  if (!thissop) return getVex_cwdpath();
910  OP_Utils::evalOpParm(result, thissop, "vex_cwdpath", cookparms.getCookTime(), 0);
911  return result;
912  }
913  const UT_StringHolder & getVex_outputmask() const { return myVex_outputmask; }
914  void setVex_outputmask(const UT_StringHolder & val) { myVex_outputmask = val; }
916  {
917  SOP_Node *thissop = cookparms.getNode();
918  if (!thissop) return getVex_outputmask();
920  OP_Utils::evalOpParm(result, thissop, "vex_outputmask", cookparms.getCookTime(), 0);
921  return result;
922  }
923  bool getVex_multithread() const { return myVex_multithread; }
924  void setVex_multithread(bool val) { myVex_multithread = val; }
925  bool opVex_multithread(const SOP_NodeVerb::CookParms &cookparms) const
926  {
927  SOP_Node *thissop = cookparms.getNode();
928  if (!thissop) return getVex_multithread();
929  bool result;
930  OP_Utils::evalOpParm(result, thissop, "vex_multithread", cookparms.getCookTime(), 0);
931  return result;
932  }
933  bool getPruneVDBBlocks() const { return myPruneVDBBlocks; }
934  void setPruneVDBBlocks(bool val) { myPruneVDBBlocks = val; }
935  bool opPruneVDBBlocks(const SOP_NodeVerb::CookParms &cookparms) const
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return getPruneVDBBlocks();
939  bool result;
940  OP_Utils::evalOpParm(result, thissop, "prunevdbblocks", cookparms.getCookTime(), 0);
941  return result;
942  }
943  bool getVex_geometrygenerator() const { return myVex_geometrygenerator; }
944  void setVex_geometrygenerator(bool val) { myVex_geometrygenerator = val; }
946  {
947  SOP_Node *thissop = cookparms.getNode();
948  if (!thissop) return getVex_geometrygenerator();
949  bool result;
950  OP_Utils::evalOpParm(result, thissop, "vex_geometrygenerator", cookparms.getCookTime(), 0);
951  return result;
952  }
953  bool getVdb_signedflood() const { return myVdb_signedflood; }
954  void setVdb_signedflood(bool val) { myVdb_signedflood = val; }
955  bool opVdb_signedflood(const SOP_NodeVerb::CookParms &cookparms) const
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return getVdb_signedflood();
959  bool result;
960  OP_Utils::evalOpParm(result, thissop, "vdb_signedflood", cookparms.getCookTime(), 0);
961  return result;
962  }
963  bool getAutobind() const { return myAutobind; }
964  void setAutobind(bool val) { myAutobind = val; }
965  bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
966  {
967  SOP_Node *thissop = cookparms.getNode();
968  if (!thissop) return getAutobind();
969  bool result;
970  OP_Utils::evalOpParm(result, thissop, "autobind", cookparms.getCookTime(), 0);
971  return result;
972  }
973  bool getBindeach() const { return myBindeach; }
974  void setBindeach(bool val) { myBindeach = val; }
975  bool opBindeach(const SOP_NodeVerb::CookParms &cookparms) const
976  {
977  SOP_Node *thissop = cookparms.getNode();
978  if (!thissop) return getBindeach();
979  bool result;
980  OP_Utils::evalOpParm(result, thissop, "bindeach", cookparms.getCookTime(), 0);
981  return result;
982  }
983  const UT_Array<Bindings> &getBindings() const { return myBindings; }
984 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
985  exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
986  {
987  SOP_Node *thissop = cookparms.getNode();
988  if (!thissop) return getBindings().entries();
989  exint result;
990  OP_Utils::evalOpParm(result, thissop, "bindings", cookparms.getCookTime(), 0);
991  return result;
992  }
994  { return opinstBindings_bindprimname(cookparms, &_idx); }
995  UT_StringHolder opinstBindings_bindprimname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
996  {
997  SOP_Node *thissop = cookparms.getNode();
998  if (!thissop) return (myBindings(_idx[0]).bindprimname);
999  int _parmidx[2-1];
1000  _parmidx[1-1] = _idx[1-1] + 1;
1001 
1003  OP_Utils::evalOpParmInst(result, thissop, "bindprimname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1004  return (result);
1005  }
1006  int64 opBindings_bindprim(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1007  { return opinstBindings_bindprim(cookparms, &_idx); }
1008  int64 opinstBindings_bindprim(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1009  {
1010  SOP_Node *thissop = cookparms.getNode();
1011  if (!thissop) return (myBindings(_idx[0]).bindprim);
1012  int _parmidx[2-1];
1013  _parmidx[1-1] = _idx[1-1] + 1;
1014 
1015  int64 result;
1016  OP_Utils::evalOpParmInst(result, thissop, "bindprim#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1017  return (result);
1018  }
1020  { return opinstBindings_bindname(cookparms, &_idx); }
1021  UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1022  {
1023  SOP_Node *thissop = cookparms.getNode();
1024  if (!thissop) return (myBindings(_idx[0]).bindname);
1025  int _parmidx[2-1];
1026  _parmidx[1-1] = _idx[1-1] + 1;
1027 
1029  OP_Utils::evalOpParmInst(result, thissop, "bindname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1030  return (result);
1031  }
1032 
1033  const UT_StringHolder & getVexPrecision() const { return myVexPrecision; }
1034  void setVexPrecision(const UT_StringHolder & val) { myVexPrecision = val; }
1036  {
1037  SOP_Node *thissop = cookparms.getNode();
1038  if (!thissop) return getVexPrecision();
1040  OP_Utils::evalOpParm(result, thissop, "vex_precision", cookparms.getCookTime(), 0);
1041  return result;
1042  }
1043 
1044 private:
1045  int64 myVexsrc;
1046  UT_StringHolder myShoppath;
1047  UT_StringHolder myScript;
1048  UT_StringHolder myVop_compiler;
1049  UT_StringHolder mySnippet;
1050  UT_StringHolder myExportList;
1051  bool myEnforcePrototypes;
1052  bool myStrictVariables;
1053  UT_StringHolder myVex_cwdpath;
1054  UT_StringHolder myVex_outputmask;
1055  bool myVex_multithread;
1056  bool myPruneVDBBlocks;
1057  bool myVex_geometrygenerator;
1058  bool myVdb_signedflood;
1059  bool myAutobind;
1060  bool myBindeach;
1061  UT_Array<Bindings> myBindings;
1062  UT_StringHolder myVexPrecision;
1063 
1064 };
type
Definition: core.h:556
static void saveData(std::ostream &os, UT_Matrix4D v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
UT_StringHolder opinstBindings_bindprimname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void saveData(std::ostream &os, UT_Vector4D v)
void setSnippet(const UT_StringHolder &val)
const UT_StringHolder & getSnippet() const
UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool getVex_multithread() const
static void saveData(std::ostream &os, int64 v)
void setBindeach(bool val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool opVex_geometrygenerator(const SOP_NodeVerb::CookParms &cookparms) const
void
Definition: png.h:1083
const UT_StringHolder & getShoppath() const
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
exint getNestNumParms(TempIndex idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void copyFrom(const OP_NodeParms *src) override
GLsizei const GLfloat * value
Definition: glcorearb.h:824
static void loadData(UT_IStream &is, int64 &v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool opVdb_signedflood(const SOP_NodeVerb::CookParms &cookparms) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
const char * getNestParmName(TempIndex fieldnum) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
bool getStrictVariables() const
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
void setVex_geometrygenerator(bool val)
int64 opinstBindings_bindprim(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opShoppath(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
An output stream object that owns its own string buffer storage.
void setVexPrecision(const UT_StringHolder &val)
**But if you need a result
Definition: thread.h:622
void setVex_cwdpath(const UT_StringHolder &val)
void setStrictVariables(bool val)
void setBindings(const UT_Array< Bindings > &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
UT_StringHolder opExportList(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void setVexsrc(Vexsrc val)
UT_StringHolder opVex_cwdpath(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_VolumeVopParms &src) const
static void saveData(std::ostream &os, fpreal64 v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setEnforcePrototypes(bool val)
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
const UT_StringHolder & getVexPrecision() const
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool opStrictVariables(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getScript() const
UT_StringHolder opVop_compiler(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
Vexsrc opVexsrc(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
bool operator!=(const Bindings &src) const
exint length() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool getPruneVDBBlocks() const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setAutobind(bool val)
SYS_FORCE_INLINE UT_StringHolder getToken(Vexsrc enum_value)
bool isParmColorRamp(exint idx) const override
static void loadData(UT_IStream &is, bool &v)
const UT_StringHolder & getVex_cwdpath() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool getEnforcePrototypes() const
UT_StringHolder opVexPrecision(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
long long int64
Definition: SYS_Types.h:116
static void loadData(UT_IStream &is, UT_Matrix3D &v)
bool opBindeach(const SOP_NodeVerb::CookParms &cookparms) const
void setExportList(const UT_StringHolder &val)
UT_StringHolder opBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool operator==(const Bindings &src) const
void setVop_compiler(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
Vexsrc getVexsrc() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
UT_StringHolder opSnippet(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
GT_API const UT_StringHolder version
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:655
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, UT_Matrix2D v)
UT_StringHolder opScript(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
const UT_StringHolder & getVex_outputmask() const
static void saveData(std::ostream &os, UT_Vector3D v)
const UT_StringHolder & getExportList() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
fpreal64 fpreal
Definition: SYS_Types.h:278
void setPruneVDBBlocks(bool val)
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
LeafData & operator=(const LeafData &)=delete
static void loadData(UT_IStream &is, fpreal64 &v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
static void loadData(UT_IStream &is, UT_Vector4D &v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
bool operator!=(const SOP_VolumeVopParms &src) const
SYS_FORCE_INLINE void append(char character)
void setVex_outputmask(const UT_StringHolder &val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
void setVdb_signedflood(bool val)
bool opPruneVDBBlocks(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector2D v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
static void saveData(std::ostream &os, UT_Matrix3D v)
const UT_Array< Bindings > & getBindings() const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void setVex_multithread(bool val)
GLboolean r
Definition: glcorearb.h:1222
bool getVdb_signedflood() const
UT_StringHolder opBindings_bindprimname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool getVex_geometrygenerator() const
UT_StringHolder createString(const UT_Array< Bindings > &list) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
UT_StringHolder opVex_outputmask(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getVop_compiler() const
static void loadData(UT_IStream &is, UT_StringHolder &v)
ParmType getNestParmType(TempIndex fieldnum) const override
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
bool opVex_multithread(const SOP_NodeVerb::CookParms &cookparms) const
void setScript(const UT_StringHolder &val)
void setShoppath(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
bool load(UT_IStream &is)
static void loadData(UT_IStream &is, UT_Vector3I &v)
int64 opBindings_bindprim(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void saveData(std::ostream &os, UT_StringHolder s)
exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override