HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_OpenCL.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_OpenCLEnums
24 {
25  enum class RunOver
26  {
27  ATTRIBUTE = 0,
28  VOLUME,
29  WORKSETS,
30  VDB
31  };
32 
34  getToken(RunOver enum_value)
35  {
36  using namespace UT::Literal;
37  switch (enum_value) {
38  case RunOver::ATTRIBUTE: return "attribute"_sh;
39  case RunOver::VOLUME: return "volume"_sh;
40  case RunOver::WORKSETS: return "worksets"_sh;
41  case RunOver::VDB: return "vdb"_sh;
42  default: UT_ASSERT(false); return ""_sh;
43  }
44  }
45 
46  enum class Timemethod
47  {
48  INVERT = 0,
49  POW
50  };
51 
53  getToken(Timemethod enum_value)
54  {
55  using namespace UT::Literal;
56  switch (enum_value) {
57  case Timemethod::INVERT: return "invert"_sh;
58  case Timemethod::POW: return "pow"_sh;
59  default: UT_ASSERT(false); return ""_sh;
60  }
61  }
62 
63  enum class Precision
64  {
65  AUTO = 0,
66  _16,
67  _32,
68  _64
69  };
70 
72  getToken(Precision enum_value)
73  {
74  using namespace UT::Literal;
75  switch (enum_value) {
76  case Precision::AUTO: return "auto"_sh;
77  case Precision::_16: return "16"_sh;
78  case Precision::_32: return "32"_sh;
79  case Precision::_64: return "64"_sh;
80  default: UT_ASSERT(false); return ""_sh;
81  }
82  }
83 
84  enum class Bindings_type
85  {
86  INT = 0,
87  FLOAT,
88  FLOAT3,
89  FLOAT4,
90  RAMP,
91  ATTRIBUTE,
92  VOLUME,
93  VDB
94  };
95 
97  getToken(Bindings_type enum_value)
98  {
99  using namespace UT::Literal;
100  switch (enum_value) {
101  case Bindings_type::INT: return "int"_sh;
102  case Bindings_type::FLOAT: return "float"_sh;
103  case Bindings_type::FLOAT3: return "float3"_sh;
104  case Bindings_type::FLOAT4: return "float4"_sh;
105  case Bindings_type::RAMP: return "ramp"_sh;
106  case Bindings_type::ATTRIBUTE: return "attribute"_sh;
107  case Bindings_type::VOLUME: return "volume"_sh;
108  case Bindings_type::VDB: return "vdb"_sh;
109  default: UT_ASSERT(false); return ""_sh;
110  }
111  }
112 
113  enum class Bindings_vdbtype
114  {
115  ANY = 0,
116  FLOAT,
117  VECTOR,
118  INT,
119  FLOATN
120  };
121 
124  {
125  using namespace UT::Literal;
126  switch (enum_value) {
127  case Bindings_vdbtype::ANY: return "any"_sh;
128  case Bindings_vdbtype::FLOAT: return "float"_sh;
129  case Bindings_vdbtype::VECTOR: return "vector"_sh;
130  case Bindings_vdbtype::INT: return "int"_sh;
131  case Bindings_vdbtype::FLOATN: return "floatn"_sh;
132  default: UT_ASSERT(false); return ""_sh;
133  }
134  }
135 
137  {
138  DETAIL = 0,
139  PRIMITIVE,
140  POINT,
141  VERTEX
142  };
143 
146  {
147  using namespace UT::Literal;
148  switch (enum_value) {
149  case Bindings_attribclass::DETAIL: return "detail"_sh;
150  case Bindings_attribclass::PRIMITIVE: return "primitive"_sh;
151  case Bindings_attribclass::POINT: return "point"_sh;
152  case Bindings_attribclass::VERTEX: return "vertex"_sh;
153  default: UT_ASSERT(false); return ""_sh;
154  }
155  }
156 
158  {
159  FLOAT = 0,
160  INT,
161  FLOATARRAY,
162  INTARRAY
163  };
164 
167  {
168  using namespace UT::Literal;
169  switch (enum_value) {
170  case Bindings_attribtype::FLOAT: return "float"_sh;
171  case Bindings_attribtype::INT: return "int"_sh;
172  case Bindings_attribtype::FLOATARRAY: return "floatarray"_sh;
173  case Bindings_attribtype::INTARRAY: return "intarray"_sh;
174  default: UT_ASSERT(false); return ""_sh;
175  }
176  }
177 
179  {
180  NODE = 0,
181  _16,
182  _32,
183  _64
184  };
185 
188  {
189  using namespace UT::Literal;
190  switch (enum_value) {
191  case Bindings_precision::NODE: return "node"_sh;
192  case Bindings_precision::_16: return "16"_sh;
193  case Bindings_precision::_32: return "32"_sh;
194  case Bindings_precision::_64: return "64"_sh;
195  default: UT_ASSERT(false); return ""_sh;
196  }
197  }
198 
200  {
201  NONE = 0,
202  MULT,
203  INVERT,
204  POW
205  };
206 
209  {
210  using namespace UT::Literal;
211  switch (enum_value) {
212  case Bindings_timescale::NONE: return "none"_sh;
213  case Bindings_timescale::MULT: return "mult"_sh;
214  case Bindings_timescale::INVERT: return "invert"_sh;
215  case Bindings_timescale::POW: return "pow"_sh;
216  default: UT_ASSERT(false); return ""_sh;
217  }
218  }
219 
220 }
221 
222 
224 {
225 public:
226  static int version() { return 1; }
227  struct Bindings
228  {
260 
261 
263  {
264  bindings_name = ""_UTsh;
265  bindings_type = 0;
266  bindings_ramp = UT_SharedPtr<UT_Ramp>(0);
267  bindings_rampsize = 1024;
268  bindings_input = 0;
269  bindings_volume = ""_UTsh;
270  bindings_vdbtype = 0;
271  bindings_forcealign = true;
272  bindings_resolution = false;
273  bindings_voxelsize = false;
274  bindings_xformtoworld = false;
275  bindings_xformtovoxel = false;
276  bindings_attribute = ""_UTsh;
277  bindings_attribclass = 2;
278  bindings_attribtype = 0;
279  bindings_attribsize = 1;
280  bindings_precision = 2;
281  bindings_readable = true;
282  bindings_writeable = false;
283  bindings_optional = false;
284  bindings_defval = false;
285  bindings_intval = 0;
286  bindings_fval = 0;
287  bindings_v2val = UT_Vector2D(0,0);
288  bindings_v3val = UT_Vector3D(0,0,0);
289  bindings_v4val = UT_Vector4D(0,0,0,0);
290  bindings_attribbvh = false;
291  bindings_attribosd = false;
292  bindings_attribpointbvh = false;
293  bindings_attribpointbvhmask = ""_UTsh;
294  bindings_timescale = 0;
295 
296  }
297 
298  bool operator==(const Bindings &src) const
299  {
300  if (bindings_name != src.bindings_name) return false;
301  if (bindings_type != src.bindings_type) return false;
302  if (bindings_ramp != src.bindings_ramp) return false;
303  if (bindings_rampsize != src.bindings_rampsize) return false;
304  if (bindings_input != src.bindings_input) return false;
305  if (bindings_volume != src.bindings_volume) return false;
306  if (bindings_vdbtype != src.bindings_vdbtype) return false;
307  if (bindings_forcealign != src.bindings_forcealign) return false;
308  if (bindings_resolution != src.bindings_resolution) return false;
309  if (bindings_voxelsize != src.bindings_voxelsize) return false;
310  if (bindings_xformtoworld != src.bindings_xformtoworld) return false;
311  if (bindings_xformtovoxel != src.bindings_xformtovoxel) return false;
312  if (bindings_attribute != src.bindings_attribute) return false;
313  if (bindings_attribclass != src.bindings_attribclass) return false;
314  if (bindings_attribtype != src.bindings_attribtype) return false;
315  if (bindings_attribsize != src.bindings_attribsize) return false;
316  if (bindings_precision != src.bindings_precision) return false;
317  if (bindings_readable != src.bindings_readable) return false;
318  if (bindings_writeable != src.bindings_writeable) return false;
319  if (bindings_optional != src.bindings_optional) return false;
320  if (bindings_defval != src.bindings_defval) return false;
321  if (bindings_intval != src.bindings_intval) return false;
322  if (bindings_fval != src.bindings_fval) return false;
323  if (bindings_v2val != src.bindings_v2val) return false;
324  if (bindings_v3val != src.bindings_v3val) return false;
325  if (bindings_v4val != src.bindings_v4val) return false;
326  if (bindings_attribbvh != src.bindings_attribbvh) return false;
327  if (bindings_attribosd != src.bindings_attribosd) return false;
328  if (bindings_attribpointbvh != src.bindings_attribpointbvh) return false;
329  if (bindings_attribpointbvhmask != src.bindings_attribpointbvhmask) return false;
330  if (bindings_timescale != src.bindings_timescale) return false;
331 
332  return true;
333  }
334  bool operator!=(const Bindings &src) const
335  {
336  return !operator==(src);
337  }
338 
339  };
340 
342  {
344 
345  buf.strcat("[ ");
346  for (int i = 0; i < list.entries(); i++)
347  {
348  if (i)
349  buf.strcat(", ");
350  buf.strcat("( ");
351  buf.append("");
352  { UT_String tmp; tmp = UT_StringWrap(list(i).bindings_name).makeQuotedString('"'); buf.strcat(tmp); }
353  buf.append(", ");
354  buf.appendSprintf("%d", (int) list(i).bindings_type);
355  buf.append(", ");
356  if (list(i).bindings_ramp)
357  {
358  UT_OStringStream os;
359  UT_String tmp;
360  list(i).bindings_ramp->save(os);
361  tmp = UT_StringWrap(os.str().buffer()).makeQuotedString('"');
362  buf.strcat(tmp);
363  }
364  else buf.strcat("""");
365  buf.append(", ");
366  buf.appendSprintf("%d", (int) list(i).bindings_rampsize);
367  buf.append(", ");
368  buf.appendSprintf("%d", (int) list(i).bindings_input);
369  buf.append(", ");
370  { UT_String tmp; tmp = UT_StringWrap(list(i).bindings_volume).makeQuotedString('"'); buf.strcat(tmp); }
371  buf.append(", ");
372  buf.appendSprintf("%d", (int) list(i).bindings_vdbtype);
373  buf.append(", ");
374  buf.appendSprintf("%s", (list(i).bindings_forcealign) ? "true" : "false");
375  buf.append(", ");
376  buf.appendSprintf("%s", (list(i).bindings_resolution) ? "true" : "false");
377  buf.append(", ");
378  buf.appendSprintf("%s", (list(i).bindings_voxelsize) ? "true" : "false");
379  buf.append(", ");
380  buf.appendSprintf("%s", (list(i).bindings_xformtoworld) ? "true" : "false");
381  buf.append(", ");
382  buf.appendSprintf("%s", (list(i).bindings_xformtovoxel) ? "true" : "false");
383  buf.append(", ");
384  { UT_String tmp; tmp = UT_StringWrap(list(i).bindings_attribute).makeQuotedString('"'); buf.strcat(tmp); }
385  buf.append(", ");
386  buf.appendSprintf("%d", (int) list(i).bindings_attribclass);
387  buf.append(", ");
388  buf.appendSprintf("%d", (int) list(i).bindings_attribtype);
389  buf.append(", ");
390  buf.appendSprintf("%d", (int) list(i).bindings_attribsize);
391  buf.append(", ");
392  buf.appendSprintf("%d", (int) list(i).bindings_precision);
393  buf.append(", ");
394  buf.appendSprintf("%s", (list(i).bindings_readable) ? "true" : "false");
395  buf.append(", ");
396  buf.appendSprintf("%s", (list(i).bindings_writeable) ? "true" : "false");
397  buf.append(", ");
398  buf.appendSprintf("%s", (list(i).bindings_optional) ? "true" : "false");
399  buf.append(", ");
400  buf.appendSprintf("%s", (list(i).bindings_defval) ? "true" : "false");
401  buf.append(", ");
402  buf.appendSprintf("%d", (int) list(i).bindings_intval);
403  buf.append(", ");
404  buf.appendSprintf("%f", (list(i).bindings_fval));
405  buf.append(", ");
406  buf.appendSprintf("(%f, %f)", list(i).bindings_v2val.x(), list(i).bindings_v2val.y());
407  buf.append(", ");
408  buf.appendSprintf("(%f, %f, %f)", list(i).bindings_v3val.x(), list(i).bindings_v3val.y(), list(i).bindings_v3val.z());
409  buf.append(", ");
410  buf.appendSprintf("(%f, %f, %f, %f)", list(i).bindings_v4val.x(), list(i).bindings_v4val.y(), list(i).bindings_v4val.z(), list(i).bindings_v4val.w());
411  buf.append(", ");
412  buf.appendSprintf("%s", (list(i).bindings_attribbvh) ? "true" : "false");
413  buf.append(", ");
414  buf.appendSprintf("%s", (list(i).bindings_attribosd) ? "true" : "false");
415  buf.append(", ");
416  buf.appendSprintf("%s", (list(i).bindings_attribpointbvh) ? "true" : "false");
417  buf.append(", ");
418  { UT_String tmp; tmp = UT_StringWrap(list(i).bindings_attribpointbvhmask).makeQuotedString('"'); buf.strcat(tmp); }
419  buf.append(", ");
420  buf.appendSprintf("%d", (int) list(i).bindings_timescale);
421 
422  buf.strcat(" )");
423  }
424  buf.strcat(" ]");
425 
427  return result;
428  }
429 
431  {
432  myKernelName = "kernelName"_UTsh;
433  myUseCode = false;
434  myKernelFile = ""_UTsh;
435  myKernelCode = ""_UTsh;
436  myAtBinding = false;
437  myKernelOptions = ""_UTsh;
438  myKernelOptionAttrib = ""_UTsh;
439  myUseWriteBackKernel = false;
440  myWriteBackKernelName = "writeBack"_UTsh;
441  myRecompile = false;
442  myRunOver = 0;
443  myIterations = 1;
444  myIteration = false;
445  myWorksets_begin = ""_UTsh;
446  myWorksets_length = ""_UTsh;
447  mySingleworkgroup = false;
448  myFinish = true;
449  myTime = false;
450  myTimeInc = false;
451  myTimescale = 1;
452  myTimemethod = 0;
453  myXnoise = false;
454  myPrecision = 2;
455  myImportPrequel = true;
456  myBindings.setSize(1);
457  myGeneratedCode = ""_UTsh;
458 
459  }
460 
461  explicit SOP_OpenCLParms(const SOP_OpenCLParms &) = default;
462  SOP_OpenCLParms &operator=(const SOP_OpenCLParms &) = default;
463  SOP_OpenCLParms(SOP_OpenCLParms &&) noexcept = default;
464  SOP_OpenCLParms &operator=(SOP_OpenCLParms &&) noexcept = default;
465 
466  ~SOP_OpenCLParms() override {}
467 
468  bool operator==(const SOP_OpenCLParms &src) const
469  {
470  if (myKernelName != src.myKernelName) return false;
471  if (myUseCode != src.myUseCode) return false;
472  if (myKernelFile != src.myKernelFile) return false;
473  if (myKernelCode != src.myKernelCode) return false;
474  if (myAtBinding != src.myAtBinding) return false;
475  if (myKernelOptions != src.myKernelOptions) return false;
476  if (myKernelOptionAttrib != src.myKernelOptionAttrib) return false;
477  if (myUseWriteBackKernel != src.myUseWriteBackKernel) return false;
478  if (myWriteBackKernelName != src.myWriteBackKernelName) return false;
479  if (myRecompile != src.myRecompile) return false;
480  if (myRunOver != src.myRunOver) return false;
481  if (myIterations != src.myIterations) return false;
482  if (myIteration != src.myIteration) return false;
483  if (myWorksets_begin != src.myWorksets_begin) return false;
484  if (myWorksets_length != src.myWorksets_length) return false;
485  if (mySingleworkgroup != src.mySingleworkgroup) return false;
486  if (myFinish != src.myFinish) return false;
487  if (myTime != src.myTime) return false;
488  if (myTimeInc != src.myTimeInc) return false;
489  if (myTimescale != src.myTimescale) return false;
490  if (myTimemethod != src.myTimemethod) return false;
491  if (myXnoise != src.myXnoise) return false;
492  if (myPrecision != src.myPrecision) return false;
493  if (myImportPrequel != src.myImportPrequel) return false;
494  if (myBindings != src.myBindings) return false;
495  if (myGeneratedCode != src.myGeneratedCode) return false;
496 
497 
498  if (baseGetSignature() != src.baseGetSignature()) return false;
499 
500  return true;
501  }
502  bool operator!=(const SOP_OpenCLParms &src) const
503  {
504  return !operator==(src);
505  }
515 
516 
517 
518  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
519  {
520  myKernelName = "kernelName"_UTsh;
521  if (true)
522  graph->evalOpParm(myKernelName, nodeidx, "kernelname", time, graph->isDirect()?nullptr:depnode);
523  myUseCode = false;
524  if (true)
525  graph->evalOpParm(myUseCode, nodeidx, "usecode", time, graph->isDirect()?nullptr:depnode);
526  myKernelFile = ""_UTsh;
527  if (true && ( (true&&!(((getUseCode()!=0)))) ) )
528  graph->evalOpParm(myKernelFile, nodeidx, "kernelfile", time, graph->isDirect()?nullptr:depnode);
529  myKernelCode = ""_UTsh;
530  if (true && ( (true&&!(((getUseCode()==0)))) ) )
531  graph->evalOpParm(myKernelCode, nodeidx, "kernelcode", time, graph->isDirect()?nullptr:depnode);
532  myAtBinding = false;
533  if (true && ( (true&&!(((getUseCode()==0)))) ) )
534  graph->evalOpParm(myAtBinding, nodeidx, "atbinding", time, graph->isDirect()?nullptr:depnode);
535  myKernelOptions = ""_UTsh;
536  if (true)
537  graph->evalOpParm(myKernelOptions, nodeidx, "kerneloptions", time, graph->isDirect()?nullptr:depnode);
538  myKernelOptionAttrib = ""_UTsh;
539  if (true)
540  graph->evalOpParm(myKernelOptionAttrib, nodeidx, "kerneloptionattrib", time, graph->isDirect()?nullptr:depnode);
541  myUseWriteBackKernel = false;
542  if (true)
543  graph->evalOpParm(myUseWriteBackKernel, nodeidx, "usewritebackkernel", time, graph->isDirect()?nullptr:depnode);
544  myWriteBackKernelName = "writeBack"_UTsh;
545  if (true && ( (true&&!(((getUseWriteBackKernel()==0)))) ) )
546  graph->evalOpParm(myWriteBackKernelName, nodeidx, "writebackkernelname", time, graph->isDirect()?nullptr:depnode);
547  myRecompile = false;
548  if (true)
549  graph->evalOpParm(myRecompile, nodeidx, "recompile", time, graph->isDirect()?nullptr:depnode);
550  myRunOver = 0;
551  if (true)
552  graph->evalOpParm(myRunOver, nodeidx, "runover", time, graph->isDirect()?nullptr:depnode);
553  myIterations = 1;
554  if (true)
555  graph->evalOpParm(myIterations, nodeidx, "iterations", time, graph->isDirect()?nullptr:depnode);
556  myIteration = false;
557  if (true)
558  graph->evalOpParm(myIteration, nodeidx, "iteration", time, graph->isDirect()?nullptr:depnode);
559  myWorksets_begin = ""_UTsh;
560  if (true && ( (true&&!(((int64(getRunOver())!=2)))) ) )
561  graph->evalOpParm(myWorksets_begin, nodeidx, "worksets_begin", time, graph->isDirect()?nullptr:depnode);
562  myWorksets_length = ""_UTsh;
563  if (true && ( (true&&!(((int64(getRunOver())!=2)))) ) )
564  graph->evalOpParm(myWorksets_length, nodeidx, "worksets_length", time, graph->isDirect()?nullptr:depnode);
565  mySingleworkgroup = false;
566  if (true && ( (true&&!(((int64(getRunOver())!=2)))) ) )
567  graph->evalOpParm(mySingleworkgroup, nodeidx, "singleworkgroup", time, graph->isDirect()?nullptr:depnode);
568  myFinish = true;
569  if (true)
570  graph->evalOpParm(myFinish, nodeidx, "finish", time, graph->isDirect()?nullptr:depnode);
571  myTime = false;
572  if (true)
573  graph->evalOpParm(myTime, nodeidx, "time", time, graph->isDirect()?nullptr:depnode);
574  myTimeInc = false;
575  if (true)
576  graph->evalOpParm(myTimeInc, nodeidx, "timeinc", time, graph->isDirect()?nullptr:depnode);
577  myTimescale = 1;
578  if (true && ( (true&&!(((getTimeInc()==0)))) ) )
579  graph->evalOpParm(myTimescale, nodeidx, "timescale", time, graph->isDirect()?nullptr:depnode);
580  myTimemethod = 0;
581  if (true && ( (true&&!(((getTimeInc()==0)))) ) )
582  graph->evalOpParm(myTimemethod, nodeidx, "timemethod", time, graph->isDirect()?nullptr:depnode);
583  myXnoise = false;
584  if (true)
585  graph->evalOpParm(myXnoise, nodeidx, "xnoise", time, graph->isDirect()?nullptr:depnode);
586  myPrecision = 2;
587  if (true)
588  graph->evalOpParm(myPrecision, nodeidx, "precision", time, graph->isDirect()?nullptr:depnode);
589  myImportPrequel = true;
590  if (true)
591  graph->evalOpParm(myImportPrequel, nodeidx, "importprequel", time, graph->isDirect()?nullptr:depnode);
592  if (true)
593  {
594  int64 length = 0;
595  graph->evalOpParm(length, nodeidx, "bindings", time, graph->isDirect()?nullptr:depnode);
596  if (length < 0) length = 0;
597  myBindings.setSize(length);
598  for (exint i = 0; i < length; i++)
599  {
600  int parmidx[1];
601  int offsets[1];
602  parmidx[0] = i+1;
603  offsets[0] = 1;
604  auto && _curentry = myBindings(i);
605  (void) _curentry;
606  _curentry.bindings_name = ""_UTsh;
607  if (true)
608  graph->evalOpParmInst(_curentry.bindings_name, nodeidx, "bindings#_name", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
609  _curentry.bindings_type = 0;
610  if (true)
611  graph->evalOpParmInst(_curentry.bindings_type, nodeidx, "bindings#_type", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
612  _curentry.bindings_ramp = UT_SharedPtr<UT_Ramp>(0);
613  if (true && ( (true&&!(((_curentry.bindings_type!=4)))) ) )
614  graph->evalOpParmInst(_curentry.bindings_ramp, nodeidx, "bindings#_ramp", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
615  _curentry.bindings_rampsize = 1024;
616  if (true && ( (true&&!(((_curentry.bindings_type!=4)))) ) )
617  graph->evalOpParmInst(_curentry.bindings_rampsize, nodeidx, "bindings#_rampsize", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
618  _curentry.bindings_input = 0;
619  if (true && ( (true&&!(((_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7)&&(_curentry.bindings_type!=5)))) ) )
620  graph->evalOpParmInst(_curentry.bindings_input, nodeidx, "bindings#_input", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
621  _curentry.bindings_volume = ""_UTsh;
622  if (true && ( (true&&!(((_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7)))) ) )
623  graph->evalOpParmInst(_curentry.bindings_volume, nodeidx, "bindings#_volume", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
624  _curentry.bindings_vdbtype = 0;
625  if (true && ( (true&&!(((_curentry.bindings_type!=7)))) ) )
626  graph->evalOpParmInst(_curentry.bindings_vdbtype, nodeidx, "bindings#_vdbtype", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
627  _curentry.bindings_forcealign = true;
628  if (true && ( (true&&!(((_curentry.bindings_type!=6)))) ) )
629  graph->evalOpParmInst(_curentry.bindings_forcealign, nodeidx, "bindings#_forcealign", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
630  _curentry.bindings_resolution = false;
631  if (true && ( (true&&!(((_curentry.bindings_type!=6))||((_curentry.bindings_forcealign==1)))) ) )
632  graph->evalOpParmInst(_curentry.bindings_resolution, nodeidx, "bindings#_resolution", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
633  _curentry.bindings_voxelsize = false;
634  if (true && ( (true&&!(((_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7))||((_curentry.bindings_forcealign==1)&&(_curentry.bindings_type==6)))) ) )
635  graph->evalOpParmInst(_curentry.bindings_voxelsize, nodeidx, "bindings#_voxelsize", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
636  _curentry.bindings_xformtoworld = false;
637  if (true && ( (true&&!(((_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7))||((_curentry.bindings_forcealign==1)&&(_curentry.bindings_type==6)))) ) )
638  graph->evalOpParmInst(_curentry.bindings_xformtoworld, nodeidx, "bindings#_xformtoworld", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
639  _curentry.bindings_xformtovoxel = false;
640  if (true && ( (true&&!(((_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7))||((_curentry.bindings_forcealign==1)&&(_curentry.bindings_type==6)))) ) )
641  graph->evalOpParmInst(_curentry.bindings_xformtovoxel, nodeidx, "bindings#_xformtovoxel", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
642  _curentry.bindings_attribute = ""_UTsh;
643  if (true && ( (true&&!(((_curentry.bindings_type!=5)))) ) )
644  graph->evalOpParmInst(_curentry.bindings_attribute, nodeidx, "bindings#_attribute", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
645  _curentry.bindings_attribclass = 2;
646  if (true && ( (true&&!(((_curentry.bindings_type!=5)))) ) )
647  graph->evalOpParmInst(_curentry.bindings_attribclass, nodeidx, "bindings#_attribclass", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
648  _curentry.bindings_attribtype = 0;
649  if (true && ( (true&&!(((_curentry.bindings_type!=5)))) ) )
650  graph->evalOpParmInst(_curentry.bindings_attribtype, nodeidx, "bindings#_attribtype", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
651  _curentry.bindings_attribsize = 1;
652  if (true && ( (true&&!(((_curentry.bindings_type!=5)))) ) )
653  graph->evalOpParmInst(_curentry.bindings_attribsize, nodeidx, "bindings#_attribsize", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
654  _curentry.bindings_precision = 2;
655  if (true)
656  graph->evalOpParmInst(_curentry.bindings_precision, nodeidx, "bindings#_precision", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
657  _curentry.bindings_readable = true;
658  if (true && ( (true&&!(((_curentry.bindings_type!=5)&&(_curentry.bindings_type!=6)))) ) )
659  graph->evalOpParmInst(_curentry.bindings_readable, nodeidx, "bindings#_readable", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
660  _curentry.bindings_writeable = false;
661  if (true && ( (true&&!(((_curentry.bindings_type!=5)&&(_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7)))) ) )
662  graph->evalOpParmInst(_curentry.bindings_writeable, nodeidx, "bindings#_writeable", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
663  _curentry.bindings_optional = false;
664  if (true && ( (true&&!(((_curentry.bindings_type!=5)&&(_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7)))) ) )
665  graph->evalOpParmInst(_curentry.bindings_optional, nodeidx, "bindings#_optional", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
666  _curentry.bindings_defval = false;
667  if (true && ( (true&&!(((_curentry.bindings_type!=5)&&(_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7))||((_curentry.bindings_optional==0))||((_curentry.bindings_attribtype!=1)&&(_curentry.bindings_attribtype!=0)))) ) )
668  graph->evalOpParmInst(_curentry.bindings_defval, nodeidx, "bindings#_defval", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
669  _curentry.bindings_intval = 0;
670  if (true && ( (true&&!(((_curentry.bindings_type!=0)&&(_curentry.bindings_type!=5))||((_curentry.bindings_type==5)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_defval==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype!=1)))) ) )
671  graph->evalOpParmInst(_curentry.bindings_intval, nodeidx, "bindings#_intval", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
672  _curentry.bindings_fval = 0;
673  if (true && ( (true&&!(((_curentry.bindings_type!=1)&&(_curentry.bindings_type!=5)&&(_curentry.bindings_type!=6)&&(_curentry.bindings_type!=7))||((_curentry.bindings_type==5)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_defval==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype!=0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype==0)&&(_curentry.bindings_attribsize==2))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype==0)&&(_curentry.bindings_attribsize==3))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype==0)&&(_curentry.bindings_attribsize==4))||((_curentry.bindings_type==6)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==6)&&(_curentry.bindings_defval==0))||((_curentry.bindings_type==7)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==7)&&(_curentry.bindings_defval==0)))) ) )
674  graph->evalOpParmInst(_curentry.bindings_fval, nodeidx, "bindings#_fval", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
675  _curentry.bindings_v2val = UT_Vector2D(0,0);
676  if (true && ( (true&&!(((_curentry.bindings_type!=5))||((_curentry.bindings_type==5)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_defval==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype!=0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype==0)&&(_curentry.bindings_attribsize!=2)))) ) )
677  graph->evalOpParmInst(_curentry.bindings_v2val, nodeidx, "bindings#_v2val", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
678  _curentry.bindings_v3val = UT_Vector3D(0,0,0);
679  if (true && ( (true&&!(((_curentry.bindings_type!=2)&&(_curentry.bindings_type!=5))||((_curentry.bindings_type==5)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_defval==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype!=0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype==0)&&(_curentry.bindings_attribsize!=3)))) ) )
680  graph->evalOpParmInst(_curentry.bindings_v3val, nodeidx, "bindings#_v3val", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
681  _curentry.bindings_v4val = UT_Vector4D(0,0,0,0);
682  if (true && ( (true&&!(((_curentry.bindings_type!=3)&&(_curentry.bindings_type!=5))||((_curentry.bindings_type==5)&&(_curentry.bindings_optional==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_defval==0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype!=0))||((_curentry.bindings_type==5)&&(_curentry.bindings_attribtype==0)&&(_curentry.bindings_attribsize!=4)))) ) )
683  graph->evalOpParmInst(_curentry.bindings_v4val, nodeidx, "bindings#_v4val", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
684  _curentry.bindings_attribbvh = false;
685  if (true && ( (true&&!(((_curentry.bindings_type!=5))||((_curentry.bindings_attribclass!=2)&&(_curentry.bindings_attribclass!=3))||((_curentry.bindings_attribtype!=0))||((_curentry.bindings_attribsize!=3)))) ) )
686  graph->evalOpParmInst(_curentry.bindings_attribbvh, nodeidx, "bindings#_attribbvh", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
687  _curentry.bindings_attribosd = false;
688  if (true && ( (true&&!(((_curentry.bindings_type!=5))||((_curentry.bindings_attribclass!=2))||((_curentry.bindings_attribtype!=0)))) ) )
689  graph->evalOpParmInst(_curentry.bindings_attribosd, nodeidx, "bindings#_attribosd", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
690  _curentry.bindings_attribpointbvh = false;
691  if (true && ( (true&&!(((_curentry.bindings_type!=5))||((_curentry.bindings_attribclass!=2))||((_curentry.bindings_attribtype!=0))||((_curentry.bindings_attribsize!=3)))) ) )
692  graph->evalOpParmInst(_curentry.bindings_attribpointbvh, nodeidx, "bindings#_attribpointbvh", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
693  _curentry.bindings_attribpointbvhmask = ""_UTsh;
694  if (true && ( (true&&!(((_curentry.bindings_type!=5))||((_curentry.bindings_attribpointbvh==0))||((_curentry.bindings_attribclass!=2))||((_curentry.bindings_attribtype!=0))||((_curentry.bindings_attribsize!=3)))) ) )
695  graph->evalOpParmInst(_curentry.bindings_attribpointbvhmask, nodeidx, "bindings#_attribpointbvhmask", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
696  _curentry.bindings_timescale = 0;
697  if (true && ( (true&&!(((_curentry.bindings_type!=1)))) ) )
698  graph->evalOpParmInst(_curentry.bindings_timescale, nodeidx, "bindings#_timescale", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
699 
700  }
701  }
702  else
703  myBindings.clear();
704  myGeneratedCode = ""_UTsh;
705  if (true && ( (true&&!((((graph->getInput(nodeidx,0)>=0)==0))||(((graph->getInput(nodeidx,0)>=0)==1)))) ) )
706  graph->evalOpParm(myGeneratedCode, nodeidx, "generatedcode", time, graph->isDirect()?nullptr:depnode);
707 
708  }
709 
710 
711  void loadFromOpSubclass(const LoadParms &loadparms) override
712  {
713  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
714  }
715 
716 
717  void copyFrom(const OP_NodeParms *src) override
718  {
719  *this = *((const SOP_OpenCLParms *)src);
720  }
721 
722  template <typename T>
723  void
724  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
725  {
726  if (idx.size() < 1)
727  return;
728  UT_ASSERT(idx.size() == instance.size()+1);
729  if (idx.size() != instance.size()+1)
730  return;
731  switch (idx[0])
732  {
733  case 0:
734  coerceValue(value, myKernelName);
735  break;
736  case 1:
737  coerceValue(value, myUseCode);
738  break;
739  case 2:
740  coerceValue(value, myKernelFile);
741  break;
742  case 3:
743  coerceValue(value, myKernelCode);
744  break;
745  case 4:
746  coerceValue(value, myAtBinding);
747  break;
748  case 5:
749  coerceValue(value, myKernelOptions);
750  break;
751  case 6:
752  coerceValue(value, myKernelOptionAttrib);
753  break;
754  case 7:
755  coerceValue(value, myUseWriteBackKernel);
756  break;
757  case 8:
758  coerceValue(value, myWriteBackKernelName);
759  break;
760  case 9:
761  coerceValue(value, myRecompile);
762  break;
763  case 10:
764  coerceValue(value, myRunOver);
765  break;
766  case 11:
767  coerceValue(value, myIterations);
768  break;
769  case 12:
770  coerceValue(value, myIteration);
771  break;
772  case 13:
773  coerceValue(value, myWorksets_begin);
774  break;
775  case 14:
776  coerceValue(value, myWorksets_length);
777  break;
778  case 15:
779  coerceValue(value, mySingleworkgroup);
780  break;
781  case 16:
782  coerceValue(value, myFinish);
783  break;
784  case 17:
785  coerceValue(value, myTime);
786  break;
787  case 18:
788  coerceValue(value, myTimeInc);
789  break;
790  case 19:
791  coerceValue(value, myTimescale);
792  break;
793  case 20:
794  coerceValue(value, myTimemethod);
795  break;
796  case 21:
797  coerceValue(value, myXnoise);
798  break;
799  case 22:
800  coerceValue(value, myPrecision);
801  break;
802  case 23:
803  coerceValue(value, myImportPrequel);
804  break;
805  case 24:
806  if (idx.size() == 1)
807  coerceValue(value, myBindings.entries());
808  else if (instance[0] < myBindings.entries())
809  {
810  auto && _data = myBindings(instance[0]);
811  switch (idx[1])
812  {
813  case 0:
814  coerceValue(value, _data.bindings_name);
815  break;
816  case 1:
817  coerceValue(value, _data.bindings_type);
818  break;
819  case 2:
820  coerceValue(value, _data.bindings_ramp);
821  break;
822  case 3:
823  coerceValue(value, _data.bindings_rampsize);
824  break;
825  case 4:
826  coerceValue(value, _data.bindings_input);
827  break;
828  case 5:
829  coerceValue(value, _data.bindings_volume);
830  break;
831  case 6:
832  coerceValue(value, _data.bindings_vdbtype);
833  break;
834  case 7:
835  coerceValue(value, _data.bindings_forcealign);
836  break;
837  case 8:
838  coerceValue(value, _data.bindings_resolution);
839  break;
840  case 9:
841  coerceValue(value, _data.bindings_voxelsize);
842  break;
843  case 10:
844  coerceValue(value, _data.bindings_xformtoworld);
845  break;
846  case 11:
847  coerceValue(value, _data.bindings_xformtovoxel);
848  break;
849  case 12:
850  coerceValue(value, _data.bindings_attribute);
851  break;
852  case 13:
853  coerceValue(value, _data.bindings_attribclass);
854  break;
855  case 14:
856  coerceValue(value, _data.bindings_attribtype);
857  break;
858  case 15:
859  coerceValue(value, _data.bindings_attribsize);
860  break;
861  case 16:
862  coerceValue(value, _data.bindings_precision);
863  break;
864  case 17:
865  coerceValue(value, _data.bindings_readable);
866  break;
867  case 18:
868  coerceValue(value, _data.bindings_writeable);
869  break;
870  case 19:
871  coerceValue(value, _data.bindings_optional);
872  break;
873  case 20:
874  coerceValue(value, _data.bindings_defval);
875  break;
876  case 21:
877  coerceValue(value, _data.bindings_intval);
878  break;
879  case 22:
880  coerceValue(value, _data.bindings_fval);
881  break;
882  case 23:
883  coerceValue(value, _data.bindings_v2val);
884  break;
885  case 24:
886  coerceValue(value, _data.bindings_v3val);
887  break;
888  case 25:
889  coerceValue(value, _data.bindings_v4val);
890  break;
891  case 26:
892  coerceValue(value, _data.bindings_attribbvh);
893  break;
894  case 27:
895  coerceValue(value, _data.bindings_attribosd);
896  break;
897  case 28:
898  coerceValue(value, _data.bindings_attribpointbvh);
899  break;
900  case 29:
901  coerceValue(value, _data.bindings_attribpointbvhmask);
902  break;
903  case 30:
904  coerceValue(value, _data.bindings_timescale);
905  break;
906 
907  }
908  }
909  break;
910  case 25:
911  coerceValue(value, myGeneratedCode);
912  break;
913 
914  }
915  }
916 
917  bool isParmColorRamp(exint idx) const override
918  {
919  switch (idx)
920  {
921 
922  }
923  return false;
924  }
925 
926  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
927  { doGetParmValue(idx, instance, value); }
928  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
929  { doGetParmValue(idx, instance, value); }
930  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
931  { doGetParmValue(idx, instance, value); }
932  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
933  { doGetParmValue(idx, instance, value); }
934  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
935  { doGetParmValue(idx, instance, value); }
936  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
937  { doGetParmValue(idx, instance, value); }
938  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
939  { doGetParmValue(idx, instance, value); }
940  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
941  { doGetParmValue(idx, instance, value); }
942  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
943  { doGetParmValue(idx, instance, value); }
944  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
945  { doGetParmValue(idx, instance, value); }
946  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
947  { doGetParmValue(idx, instance, value); }
948 
949  template <typename T>
950  void
951  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
952  {
953  if (idx.size() < 1)
954  return;
955  UT_ASSERT(idx.size() == instance.size()+1);
956  if (idx.size() != instance.size()+1)
957  return;
958  switch (idx[0])
959  {
960  case 0:
961  coerceValue(myKernelName, ( ( value ) ));
962  break;
963  case 1:
964  coerceValue(myUseCode, ( ( value ) ));
965  break;
966  case 2:
967  coerceValue(myKernelFile, ( ( value ) ));
968  break;
969  case 3:
970  coerceValue(myKernelCode, ( ( value ) ));
971  break;
972  case 4:
973  coerceValue(myAtBinding, ( ( value ) ));
974  break;
975  case 5:
976  coerceValue(myKernelOptions, ( ( value ) ));
977  break;
978  case 6:
979  coerceValue(myKernelOptionAttrib, ( ( value ) ));
980  break;
981  case 7:
982  coerceValue(myUseWriteBackKernel, ( ( value ) ));
983  break;
984  case 8:
985  coerceValue(myWriteBackKernelName, ( ( value ) ));
986  break;
987  case 9:
988  coerceValue(myRecompile, ( ( value ) ));
989  break;
990  case 10:
991  coerceValue(myRunOver, clampMinValue(0, clampMaxValue(3, value ) ));
992  break;
993  case 11:
994  coerceValue(myIterations, ( ( value ) ));
995  break;
996  case 12:
997  coerceValue(myIteration, ( ( value ) ));
998  break;
999  case 13:
1000  coerceValue(myWorksets_begin, ( ( value ) ));
1001  break;
1002  case 14:
1003  coerceValue(myWorksets_length, ( ( value ) ));
1004  break;
1005  case 15:
1006  coerceValue(mySingleworkgroup, ( ( value ) ));
1007  break;
1008  case 16:
1009  coerceValue(myFinish, ( ( value ) ));
1010  break;
1011  case 17:
1012  coerceValue(myTime, ( ( value ) ));
1013  break;
1014  case 18:
1015  coerceValue(myTimeInc, ( ( value ) ));
1016  break;
1017  case 19:
1018  coerceValue(myTimescale, ( ( value ) ));
1019  break;
1020  case 20:
1021  coerceValue(myTimemethod, clampMinValue(0, clampMaxValue(1, value ) ));
1022  break;
1023  case 21:
1024  coerceValue(myXnoise, ( ( value ) ));
1025  break;
1026  case 22:
1027  coerceValue(myPrecision, clampMinValue(0, clampMaxValue(3, value ) ));
1028  break;
1029  case 23:
1030  coerceValue(myImportPrequel, ( ( value ) ));
1031  break;
1032  case 24:
1033  if (idx.size() == 1)
1034  {
1035  exint newsize;
1036  coerceValue(newsize, value);
1037  if (newsize < 0) newsize = 0;
1038  myBindings.setSize(newsize);
1039  }
1040  else
1041  {
1042  if (instance[0] < 0)
1043  return;
1044  myBindings.setSizeIfNeeded(instance[0]+1);
1045  auto && _data = myBindings(instance[0]);
1046  switch (idx[1])
1047  {
1048  case 0:
1049  coerceValue(_data.bindings_name, value);
1050  break;
1051  case 1:
1052  coerceValue(_data.bindings_type, value);
1053  break;
1054  case 2:
1055  coerceValue(_data.bindings_ramp, value);
1056  break;
1057  case 3:
1058  coerceValue(_data.bindings_rampsize, value);
1059  break;
1060  case 4:
1061  coerceValue(_data.bindings_input, value);
1062  break;
1063  case 5:
1064  coerceValue(_data.bindings_volume, value);
1065  break;
1066  case 6:
1067  coerceValue(_data.bindings_vdbtype, value);
1068  break;
1069  case 7:
1070  coerceValue(_data.bindings_forcealign, value);
1071  break;
1072  case 8:
1073  coerceValue(_data.bindings_resolution, value);
1074  break;
1075  case 9:
1076  coerceValue(_data.bindings_voxelsize, value);
1077  break;
1078  case 10:
1079  coerceValue(_data.bindings_xformtoworld, value);
1080  break;
1081  case 11:
1082  coerceValue(_data.bindings_xformtovoxel, value);
1083  break;
1084  case 12:
1085  coerceValue(_data.bindings_attribute, value);
1086  break;
1087  case 13:
1088  coerceValue(_data.bindings_attribclass, value);
1089  break;
1090  case 14:
1091  coerceValue(_data.bindings_attribtype, value);
1092  break;
1093  case 15:
1094  coerceValue(_data.bindings_attribsize, value);
1095  break;
1096  case 16:
1097  coerceValue(_data.bindings_precision, value);
1098  break;
1099  case 17:
1100  coerceValue(_data.bindings_readable, value);
1101  break;
1102  case 18:
1103  coerceValue(_data.bindings_writeable, value);
1104  break;
1105  case 19:
1106  coerceValue(_data.bindings_optional, value);
1107  break;
1108  case 20:
1109  coerceValue(_data.bindings_defval, value);
1110  break;
1111  case 21:
1112  coerceValue(_data.bindings_intval, value);
1113  break;
1114  case 22:
1115  coerceValue(_data.bindings_fval, value);
1116  break;
1117  case 23:
1118  coerceValue(_data.bindings_v2val, value);
1119  break;
1120  case 24:
1121  coerceValue(_data.bindings_v3val, value);
1122  break;
1123  case 25:
1124  coerceValue(_data.bindings_v4val, value);
1125  break;
1126  case 26:
1127  coerceValue(_data.bindings_attribbvh, value);
1128  break;
1129  case 27:
1130  coerceValue(_data.bindings_attribosd, value);
1131  break;
1132  case 28:
1133  coerceValue(_data.bindings_attribpointbvh, value);
1134  break;
1135  case 29:
1136  coerceValue(_data.bindings_attribpointbvhmask, value);
1137  break;
1138  case 30:
1139  coerceValue(_data.bindings_timescale, value);
1140  break;
1141 
1142  }
1143  }
1144  break;
1145  case 25:
1146  coerceValue(myGeneratedCode, ( ( value ) ));
1147  break;
1148 
1149  }
1150  }
1151 
1152  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
1153  { doSetParmValue(idx, instance, value); }
1154  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
1155  { doSetParmValue(idx, instance, value); }
1156  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
1157  { doSetParmValue(idx, instance, value); }
1158  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
1159  { doSetParmValue(idx, instance, value); }
1160  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
1161  { doSetParmValue(idx, instance, value); }
1162  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
1163  { doSetParmValue(idx, instance, value); }
1164  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
1165  { doSetParmValue(idx, instance, value); }
1166  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
1167  { doSetParmValue(idx, instance, value); }
1168  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
1169  { doSetParmValue(idx, instance, value); }
1170  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
1171  { doSetParmValue(idx, instance, value); }
1172  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
1173  { doSetParmValue(idx, instance, value); }
1174 
1175  exint getNestNumParms(TempIndex idx) const override
1176  {
1177  if (idx.size() == 0)
1178  return 26;
1179  switch (idx[0])
1180  {
1181  case 24:
1182  return 31;
1183 
1184  }
1185  // Invalid
1186  return 0;
1187  }
1188 
1189  const char *getNestParmName(TempIndex fieldnum) const override
1190  {
1191  if (fieldnum.size() < 1)
1192  return 0;
1193  switch (fieldnum[0])
1194  {
1195  case 0:
1196  return "kernelname";
1197  case 1:
1198  return "usecode";
1199  case 2:
1200  return "kernelfile";
1201  case 3:
1202  return "kernelcode";
1203  case 4:
1204  return "atbinding";
1205  case 5:
1206  return "kerneloptions";
1207  case 6:
1208  return "kerneloptionattrib";
1209  case 7:
1210  return "usewritebackkernel";
1211  case 8:
1212  return "writebackkernelname";
1213  case 9:
1214  return "recompile";
1215  case 10:
1216  return "runover";
1217  case 11:
1218  return "iterations";
1219  case 12:
1220  return "iteration";
1221  case 13:
1222  return "worksets_begin";
1223  case 14:
1224  return "worksets_length";
1225  case 15:
1226  return "singleworkgroup";
1227  case 16:
1228  return "finish";
1229  case 17:
1230  return "time";
1231  case 18:
1232  return "timeinc";
1233  case 19:
1234  return "timescale";
1235  case 20:
1236  return "timemethod";
1237  case 21:
1238  return "xnoise";
1239  case 22:
1240  return "precision";
1241  case 23:
1242  return "importprequel";
1243  case 24:
1244  if (fieldnum.size() == 1)
1245  return "bindings";
1246  switch (fieldnum[1])
1247  {
1248  case 0:
1249  return "bindings#_name";
1250  case 1:
1251  return "bindings#_type";
1252  case 2:
1253  return "bindings#_ramp";
1254  case 3:
1255  return "bindings#_rampsize";
1256  case 4:
1257  return "bindings#_input";
1258  case 5:
1259  return "bindings#_volume";
1260  case 6:
1261  return "bindings#_vdbtype";
1262  case 7:
1263  return "bindings#_forcealign";
1264  case 8:
1265  return "bindings#_resolution";
1266  case 9:
1267  return "bindings#_voxelsize";
1268  case 10:
1269  return "bindings#_xformtoworld";
1270  case 11:
1271  return "bindings#_xformtovoxel";
1272  case 12:
1273  return "bindings#_attribute";
1274  case 13:
1275  return "bindings#_attribclass";
1276  case 14:
1277  return "bindings#_attribtype";
1278  case 15:
1279  return "bindings#_attribsize";
1280  case 16:
1281  return "bindings#_precision";
1282  case 17:
1283  return "bindings#_readable";
1284  case 18:
1285  return "bindings#_writeable";
1286  case 19:
1287  return "bindings#_optional";
1288  case 20:
1289  return "bindings#_defval";
1290  case 21:
1291  return "bindings#_intval";
1292  case 22:
1293  return "bindings#_fval";
1294  case 23:
1295  return "bindings#_v2val";
1296  case 24:
1297  return "bindings#_v3val";
1298  case 25:
1299  return "bindings#_v4val";
1300  case 26:
1301  return "bindings#_attribbvh";
1302  case 27:
1303  return "bindings#_attribosd";
1304  case 28:
1305  return "bindings#_attribpointbvh";
1306  case 29:
1307  return "bindings#_attribpointbvhmask";
1308  case 30:
1309  return "bindings#_timescale";
1310 
1311  }
1312  return 0;
1313  case 25:
1314  return "generatedcode";
1315 
1316  }
1317  return 0;
1318  }
1319 
1320  ParmType getNestParmType(TempIndex fieldnum) const override
1321  {
1322  if (fieldnum.size() < 1)
1323  return PARM_UNSUPPORTED;
1324  switch (fieldnum[0])
1325  {
1326  case 0:
1327  return PARM_STRING;
1328  case 1:
1329  return PARM_INTEGER;
1330  case 2:
1331  return PARM_STRING;
1332  case 3:
1333  return PARM_STRING;
1334  case 4:
1335  return PARM_INTEGER;
1336  case 5:
1337  return PARM_STRING;
1338  case 6:
1339  return PARM_STRING;
1340  case 7:
1341  return PARM_INTEGER;
1342  case 8:
1343  return PARM_STRING;
1344  case 9:
1345  return PARM_INTEGER;
1346  case 10:
1347  return PARM_INTEGER;
1348  case 11:
1349  return PARM_INTEGER;
1350  case 12:
1351  return PARM_INTEGER;
1352  case 13:
1353  return PARM_STRING;
1354  case 14:
1355  return PARM_STRING;
1356  case 15:
1357  return PARM_INTEGER;
1358  case 16:
1359  return PARM_INTEGER;
1360  case 17:
1361  return PARM_INTEGER;
1362  case 18:
1363  return PARM_INTEGER;
1364  case 19:
1365  return PARM_FLOAT;
1366  case 20:
1367  return PARM_INTEGER;
1368  case 21:
1369  return PARM_INTEGER;
1370  case 22:
1371  return PARM_INTEGER;
1372  case 23:
1373  return PARM_INTEGER;
1374  case 24:
1375  if (fieldnum.size() == 1)
1376  return PARM_MULTIPARM;
1377  switch (fieldnum[1])
1378  {
1379  case 0:
1380  return PARM_STRING;
1381  case 1:
1382  return PARM_INTEGER;
1383  case 2:
1384  return PARM_RAMP;
1385  case 3:
1386  return PARM_INTEGER;
1387  case 4:
1388  return PARM_INTEGER;
1389  case 5:
1390  return PARM_STRING;
1391  case 6:
1392  return PARM_INTEGER;
1393  case 7:
1394  return PARM_INTEGER;
1395  case 8:
1396  return PARM_INTEGER;
1397  case 9:
1398  return PARM_INTEGER;
1399  case 10:
1400  return PARM_INTEGER;
1401  case 11:
1402  return PARM_INTEGER;
1403  case 12:
1404  return PARM_STRING;
1405  case 13:
1406  return PARM_INTEGER;
1407  case 14:
1408  return PARM_INTEGER;
1409  case 15:
1410  return PARM_INTEGER;
1411  case 16:
1412  return PARM_INTEGER;
1413  case 17:
1414  return PARM_INTEGER;
1415  case 18:
1416  return PARM_INTEGER;
1417  case 19:
1418  return PARM_INTEGER;
1419  case 20:
1420  return PARM_INTEGER;
1421  case 21:
1422  return PARM_INTEGER;
1423  case 22:
1424  return PARM_FLOAT;
1425  case 23:
1426  return PARM_VECTOR2;
1427  case 24:
1428  return PARM_VECTOR3;
1429  case 25:
1430  return PARM_VECTOR4;
1431  case 26:
1432  return PARM_INTEGER;
1433  case 27:
1434  return PARM_INTEGER;
1435  case 28:
1436  return PARM_INTEGER;
1437  case 29:
1438  return PARM_STRING;
1439  case 30:
1440  return PARM_INTEGER;
1441 
1442  }
1443  return PARM_UNSUPPORTED;
1444  case 25:
1445  return PARM_STRING;
1446 
1447  }
1448  return PARM_UNSUPPORTED;
1449  }
1450 
1451  // Boiler plate to load individual types.
1452  static void loadData(UT_IStream &is, int64 &v)
1453  { is.bread(&v, 1); }
1454  static void loadData(UT_IStream &is, bool &v)
1455  { int64 iv; is.bread(&iv, 1); v = iv; }
1456  static void loadData(UT_IStream &is, fpreal64 &v)
1457  { is.bread<fpreal64>(&v, 1); }
1458  static void loadData(UT_IStream &is, UT_Vector2D &v)
1459  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1460  static void loadData(UT_IStream &is, UT_Vector3D &v)
1461  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1462  is.bread<fpreal64>(&v.z(), 1); }
1463  static void loadData(UT_IStream &is, UT_Vector4D &v)
1464  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1465  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1466  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1467  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1468  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1469  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1470  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1471  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1472  static void loadData(UT_IStream &is, UT_Vector2I &v)
1473  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1474  static void loadData(UT_IStream &is, UT_Vector3I &v)
1475  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1476  is.bread<int64>(&v.z(), 1); }
1477  static void loadData(UT_IStream &is, UT_Vector4I &v)
1478  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1479  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1481  { is.bread(v); }
1483  { UT_StringHolder rampdata;
1484  loadData(is, rampdata);
1485  if (rampdata.isstring())
1486  {
1487  v.reset(new UT_Ramp());
1488  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1489  v->load(istr);
1490  }
1491  else v.reset();
1492  }
1495  loadData(is, data);
1496  if (data.isstring())
1497  {
1498  // Find the data type.
1499  const char *colon = UT_StringWrap(data).findChar(':');
1500  if (colon)
1501  {
1502  int typelen = colon - data.buffer();
1504  type.strncpy(data.buffer(), typelen);
1505  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1506 
1507  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1508  }
1509  }
1510  else v.reset();
1511  }
1512 
1513  static void saveData(std::ostream &os, int64 v)
1514  { UTwrite(os, &v); }
1515  static void saveData(std::ostream &os, bool v)
1516  { int64 iv = v; UTwrite(os, &iv); }
1517  static void saveData(std::ostream &os, fpreal64 v)
1518  { UTwrite<fpreal64>(os, &v); }
1519  static void saveData(std::ostream &os, UT_Vector2D v)
1520  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1521  static void saveData(std::ostream &os, UT_Vector3D v)
1522  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1523  UTwrite<fpreal64>(os, &v.z()); }
1524  static void saveData(std::ostream &os, UT_Vector4D v)
1525  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1526  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1527  static void saveData(std::ostream &os, UT_Matrix2D v)
1529  static void saveData(std::ostream &os, UT_Matrix3D v)
1531  static void saveData(std::ostream &os, UT_Matrix4D v)
1533  static void saveData(std::ostream &os, UT_StringHolder s)
1534  { UT_StringWrap(s).saveBinary(os); }
1535  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1537  UT_OStringStream ostr;
1538  if (s) s->save(ostr);
1539  result = ostr.str();
1540  saveData(os, result);
1541  }
1542  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1544  UT_OStringStream ostr;
1545  if (s)
1546  {
1547  ostr << s->getDataTypeToken();
1548  ostr << ":";
1549  s->saveBinary(ostr);
1550  }
1551  result = ostr.str();
1552  saveData(os, result);
1553  }
1554 
1555 
1556  void save(std::ostream &os) const
1557  {
1558  int32 v = version();
1559  UTwrite(os, &v);
1560  saveData(os, myKernelName);
1561  saveData(os, myUseCode);
1562  saveData(os, myKernelFile);
1563  saveData(os, myKernelCode);
1564  saveData(os, myAtBinding);
1565  saveData(os, myKernelOptions);
1566  saveData(os, myKernelOptionAttrib);
1567  saveData(os, myUseWriteBackKernel);
1568  saveData(os, myWriteBackKernelName);
1569  saveData(os, myRecompile);
1570  saveData(os, myRunOver);
1571  saveData(os, myIterations);
1572  saveData(os, myIteration);
1573  saveData(os, myWorksets_begin);
1574  saveData(os, myWorksets_length);
1575  saveData(os, mySingleworkgroup);
1576  saveData(os, myFinish);
1577  saveData(os, myTime);
1578  saveData(os, myTimeInc);
1579  saveData(os, myTimescale);
1580  saveData(os, myTimemethod);
1581  saveData(os, myXnoise);
1582  saveData(os, myPrecision);
1583  saveData(os, myImportPrequel);
1584  {
1585  int64 length = myBindings.entries();
1586  UTwrite(os, &length);
1587  for (exint i = 0; i < length; i++)
1588  {
1589  auto && _curentry = myBindings(i);
1590  (void) _curentry;
1591  saveData(os, _curentry.bindings_name);
1592  saveData(os, _curentry.bindings_type);
1593  saveData(os, _curentry.bindings_ramp);
1594  saveData(os, _curentry.bindings_rampsize);
1595  saveData(os, _curentry.bindings_input);
1596  saveData(os, _curentry.bindings_volume);
1597  saveData(os, _curentry.bindings_vdbtype);
1598  saveData(os, _curentry.bindings_forcealign);
1599  saveData(os, _curentry.bindings_resolution);
1600  saveData(os, _curentry.bindings_voxelsize);
1601  saveData(os, _curentry.bindings_xformtoworld);
1602  saveData(os, _curentry.bindings_xformtovoxel);
1603  saveData(os, _curentry.bindings_attribute);
1604  saveData(os, _curentry.bindings_attribclass);
1605  saveData(os, _curentry.bindings_attribtype);
1606  saveData(os, _curentry.bindings_attribsize);
1607  saveData(os, _curentry.bindings_precision);
1608  saveData(os, _curentry.bindings_readable);
1609  saveData(os, _curentry.bindings_writeable);
1610  saveData(os, _curentry.bindings_optional);
1611  saveData(os, _curentry.bindings_defval);
1612  saveData(os, _curentry.bindings_intval);
1613  saveData(os, _curentry.bindings_fval);
1614  saveData(os, _curentry.bindings_v2val);
1615  saveData(os, _curentry.bindings_v3val);
1616  saveData(os, _curentry.bindings_v4val);
1617  saveData(os, _curentry.bindings_attribbvh);
1618  saveData(os, _curentry.bindings_attribosd);
1619  saveData(os, _curentry.bindings_attribpointbvh);
1620  saveData(os, _curentry.bindings_attribpointbvhmask);
1621  saveData(os, _curentry.bindings_timescale);
1622 
1623  }
1624  }
1625  saveData(os, myGeneratedCode);
1626 
1627  }
1628 
1629  bool load(UT_IStream &is)
1630  {
1631  int32 v;
1632  is.bread(&v, 1);
1633  if (version() != v)
1634  {
1635  // Fail incompatible versions
1636  return false;
1637  }
1638  loadData(is, myKernelName);
1639  loadData(is, myUseCode);
1640  loadData(is, myKernelFile);
1641  loadData(is, myKernelCode);
1642  loadData(is, myAtBinding);
1643  loadData(is, myKernelOptions);
1644  loadData(is, myKernelOptionAttrib);
1645  loadData(is, myUseWriteBackKernel);
1646  loadData(is, myWriteBackKernelName);
1647  loadData(is, myRecompile);
1648  loadData(is, myRunOver);
1649  loadData(is, myIterations);
1650  loadData(is, myIteration);
1651  loadData(is, myWorksets_begin);
1652  loadData(is, myWorksets_length);
1653  loadData(is, mySingleworkgroup);
1654  loadData(is, myFinish);
1655  loadData(is, myTime);
1656  loadData(is, myTimeInc);
1657  loadData(is, myTimescale);
1658  loadData(is, myTimemethod);
1659  loadData(is, myXnoise);
1660  loadData(is, myPrecision);
1661  loadData(is, myImportPrequel);
1662  {
1663  int64 length;
1664  is.read(&length, 1);
1665  myBindings.setSize(length);
1666  for (exint i = 0; i < length; i++)
1667  {
1668  auto && _curentry = myBindings(i);
1669  (void) _curentry;
1670  loadData(is, _curentry.bindings_name);
1671  loadData(is, _curentry.bindings_type);
1672  loadData(is, _curentry.bindings_ramp);
1673  loadData(is, _curentry.bindings_rampsize);
1674  loadData(is, _curentry.bindings_input);
1675  loadData(is, _curentry.bindings_volume);
1676  loadData(is, _curentry.bindings_vdbtype);
1677  loadData(is, _curentry.bindings_forcealign);
1678  loadData(is, _curentry.bindings_resolution);
1679  loadData(is, _curentry.bindings_voxelsize);
1680  loadData(is, _curentry.bindings_xformtoworld);
1681  loadData(is, _curentry.bindings_xformtovoxel);
1682  loadData(is, _curentry.bindings_attribute);
1683  loadData(is, _curentry.bindings_attribclass);
1684  loadData(is, _curentry.bindings_attribtype);
1685  loadData(is, _curentry.bindings_attribsize);
1686  loadData(is, _curentry.bindings_precision);
1687  loadData(is, _curentry.bindings_readable);
1688  loadData(is, _curentry.bindings_writeable);
1689  loadData(is, _curentry.bindings_optional);
1690  loadData(is, _curentry.bindings_defval);
1691  loadData(is, _curentry.bindings_intval);
1692  loadData(is, _curentry.bindings_fval);
1693  loadData(is, _curentry.bindings_v2val);
1694  loadData(is, _curentry.bindings_v3val);
1695  loadData(is, _curentry.bindings_v4val);
1696  loadData(is, _curentry.bindings_attribbvh);
1697  loadData(is, _curentry.bindings_attribosd);
1698  loadData(is, _curentry.bindings_attribpointbvh);
1699  loadData(is, _curentry.bindings_attribpointbvhmask);
1700  loadData(is, _curentry.bindings_timescale);
1701 
1702  }
1703  }
1704  loadData(is, myGeneratedCode);
1705 
1706  return true;
1707  }
1708 
1709  const UT_StringHolder & getKernelName() const { return myKernelName; }
1710  void setKernelName(const UT_StringHolder & val) { myKernelName = val; }
1712  {
1713  SOP_Node *thissop = cookparms.getNode();
1714  if (!thissop) return getKernelName();
1716  OP_Utils::evalOpParm(result, thissop, "kernelname", cookparms.getCookTime(), 0);
1717  return result;
1718  }
1719  bool getUseCode() const { return myUseCode; }
1720  void setUseCode(bool val) { myUseCode = val; }
1721  bool opUseCode(const SOP_NodeVerb::CookParms &cookparms) const
1722  {
1723  SOP_Node *thissop = cookparms.getNode();
1724  if (!thissop) return getUseCode();
1725  bool result;
1726  OP_Utils::evalOpParm(result, thissop, "usecode", cookparms.getCookTime(), 0);
1727  return result;
1728  }
1729  const UT_StringHolder & getKernelFile() const { return myKernelFile; }
1730  void setKernelFile(const UT_StringHolder & val) { myKernelFile = val; }
1732  {
1733  SOP_Node *thissop = cookparms.getNode();
1734  if (!thissop) return getKernelFile();
1736  OP_Utils::evalOpParm(result, thissop, "kernelfile", cookparms.getCookTime(), 0);
1737  return result;
1738  }
1739  const UT_StringHolder & getKernelCode() const { return myKernelCode; }
1740  void setKernelCode(const UT_StringHolder & val) { myKernelCode = val; }
1742  {
1743  SOP_Node *thissop = cookparms.getNode();
1744  if (!thissop) return getKernelCode();
1746  OP_Utils::evalOpParm(result, thissop, "kernelcode", cookparms.getCookTime(), 0);
1747  return result;
1748  }
1749  bool getAtBinding() const { return myAtBinding; }
1750  void setAtBinding(bool val) { myAtBinding = val; }
1751  bool opAtBinding(const SOP_NodeVerb::CookParms &cookparms) const
1752  {
1753  SOP_Node *thissop = cookparms.getNode();
1754  if (!thissop) return getAtBinding();
1755  bool result;
1756  OP_Utils::evalOpParm(result, thissop, "atbinding", cookparms.getCookTime(), 0);
1757  return result;
1758  }
1759  const UT_StringHolder & getKernelOptions() const { return myKernelOptions; }
1760  void setKernelOptions(const UT_StringHolder & val) { myKernelOptions = val; }
1762  {
1763  SOP_Node *thissop = cookparms.getNode();
1764  if (!thissop) return getKernelOptions();
1766  OP_Utils::evalOpParm(result, thissop, "kerneloptions", cookparms.getCookTime(), 0);
1767  return result;
1768  }
1769  const UT_StringHolder & getKernelOptionAttrib() const { return myKernelOptionAttrib; }
1770  void setKernelOptionAttrib(const UT_StringHolder & val) { myKernelOptionAttrib = val; }
1772  {
1773  SOP_Node *thissop = cookparms.getNode();
1774  if (!thissop) return getKernelOptionAttrib();
1776  OP_Utils::evalOpParm(result, thissop, "kerneloptionattrib", cookparms.getCookTime(), 0);
1777  return result;
1778  }
1779  bool getUseWriteBackKernel() const { return myUseWriteBackKernel; }
1780  void setUseWriteBackKernel(bool val) { myUseWriteBackKernel = val; }
1781  bool opUseWriteBackKernel(const SOP_NodeVerb::CookParms &cookparms) const
1782  {
1783  SOP_Node *thissop = cookparms.getNode();
1784  if (!thissop) return getUseWriteBackKernel();
1785  bool result;
1786  OP_Utils::evalOpParm(result, thissop, "usewritebackkernel", cookparms.getCookTime(), 0);
1787  return result;
1788  }
1789  const UT_StringHolder & getWriteBackKernelName() const { return myWriteBackKernelName; }
1790  void setWriteBackKernelName(const UT_StringHolder & val) { myWriteBackKernelName = val; }
1792  {
1793  SOP_Node *thissop = cookparms.getNode();
1794  if (!thissop) return getWriteBackKernelName();
1796  OP_Utils::evalOpParm(result, thissop, "writebackkernelname", cookparms.getCookTime(), 0);
1797  return result;
1798  }
1799  bool getRecompile() const { return myRecompile; }
1800  void setRecompile(bool val) { myRecompile = val; }
1801  bool opRecompile(const SOP_NodeVerb::CookParms &cookparms) const
1802  {
1803  SOP_Node *thissop = cookparms.getNode();
1804  if (!thissop) return getRecompile();
1805  bool result;
1806  OP_Utils::evalOpParm(result, thissop, "recompile", cookparms.getCookTime(), 0);
1807  return result;
1808  }
1809  RunOver getRunOver() const { return RunOver(myRunOver); }
1810  void setRunOver(RunOver val) { myRunOver = int64(val); }
1812  {
1813  SOP_Node *thissop = cookparms.getNode();
1814  if (!thissop) return getRunOver();
1815  int64 result;
1816  OP_Utils::evalOpParm(result, thissop, "runover", cookparms.getCookTime(), 0);
1817  return RunOver(result);
1818  }
1819  int64 getIterations() const { return myIterations; }
1820  void setIterations(int64 val) { myIterations = val; }
1822  {
1823  SOP_Node *thissop = cookparms.getNode();
1824  if (!thissop) return getIterations();
1825  int64 result;
1826  OP_Utils::evalOpParm(result, thissop, "iterations", cookparms.getCookTime(), 0);
1827  return result;
1828  }
1829  bool getIteration() const { return myIteration; }
1830  void setIteration(bool val) { myIteration = val; }
1831  bool opIteration(const SOP_NodeVerb::CookParms &cookparms) const
1832  {
1833  SOP_Node *thissop = cookparms.getNode();
1834  if (!thissop) return getIteration();
1835  bool result;
1836  OP_Utils::evalOpParm(result, thissop, "iteration", cookparms.getCookTime(), 0);
1837  return result;
1838  }
1839  const UT_StringHolder & getWorksets_begin() const { return myWorksets_begin; }
1840  void setWorksets_begin(const UT_StringHolder & val) { myWorksets_begin = val; }
1842  {
1843  SOP_Node *thissop = cookparms.getNode();
1844  if (!thissop) return getWorksets_begin();
1846  OP_Utils::evalOpParm(result, thissop, "worksets_begin", cookparms.getCookTime(), 0);
1847  return result;
1848  }
1849  const UT_StringHolder & getWorksets_length() const { return myWorksets_length; }
1850  void setWorksets_length(const UT_StringHolder & val) { myWorksets_length = val; }
1852  {
1853  SOP_Node *thissop = cookparms.getNode();
1854  if (!thissop) return getWorksets_length();
1856  OP_Utils::evalOpParm(result, thissop, "worksets_length", cookparms.getCookTime(), 0);
1857  return result;
1858  }
1859  bool getSingleworkgroup() const { return mySingleworkgroup; }
1860  void setSingleworkgroup(bool val) { mySingleworkgroup = val; }
1861  bool opSingleworkgroup(const SOP_NodeVerb::CookParms &cookparms) const
1862  {
1863  SOP_Node *thissop = cookparms.getNode();
1864  if (!thissop) return getSingleworkgroup();
1865  bool result;
1866  OP_Utils::evalOpParm(result, thissop, "singleworkgroup", cookparms.getCookTime(), 0);
1867  return result;
1868  }
1869  bool getFinish() const { return myFinish; }
1870  void setFinish(bool val) { myFinish = val; }
1871  bool opFinish(const SOP_NodeVerb::CookParms &cookparms) const
1872  {
1873  SOP_Node *thissop = cookparms.getNode();
1874  if (!thissop) return getFinish();
1875  bool result;
1876  OP_Utils::evalOpParm(result, thissop, "finish", cookparms.getCookTime(), 0);
1877  return result;
1878  }
1879  bool getTime() const { return myTime; }
1880  void setTime(bool val) { myTime = val; }
1881  bool opTime(const SOP_NodeVerb::CookParms &cookparms) const
1882  {
1883  SOP_Node *thissop = cookparms.getNode();
1884  if (!thissop) return getTime();
1885  bool result;
1886  OP_Utils::evalOpParm(result, thissop, "time", cookparms.getCookTime(), 0);
1887  return result;
1888  }
1889  bool getTimeInc() const { return myTimeInc; }
1890  void setTimeInc(bool val) { myTimeInc = val; }
1891  bool opTimeInc(const SOP_NodeVerb::CookParms &cookparms) const
1892  {
1893  SOP_Node *thissop = cookparms.getNode();
1894  if (!thissop) return getTimeInc();
1895  bool result;
1896  OP_Utils::evalOpParm(result, thissop, "timeinc", cookparms.getCookTime(), 0);
1897  return result;
1898  }
1899  fpreal64 getTimescale() const { return myTimescale; }
1900  void setTimescale(fpreal64 val) { myTimescale = val; }
1902  {
1903  SOP_Node *thissop = cookparms.getNode();
1904  if (!thissop) return getTimescale();
1905  fpreal64 result;
1906  OP_Utils::evalOpParm(result, thissop, "timescale", cookparms.getCookTime(), 0);
1907  return result;
1908  }
1909  Timemethod getTimemethod() const { return Timemethod(myTimemethod); }
1910  void setTimemethod(Timemethod val) { myTimemethod = int64(val); }
1912  {
1913  SOP_Node *thissop = cookparms.getNode();
1914  if (!thissop) return getTimemethod();
1915  int64 result;
1916  OP_Utils::evalOpParm(result, thissop, "timemethod", cookparms.getCookTime(), 0);
1917  return Timemethod(result);
1918  }
1919  bool getXnoise() const { return myXnoise; }
1920  void setXnoise(bool val) { myXnoise = val; }
1921  bool opXnoise(const SOP_NodeVerb::CookParms &cookparms) const
1922  {
1923  SOP_Node *thissop = cookparms.getNode();
1924  if (!thissop) return getXnoise();
1925  bool result;
1926  OP_Utils::evalOpParm(result, thissop, "xnoise", cookparms.getCookTime(), 0);
1927  return result;
1928  }
1929  Precision getPrecision() const { return Precision(myPrecision); }
1930  void setPrecision(Precision val) { myPrecision = int64(val); }
1932  {
1933  SOP_Node *thissop = cookparms.getNode();
1934  if (!thissop) return getPrecision();
1935  int64 result;
1936  OP_Utils::evalOpParm(result, thissop, "precision", cookparms.getCookTime(), 0);
1937  return Precision(result);
1938  }
1939  bool getImportPrequel() const { return myImportPrequel; }
1940  void setImportPrequel(bool val) { myImportPrequel = val; }
1941  bool opImportPrequel(const SOP_NodeVerb::CookParms &cookparms) const
1942  {
1943  SOP_Node *thissop = cookparms.getNode();
1944  if (!thissop) return getImportPrequel();
1945  bool result;
1946  OP_Utils::evalOpParm(result, thissop, "importprequel", cookparms.getCookTime(), 0);
1947  return result;
1948  }
1949  const UT_Array<Bindings> &getBindings() const { return myBindings; }
1950 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
1951  exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
1952  {
1953  SOP_Node *thissop = cookparms.getNode();
1954  if (!thissop) return getBindings().entries();
1955  exint result;
1956  OP_Utils::evalOpParm(result, thissop, "bindings", cookparms.getCookTime(), 0);
1957  return result;
1958  }
1960  { return opinstBindings_bindings_name(cookparms, &_idx); }
1962  {
1963  SOP_Node *thissop = cookparms.getNode();
1964  if (!thissop) return (myBindings(_idx[0]).bindings_name);
1965  int _parmidx[2-1];
1966  _parmidx[1-1] = _idx[1-1] + 1;
1967 
1969  OP_Utils::evalOpParmInst(result, thissop, "bindings#_name", _parmidx, cookparms.getCookTime(), 0, 2-1);
1970  return (result);
1971  }
1972  int64 opBindings_bindings_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1973  { return opinstBindings_bindings_type(cookparms, &_idx); }
1974  int64 opinstBindings_bindings_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1975  {
1976  SOP_Node *thissop = cookparms.getNode();
1977  if (!thissop) return (myBindings(_idx[0]).bindings_type);
1978  int _parmidx[2-1];
1979  _parmidx[1-1] = _idx[1-1] + 1;
1980 
1981  int64 result;
1982  OP_Utils::evalOpParmInst(result, thissop, "bindings#_type", _parmidx, cookparms.getCookTime(), 0, 2-1);
1983  return (result);
1984  }
1986  { return opinstBindings_bindings_ramp(cookparms, &_idx); }
1988  {
1989  SOP_Node *thissop = cookparms.getNode();
1990  if (!thissop) return (myBindings(_idx[0]).bindings_ramp);
1991  int _parmidx[2-1];
1992  _parmidx[1-1] = _idx[1-1] + 1;
1993 
1995  OP_Utils::evalOpParmInst(result, thissop, "bindings#_ramp", _parmidx, cookparms.getCookTime(), 0, 2-1);
1996  return (result);
1997  }
1999  { return opinstBindings_bindings_rampsize(cookparms, &_idx); }
2000  int64 opinstBindings_bindings_rampsize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2001  {
2002  SOP_Node *thissop = cookparms.getNode();
2003  if (!thissop) return (myBindings(_idx[0]).bindings_rampsize);
2004  int _parmidx[2-1];
2005  _parmidx[1-1] = _idx[1-1] + 1;
2006 
2007  int64 result;
2008  OP_Utils::evalOpParmInst(result, thissop, "bindings#_rampsize", _parmidx, cookparms.getCookTime(), 0, 2-1);
2009  return (result);
2010  }
2011  int64 opBindings_bindings_input(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2012  { return opinstBindings_bindings_input(cookparms, &_idx); }
2013  int64 opinstBindings_bindings_input(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2014  {
2015  SOP_Node *thissop = cookparms.getNode();
2016  if (!thissop) return (myBindings(_idx[0]).bindings_input);
2017  int _parmidx[2-1];
2018  _parmidx[1-1] = _idx[1-1] + 1;
2019 
2020  int64 result;
2021  OP_Utils::evalOpParmInst(result, thissop, "bindings#_input", _parmidx, cookparms.getCookTime(), 0, 2-1);
2022  return (result);
2023  }
2025  { return opinstBindings_bindings_volume(cookparms, &_idx); }
2027  {
2028  SOP_Node *thissop = cookparms.getNode();
2029  if (!thissop) return (myBindings(_idx[0]).bindings_volume);
2030  int _parmidx[2-1];
2031  _parmidx[1-1] = _idx[1-1] + 1;
2032 
2034  OP_Utils::evalOpParmInst(result, thissop, "bindings#_volume", _parmidx, cookparms.getCookTime(), 0, 2-1);
2035  return (result);
2036  }
2038  { return opinstBindings_bindings_vdbtype(cookparms, &_idx); }
2039  int64 opinstBindings_bindings_vdbtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2040  {
2041  SOP_Node *thissop = cookparms.getNode();
2042  if (!thissop) return (myBindings(_idx[0]).bindings_vdbtype);
2043  int _parmidx[2-1];
2044  _parmidx[1-1] = _idx[1-1] + 1;
2045 
2046  int64 result;
2047  OP_Utils::evalOpParmInst(result, thissop, "bindings#_vdbtype", _parmidx, cookparms.getCookTime(), 0, 2-1);
2048  return (result);
2049  }
2050  bool opBindings_bindings_forcealign(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2051  { return opinstBindings_bindings_forcealign(cookparms, &_idx); }
2052  bool opinstBindings_bindings_forcealign(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2053  {
2054  SOP_Node *thissop = cookparms.getNode();
2055  if (!thissop) return (myBindings(_idx[0]).bindings_forcealign);
2056  int _parmidx[2-1];
2057  _parmidx[1-1] = _idx[1-1] + 1;
2058 
2059  bool result;
2060  OP_Utils::evalOpParmInst(result, thissop, "bindings#_forcealign", _parmidx, cookparms.getCookTime(), 0, 2-1);
2061  return (result);
2062  }
2063  bool opBindings_bindings_resolution(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2064  { return opinstBindings_bindings_resolution(cookparms, &_idx); }
2065  bool opinstBindings_bindings_resolution(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2066  {
2067  SOP_Node *thissop = cookparms.getNode();
2068  if (!thissop) return (myBindings(_idx[0]).bindings_resolution);
2069  int _parmidx[2-1];
2070  _parmidx[1-1] = _idx[1-1] + 1;
2071 
2072  bool result;
2073  OP_Utils::evalOpParmInst(result, thissop, "bindings#_resolution", _parmidx, cookparms.getCookTime(), 0, 2-1);
2074  return (result);
2075  }
2076  bool opBindings_bindings_voxelsize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2077  { return opinstBindings_bindings_voxelsize(cookparms, &_idx); }
2078  bool opinstBindings_bindings_voxelsize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2079  {
2080  SOP_Node *thissop = cookparms.getNode();
2081  if (!thissop) return (myBindings(_idx[0]).bindings_voxelsize);
2082  int _parmidx[2-1];
2083  _parmidx[1-1] = _idx[1-1] + 1;
2084 
2085  bool result;
2086  OP_Utils::evalOpParmInst(result, thissop, "bindings#_voxelsize", _parmidx, cookparms.getCookTime(), 0, 2-1);
2087  return (result);
2088  }
2089  bool opBindings_bindings_xformtoworld(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2090  { return opinstBindings_bindings_xformtoworld(cookparms, &_idx); }
2091  bool opinstBindings_bindings_xformtoworld(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2092  {
2093  SOP_Node *thissop = cookparms.getNode();
2094  if (!thissop) return (myBindings(_idx[0]).bindings_xformtoworld);
2095  int _parmidx[2-1];
2096  _parmidx[1-1] = _idx[1-1] + 1;
2097 
2098  bool result;
2099  OP_Utils::evalOpParmInst(result, thissop, "bindings#_xformtoworld", _parmidx, cookparms.getCookTime(), 0, 2-1);
2100  return (result);
2101  }
2102  bool opBindings_bindings_xformtovoxel(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2103  { return opinstBindings_bindings_xformtovoxel(cookparms, &_idx); }
2104  bool opinstBindings_bindings_xformtovoxel(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2105  {
2106  SOP_Node *thissop = cookparms.getNode();
2107  if (!thissop) return (myBindings(_idx[0]).bindings_xformtovoxel);
2108  int _parmidx[2-1];
2109  _parmidx[1-1] = _idx[1-1] + 1;
2110 
2111  bool result;
2112  OP_Utils::evalOpParmInst(result, thissop, "bindings#_xformtovoxel", _parmidx, cookparms.getCookTime(), 0, 2-1);
2113  return (result);
2114  }
2116  { return opinstBindings_bindings_attribute(cookparms, &_idx); }
2118  {
2119  SOP_Node *thissop = cookparms.getNode();
2120  if (!thissop) return (myBindings(_idx[0]).bindings_attribute);
2121  int _parmidx[2-1];
2122  _parmidx[1-1] = _idx[1-1] + 1;
2123 
2125  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribute", _parmidx, cookparms.getCookTime(), 0, 2-1);
2126  return (result);
2127  }
2129  { return opinstBindings_bindings_attribclass(cookparms, &_idx); }
2130  int64 opinstBindings_bindings_attribclass(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2131  {
2132  SOP_Node *thissop = cookparms.getNode();
2133  if (!thissop) return (myBindings(_idx[0]).bindings_attribclass);
2134  int _parmidx[2-1];
2135  _parmidx[1-1] = _idx[1-1] + 1;
2136 
2137  int64 result;
2138  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribclass", _parmidx, cookparms.getCookTime(), 0, 2-1);
2139  return (result);
2140  }
2142  { return opinstBindings_bindings_attribtype(cookparms, &_idx); }
2143  int64 opinstBindings_bindings_attribtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2144  {
2145  SOP_Node *thissop = cookparms.getNode();
2146  if (!thissop) return (myBindings(_idx[0]).bindings_attribtype);
2147  int _parmidx[2-1];
2148  _parmidx[1-1] = _idx[1-1] + 1;
2149 
2150  int64 result;
2151  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribtype", _parmidx, cookparms.getCookTime(), 0, 2-1);
2152  return (result);
2153  }
2155  { return opinstBindings_bindings_attribsize(cookparms, &_idx); }
2156  int64 opinstBindings_bindings_attribsize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2157  {
2158  SOP_Node *thissop = cookparms.getNode();
2159  if (!thissop) return (myBindings(_idx[0]).bindings_attribsize);
2160  int _parmidx[2-1];
2161  _parmidx[1-1] = _idx[1-1] + 1;
2162 
2163  int64 result;
2164  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribsize", _parmidx, cookparms.getCookTime(), 0, 2-1);
2165  return (result);
2166  }
2168  { return opinstBindings_bindings_precision(cookparms, &_idx); }
2169  int64 opinstBindings_bindings_precision(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2170  {
2171  SOP_Node *thissop = cookparms.getNode();
2172  if (!thissop) return (myBindings(_idx[0]).bindings_precision);
2173  int _parmidx[2-1];
2174  _parmidx[1-1] = _idx[1-1] + 1;
2175 
2176  int64 result;
2177  OP_Utils::evalOpParmInst(result, thissop, "bindings#_precision", _parmidx, cookparms.getCookTime(), 0, 2-1);
2178  return (result);
2179  }
2180  bool opBindings_bindings_readable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2181  { return opinstBindings_bindings_readable(cookparms, &_idx); }
2182  bool opinstBindings_bindings_readable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2183  {
2184  SOP_Node *thissop = cookparms.getNode();
2185  if (!thissop) return (myBindings(_idx[0]).bindings_readable);
2186  int _parmidx[2-1];
2187  _parmidx[1-1] = _idx[1-1] + 1;
2188 
2189  bool result;
2190  OP_Utils::evalOpParmInst(result, thissop, "bindings#_readable", _parmidx, cookparms.getCookTime(), 0, 2-1);
2191  return (result);
2192  }
2193  bool opBindings_bindings_writeable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2194  { return opinstBindings_bindings_writeable(cookparms, &_idx); }
2195  bool opinstBindings_bindings_writeable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2196  {
2197  SOP_Node *thissop = cookparms.getNode();
2198  if (!thissop) return (myBindings(_idx[0]).bindings_writeable);
2199  int _parmidx[2-1];
2200  _parmidx[1-1] = _idx[1-1] + 1;
2201 
2202  bool result;
2203  OP_Utils::evalOpParmInst(result, thissop, "bindings#_writeable", _parmidx, cookparms.getCookTime(), 0, 2-1);
2204  return (result);
2205  }
2206  bool opBindings_bindings_optional(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2207  { return opinstBindings_bindings_optional(cookparms, &_idx); }
2208  bool opinstBindings_bindings_optional(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2209  {
2210  SOP_Node *thissop = cookparms.getNode();
2211  if (!thissop) return (myBindings(_idx[0]).bindings_optional);
2212  int _parmidx[2-1];
2213  _parmidx[1-1] = _idx[1-1] + 1;
2214 
2215  bool result;
2216  OP_Utils::evalOpParmInst(result, thissop, "bindings#_optional", _parmidx, cookparms.getCookTime(), 0, 2-1);
2217  return (result);
2218  }
2219  bool opBindings_bindings_defval(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2220  { return opinstBindings_bindings_defval(cookparms, &_idx); }
2221  bool opinstBindings_bindings_defval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2222  {
2223  SOP_Node *thissop = cookparms.getNode();
2224  if (!thissop) return (myBindings(_idx[0]).bindings_defval);
2225  int _parmidx[2-1];
2226  _parmidx[1-1] = _idx[1-1] + 1;
2227 
2228  bool result;
2229  OP_Utils::evalOpParmInst(result, thissop, "bindings#_defval", _parmidx, cookparms.getCookTime(), 0, 2-1);
2230  return (result);
2231  }
2233  { return opinstBindings_bindings_intval(cookparms, &_idx); }
2234  int64 opinstBindings_bindings_intval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2235  {
2236  SOP_Node *thissop = cookparms.getNode();
2237  if (!thissop) return (myBindings(_idx[0]).bindings_intval);
2238  int _parmidx[2-1];
2239  _parmidx[1-1] = _idx[1-1] + 1;
2240 
2241  int64 result;
2242  OP_Utils::evalOpParmInst(result, thissop, "bindings#_intval", _parmidx, cookparms.getCookTime(), 0, 2-1);
2243  return (result);
2244  }
2246  { return opinstBindings_bindings_fval(cookparms, &_idx); }
2247  fpreal64 opinstBindings_bindings_fval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2248  {
2249  SOP_Node *thissop = cookparms.getNode();
2250  if (!thissop) return (myBindings(_idx[0]).bindings_fval);
2251  int _parmidx[2-1];
2252  _parmidx[1-1] = _idx[1-1] + 1;
2253 
2254  fpreal64 result;
2255  OP_Utils::evalOpParmInst(result, thissop, "bindings#_fval", _parmidx, cookparms.getCookTime(), 0, 2-1);
2256  return (result);
2257  }
2259  { return opinstBindings_bindings_v2val(cookparms, &_idx); }
2260  UT_Vector2D opinstBindings_bindings_v2val(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2261  {
2262  SOP_Node *thissop = cookparms.getNode();
2263  if (!thissop) return (myBindings(_idx[0]).bindings_v2val);
2264  int _parmidx[2-1];
2265  _parmidx[1-1] = _idx[1-1] + 1;
2266 
2268  OP_Utils::evalOpParmInst(result, thissop, "bindings#_v2val", _parmidx, cookparms.getCookTime(), 0, 2-1);
2269  return (result);
2270  }
2272  { return opinstBindings_bindings_v3val(cookparms, &_idx); }
2273  UT_Vector3D opinstBindings_bindings_v3val(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2274  {
2275  SOP_Node *thissop = cookparms.getNode();
2276  if (!thissop) return (myBindings(_idx[0]).bindings_v3val);
2277  int _parmidx[2-1];
2278  _parmidx[1-1] = _idx[1-1] + 1;
2279 
2281  OP_Utils::evalOpParmInst(result, thissop, "bindings#_v3val", _parmidx, cookparms.getCookTime(), 0, 2-1);
2282  return (result);
2283  }
2285  { return opinstBindings_bindings_v4val(cookparms, &_idx); }
2286  UT_Vector4D opinstBindings_bindings_v4val(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2287  {
2288  SOP_Node *thissop = cookparms.getNode();
2289  if (!thissop) return (myBindings(_idx[0]).bindings_v4val);
2290  int _parmidx[2-1];
2291  _parmidx[1-1] = _idx[1-1] + 1;
2292 
2294  OP_Utils::evalOpParmInst(result, thissop, "bindings#_v4val", _parmidx, cookparms.getCookTime(), 0, 2-1);
2295  return (result);
2296  }
2297  bool opBindings_bindings_attribbvh(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2298  { return opinstBindings_bindings_attribbvh(cookparms, &_idx); }
2299  bool opinstBindings_bindings_attribbvh(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2300  {
2301  SOP_Node *thissop = cookparms.getNode();
2302  if (!thissop) return (myBindings(_idx[0]).bindings_attribbvh);
2303  int _parmidx[2-1];
2304  _parmidx[1-1] = _idx[1-1] + 1;
2305 
2306  bool result;
2307  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribbvh", _parmidx, cookparms.getCookTime(), 0, 2-1);
2308  return (result);
2309  }
2310  bool opBindings_bindings_attribosd(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2311  { return opinstBindings_bindings_attribosd(cookparms, &_idx); }
2312  bool opinstBindings_bindings_attribosd(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2313  {
2314  SOP_Node *thissop = cookparms.getNode();
2315  if (!thissop) return (myBindings(_idx[0]).bindings_attribosd);
2316  int _parmidx[2-1];
2317  _parmidx[1-1] = _idx[1-1] + 1;
2318 
2319  bool result;
2320  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribosd", _parmidx, cookparms.getCookTime(), 0, 2-1);
2321  return (result);
2322  }
2323  bool opBindings_bindings_attribpointbvh(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
2324  { return opinstBindings_bindings_attribpointbvh(cookparms, &_idx); }
2325  bool opinstBindings_bindings_attribpointbvh(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2326  {
2327  SOP_Node *thissop = cookparms.getNode();
2328  if (!thissop) return (myBindings(_idx[0]).bindings_attribpointbvh);
2329  int _parmidx[2-1];
2330  _parmidx[1-1] = _idx[1-1] + 1;
2331 
2332  bool result;
2333  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribpointbvh", _parmidx, cookparms.getCookTime(), 0, 2-1);
2334  return (result);
2335  }
2337  { return opinstBindings_bindings_attribpointbvhmask(cookparms, &_idx); }
2339  {
2340  SOP_Node *thissop = cookparms.getNode();
2341  if (!thissop) return (myBindings(_idx[0]).bindings_attribpointbvhmask);
2342  int _parmidx[2-1];
2343  _parmidx[1-1] = _idx[1-1] + 1;
2344 
2346  OP_Utils::evalOpParmInst(result, thissop, "bindings#_attribpointbvhmask", _parmidx, cookparms.getCookTime(), 0, 2-1);
2347  return (result);
2348  }
2350  { return opinstBindings_bindings_timescale(cookparms, &_idx); }
2351  int64 opinstBindings_bindings_timescale(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
2352  {
2353  SOP_Node *thissop = cookparms.getNode();
2354  if (!thissop) return (myBindings(_idx[0]).bindings_timescale);
2355  int _parmidx[2-1];
2356  _parmidx[1-1] = _idx[1-1] + 1;
2357 
2358  int64 result;
2359  OP_Utils::evalOpParmInst(result, thissop, "bindings#_timescale", _parmidx, cookparms.getCookTime(), 0, 2-1);
2360  return (result);
2361  }
2362 
2363  const UT_StringHolder & getGeneratedCode() const { return myGeneratedCode; }
2364  void setGeneratedCode(const UT_StringHolder & val) { myGeneratedCode = val; }
2366  {
2367  SOP_Node *thissop = cookparms.getNode();
2368  if (!thissop) return getGeneratedCode();
2370  OP_Utils::evalOpParm(result, thissop, "generatedcode", cookparms.getCookTime(), 0);
2371  return result;
2372  }
2373 
2374 private:
2375  UT_StringHolder myKernelName;
2376  bool myUseCode;
2377  UT_StringHolder myKernelFile;
2378  UT_StringHolder myKernelCode;
2379  bool myAtBinding;
2380  UT_StringHolder myKernelOptions;
2381  UT_StringHolder myKernelOptionAttrib;
2382  bool myUseWriteBackKernel;
2383  UT_StringHolder myWriteBackKernelName;
2384  bool myRecompile;
2385  int64 myRunOver;
2386  int64 myIterations;
2387  bool myIteration;
2388  UT_StringHolder myWorksets_begin;
2389  UT_StringHolder myWorksets_length;
2390  bool mySingleworkgroup;
2391  bool myFinish;
2392  bool myTime;
2393  bool myTimeInc;
2394  fpreal64 myTimescale;
2395  int64 myTimemethod;
2396  bool myXnoise;
2397  int64 myPrecision;
2398  bool myImportPrequel;
2399  UT_Array<Bindings> myBindings;
2400  UT_StringHolder myGeneratedCode;
2401 
2402 };
const UT_StringHolder & getWorksets_length() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
virtual NodeIdx getInput(NodeIdx idx, OP_InputIdx input, bool markused=false) const =0
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
bool getRecompile() const
type
Definition: core.h:556
bool opXnoise(const SOP_NodeVerb::CookParms &cookparms) const
bool opinstBindings_bindings_optional(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool getUseWriteBackKernel() const
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
UT_StringHolder opGeneratedCode(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setAtBinding(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setIteration(bool val)
UT_Vector3D opBindings_bindings_v3val(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
SYS_FORCE_INLINE UT_StringHolder getToken(RunOver enum_value)
int int32
Definition: SYS_Types.h:39
void setKernelCode(const UT_StringHolder &val)
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:403
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
bool opinstBindings_bindings_defval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setWorksets_begin(const UT_StringHolder &val)
bool opBindings_bindings_attribbvh(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opinstBindings_bindings_rampsize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opinstBindings_bindings_attribclass(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_Vector3D opinstBindings_bindings_v3val(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool opUseCode(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opBindings_bindings_name(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
Timemethod opTimemethod(const SOP_NodeVerb::CookParms &cookparms) const
void
Definition: png.h:1083
UT_SharedPtr< UT_Ramp > opinstBindings_bindings_ramp(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opKernelName(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
bool opIteration(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
const GLdouble * v
Definition: glcorearb.h:837
const UT_StringHolder & getKernelOptionAttrib() const
fpreal getTime() const
Definition: OP_Context.h:63
int64 opBindings_bindings_input(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, int64 v)
UT_Vector2T< fpreal64 > UT_Vector2D
void setTimemethod(Timemethod val)
GLsizei const GLfloat * value
Definition: glcorearb.h:824
int64 opinstBindings_bindings_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
ParmType getNestParmType(TempIndex fieldnum) const override
void setRecompile(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
int64 opBindings_bindings_rampsize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:105
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setKernelFile(const UT_StringHolder &val)
void setKernelName(const UT_StringHolder &val)
bool opBindings_bindings_forcealign(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
int64 exint
Definition: SYS_Types.h:125
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, fpreal64 v)
bool operator!=(const Bindings &src) const
SYS_FORCE_INLINE const char * buffer() const
bool opinstBindings_bindings_attribosd(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool opFinish(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
GLdouble s
Definition: glad.h:3009
int64 opBindings_bindings_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder opinstBindings_bindings_attribute(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
fpreal64 opTimescale(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opWorksets_length(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getWriteBackKernelName() const
An output stream object that owns its own string buffer storage.
const char * getNestParmName(TempIndex fieldnum) const override
void setTime(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
UT_StringHolder bindings_volume
static void loadData(UT_IStream &is, UT_Vector3I &v)
const UT_StringHolder & getKernelOptions() const
int64 getIterations() const
**But if you need a result
Definition: thread.h:622
static void saveData(std::ostream &os, UT_Vector2D v)
fpreal64 opinstBindings_bindings_fval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstBindings_bindings_volume(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opBindings_bindings_attribclass(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
exint nodeIdx() const
Definition: OP_NodeParms.h:103
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void setImportPrequel(bool val)
bool opImportPrequel(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_StringHolder opKernelOptionAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opBindings_bindings_attribute(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opinstBindings_bindings_intval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
void save(std::ostream &os) const
UT_StringHolder opBindings_bindings_attribpointbvhmask(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setKernelOptions(const UT_StringHolder &val)
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
void setTimescale(fpreal64 val)
const UT_StringHolder & getWorksets_begin() const
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:426
RunOver getRunOver() const
UT_StringHolder opWorksets_begin(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void saveData(std::ostream &os, UT_Matrix3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
fpreal64 getTimescale() const
const UT_StringHolder & getKernelFile() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setXnoise(bool val)
exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
bool opTime(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool getAtBinding() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
bool getIteration() const
int64 opinstBindings_bindings_vdbtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint length() const
static void saveData(std::ostream &os, UT_Vector4D v)
UT_SharedPtr< UT_Ramp > bindings_ramp
int64 opBindings_bindings_attribtype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:497
UT_Vector2D opinstBindings_bindings_v2val(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
Precision getPrecision() const
UT_StringHolder opinstBindings_bindings_attribpointbvhmask(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool opinstBindings_bindings_attribbvh(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool getTime() const
bool opinstBindings_bindings_attribpointbvh(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setWorksets_length(const UT_StringHolder &val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
UT_StringHolder opWriteBackKernelName(const SOP_NodeVerb::CookParms &cookparms) const
bool opinstBindings_bindings_xformtoworld(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:271
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:102
void setUseCode(bool val)
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
bool opBindings_bindings_defval(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool opBindings_bindings_voxelsize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setPrecision(Precision val)
static void saveData(std::ostream &os, UT_StringHolder s)
bool opinstBindings_bindings_xformtovoxel(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_StringHolder opKernelFile(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector4D opBindings_bindings_v4val(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, UT_Vector3D v)
void setWriteBackKernelName(const UT_StringHolder &val)
bool getSingleworkgroup() const
bool opinstBindings_bindings_voxelsize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UT_Vector2D opBindings_bindings_v2val(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
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
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
UT_Vector3T< fpreal64 > UT_Vector3D
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
bool opUseWriteBackKernel(const SOP_NodeVerb::CookParms &cookparms) const
bool opBindings_bindings_xformtoworld(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool opBindings_bindings_xformtovoxel(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, int64 &v)
bool getImportPrequel() const
int64 opBindings_bindings_vdbtype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void copyFrom(const OP_NodeParms *src) override
UT_StringHolder opBindings_bindings_volume(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool opSingleworkgroup(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool opBindings_bindings_writeable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
exint getNestNumParms(TempIndex idx) const override
bool opTimeInc(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:306
UT_StringHolder createString(const UT_Array< Bindings > &list) const
int64 opBindings_bindings_precision(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GT_API const UT_StringHolder version
int64 opinstBindings_bindings_input(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:669
UT_StringHolder bindings_attribute
void setGeneratedCode(const UT_StringHolder &val)
bool getXnoise() const
bool operator==(const SOP_OpenCLParms &src) const
UT_Vector4D opinstBindings_bindings_v4val(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool operator==(const Bindings &src) const
bool isParmColorRamp(exint idx) const override
int64 opinstBindings_bindings_attribtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setIterations(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
const UT_StringHolder & getKernelCode() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setFinish(bool val)
static void loadData(UT_IStream &is, fpreal64 &v)
void setRunOver(RunOver val)
static int version()
int64 opBindings_bindings_intval(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setSingleworkgroup(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool opinstBindings_bindings_readable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool getFinish() const
bool opRecompile(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:283
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:107
int64 opinstBindings_bindings_precision(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
Timemethod getTimemethod() const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
bool opAtBinding(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
const UT_StringHolder & getKernelName() const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
SYS_FORCE_INLINE void append(char character)
bool opinstBindings_bindings_resolution(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setBindings(const UT_Array< Bindings > &val)
UT_StringHolder opinstBindings_bindings_name(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setUseWriteBackKernel(bool val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:302
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
const UT_Array< Bindings > & getBindings() const
#define SOP_API
Definition: SOP_API.h:10
int64 opinstBindings_bindings_timescale(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opIterations(const SOP_NodeVerb::CookParms &cookparms) const
Precision opPrecision(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getGeneratedCode() const
bool opBindings_bindings_attribosd(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:432
UT_StringHolder opKernelCode(const SOP_NodeVerb::CookParms &cookparms) const
bool operator!=(const SOP_OpenCLParms &src) const
int64 opinstBindings_bindings_attribsize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, bool v)
const char * findChar(int c) const
Definition: UT_String.h:1421
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:165
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool opBindings_bindings_resolution(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLboolean r
Definition: glcorearb.h:1222
int64 opBindings_bindings_timescale(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool opBindings_bindings_readable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
exint bread(uint8 *buffer, exint asize=1)
fpreal64 opBindings_bindings_fval(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool getUseCode() const
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_SharedPtr< UT_Ramp > opBindings_bindings_ramp(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_Vector4T< fpreal64 > UT_Vector4D
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:667
bool getTimeInc() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
bool opinstBindings_bindings_forcealign(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setKernelOptionAttrib(const UT_StringHolder &val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_StringHolder opKernelOptions(const SOP_NodeVerb::CookParms &cookparms) const
bool opBindings_bindings_optional(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setTimeInc(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:428
bool opBindings_bindings_attribpointbvh(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
SYS_FORCE_INLINE bool isstring() const
UT_StringHolder bindings_attribpointbvhmask
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, bool &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
int64 opBindings_bindings_attribsize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
RunOver opRunOver(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool opinstBindings_bindings_writeable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665