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 <SOP/SOP_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  myVex_cwdpath = ""_UTsh;
118  myVex_outputmask = "*"_UTsh;
119  myVex_multithread = true;
120  myPruneVDBBlocks = true;
121  myVex_geometrygenerator = false;
122  myVdb_signedflood = true;
123  myAutobind = true;
124  myBindeach = false;
125  myBindings.setSize(0);
126  myVexPrecision = "auto"_UTsh;
127 
128  }
129 
130  explicit SOP_VolumeVopParms(const SOP_VolumeVopParms &) = default;
131  SOP_VolumeVopParms &operator=(const SOP_VolumeVopParms &) = default;
132  SOP_VolumeVopParms(SOP_VolumeVopParms &&) noexcept = default;
133  SOP_VolumeVopParms &operator=(SOP_VolumeVopParms &&) noexcept = default;
134 
135  ~SOP_VolumeVopParms() override {}
136 
137  bool operator==(const SOP_VolumeVopParms &src) const
138  {
139  if (myVexsrc != src.myVexsrc) return false;
140  if (myShoppath != src.myShoppath) return false;
141  if (myScript != src.myScript) return false;
142  if (myVop_compiler != src.myVop_compiler) return false;
143  if (mySnippet != src.mySnippet) return false;
144  if (myExportList != src.myExportList) return false;
145  if (myEnforcePrototypes != src.myEnforcePrototypes) return false;
146  if (myVex_cwdpath != src.myVex_cwdpath) return false;
147  if (myVex_outputmask != src.myVex_outputmask) return false;
148  if (myVex_multithread != src.myVex_multithread) return false;
149  if (myPruneVDBBlocks != src.myPruneVDBBlocks) return false;
150  if (myVex_geometrygenerator != src.myVex_geometrygenerator) return false;
151  if (myVdb_signedflood != src.myVdb_signedflood) return false;
152  if (myAutobind != src.myAutobind) return false;
153  if (myBindeach != src.myBindeach) return false;
154  if (myBindings != src.myBindings) return false;
155  if (myVexPrecision != src.myVexPrecision) return false;
156 
157  return true;
158  }
159  bool operator!=(const SOP_VolumeVopParms &src) const
160  {
161  return !operator==(src);
162  }
164 
165 
166 
167  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
168  {
169  myVexsrc = 0;
170  if (true)
171  graph->evalOpParm(myVexsrc, nodeidx, "vexsrc", time, 0);
172  myShoppath = ""_UTsh;
173  if (true && ( (true&&!(((int64(getVexsrc())!=1)))) ) )
174  graph->evalOpParm(myShoppath, nodeidx, "shoppath", time, 0);
175  myScript = "null"_UTsh;
176  if (true && ( (true&&!(((int64(getVexsrc())!=2)))) ) )
177  graph->evalOpParm(myScript, nodeidx, "script", time, 0);
178  myVop_compiler = "vcc -q $VOP_INCLUDEPATH -o $VOP_OBJECTFILE -e $VOP_ERRORFILE $VOP_SOURCEFILE"_UTsh;
179  if (true && ( (true&&!(((int64(getVexsrc())!=0)))) ) )
180  graph->evalOpParm(myVop_compiler, nodeidx, "vop_compiler", time, 0);
181  mySnippet = ""_UTsh;
182  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
183  graph->evalOpParm(mySnippet, nodeidx, "vexsnippet", time, 0);
184  myExportList = "*"_UTsh;
185  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
186  graph->evalOpParm(myExportList, nodeidx, "vex_exportlist", time, 0);
187  myEnforcePrototypes = false;
188  if (true && ( (true&&!(((int64(getVexsrc())!=3)))) ) )
189  graph->evalOpParm(myEnforcePrototypes, nodeidx, "vex_strict", time, 0);
190  myVex_cwdpath = ""_UTsh;
191  if (true)
192  graph->evalOpParm(myVex_cwdpath, nodeidx, "vex_cwdpath", time, 0);
193  myVex_outputmask = "*"_UTsh;
194  if (true)
195  graph->evalOpParm(myVex_outputmask, nodeidx, "vex_outputmask", time, 0);
196  myVex_multithread = true;
197  if (true)
198  graph->evalOpParm(myVex_multithread, nodeidx, "vex_multithread", time, 0);
199  myPruneVDBBlocks = true;
200  if (true)
201  graph->evalOpParm(myPruneVDBBlocks, nodeidx, "prunevdbblocks", time, 0);
202  myVex_geometrygenerator = false;
203  if (true)
204  graph->evalOpParm(myVex_geometrygenerator, nodeidx, "vex_geometrygenerator", time, 0);
205  myVdb_signedflood = true;
206  if (true)
207  graph->evalOpParm(myVdb_signedflood, nodeidx, "vdb_signedflood", time, 0);
208  myAutobind = true;
209  if (true)
210  graph->evalOpParm(myAutobind, nodeidx, "autobind", time, 0);
211  myBindeach = false;
212  if (true && ( (true&&!(((getAutobind()==1)))) ) )
213  graph->evalOpParm(myBindeach, nodeidx, "bindeach", time, 0);
214  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) )
215  {
216  int64 length = 0;
217  graph->evalOpParm(length, nodeidx, "bindings", time, 0);
218  if (length < 0) length = 0;
219  myBindings.setSize(length);
220  for (exint i = 0; i < length; i++)
221  {
222  int parmidx[1];
223  int offsets[1];
224  parmidx[0] = i+1;
225  offsets[0] = 1;
226  auto && _curentry = myBindings(i);
227  (void) _curentry;
228  _curentry.bindprimname = ""_UTsh;
229  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) && ( (true&&!(((getAutobind()==1))||((getBindeach()==1))||((getAutobind()==1))||((getBindeach()==1)))) ) )
230  graph->evalOpParmInst(_curentry.bindprimname, nodeidx, "bindprimname#", parmidx, offsets, time, 0, 2-1);
231  _curentry.bindprim = 0;
232  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) && ( (true&&!(((getAutobind()==1))||((getBindeach()==1))||((getAutobind()==1))||((getBindeach()==1)))) ) )
233  graph->evalOpParmInst(_curentry.bindprim, nodeidx, "bindprim#", parmidx, offsets, time, 0, 2-1);
234  _curentry.bindname = ""_UTsh;
235  if (true && ( (!(((getAutobind()==1))||((getBindeach()==1)))) ) && ( (true&&!(((getAutobind()==1))||((getBindeach()==1))||((getAutobind()==1))||((getBindeach()==1)))) ) )
236  graph->evalOpParmInst(_curentry.bindname, nodeidx, "bindname#", parmidx, offsets, time, 0, 2-1);
237 
238  }
239  }
240  else
241  myBindings.clear();
242  myVexPrecision = "auto"_UTsh;
243  if (true)
244  graph->evalOpParm(myVexPrecision, nodeidx, "vex_precision", time, 0);
245 
246  }
247 
248 
249  void loadFromOpSubclass(const LoadParms &loadparms) override
250  {
251  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
252  }
253 
254 
255  void copyFrom(const OP_NodeParms *src) override
256  {
257  *this = *((const SOP_VolumeVopParms *)src);
258  }
259 
260  template <typename T>
261  void
262  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
263  {
264  if (idx.size() < 1)
265  return;
266  UT_ASSERT(idx.size() == instance.size()+1);
267  if (idx.size() != instance.size()+1)
268  return;
269  switch (idx[0])
270  {
271  case 0:
272  coerceValue(value, myVexsrc);
273  break;
274  case 1:
275  coerceValue(value, myShoppath);
276  break;
277  case 2:
278  coerceValue(value, myScript);
279  break;
280  case 3:
281  coerceValue(value, myVop_compiler);
282  break;
283  case 4:
284  coerceValue(value, mySnippet);
285  break;
286  case 5:
287  coerceValue(value, myExportList);
288  break;
289  case 6:
290  coerceValue(value, myEnforcePrototypes);
291  break;
292  case 7:
293  coerceValue(value, myVex_cwdpath);
294  break;
295  case 8:
296  coerceValue(value, myVex_outputmask);
297  break;
298  case 9:
299  coerceValue(value, myVex_multithread);
300  break;
301  case 10:
302  coerceValue(value, myPruneVDBBlocks);
303  break;
304  case 11:
305  coerceValue(value, myVex_geometrygenerator);
306  break;
307  case 12:
308  coerceValue(value, myVdb_signedflood);
309  break;
310  case 13:
311  coerceValue(value, myAutobind);
312  break;
313  case 14:
314  coerceValue(value, myBindeach);
315  break;
316  case 15:
317  if (idx.size() == 1)
318  coerceValue(value, myBindings.entries());
319  else if (instance[0] < myBindings.entries())
320  {
321  auto && _data = myBindings(instance[0]);
322  switch (idx[1])
323  {
324  case 0:
325  coerceValue(value, _data.bindprimname);
326  break;
327  case 1:
328  coerceValue(value, _data.bindprim);
329  break;
330  case 2:
331  coerceValue(value, _data.bindname);
332  break;
333 
334  }
335  }
336  break;
337  case 16:
338  coerceValue(value, myVexPrecision);
339  break;
340 
341  }
342  }
343 
344  bool isParmColorRamp(exint idx) const override
345  {
346  switch (idx)
347  {
348 
349  }
350  return false;
351  }
352 
353  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
354  { doGetParmValue(idx, instance, value); }
355  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
356  { doGetParmValue(idx, instance, value); }
357  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
358  { doGetParmValue(idx, instance, value); }
359  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
360  { doGetParmValue(idx, instance, value); }
361  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
362  { doGetParmValue(idx, instance, value); }
363  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
364  { doGetParmValue(idx, instance, value); }
365  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
366  { doGetParmValue(idx, instance, value); }
367  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
368  { doGetParmValue(idx, instance, value); }
369  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
370  { doGetParmValue(idx, instance, value); }
371  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
372  { doGetParmValue(idx, instance, value); }
373  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
374  { doGetParmValue(idx, instance, value); }
375 
376  template <typename T>
377  void
378  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
379  {
380  if (idx.size() < 1)
381  return;
382  UT_ASSERT(idx.size() == instance.size()+1);
383  if (idx.size() != instance.size()+1)
384  return;
385  switch (idx[0])
386  {
387  case 0:
388  coerceValue(myVexsrc, clampMinValue(0, clampMaxValue(3, value ) ));
389  break;
390  case 1:
391  coerceValue(myShoppath, ( ( value ) ));
392  break;
393  case 2:
394  coerceValue(myScript, ( ( value ) ));
395  break;
396  case 3:
397  coerceValue(myVop_compiler, ( ( value ) ));
398  break;
399  case 4:
400  coerceValue(mySnippet, ( ( value ) ));
401  break;
402  case 5:
403  coerceValue(myExportList, ( ( value ) ));
404  break;
405  case 6:
406  coerceValue(myEnforcePrototypes, ( ( value ) ));
407  break;
408  case 7:
409  coerceValue(myVex_cwdpath, ( ( value ) ));
410  break;
411  case 8:
412  coerceValue(myVex_outputmask, ( ( value ) ));
413  break;
414  case 9:
415  coerceValue(myVex_multithread, ( ( value ) ));
416  break;
417  case 10:
418  coerceValue(myPruneVDBBlocks, ( ( value ) ));
419  break;
420  case 11:
421  coerceValue(myVex_geometrygenerator, ( ( value ) ));
422  break;
423  case 12:
424  coerceValue(myVdb_signedflood, ( ( value ) ));
425  break;
426  case 13:
427  coerceValue(myAutobind, ( ( value ) ));
428  break;
429  case 14:
430  coerceValue(myBindeach, ( ( value ) ));
431  break;
432  case 15:
433  if (idx.size() == 1)
434  {
435  exint newsize;
436  coerceValue(newsize, value);
437  if (newsize < 0) newsize = 0;
438  myBindings.setSize(newsize);
439  }
440  else
441  {
442  if (instance[0] < 0)
443  return;
444  myBindings.setSizeIfNeeded(instance[0]+1);
445  auto && _data = myBindings(instance[0]);
446  switch (idx[1])
447  {
448  case 0:
449  coerceValue(_data.bindprimname, value);
450  break;
451  case 1:
452  coerceValue(_data.bindprim, value);
453  break;
454  case 2:
455  coerceValue(_data.bindname, value);
456  break;
457 
458  }
459  }
460  break;
461  case 16:
462  coerceValue(myVexPrecision, ( ( value ) ));
463  break;
464 
465  }
466  }
467 
468  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
469  { doSetParmValue(idx, instance, value); }
470  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
471  { doSetParmValue(idx, instance, value); }
472  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
473  { doSetParmValue(idx, instance, value); }
474  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
475  { doSetParmValue(idx, instance, value); }
476  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
477  { doSetParmValue(idx, instance, value); }
478  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
479  { doSetParmValue(idx, instance, value); }
480  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
481  { doSetParmValue(idx, instance, value); }
482  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
483  { doSetParmValue(idx, instance, value); }
484  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
485  { doSetParmValue(idx, instance, value); }
486  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
487  { doSetParmValue(idx, instance, value); }
488  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
489  { doSetParmValue(idx, instance, value); }
490 
491  exint getNestNumParms(TempIndex idx) const override
492  {
493  if (idx.size() == 0)
494  return 17;
495  switch (idx[0])
496  {
497  case 15:
498  return 3;
499 
500  }
501  // Invalid
502  return 0;
503  }
504 
505  const char *getNestParmName(TempIndex fieldnum) const override
506  {
507  if (fieldnum.size() < 1)
508  return 0;
509  switch (fieldnum[0])
510  {
511  case 0:
512  return "vexsrc";
513  case 1:
514  return "shoppath";
515  case 2:
516  return "script";
517  case 3:
518  return "vop_compiler";
519  case 4:
520  return "vexsnippet";
521  case 5:
522  return "vex_exportlist";
523  case 6:
524  return "vex_strict";
525  case 7:
526  return "vex_cwdpath";
527  case 8:
528  return "vex_outputmask";
529  case 9:
530  return "vex_multithread";
531  case 10:
532  return "prunevdbblocks";
533  case 11:
534  return "vex_geometrygenerator";
535  case 12:
536  return "vdb_signedflood";
537  case 13:
538  return "autobind";
539  case 14:
540  return "bindeach";
541  case 15:
542  if (fieldnum.size() == 1)
543  return "bindings";
544  switch (fieldnum[1])
545  {
546  case 0:
547  return "bindprimname#";
548  case 1:
549  return "bindprim#";
550  case 2:
551  return "bindname#";
552 
553  }
554  return 0;
555  case 16:
556  return "vex_precision";
557 
558  }
559  return 0;
560  }
561 
562  ParmType getNestParmType(TempIndex fieldnum) const override
563  {
564  if (fieldnum.size() < 1)
565  return PARM_UNSUPPORTED;
566  switch (fieldnum[0])
567  {
568  case 0:
569  return PARM_INTEGER;
570  case 1:
571  return PARM_STRING;
572  case 2:
573  return PARM_STRING;
574  case 3:
575  return PARM_STRING;
576  case 4:
577  return PARM_STRING;
578  case 5:
579  return PARM_STRING;
580  case 6:
581  return PARM_INTEGER;
582  case 7:
583  return PARM_STRING;
584  case 8:
585  return PARM_STRING;
586  case 9:
587  return PARM_INTEGER;
588  case 10:
589  return PARM_INTEGER;
590  case 11:
591  return PARM_INTEGER;
592  case 12:
593  return PARM_INTEGER;
594  case 13:
595  return PARM_INTEGER;
596  case 14:
597  return PARM_INTEGER;
598  case 15:
599  if (fieldnum.size() == 1)
600  return PARM_MULTIPARM;
601  switch (fieldnum[1])
602  {
603  case 0:
604  return PARM_STRING;
605  case 1:
606  return PARM_INTEGER;
607  case 2:
608  return PARM_STRING;
609 
610  }
611  return PARM_UNSUPPORTED;
612  case 16:
613  return PARM_STRING;
614 
615  }
616  return PARM_UNSUPPORTED;
617  }
618 
619  // Boiler plate to load individual types.
620  static void loadData(UT_IStream &is, int64 &v)
621  { is.bread(&v, 1); }
622  static void loadData(UT_IStream &is, bool &v)
623  { int64 iv; is.bread(&iv, 1); v = iv; }
624  static void loadData(UT_IStream &is, fpreal64 &v)
625  { is.bread<fpreal64>(&v, 1); }
626  static void loadData(UT_IStream &is, UT_Vector2D &v)
627  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
628  static void loadData(UT_IStream &is, UT_Vector3D &v)
629  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
630  is.bread<fpreal64>(&v.z(), 1); }
631  static void loadData(UT_IStream &is, UT_Vector4D &v)
632  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
633  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
634  static void loadData(UT_IStream &is, UT_Matrix2D &v)
635  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
636  static void loadData(UT_IStream &is, UT_Matrix3D &v)
637  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
638  static void loadData(UT_IStream &is, UT_Matrix4D &v)
639  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
640  static void loadData(UT_IStream &is, UT_Vector2I &v)
641  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
642  static void loadData(UT_IStream &is, UT_Vector3I &v)
643  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
644  is.bread<int64>(&v.z(), 1); }
645  static void loadData(UT_IStream &is, UT_Vector4I &v)
646  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
647  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
649  { is.bread(v); }
651  { UT_StringHolder rampdata;
652  loadData(is, rampdata);
653  if (rampdata.isstring())
654  {
655  v.reset(new UT_Ramp());
656  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
657  v->load(istr);
658  }
659  else v.reset();
660  }
663  loadData(is, data);
664  if (data.isstring())
665  {
666  // Find the data type.
667  const char *colon = UT_StringWrap(data).findChar(':');
668  if (colon)
669  {
670  int typelen = colon - data.buffer();
672  type.strncpy(data.buffer(), typelen);
673  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
674 
675  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
676  }
677  }
678  else v.reset();
679  }
680 
681  static void saveData(std::ostream &os, int64 v)
682  { UTwrite(os, &v); }
683  static void saveData(std::ostream &os, bool v)
684  { int64 iv = v; UTwrite(os, &iv); }
685  static void saveData(std::ostream &os, fpreal64 v)
686  { UTwrite<fpreal64>(os, &v); }
687  static void saveData(std::ostream &os, UT_Vector2D v)
688  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
689  static void saveData(std::ostream &os, UT_Vector3D v)
690  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
691  UTwrite<fpreal64>(os, &v.z()); }
692  static void saveData(std::ostream &os, UT_Vector4D v)
693  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
694  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
695  static void saveData(std::ostream &os, UT_Matrix2D v)
697  static void saveData(std::ostream &os, UT_Matrix3D v)
699  static void saveData(std::ostream &os, UT_Matrix4D v)
701  static void saveData(std::ostream &os, UT_StringHolder s)
702  { UT_StringWrap(s).saveBinary(os); }
703  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
705  UT_OStringStream ostr;
706  if (s) s->save(ostr);
707  result = ostr.str();
708  saveData(os, result);
709  }
710  static void saveData(std::ostream &os, PRM_DataItemHandle s)
712  UT_OStringStream ostr;
713  if (s)
714  {
715  ostr << s->getDataTypeToken();
716  ostr << ":";
717  s->saveBinary(ostr);
718  }
719  result = ostr.str();
720  saveData(os, result);
721  }
722 
723 
724  void save(std::ostream &os) const
725  {
726  int32 v = version();
727  UTwrite(os, &v);
728  saveData(os, myVexsrc);
729  saveData(os, myShoppath);
730  saveData(os, myScript);
731  saveData(os, myVop_compiler);
732  saveData(os, mySnippet);
733  saveData(os, myExportList);
734  saveData(os, myEnforcePrototypes);
735  saveData(os, myVex_cwdpath);
736  saveData(os, myVex_outputmask);
737  saveData(os, myVex_multithread);
738  saveData(os, myPruneVDBBlocks);
739  saveData(os, myVex_geometrygenerator);
740  saveData(os, myVdb_signedflood);
741  saveData(os, myAutobind);
742  saveData(os, myBindeach);
743  {
744  int64 length = myBindings.entries();
745  UTwrite(os, &length);
746  for (exint i = 0; i < length; i++)
747  {
748  auto && _curentry = myBindings(i);
749  (void) _curentry;
750  saveData(os, _curentry.bindprimname);
751  saveData(os, _curentry.bindprim);
752  saveData(os, _curentry.bindname);
753 
754  }
755  }
756  saveData(os, myVexPrecision);
757 
758  }
759 
760  bool load(UT_IStream &is)
761  {
762  int32 v;
763  is.bread(&v, 1);
764  if (version() != v)
765  {
766  // Fail incompatible versions
767  return false;
768  }
769  loadData(is, myVexsrc);
770  loadData(is, myShoppath);
771  loadData(is, myScript);
772  loadData(is, myVop_compiler);
773  loadData(is, mySnippet);
774  loadData(is, myExportList);
775  loadData(is, myEnforcePrototypes);
776  loadData(is, myVex_cwdpath);
777  loadData(is, myVex_outputmask);
778  loadData(is, myVex_multithread);
779  loadData(is, myPruneVDBBlocks);
780  loadData(is, myVex_geometrygenerator);
781  loadData(is, myVdb_signedflood);
782  loadData(is, myAutobind);
783  loadData(is, myBindeach);
784  {
785  int64 length;
786  is.read(&length, 1);
787  myBindings.setSize(length);
788  for (exint i = 0; i < length; i++)
789  {
790  auto && _curentry = myBindings(i);
791  (void) _curentry;
792  loadData(is, _curentry.bindprimname);
793  loadData(is, _curentry.bindprim);
794  loadData(is, _curentry.bindname);
795 
796  }
797  }
798  loadData(is, myVexPrecision);
799 
800  return true;
801  }
802 
803  Vexsrc getVexsrc() const { return Vexsrc(myVexsrc); }
804  void setVexsrc(Vexsrc val) { myVexsrc = int64(val); }
805  Vexsrc opVexsrc(const SOP_NodeVerb::CookParms &cookparms) const
806  {
807  SOP_Node *thissop = cookparms.getNode();
808  if (!thissop) return getVexsrc();
809  int64 result;
810  OP_Utils::evalOpParm(result, thissop, "vexsrc", cookparms.getCookTime(), 0);
811  return Vexsrc(result);
812  }
813  const UT_StringHolder & getShoppath() const { return myShoppath; }
814  void setShoppath(const UT_StringHolder & val) { myShoppath = val; }
816  {
817  SOP_Node *thissop = cookparms.getNode();
818  if (!thissop) return getShoppath();
820  OP_Utils::evalOpParm(result, thissop, "shoppath", cookparms.getCookTime(), 0);
821  return result;
822  }
823  const UT_StringHolder & getScript() const { return myScript; }
824  void setScript(const UT_StringHolder & val) { myScript = val; }
826  {
827  SOP_Node *thissop = cookparms.getNode();
828  if (!thissop) return getScript();
830  OP_Utils::evalOpParm(result, thissop, "script", cookparms.getCookTime(), 0);
831  return result;
832  }
833  const UT_StringHolder & getVop_compiler() const { return myVop_compiler; }
834  void setVop_compiler(const UT_StringHolder & val) { myVop_compiler = val; }
836  {
837  SOP_Node *thissop = cookparms.getNode();
838  if (!thissop) return getVop_compiler();
840  OP_Utils::evalOpParm(result, thissop, "vop_compiler", cookparms.getCookTime(), 0);
841  return result;
842  }
843  const UT_StringHolder & getSnippet() const { return mySnippet; }
844  void setSnippet(const UT_StringHolder & val) { mySnippet = val; }
846  {
847  SOP_Node *thissop = cookparms.getNode();
848  if (!thissop) return getSnippet();
850  OP_Utils::evalOpParm(result, thissop, "vexsnippet", cookparms.getCookTime(), 0);
851  return result;
852  }
853  const UT_StringHolder & getExportList() const { return myExportList; }
854  void setExportList(const UT_StringHolder & val) { myExportList = val; }
856  {
857  SOP_Node *thissop = cookparms.getNode();
858  if (!thissop) return getExportList();
860  OP_Utils::evalOpParm(result, thissop, "vex_exportlist", cookparms.getCookTime(), 0);
861  return result;
862  }
863  bool getEnforcePrototypes() const { return myEnforcePrototypes; }
864  void setEnforcePrototypes(bool val) { myEnforcePrototypes = val; }
865  bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
866  {
867  SOP_Node *thissop = cookparms.getNode();
868  if (!thissop) return getEnforcePrototypes();
869  bool result;
870  OP_Utils::evalOpParm(result, thissop, "vex_strict", cookparms.getCookTime(), 0);
871  return result;
872  }
873  const UT_StringHolder & getVex_cwdpath() const { return myVex_cwdpath; }
874  void setVex_cwdpath(const UT_StringHolder & val) { myVex_cwdpath = val; }
876  {
877  SOP_Node *thissop = cookparms.getNode();
878  if (!thissop) return getVex_cwdpath();
880  OP_Utils::evalOpParm(result, thissop, "vex_cwdpath", cookparms.getCookTime(), 0);
881  return result;
882  }
883  const UT_StringHolder & getVex_outputmask() const { return myVex_outputmask; }
884  void setVex_outputmask(const UT_StringHolder & val) { myVex_outputmask = val; }
886  {
887  SOP_Node *thissop = cookparms.getNode();
888  if (!thissop) return getVex_outputmask();
890  OP_Utils::evalOpParm(result, thissop, "vex_outputmask", cookparms.getCookTime(), 0);
891  return result;
892  }
893  bool getVex_multithread() const { return myVex_multithread; }
894  void setVex_multithread(bool val) { myVex_multithread = val; }
895  bool opVex_multithread(const SOP_NodeVerb::CookParms &cookparms) const
896  {
897  SOP_Node *thissop = cookparms.getNode();
898  if (!thissop) return getVex_multithread();
899  bool result;
900  OP_Utils::evalOpParm(result, thissop, "vex_multithread", cookparms.getCookTime(), 0);
901  return result;
902  }
903  bool getPruneVDBBlocks() const { return myPruneVDBBlocks; }
904  void setPruneVDBBlocks(bool val) { myPruneVDBBlocks = val; }
905  bool opPruneVDBBlocks(const SOP_NodeVerb::CookParms &cookparms) const
906  {
907  SOP_Node *thissop = cookparms.getNode();
908  if (!thissop) return getPruneVDBBlocks();
909  bool result;
910  OP_Utils::evalOpParm(result, thissop, "prunevdbblocks", cookparms.getCookTime(), 0);
911  return result;
912  }
913  bool getVex_geometrygenerator() const { return myVex_geometrygenerator; }
914  void setVex_geometrygenerator(bool val) { myVex_geometrygenerator = val; }
916  {
917  SOP_Node *thissop = cookparms.getNode();
918  if (!thissop) return getVex_geometrygenerator();
919  bool result;
920  OP_Utils::evalOpParm(result, thissop, "vex_geometrygenerator", cookparms.getCookTime(), 0);
921  return result;
922  }
923  bool getVdb_signedflood() const { return myVdb_signedflood; }
924  void setVdb_signedflood(bool val) { myVdb_signedflood = val; }
925  bool opVdb_signedflood(const SOP_NodeVerb::CookParms &cookparms) const
926  {
927  SOP_Node *thissop = cookparms.getNode();
928  if (!thissop) return getVdb_signedflood();
929  bool result;
930  OP_Utils::evalOpParm(result, thissop, "vdb_signedflood", cookparms.getCookTime(), 0);
931  return result;
932  }
933  bool getAutobind() const { return myAutobind; }
934  void setAutobind(bool val) { myAutobind = val; }
935  bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return getAutobind();
939  bool result;
940  OP_Utils::evalOpParm(result, thissop, "autobind", cookparms.getCookTime(), 0);
941  return result;
942  }
943  bool getBindeach() const { return myBindeach; }
944  void setBindeach(bool val) { myBindeach = val; }
945  bool opBindeach(const SOP_NodeVerb::CookParms &cookparms) const
946  {
947  SOP_Node *thissop = cookparms.getNode();
948  if (!thissop) return getBindeach();
949  bool result;
950  OP_Utils::evalOpParm(result, thissop, "bindeach", cookparms.getCookTime(), 0);
951  return result;
952  }
953  const UT_Array<Bindings> &getBindings() const { return myBindings; }
954 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
955  exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return getBindings().entries();
959  exint result;
960  OP_Utils::evalOpParm(result, thissop, "bindings", cookparms.getCookTime(), 0);
961  return result;
962  }
964  { return opinstBindings_bindprimname(cookparms, &_idx); }
965  UT_StringHolder opinstBindings_bindprimname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
966  {
967  SOP_Node *thissop = cookparms.getNode();
968  if (!thissop) return (myBindings(_idx[0]).bindprimname);
969  int _parmidx[2-1];
970  _parmidx[1-1] = _idx[1-1] + 1;
971 
973  OP_Utils::evalOpParmInst(result, thissop, "bindprimname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
974  return (result);
975  }
976  int64 opBindings_bindprim(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
977  { return opinstBindings_bindprim(cookparms, &_idx); }
978  int64 opinstBindings_bindprim(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
979  {
980  SOP_Node *thissop = cookparms.getNode();
981  if (!thissop) return (myBindings(_idx[0]).bindprim);
982  int _parmidx[2-1];
983  _parmidx[1-1] = _idx[1-1] + 1;
984 
985  int64 result;
986  OP_Utils::evalOpParmInst(result, thissop, "bindprim#", _parmidx, cookparms.getCookTime(), 0, 2-1);
987  return (result);
988  }
990  { return opinstBindings_bindname(cookparms, &_idx); }
991  UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
992  {
993  SOP_Node *thissop = cookparms.getNode();
994  if (!thissop) return (myBindings(_idx[0]).bindname);
995  int _parmidx[2-1];
996  _parmidx[1-1] = _idx[1-1] + 1;
997 
999  OP_Utils::evalOpParmInst(result, thissop, "bindname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1000  return (result);
1001  }
1002 
1003  const UT_StringHolder & getVexPrecision() const { return myVexPrecision; }
1004  void setVexPrecision(const UT_StringHolder & val) { myVexPrecision = val; }
1006  {
1007  SOP_Node *thissop = cookparms.getNode();
1008  if (!thissop) return getVexPrecision();
1010  OP_Utils::evalOpParm(result, thissop, "vex_precision", cookparms.getCookTime(), 0);
1011  return result;
1012  }
1013 
1014 private:
1015  int64 myVexsrc;
1016  UT_StringHolder myShoppath;
1017  UT_StringHolder myScript;
1018  UT_StringHolder myVop_compiler;
1019  UT_StringHolder mySnippet;
1020  UT_StringHolder myExportList;
1021  bool myEnforcePrototypes;
1022  UT_StringHolder myVex_cwdpath;
1023  UT_StringHolder myVex_outputmask;
1024  bool myVex_multithread;
1025  bool myPruneVDBBlocks;
1026  bool myVex_geometrygenerator;
1027  bool myVdb_signedflood;
1028  bool myAutobind;
1029  bool myBindeach;
1030  UT_Array<Bindings> myBindings;
1031  UT_StringHolder myVexPrecision;
1032 
1033 };
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:62
exint getNestNumParms(TempIndex idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void copyFrom(const OP_NodeParms *src) override
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
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:613
void setVex_cwdpath(const UT_StringHolder &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
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
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:296
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:648
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:277
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:92
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
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:361
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:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
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)
type
Definition: core.h:1059
ParmType getNestParmType(TempIndex fieldnum) const override
bool opVex_multithread(const SOP_NodeVerb::CookParms &cookparms) const
void setScript(const UT_StringHolder &val)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
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