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