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