HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_AttribVopParms.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 
25 {
26 public:
27  static int version() { return 1; }
28  struct Bindings
29  {
32 
33 
35  {
36  bindname = ""_UTsh;
37  bindparm = ""_UTsh;
38 
39  }
40 
41  bool operator==(const Bindings &src) const
42  {
43  if (bindname != src.bindname) return false;
44  if (bindparm != src.bindparm) return false;
45 
46  return true;
47  }
48  bool operator!=(const Bindings &src) const
49  {
50  return !operator==(src);
51  }
52 
53  };
54 
56  {
58 
59  buf.strcat("[ ");
60  for (int i = 0; i < list.entries(); i++)
61  {
62  if (i)
63  buf.strcat(", ");
64  buf.strcat("( ");
65  buf.append("");
66  { UT_String tmp; tmp = UT_StringWrap(list(i).bindname).makeQuotedString('"'); buf.strcat(tmp); }
67  buf.append(", ");
68  { UT_String tmp; tmp = UT_StringWrap(list(i).bindparm).makeQuotedString('"'); buf.strcat(tmp); }
69 
70  buf.strcat(" )");
71  }
72  buf.strcat(" ]");
73 
75  return result;
76  }
78  {
81 
82 
84  {
85  bindgroupname = ""_UTsh;
86  bindgroupparm = ""_UTsh;
87 
88  }
89 
90  bool operator==(const GroupBindings &src) const
91  {
92  if (bindgroupname != src.bindgroupname) return false;
93  if (bindgroupparm != src.bindgroupparm) return false;
94 
95  return true;
96  }
97  bool operator!=(const GroupBindings &src) const
98  {
99  return !operator==(src);
100  }
101 
102  };
103 
105  {
107 
108  buf.strcat("[ ");
109  for (int i = 0; i < list.entries(); i++)
110  {
111  if (i)
112  buf.strcat(", ");
113  buf.strcat("( ");
114  buf.append("");
115  { UT_String tmp; tmp = UT_StringWrap(list(i).bindgroupname).makeQuotedString('"'); buf.strcat(tmp); }
116  buf.append(", ");
117  { UT_String tmp; tmp = UT_StringWrap(list(i).bindgroupparm).makeQuotedString('"'); buf.strcat(tmp); }
118 
119  buf.strcat(" )");
120  }
121  buf.strcat(" ]");
122 
124  return result;
125  }
126 
128  {
129  myVexCWD = ""_UTsh;
130  myVexOutputMask = "*"_UTsh;
131  myAutobind = true;
132  myGroupAutobind = true;
133  myBindClass = 2;
134  myBindGroup = ""_UTsh;
135  myBindGroupType = 0;
136  myMultiThread = true;
137  myUpdateNormals = false;
138  myNumCount = 10;
139  myThreadJobSize = 1024;
140  myMatchAttrib = "id"_UTsh;
141  mySelectionGroup = ""_UTsh;
142  myCookInPlace = false;
143  myVexPrecision = "auto"_UTsh;
144  myVexSource = 3;
145  mySnippet = ""_UTsh;
146  myEnforcePrototypes = false;
147  myExportList = "*"_UTsh;
148 
149  }
150 
151  explicit SOP_AttribVopParms(const SOP_AttribVopParms &) = default;
152  SOP_AttribVopParms &operator=(const SOP_AttribVopParms &) = default;
153  SOP_AttribVopParms(SOP_AttribVopParms &&) noexcept = default;
154  SOP_AttribVopParms &operator=(SOP_AttribVopParms &&) noexcept = default;
155 
156  ~SOP_AttribVopParms() override {}
157 
158  bool operator==(const SOP_AttribVopParms &src) const
159  {
160  if (myVexCWD != src.myVexCWD) return false;
161  if (myVexOutputMask != src.myVexOutputMask) return false;
162  if (myBindings != src.myBindings) return false;
163  if (myGroupBindings != src.myGroupBindings) return false;
164  if (myAutobind != src.myAutobind) return false;
165  if (myGroupAutobind != src.myGroupAutobind) return false;
166  if (myBindClass != src.myBindClass) return false;
167  if (myBindGroup != src.myBindGroup) return false;
168  if (myBindGroupType != src.myBindGroupType) return false;
169  if (myMultiThread != src.myMultiThread) return false;
170  if (myUpdateNormals != src.myUpdateNormals) return false;
171  if (myNumCount != src.myNumCount) return false;
172  if (myThreadJobSize != src.myThreadJobSize) return false;
173  if (myMatchAttrib != src.myMatchAttrib) return false;
174  if (mySelectionGroup != src.mySelectionGroup) return false;
175  if (myCookInPlace != src.myCookInPlace) return false;
176  if (myVexPrecision != src.myVexPrecision) return false;
177  if (myVexSource != src.myVexSource) return false;
178  if (mySnippet != src.mySnippet) return false;
179  if (myEnforcePrototypes != src.myEnforcePrototypes) return false;
180  if (myExportList != src.myExportList) return false;
181 
182  return true;
183  }
184  bool operator!=(const SOP_AttribVopParms &src) const
185  {
186  return !operator==(src);
187  }
188 
189 
190 
191  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
192  {
193  myVexCWD = ""_UTsh;
194  if (true)
195  graph->evalOpParm(myVexCWD, nodeidx, "vex_cwdpath", time, 0);
196  myVexOutputMask = "*"_UTsh;
197  if (true)
198  graph->evalOpParm(myVexOutputMask, nodeidx, "vex_outputmask", time, 0);
199  if (true)
200  {
201  int64 length = 0;
202  graph->evalOpParm(length, nodeidx, "bindings", time, 0);
203  if (length < 0) length = 0;
204  myBindings.setSize(length);
205  for (exint i = 0; i < length; i++)
206  {
207  int parmidx[1];
208  int offsets[1];
209  parmidx[0] = i+1;
210  offsets[0] = 1;
211  auto && _curentry = myBindings(i);
212  (void) _curentry;
213  _curentry.bindname = ""_UTsh;
214  if (true)
215  graph->evalOpParmInst(_curentry.bindname, nodeidx, "bindname#", parmidx, offsets, time, 0, 2-1);
216  _curentry.bindparm = ""_UTsh;
217  if (true)
218  graph->evalOpParmInst(_curentry.bindparm, nodeidx, "bindparm#", parmidx, offsets, time, 0, 2-1);
219 
220  }
221  }
222  else
223  myBindings.clear();
224  if (true)
225  {
226  int64 length = 0;
227  graph->evalOpParm(length, nodeidx, "groupbindings", time, 0);
228  if (length < 0) length = 0;
229  myGroupBindings.setSize(length);
230  for (exint i = 0; i < length; i++)
231  {
232  int parmidx[1];
233  int offsets[1];
234  parmidx[0] = i+1;
235  offsets[0] = 1;
236  auto && _curentry = myGroupBindings(i);
237  (void) _curentry;
238  _curentry.bindgroupname = ""_UTsh;
239  if (true)
240  graph->evalOpParmInst(_curentry.bindgroupname, nodeidx, "bindgroupname#", parmidx, offsets, time, 0, 2-1);
241  _curentry.bindgroupparm = ""_UTsh;
242  if (true)
243  graph->evalOpParmInst(_curentry.bindgroupparm, nodeidx, "bindgroupparm#", parmidx, offsets, time, 0, 2-1);
244 
245  }
246  }
247  else
248  myGroupBindings.clear();
249  myAutobind = true;
250  if (true)
251  graph->evalOpParm(myAutobind, nodeidx, "autobind", time, 0);
252  myGroupAutobind = true;
253  if (true)
254  graph->evalOpParm(myGroupAutobind, nodeidx, "groupautobind", time, 0);
255  myBindClass = 2;
256  if (true)
257  graph->evalOpParm(myBindClass, nodeidx, "bindclass", time, 0);
258  myBindGroup = ""_UTsh;
259  if (true)
260  graph->evalOpParm(myBindGroup, nodeidx, "bindgroup", time, 0);
261  myBindGroupType = 0;
262  if (true)
263  graph->evalOpParm(myBindGroupType, nodeidx, "bindgrouptype", time, 0);
264  myMultiThread = true;
265  if (true)
266  graph->evalOpParm(myMultiThread, nodeidx, "vex_multithread", time, 0);
267  myUpdateNormals = false;
268  if (true)
269  graph->evalOpParm(myUpdateNormals, nodeidx, "vex_updatenmls", time, 0);
270  myNumCount = 10;
271  if (true && ( (getBindClass()==4) ) )
272  graph->evalOpParm(myNumCount, nodeidx, "vex_numcount", time, 0);
273  myThreadJobSize = 1024;
274  if (true && ( (getBindClass()==4) ) )
275  graph->evalOpParm(myThreadJobSize, nodeidx, "vex_threadjobsize", time, 0);
276  myMatchAttrib = "id"_UTsh;
277  if (true)
278  graph->evalOpParm(myMatchAttrib, nodeidx, "vex_matchattrib", time, 0);
279  mySelectionGroup = ""_UTsh;
280  if (true)
281  graph->evalOpParm(mySelectionGroup, nodeidx, "vex_selectiongroup", time, 0);
282  myCookInPlace = false;
283  if (true)
284  graph->evalOpParm(myCookInPlace, nodeidx, "vex_inplace", time, 0);
285  myVexPrecision = "auto"_UTsh;
286  if (true)
287  graph->evalOpParm(myVexPrecision, nodeidx, "vex_precision", time, 0);
288  myVexSource = 3;
289  if (true)
290  graph->evalOpParm(myVexSource, nodeidx, "vexsrc", time, 0);
291  mySnippet = ""_UTsh;
292  if (true && ( (getVexSource()==3) ) )
293  graph->evalOpParm(mySnippet, nodeidx, "vexsnippet", time, 0);
294  myEnforcePrototypes = false;
295  if (true && ( (getVexSource()==3) ) )
296  graph->evalOpParm(myEnforcePrototypes, nodeidx, "vex_strict", time, 0);
297  myExportList = "*"_UTsh;
298  if (true && ( (getVexSource()==3) ) )
299  graph->evalOpParm(myExportList, nodeidx, "vex_exportlist", time, 0);
300 
301  }
302 
303 
304  void loadFromOpSubclass(const LoadParms &loadparms) override
305  {
306  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
307  }
308 
309 
310  void copyFrom(const OP_NodeParms *src) override
311  {
312  *this = *((const SOP_AttribVopParms *)src);
313  }
314 
315  template <typename T>
316  void
317  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
318  {
319  if (idx.size() < 1)
320  return;
321  UT_ASSERT(idx.size() == instance.size()+1);
322  if (idx.size() != instance.size()+1)
323  return;
324  switch (idx[0])
325  {
326  case 0:
327  coerceValue(value, myVexCWD);
328  break;
329  case 1:
330  coerceValue(value, myVexOutputMask);
331  break;
332  case 2:
333  if (idx.size() == 1)
334  coerceValue(value, myBindings.entries());
335  else if (instance[0] < myBindings.entries())
336  {
337  auto && _data = myBindings(instance[0]);
338  switch (idx[1])
339  {
340  case 0:
341  coerceValue(value, _data.bindname);
342  break;
343  case 1:
344  coerceValue(value, _data.bindparm);
345  break;
346 
347  }
348  }
349  break;
350  case 3:
351  if (idx.size() == 1)
352  coerceValue(value, myGroupBindings.entries());
353  else if (instance[0] < myGroupBindings.entries())
354  {
355  auto && _data = myGroupBindings(instance[0]);
356  switch (idx[1])
357  {
358  case 0:
359  coerceValue(value, _data.bindgroupname);
360  break;
361  case 1:
362  coerceValue(value, _data.bindgroupparm);
363  break;
364 
365  }
366  }
367  break;
368  case 4:
369  coerceValue(value, myAutobind);
370  break;
371  case 5:
372  coerceValue(value, myGroupAutobind);
373  break;
374  case 6:
375  coerceValue(value, myBindClass);
376  break;
377  case 7:
378  coerceValue(value, myBindGroup);
379  break;
380  case 8:
381  coerceValue(value, myBindGroupType);
382  break;
383  case 9:
384  coerceValue(value, myMultiThread);
385  break;
386  case 10:
387  coerceValue(value, myUpdateNormals);
388  break;
389  case 11:
390  coerceValue(value, myNumCount);
391  break;
392  case 12:
393  coerceValue(value, myThreadJobSize);
394  break;
395  case 13:
396  coerceValue(value, myMatchAttrib);
397  break;
398  case 14:
399  coerceValue(value, mySelectionGroup);
400  break;
401  case 15:
402  coerceValue(value, myCookInPlace);
403  break;
404  case 16:
405  coerceValue(value, myVexPrecision);
406  break;
407  case 17:
408  coerceValue(value, myVexSource);
409  break;
410  case 18:
411  coerceValue(value, mySnippet);
412  break;
413  case 19:
414  coerceValue(value, myEnforcePrototypes);
415  break;
416  case 20:
417  coerceValue(value, myExportList);
418  break;
419 
420  }
421  }
422 
423  bool isParmColorRamp(exint idx) const override
424  {
425  switch (idx)
426  {
427 
428  }
429  return false;
430  }
431 
432  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
433  { doGetParmValue(idx, instance, value); }
434  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
435  { doGetParmValue(idx, instance, value); }
436  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
437  { doGetParmValue(idx, instance, value); }
438  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
439  { doGetParmValue(idx, instance, value); }
440  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
441  { doGetParmValue(idx, instance, value); }
442  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
443  { doGetParmValue(idx, instance, value); }
444  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
445  { doGetParmValue(idx, instance, value); }
446  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
447  { doGetParmValue(idx, instance, value); }
448  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
449  { doGetParmValue(idx, instance, value); }
450  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
451  { doGetParmValue(idx, instance, value); }
452  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
453  { doGetParmValue(idx, instance, value); }
454 
455  template <typename T>
456  void
457  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
458  {
459  if (idx.size() < 1)
460  return;
461  UT_ASSERT(idx.size() == instance.size()+1);
462  if (idx.size() != instance.size()+1)
463  return;
464  switch (idx[0])
465  {
466  case 0:
467  coerceValue(myVexCWD, ( ( value ) ));
468  break;
469  case 1:
470  coerceValue(myVexOutputMask, ( ( value ) ));
471  break;
472  case 2:
473  if (idx.size() == 1)
474  {
475  exint newsize;
476  coerceValue(newsize, value);
477  if (newsize < 0) newsize = 0;
478  myBindings.setSize(newsize);
479  }
480  else
481  {
482  if (instance[0] < 0)
483  return;
484  myBindings.setSizeIfNeeded(instance[0]+1);
485  auto && _data = myBindings(instance[0]);
486  switch (idx[1])
487  {
488  case 0:
489  coerceValue(_data.bindname, value);
490  break;
491  case 1:
492  coerceValue(_data.bindparm, value);
493  break;
494 
495  }
496  }
497  break;
498  case 3:
499  if (idx.size() == 1)
500  {
501  exint newsize;
502  coerceValue(newsize, value);
503  if (newsize < 0) newsize = 0;
504  myGroupBindings.setSize(newsize);
505  }
506  else
507  {
508  if (instance[0] < 0)
509  return;
510  myGroupBindings.setSizeIfNeeded(instance[0]+1);
511  auto && _data = myGroupBindings(instance[0]);
512  switch (idx[1])
513  {
514  case 0:
515  coerceValue(_data.bindgroupname, value);
516  break;
517  case 1:
518  coerceValue(_data.bindgroupparm, value);
519  break;
520 
521  }
522  }
523  break;
524  case 4:
525  coerceValue(myAutobind, ( ( value ) ));
526  break;
527  case 5:
528  coerceValue(myGroupAutobind, ( ( value ) ));
529  break;
530  case 6:
531  coerceValue(myBindClass, ( ( value ) ));
532  break;
533  case 7:
534  coerceValue(myBindGroup, ( ( value ) ));
535  break;
536  case 8:
537  coerceValue(myBindGroupType, ( ( value ) ));
538  break;
539  case 9:
540  coerceValue(myMultiThread, ( ( value ) ));
541  break;
542  case 10:
543  coerceValue(myUpdateNormals, ( ( value ) ));
544  break;
545  case 11:
546  coerceValue(myNumCount, ( ( value ) ));
547  break;
548  case 12:
549  coerceValue(myThreadJobSize, ( ( value ) ));
550  break;
551  case 13:
552  coerceValue(myMatchAttrib, ( ( value ) ));
553  break;
554  case 14:
555  coerceValue(mySelectionGroup, ( ( value ) ));
556  break;
557  case 15:
558  coerceValue(myCookInPlace, ( ( value ) ));
559  break;
560  case 16:
561  coerceValue(myVexPrecision, ( ( value ) ));
562  break;
563  case 17:
564  coerceValue(myVexSource, ( ( value ) ));
565  break;
566  case 18:
567  coerceValue(mySnippet, ( ( value ) ));
568  break;
569  case 19:
570  coerceValue(myEnforcePrototypes, ( ( value ) ));
571  break;
572  case 20:
573  coerceValue(myExportList, ( ( value ) ));
574  break;
575 
576  }
577  }
578 
579  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
580  { doSetParmValue(idx, instance, value); }
581  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
582  { doSetParmValue(idx, instance, value); }
583  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
584  { doSetParmValue(idx, instance, value); }
585  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
586  { doSetParmValue(idx, instance, value); }
587  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
588  { doSetParmValue(idx, instance, value); }
589  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
590  { doSetParmValue(idx, instance, value); }
591  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
592  { doSetParmValue(idx, instance, value); }
593  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
594  { doSetParmValue(idx, instance, value); }
595  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
596  { doSetParmValue(idx, instance, value); }
597  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
598  { doSetParmValue(idx, instance, value); }
599  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
600  { doSetParmValue(idx, instance, value); }
601 
602  exint getNestNumParms(TempIndex idx) const override
603  {
604  if (idx.size() == 0)
605  return 21;
606  switch (idx[0])
607  {
608  case 2:
609  return 2;
610  case 3:
611  return 2;
612 
613  }
614  // Invalid
615  return 0;
616  }
617 
618  const char *getNestParmName(TempIndex fieldnum) const override
619  {
620  if (fieldnum.size() < 1)
621  return 0;
622  switch (fieldnum[0])
623  {
624  case 0:
625  return "vex_cwdpath";
626  case 1:
627  return "vex_outputmask";
628  case 2:
629  if (fieldnum.size() == 1)
630  return "bindings";
631  switch (fieldnum[1])
632  {
633  case 0:
634  return "bindname#";
635  case 1:
636  return "bindparm#";
637 
638  }
639  return 0;
640  case 3:
641  if (fieldnum.size() == 1)
642  return "groupbindings";
643  switch (fieldnum[1])
644  {
645  case 0:
646  return "bindgroupname#";
647  case 1:
648  return "bindgroupparm#";
649 
650  }
651  return 0;
652  case 4:
653  return "autobind";
654  case 5:
655  return "groupautobind";
656  case 6:
657  return "bindclass";
658  case 7:
659  return "bindgroup";
660  case 8:
661  return "bindgrouptype";
662  case 9:
663  return "vex_multithread";
664  case 10:
665  return "vex_updatenmls";
666  case 11:
667  return "vex_numcount";
668  case 12:
669  return "vex_threadjobsize";
670  case 13:
671  return "vex_matchattrib";
672  case 14:
673  return "vex_selectiongroup";
674  case 15:
675  return "vex_inplace";
676  case 16:
677  return "vex_precision";
678  case 17:
679  return "vexsrc";
680  case 18:
681  return "vexsnippet";
682  case 19:
683  return "vex_strict";
684  case 20:
685  return "vex_exportlist";
686 
687  }
688  return 0;
689  }
690 
691  ParmType getNestParmType(TempIndex fieldnum) const override
692  {
693  if (fieldnum.size() < 1)
694  return PARM_UNSUPPORTED;
695  switch (fieldnum[0])
696  {
697  case 0:
698  return PARM_STRING;
699  case 1:
700  return PARM_STRING;
701  case 2:
702  if (fieldnum.size() == 1)
703  return PARM_MULTIPARM;
704  switch (fieldnum[1])
705  {
706  case 0:
707  return PARM_STRING;
708  case 1:
709  return PARM_STRING;
710 
711  }
712  return PARM_UNSUPPORTED;
713  case 3:
714  if (fieldnum.size() == 1)
715  return PARM_MULTIPARM;
716  switch (fieldnum[1])
717  {
718  case 0:
719  return PARM_STRING;
720  case 1:
721  return PARM_STRING;
722 
723  }
724  return PARM_UNSUPPORTED;
725  case 4:
726  return PARM_INTEGER;
727  case 5:
728  return PARM_INTEGER;
729  case 6:
730  return PARM_INTEGER;
731  case 7:
732  return PARM_STRING;
733  case 8:
734  return PARM_INTEGER;
735  case 9:
736  return PARM_INTEGER;
737  case 10:
738  return PARM_INTEGER;
739  case 11:
740  return PARM_INTEGER;
741  case 12:
742  return PARM_INTEGER;
743  case 13:
744  return PARM_STRING;
745  case 14:
746  return PARM_STRING;
747  case 15:
748  return PARM_INTEGER;
749  case 16:
750  return PARM_STRING;
751  case 17:
752  return PARM_INTEGER;
753  case 18:
754  return PARM_STRING;
755  case 19:
756  return PARM_INTEGER;
757  case 20:
758  return PARM_STRING;
759 
760  }
761  return PARM_UNSUPPORTED;
762  }
763 
764  // Boiler plate to load individual types.
765  static void loadData(UT_IStream &is, int64 &v)
766  { is.bread(&v, 1); }
767  static void loadData(UT_IStream &is, bool &v)
768  { int64 iv; is.bread(&iv, 1); v = iv; }
769  static void loadData(UT_IStream &is, fpreal64 &v)
770  { is.bread<fpreal64>(&v, 1); }
771  static void loadData(UT_IStream &is, UT_Vector2D &v)
772  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
773  static void loadData(UT_IStream &is, UT_Vector3D &v)
774  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
775  is.bread<fpreal64>(&v.z(), 1); }
776  static void loadData(UT_IStream &is, UT_Vector4D &v)
777  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
778  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
779  static void loadData(UT_IStream &is, UT_Matrix2D &v)
780  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
781  static void loadData(UT_IStream &is, UT_Matrix3D &v)
782  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
783  static void loadData(UT_IStream &is, UT_Matrix4D &v)
784  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
785  static void loadData(UT_IStream &is, UT_Vector2I &v)
786  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
787  static void loadData(UT_IStream &is, UT_Vector3I &v)
788  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
789  is.bread<int64>(&v.z(), 1); }
790  static void loadData(UT_IStream &is, UT_Vector4I &v)
791  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
792  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
794  { is.bread(v); }
796  { UT_StringHolder rampdata;
797  loadData(is, rampdata);
798  if (rampdata.isstring())
799  {
800  v.reset(new UT_Ramp());
801  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
802  v->load(istr);
803  }
804  else v.reset();
805  }
808  loadData(is, data);
809  if (data.isstring())
810  {
811  // Find the data type.
812  const char *colon = UT_StringWrap(data).findChar(':');
813  if (colon)
814  {
815  int typelen = colon - data.buffer();
817  type.strncpy(data.buffer(), typelen);
818  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
819 
820  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
821  }
822  }
823  else v.reset();
824  }
825 
826  static void saveData(std::ostream &os, int64 v)
827  { UTwrite(os, &v); }
828  static void saveData(std::ostream &os, bool v)
829  { int64 iv = v; UTwrite(os, &iv); }
830  static void saveData(std::ostream &os, fpreal64 v)
831  { UTwrite<fpreal64>(os, &v); }
832  static void saveData(std::ostream &os, UT_Vector2D v)
833  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
834  static void saveData(std::ostream &os, UT_Vector3D v)
835  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
836  UTwrite<fpreal64>(os, &v.z()); }
837  static void saveData(std::ostream &os, UT_Vector4D v)
838  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
839  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
840  static void saveData(std::ostream &os, UT_Matrix2D v)
842  static void saveData(std::ostream &os, UT_Matrix3D v)
844  static void saveData(std::ostream &os, UT_Matrix4D v)
846  static void saveData(std::ostream &os, UT_StringHolder s)
847  { UT_StringWrap(s).saveBinary(os); }
848  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
850  UT_OStringStream ostr;
851  if (s) s->save(ostr);
852  result = ostr.str();
853  saveData(os, result);
854  }
855  static void saveData(std::ostream &os, PRM_DataItemHandle s)
857  UT_OStringStream ostr;
858  if (s)
859  {
860  ostr << s->getDataTypeToken();
861  ostr << ":";
862  s->saveBinary(ostr);
863  }
864  result = ostr.str();
865  saveData(os, result);
866  }
867 
868 
869  void save(std::ostream &os) const
870  {
871  int32 v = version();
872  UTwrite(os, &v);
873  saveData(os, myVexCWD);
874  saveData(os, myVexOutputMask);
875  {
876  int64 length = myBindings.entries();
877  UTwrite(os, &length);
878  for (exint i = 0; i < length; i++)
879  {
880  auto && _curentry = myBindings(i);
881  (void) _curentry;
882  saveData(os, _curentry.bindname);
883  saveData(os, _curentry.bindparm);
884 
885  }
886  }
887  {
888  int64 length = myGroupBindings.entries();
889  UTwrite(os, &length);
890  for (exint i = 0; i < length; i++)
891  {
892  auto && _curentry = myGroupBindings(i);
893  (void) _curentry;
894  saveData(os, _curentry.bindgroupname);
895  saveData(os, _curentry.bindgroupparm);
896 
897  }
898  }
899  saveData(os, myAutobind);
900  saveData(os, myGroupAutobind);
901  saveData(os, myBindClass);
902  saveData(os, myBindGroup);
903  saveData(os, myBindGroupType);
904  saveData(os, myMultiThread);
905  saveData(os, myUpdateNormals);
906  saveData(os, myNumCount);
907  saveData(os, myThreadJobSize);
908  saveData(os, myMatchAttrib);
909  saveData(os, mySelectionGroup);
910  saveData(os, myCookInPlace);
911  saveData(os, myVexPrecision);
912  saveData(os, myVexSource);
913  saveData(os, mySnippet);
914  saveData(os, myEnforcePrototypes);
915  saveData(os, myExportList);
916 
917  }
918 
919  bool load(UT_IStream &is)
920  {
921  int32 v;
922  is.bread(&v, 1);
923  if (version() != v)
924  {
925  // Fail incompatible versions
926  return false;
927  }
928  loadData(is, myVexCWD);
929  loadData(is, myVexOutputMask);
930  {
931  int64 length;
932  is.read(&length, 1);
933  myBindings.setSize(length);
934  for (exint i = 0; i < length; i++)
935  {
936  auto && _curentry = myBindings(i);
937  (void) _curentry;
938  loadData(is, _curentry.bindname);
939  loadData(is, _curentry.bindparm);
940 
941  }
942  }
943  {
944  int64 length;
945  is.read(&length, 1);
946  myGroupBindings.setSize(length);
947  for (exint i = 0; i < length; i++)
948  {
949  auto && _curentry = myGroupBindings(i);
950  (void) _curentry;
951  loadData(is, _curentry.bindgroupname);
952  loadData(is, _curentry.bindgroupparm);
953 
954  }
955  }
956  loadData(is, myAutobind);
957  loadData(is, myGroupAutobind);
958  loadData(is, myBindClass);
959  loadData(is, myBindGroup);
960  loadData(is, myBindGroupType);
961  loadData(is, myMultiThread);
962  loadData(is, myUpdateNormals);
963  loadData(is, myNumCount);
964  loadData(is, myThreadJobSize);
965  loadData(is, myMatchAttrib);
966  loadData(is, mySelectionGroup);
967  loadData(is, myCookInPlace);
968  loadData(is, myVexPrecision);
969  loadData(is, myVexSource);
970  loadData(is, mySnippet);
971  loadData(is, myEnforcePrototypes);
972  loadData(is, myExportList);
973 
974  return true;
975  }
976 
977  const UT_StringHolder & getVexCWD() const { return myVexCWD; }
978  void setVexCWD(const UT_StringHolder & val) { myVexCWD = val; }
980  {
981  SOP_Node *thissop = cookparms.getNode();
982  if (!thissop) return getVexCWD();
984  OP_Utils::evalOpParm(result, thissop, "vex_cwdpath", cookparms.getCookTime(), 0);
985  return result;
986  }
987  const UT_StringHolder & getVexOutputMask() const { return myVexOutputMask; }
988  void setVexOutputMask(const UT_StringHolder & val) { myVexOutputMask = val; }
990  {
991  SOP_Node *thissop = cookparms.getNode();
992  if (!thissop) return getVexOutputMask();
994  OP_Utils::evalOpParm(result, thissop, "vex_outputmask", cookparms.getCookTime(), 0);
995  return result;
996  }
997  const UT_Array<Bindings> &getBindings() const { return myBindings; }
998 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
999  exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
1000  {
1001  SOP_Node *thissop = cookparms.getNode();
1002  if (!thissop) return getBindings().entries();
1003  exint result;
1004  OP_Utils::evalOpParm(result, thissop, "bindings", cookparms.getCookTime(), 0);
1005  return result;
1006  }
1008  { return opinstBindings_bindname(cookparms, &_idx); }
1009  UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1010  {
1011  SOP_Node *thissop = cookparms.getNode();
1012  if (!thissop) return (myBindings(_idx[0]).bindname);
1013  int _parmidx[2-1];
1014  _parmidx[1-1] = _idx[1-1] + 1;
1015 
1017  OP_Utils::evalOpParmInst(result, thissop, "bindname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1018  return (result);
1019  }
1021  { return opinstBindings_bindparm(cookparms, &_idx); }
1022  UT_StringHolder opinstBindings_bindparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1023  {
1024  SOP_Node *thissop = cookparms.getNode();
1025  if (!thissop) return (myBindings(_idx[0]).bindparm);
1026  int _parmidx[2-1];
1027  _parmidx[1-1] = _idx[1-1] + 1;
1028 
1030  OP_Utils::evalOpParmInst(result, thissop, "bindparm#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1031  return (result);
1032  }
1033 
1034  const UT_Array<GroupBindings> &getGroupBindings() const { return myGroupBindings; }
1035 void setGroupBindings(const UT_Array<GroupBindings> &val) { myGroupBindings = val; }
1037  {
1038  SOP_Node *thissop = cookparms.getNode();
1039  if (!thissop) return getGroupBindings().entries();
1040  exint result;
1041  OP_Utils::evalOpParm(result, thissop, "groupbindings", cookparms.getCookTime(), 0);
1042  return result;
1043  }
1045  { return opinstGroupBindings_bindgroupname(cookparms, &_idx); }
1047  {
1048  SOP_Node *thissop = cookparms.getNode();
1049  if (!thissop) return (myGroupBindings(_idx[0]).bindgroupname);
1050  int _parmidx[2-1];
1051  _parmidx[1-1] = _idx[1-1] + 1;
1052 
1054  OP_Utils::evalOpParmInst(result, thissop, "bindgroupname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1055  return (result);
1056  }
1058  { return opinstGroupBindings_bindgroupparm(cookparms, &_idx); }
1060  {
1061  SOP_Node *thissop = cookparms.getNode();
1062  if (!thissop) return (myGroupBindings(_idx[0]).bindgroupparm);
1063  int _parmidx[2-1];
1064  _parmidx[1-1] = _idx[1-1] + 1;
1065 
1067  OP_Utils::evalOpParmInst(result, thissop, "bindgroupparm#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1068  return (result);
1069  }
1070 
1071  bool getAutobind() const { return myAutobind; }
1072  void setAutobind(bool val) { myAutobind = val; }
1073  bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
1074  {
1075  SOP_Node *thissop = cookparms.getNode();
1076  if (!thissop) return getAutobind();
1077  bool result;
1078  OP_Utils::evalOpParm(result, thissop, "autobind", cookparms.getCookTime(), 0);
1079  return result;
1080  }
1081  bool getGroupAutobind() const { return myGroupAutobind; }
1082  void setGroupAutobind(bool val) { myGroupAutobind = val; }
1083  bool opGroupAutobind(const SOP_NodeVerb::CookParms &cookparms) const
1084  {
1085  SOP_Node *thissop = cookparms.getNode();
1086  if (!thissop) return getGroupAutobind();
1087  bool result;
1088  OP_Utils::evalOpParm(result, thissop, "groupautobind", cookparms.getCookTime(), 0);
1089  return result;
1090  }
1091  int64 getBindClass() const { return myBindClass; }
1092  void setBindClass(int64 val) { myBindClass = val; }
1094  {
1095  SOP_Node *thissop = cookparms.getNode();
1096  if (!thissop) return getBindClass();
1097  int64 result;
1098  OP_Utils::evalOpParm(result, thissop, "bindclass", cookparms.getCookTime(), 0);
1099  return result;
1100  }
1101  const UT_StringHolder & getBindGroup() const { return myBindGroup; }
1102  void setBindGroup(const UT_StringHolder & val) { myBindGroup = val; }
1104  {
1105  SOP_Node *thissop = cookparms.getNode();
1106  if (!thissop) return getBindGroup();
1108  OP_Utils::evalOpParm(result, thissop, "bindgroup", cookparms.getCookTime(), 0);
1109  return result;
1110  }
1111  int64 getBindGroupType() const { return myBindGroupType; }
1112  void setBindGroupType(int64 val) { myBindGroupType = val; }
1114  {
1115  SOP_Node *thissop = cookparms.getNode();
1116  if (!thissop) return getBindGroupType();
1117  int64 result;
1118  OP_Utils::evalOpParm(result, thissop, "bindgrouptype", cookparms.getCookTime(), 0);
1119  return result;
1120  }
1121  bool getMultiThread() const { return myMultiThread; }
1122  void setMultiThread(bool val) { myMultiThread = val; }
1123  bool opMultiThread(const SOP_NodeVerb::CookParms &cookparms) const
1124  {
1125  SOP_Node *thissop = cookparms.getNode();
1126  if (!thissop) return getMultiThread();
1127  bool result;
1128  OP_Utils::evalOpParm(result, thissop, "vex_multithread", cookparms.getCookTime(), 0);
1129  return result;
1130  }
1131  bool getUpdateNormals() const { return myUpdateNormals; }
1132  void setUpdateNormals(bool val) { myUpdateNormals = val; }
1133  bool opUpdateNormals(const SOP_NodeVerb::CookParms &cookparms) const
1134  {
1135  SOP_Node *thissop = cookparms.getNode();
1136  if (!thissop) return getUpdateNormals();
1137  bool result;
1138  OP_Utils::evalOpParm(result, thissop, "vex_updatenmls", cookparms.getCookTime(), 0);
1139  return result;
1140  }
1141  int64 getNumCount() const { return myNumCount; }
1142  void setNumCount(int64 val) { myNumCount = val; }
1143  int64 opNumCount(const SOP_NodeVerb::CookParms &cookparms) const
1144  {
1145  SOP_Node *thissop = cookparms.getNode();
1146  if (!thissop) return getNumCount();
1147  int64 result;
1148  OP_Utils::evalOpParm(result, thissop, "vex_numcount", cookparms.getCookTime(), 0);
1149  return result;
1150  }
1151  int64 getThreadJobSize() const { return myThreadJobSize; }
1152  void setThreadJobSize(int64 val) { myThreadJobSize = val; }
1154  {
1155  SOP_Node *thissop = cookparms.getNode();
1156  if (!thissop) return getThreadJobSize();
1157  int64 result;
1158  OP_Utils::evalOpParm(result, thissop, "vex_threadjobsize", cookparms.getCookTime(), 0);
1159  return result;
1160  }
1161  const UT_StringHolder & getMatchAttrib() const { return myMatchAttrib; }
1162  void setMatchAttrib(const UT_StringHolder & val) { myMatchAttrib = val; }
1164  {
1165  SOP_Node *thissop = cookparms.getNode();
1166  if (!thissop) return getMatchAttrib();
1168  OP_Utils::evalOpParm(result, thissop, "vex_matchattrib", cookparms.getCookTime(), 0);
1169  return result;
1170  }
1171  const UT_StringHolder & getSelectionGroup() const { return mySelectionGroup; }
1172  void setSelectionGroup(const UT_StringHolder & val) { mySelectionGroup = val; }
1174  {
1175  SOP_Node *thissop = cookparms.getNode();
1176  if (!thissop) return getSelectionGroup();
1178  OP_Utils::evalOpParm(result, thissop, "vex_selectiongroup", cookparms.getCookTime(), 0);
1179  return result;
1180  }
1181  bool getCookInPlace() const { return myCookInPlace; }
1182  void setCookInPlace(bool val) { myCookInPlace = val; }
1183  bool opCookInPlace(const SOP_NodeVerb::CookParms &cookparms) const
1184  {
1185  SOP_Node *thissop = cookparms.getNode();
1186  if (!thissop) return getCookInPlace();
1187  bool result;
1188  OP_Utils::evalOpParm(result, thissop, "vex_inplace", cookparms.getCookTime(), 0);
1189  return result;
1190  }
1191  const UT_StringHolder & getVexPrecision() const { return myVexPrecision; }
1192  void setVexPrecision(const UT_StringHolder & val) { myVexPrecision = val; }
1194  {
1195  SOP_Node *thissop = cookparms.getNode();
1196  if (!thissop) return getVexPrecision();
1198  OP_Utils::evalOpParm(result, thissop, "vex_precision", cookparms.getCookTime(), 0);
1199  return result;
1200  }
1201  int64 getVexSource() const { return myVexSource; }
1202  void setVexSource(int64 val) { myVexSource = val; }
1204  {
1205  SOP_Node *thissop = cookparms.getNode();
1206  if (!thissop) return getVexSource();
1207  int64 result;
1208  OP_Utils::evalOpParm(result, thissop, "vexsrc", cookparms.getCookTime(), 0);
1209  return result;
1210  }
1211  const UT_StringHolder & getSnippet() const { return mySnippet; }
1212  void setSnippet(const UT_StringHolder & val) { mySnippet = val; }
1214  {
1215  SOP_Node *thissop = cookparms.getNode();
1216  if (!thissop) return getSnippet();
1218  OP_Utils::evalOpParm(result, thissop, "vexsnippet", cookparms.getCookTime(), 0);
1219  return result;
1220  }
1221  bool getEnforcePrototypes() const { return myEnforcePrototypes; }
1222  void setEnforcePrototypes(bool val) { myEnforcePrototypes = val; }
1223  bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
1224  {
1225  SOP_Node *thissop = cookparms.getNode();
1226  if (!thissop) return getEnforcePrototypes();
1227  bool result;
1228  OP_Utils::evalOpParm(result, thissop, "vex_strict", cookparms.getCookTime(), 0);
1229  return result;
1230  }
1231  const UT_StringHolder & getExportList() const { return myExportList; }
1232  void setExportList(const UT_StringHolder & val) { myExportList = val; }
1234  {
1235  SOP_Node *thissop = cookparms.getNode();
1236  if (!thissop) return getExportList();
1238  OP_Utils::evalOpParm(result, thissop, "vex_exportlist", cookparms.getCookTime(), 0);
1239  return result;
1240  }
1241 
1242 private:
1243  UT_StringHolder myVexCWD;
1244  UT_StringHolder myVexOutputMask;
1245  UT_Array<Bindings> myBindings;
1246  UT_Array<GroupBindings> myGroupBindings;
1247  bool myAutobind;
1248  bool myGroupAutobind;
1249  int64 myBindClass;
1250  UT_StringHolder myBindGroup;
1251  int64 myBindGroupType;
1252  bool myMultiThread;
1253  bool myUpdateNormals;
1254  int64 myNumCount;
1255  int64 myThreadJobSize;
1256  UT_StringHolder myMatchAttrib;
1257  UT_StringHolder mySelectionGroup;
1258  bool myCookInPlace;
1259  UT_StringHolder myVexPrecision;
1260  int64 myVexSource;
1261  UT_StringHolder mySnippet;
1262  bool myEnforcePrototypes;
1263  UT_StringHolder myExportList;
1264 
1265 };
const char * getNestParmName(TempIndex fieldnum) const override
ParmType getNestParmType(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, fpreal64 &v)
const UT_Array< GroupBindings > & getGroupBindings() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void setExportList(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
UT_StringHolder opinstBindings_bindparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint opGroupBindings(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
const UT_StringHolder & getMatchAttrib() const
bool operator==(const GroupBindings &src) const
UT_StringHolder opExportList(const SOP_NodeVerb::CookParms &cookparms) const
void
Definition: png.h:1083
UT_StringHolder opVexOutputMask(const SOP_NodeVerb::CookParms &cookparms) const
exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
UT_StringHolder opVexCWD(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getTime() const
Definition: OP_Context.h:62
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const UT_StringHolder & getVexPrecision() const
UT_StringHolder opMatchAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setVexCWD(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
SYS_FORCE_INLINE const char * buffer() const
int64 opVexSource(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getExportList() const
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setMatchAttrib(const UT_StringHolder &val)
**But if you need a result
Definition: thread.h:613
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool operator!=(const Bindings &src) const
static void saveData(std::ostream &os, fpreal64 v)
UT_StringHolder createString(const UT_Array< Bindings > &list) const
int64 opNumCount(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
UT_StringHolder opGroupBindings_bindgroupparm(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void loadData(UT_IStream &is, bool &v)
void copyFrom(const OP_NodeParms *src) override
static void saveData(std::ostream &os, UT_Matrix3D v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
UT_StringHolder opGroupBindings_bindgroupname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setBindGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Matrix4D v)
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
UT_StringHolder createString(const UT_Array< GroupBindings > &list) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool opMultiThread(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_Vector2D v)
const UT_StringHolder & getBindGroup() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setGroupBindings(const UT_Array< GroupBindings > &val)
const UT_StringHolder & getSelectionGroup() const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
UT_StringHolder opSnippet(const SOP_NodeVerb::CookParms &cookparms) const
bool opGroupAutobind(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
UT_StringHolder opinstGroupBindings_bindgroupname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void save(std::ostream &os) const
const UT_StringHolder & getVexCWD() const
exint length() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opVexPrecision(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool isParmColorRamp(exint idx) const override
bool operator!=(const GroupBindings &src) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, UT_StringHolder s)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_StringHolder opBindings_bindparm(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, UT_Vector3D v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void saveData(std::ostream &os, UT_Vector4D v)
const UT_Array< Bindings > & getBindings() const
bool operator==(const SOP_AttribVopParms &src) 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 doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool load(UT_IStream &is)
bool operator==(const Bindings &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void loadData(UT_IStream &is, int64 &v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
static void loadData(UT_IStream &is, UT_Vector2I &v)
UT_StringHolder opBindGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setSnippet(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
UT_StringHolder opSelectionGroup(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
void setBindings(const UT_Array< Bindings > &val)
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
int64 opBindGroupType(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool opUpdateNormals(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
UT_StringHolder opinstGroupBindings_bindgroupparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
bool operator!=(const SOP_AttribVopParms &src) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
GLuint GLfloat * val
Definition: glcorearb.h:1608
const UT_StringHolder & getVexOutputMask() const
#define SOP_API
Definition: SOP_API.h:10
void setSelectionGroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
bool opCookInPlace(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
int64 opBindClass(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void saveData(std::ostream &os, UT_Matrix2D v)
void setVexOutputMask(const UT_StringHolder &val)
int64 opThreadJobSize(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setVexPrecision(const UT_StringHolder &val)
type
Definition: core.h:1059
UT_StringHolder opBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_StringHolder & getSnippet() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, int64 v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override