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 <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 
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  myScript = ""_UTsh;
146  mySnippet = ""_UTsh;
147  myEnforcePrototypes = false;
148  myExportList = "*"_UTsh;
149  myStrictVariables = true;
150 
151  }
152 
153  explicit SOP_AttribVopParms(const SOP_AttribVopParms &) = default;
154  SOP_AttribVopParms &operator=(const SOP_AttribVopParms &) = default;
155  SOP_AttribVopParms(SOP_AttribVopParms &&) noexcept = default;
156  SOP_AttribVopParms &operator=(SOP_AttribVopParms &&) noexcept = default;
157 
158  ~SOP_AttribVopParms() override {}
159 
160  bool operator==(const SOP_AttribVopParms &src) const
161  {
162  if (myVexCWD != src.myVexCWD) return false;
163  if (myVexOutputMask != src.myVexOutputMask) return false;
164  if (myBindings != src.myBindings) return false;
165  if (myGroupBindings != src.myGroupBindings) return false;
166  if (myAutobind != src.myAutobind) return false;
167  if (myGroupAutobind != src.myGroupAutobind) return false;
168  if (myBindClass != src.myBindClass) return false;
169  if (myBindGroup != src.myBindGroup) return false;
170  if (myBindGroupType != src.myBindGroupType) return false;
171  if (myMultiThread != src.myMultiThread) return false;
172  if (myUpdateNormals != src.myUpdateNormals) return false;
173  if (myNumCount != src.myNumCount) return false;
174  if (myThreadJobSize != src.myThreadJobSize) return false;
175  if (myMatchAttrib != src.myMatchAttrib) return false;
176  if (mySelectionGroup != src.mySelectionGroup) return false;
177  if (myCookInPlace != src.myCookInPlace) return false;
178  if (myVexPrecision != src.myVexPrecision) return false;
179  if (myVexSource != src.myVexSource) return false;
180  if (myScript != src.myScript) return false;
181  if (mySnippet != src.mySnippet) return false;
182  if (myEnforcePrototypes != src.myEnforcePrototypes) return false;
183  if (myExportList != src.myExportList) return false;
184  if (myStrictVariables != src.myStrictVariables) return false;
185 
186 
187  if (baseGetSignature() != src.baseGetSignature()) return false;
188 
189  return true;
190  }
191  bool operator!=(const SOP_AttribVopParms &src) const
192  {
193  return !operator==(src);
194  }
195 
196 
197 
198  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
199  {
200  myVexCWD = ""_UTsh;
201  if (true)
202  graph->evalOpParm(myVexCWD, nodeidx, "vex_cwdpath", time, graph->isDirect()?nullptr:depnode);
203  myVexOutputMask = "*"_UTsh;
204  if (true)
205  graph->evalOpParm(myVexOutputMask, nodeidx, "vex_outputmask", time, graph->isDirect()?nullptr:depnode);
206  if (true)
207  {
208  int64 length = 0;
209  graph->evalOpParm(length, nodeidx, "bindings", time, graph->isDirect()?nullptr:depnode);
210  if (length < 0) length = 0;
211  myBindings.setSize(length);
212  for (exint i = 0; i < length; i++)
213  {
214  int parmidx[1];
215  int offsets[1];
216  parmidx[0] = i+1;
217  offsets[0] = 1;
218  auto && _curentry = myBindings(i);
219  (void) _curentry;
220  _curentry.bindname = ""_UTsh;
221  if (true)
222  graph->evalOpParmInst(_curentry.bindname, nodeidx, "bindname#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
223  _curentry.bindparm = ""_UTsh;
224  if (true)
225  graph->evalOpParmInst(_curentry.bindparm, nodeidx, "bindparm#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
226 
227  }
228  }
229  else
230  myBindings.clear();
231  if (true)
232  {
233  int64 length = 0;
234  graph->evalOpParm(length, nodeidx, "groupbindings", time, graph->isDirect()?nullptr:depnode);
235  if (length < 0) length = 0;
236  myGroupBindings.setSize(length);
237  for (exint i = 0; i < length; i++)
238  {
239  int parmidx[1];
240  int offsets[1];
241  parmidx[0] = i+1;
242  offsets[0] = 1;
243  auto && _curentry = myGroupBindings(i);
244  (void) _curentry;
245  _curentry.bindgroupname = ""_UTsh;
246  if (true)
247  graph->evalOpParmInst(_curentry.bindgroupname, nodeidx, "bindgroupname#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
248  _curentry.bindgroupparm = ""_UTsh;
249  if (true)
250  graph->evalOpParmInst(_curentry.bindgroupparm, nodeidx, "bindgroupparm#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
251 
252  }
253  }
254  else
255  myGroupBindings.clear();
256  myAutobind = true;
257  if (true)
258  graph->evalOpParm(myAutobind, nodeidx, "autobind", time, graph->isDirect()?nullptr:depnode);
259  myGroupAutobind = true;
260  if (true)
261  graph->evalOpParm(myGroupAutobind, nodeidx, "groupautobind", time, graph->isDirect()?nullptr:depnode);
262  myBindClass = 2;
263  if (true)
264  graph->evalOpParm(myBindClass, nodeidx, "bindclass", time, graph->isDirect()?nullptr:depnode);
265  myBindGroup = ""_UTsh;
266  if (true)
267  graph->evalOpParm(myBindGroup, nodeidx, "bindgroup", time, graph->isDirect()?nullptr:depnode);
268  myBindGroupType = 0;
269  if (true)
270  graph->evalOpParm(myBindGroupType, nodeidx, "bindgrouptype", time, graph->isDirect()?nullptr:depnode);
271  myMultiThread = true;
272  if (true)
273  graph->evalOpParm(myMultiThread, nodeidx, "vex_multithread", time, graph->isDirect()?nullptr:depnode);
274  myUpdateNormals = false;
275  if (true)
276  graph->evalOpParm(myUpdateNormals, nodeidx, "vex_updatenmls", time, graph->isDirect()?nullptr:depnode);
277  myNumCount = 10;
278  if (true && ( (getBindClass()==4) ) )
279  graph->evalOpParm(myNumCount, nodeidx, "vex_numcount", time, graph->isDirect()?nullptr:depnode);
280  myThreadJobSize = 1024;
281  if (true && ( (getBindClass()==4) ) )
282  graph->evalOpParm(myThreadJobSize, nodeidx, "vex_threadjobsize", time, graph->isDirect()?nullptr:depnode);
283  myMatchAttrib = "id"_UTsh;
284  if (true)
285  graph->evalOpParm(myMatchAttrib, nodeidx, "vex_matchattrib", time, graph->isDirect()?nullptr:depnode);
286  mySelectionGroup = ""_UTsh;
287  if (true)
288  graph->evalOpParm(mySelectionGroup, nodeidx, "vex_selectiongroup", time, graph->isDirect()?nullptr:depnode);
289  myCookInPlace = false;
290  if (true)
291  graph->evalOpParm(myCookInPlace, nodeidx, "vex_inplace", time, graph->isDirect()?nullptr:depnode);
292  myVexPrecision = "auto"_UTsh;
293  if (true)
294  graph->evalOpParm(myVexPrecision, nodeidx, "vex_precision", time, graph->isDirect()?nullptr:depnode);
295  myVexSource = 3;
296  if (true)
297  graph->evalOpParm(myVexSource, nodeidx, "vexsrc", time, graph->isDirect()?nullptr:depnode);
298  myScript = ""_UTsh;
299  if (true && ( (getVexSource()==2) ) )
300  graph->evalOpParm(myScript, nodeidx, "script", time, graph->isDirect()?nullptr:depnode);
301  mySnippet = ""_UTsh;
302  if (true && ( (getVexSource()==3) ) )
303  graph->evalOpParm(mySnippet, nodeidx, "vexsnippet", time, graph->isDirect()?nullptr:depnode);
304  myEnforcePrototypes = false;
305  if (true && ( (getVexSource()==3) ) )
306  graph->evalOpParm(myEnforcePrototypes, nodeidx, "vex_strict", time, graph->isDirect()?nullptr:depnode);
307  myExportList = "*"_UTsh;
308  if (true && ( (getVexSource()==3) ) )
309  graph->evalOpParm(myExportList, nodeidx, "vex_exportlist", time, graph->isDirect()?nullptr:depnode);
310  myStrictVariables = true;
311  if (true && ( (getVexSource()==3) ) )
312  graph->evalOpParm(myStrictVariables, nodeidx, "vex_strictvariables", time, graph->isDirect()?nullptr:depnode);
313 
314  }
315 
316 
317  void loadFromOpSubclass(const LoadParms &loadparms) override
318  {
319  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
320  }
321 
322 
323  void copyFrom(const OP_NodeParms *src) override
324  {
325  *this = *((const SOP_AttribVopParms *)src);
326  }
327 
328  template <typename T>
329  void
330  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
331  {
332  if (idx.size() < 1)
333  return;
334  UT_ASSERT(idx.size() == instance.size()+1);
335  if (idx.size() != instance.size()+1)
336  return;
337  switch (idx[0])
338  {
339  case 0:
340  coerceValue(value, myVexCWD);
341  break;
342  case 1:
343  coerceValue(value, myVexOutputMask);
344  break;
345  case 2:
346  if (idx.size() == 1)
347  coerceValue(value, myBindings.entries());
348  else if (instance[0] < myBindings.entries())
349  {
350  auto && _data = myBindings(instance[0]);
351  switch (idx[1])
352  {
353  case 0:
354  coerceValue(value, _data.bindname);
355  break;
356  case 1:
357  coerceValue(value, _data.bindparm);
358  break;
359 
360  }
361  }
362  break;
363  case 3:
364  if (idx.size() == 1)
365  coerceValue(value, myGroupBindings.entries());
366  else if (instance[0] < myGroupBindings.entries())
367  {
368  auto && _data = myGroupBindings(instance[0]);
369  switch (idx[1])
370  {
371  case 0:
372  coerceValue(value, _data.bindgroupname);
373  break;
374  case 1:
375  coerceValue(value, _data.bindgroupparm);
376  break;
377 
378  }
379  }
380  break;
381  case 4:
382  coerceValue(value, myAutobind);
383  break;
384  case 5:
385  coerceValue(value, myGroupAutobind);
386  break;
387  case 6:
388  coerceValue(value, myBindClass);
389  break;
390  case 7:
391  coerceValue(value, myBindGroup);
392  break;
393  case 8:
394  coerceValue(value, myBindGroupType);
395  break;
396  case 9:
397  coerceValue(value, myMultiThread);
398  break;
399  case 10:
400  coerceValue(value, myUpdateNormals);
401  break;
402  case 11:
403  coerceValue(value, myNumCount);
404  break;
405  case 12:
406  coerceValue(value, myThreadJobSize);
407  break;
408  case 13:
409  coerceValue(value, myMatchAttrib);
410  break;
411  case 14:
412  coerceValue(value, mySelectionGroup);
413  break;
414  case 15:
415  coerceValue(value, myCookInPlace);
416  break;
417  case 16:
418  coerceValue(value, myVexPrecision);
419  break;
420  case 17:
421  coerceValue(value, myVexSource);
422  break;
423  case 18:
424  coerceValue(value, myScript);
425  break;
426  case 19:
427  coerceValue(value, mySnippet);
428  break;
429  case 20:
430  coerceValue(value, myEnforcePrototypes);
431  break;
432  case 21:
433  coerceValue(value, myExportList);
434  break;
435  case 22:
436  coerceValue(value, myStrictVariables);
437  break;
438 
439  }
440  }
441 
442  bool isParmColorRamp(exint idx) const override
443  {
444  switch (idx)
445  {
446 
447  }
448  return false;
449  }
450 
451  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
452  { doGetParmValue(idx, instance, value); }
453  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
454  { doGetParmValue(idx, instance, value); }
455  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
456  { doGetParmValue(idx, instance, value); }
457  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
458  { doGetParmValue(idx, instance, value); }
459  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
460  { doGetParmValue(idx, instance, value); }
461  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
462  { doGetParmValue(idx, instance, value); }
463  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
464  { doGetParmValue(idx, instance, value); }
465  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
466  { doGetParmValue(idx, instance, value); }
467  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
468  { doGetParmValue(idx, instance, value); }
469  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
470  { doGetParmValue(idx, instance, value); }
471  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
472  { doGetParmValue(idx, instance, value); }
473 
474  template <typename T>
475  void
476  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
477  {
478  if (idx.size() < 1)
479  return;
480  UT_ASSERT(idx.size() == instance.size()+1);
481  if (idx.size() != instance.size()+1)
482  return;
483  switch (idx[0])
484  {
485  case 0:
486  coerceValue(myVexCWD, ( ( value ) ));
487  break;
488  case 1:
489  coerceValue(myVexOutputMask, ( ( value ) ));
490  break;
491  case 2:
492  if (idx.size() == 1)
493  {
494  exint newsize;
495  coerceValue(newsize, value);
496  if (newsize < 0) newsize = 0;
497  myBindings.setSize(newsize);
498  }
499  else
500  {
501  if (instance[0] < 0)
502  return;
503  myBindings.setSizeIfNeeded(instance[0]+1);
504  auto && _data = myBindings(instance[0]);
505  switch (idx[1])
506  {
507  case 0:
508  coerceValue(_data.bindname, value);
509  break;
510  case 1:
511  coerceValue(_data.bindparm, value);
512  break;
513 
514  }
515  }
516  break;
517  case 3:
518  if (idx.size() == 1)
519  {
520  exint newsize;
521  coerceValue(newsize, value);
522  if (newsize < 0) newsize = 0;
523  myGroupBindings.setSize(newsize);
524  }
525  else
526  {
527  if (instance[0] < 0)
528  return;
529  myGroupBindings.setSizeIfNeeded(instance[0]+1);
530  auto && _data = myGroupBindings(instance[0]);
531  switch (idx[1])
532  {
533  case 0:
534  coerceValue(_data.bindgroupname, value);
535  break;
536  case 1:
537  coerceValue(_data.bindgroupparm, value);
538  break;
539 
540  }
541  }
542  break;
543  case 4:
544  coerceValue(myAutobind, ( ( value ) ));
545  break;
546  case 5:
547  coerceValue(myGroupAutobind, ( ( value ) ));
548  break;
549  case 6:
550  coerceValue(myBindClass, ( ( value ) ));
551  break;
552  case 7:
553  coerceValue(myBindGroup, ( ( value ) ));
554  break;
555  case 8:
556  coerceValue(myBindGroupType, ( ( value ) ));
557  break;
558  case 9:
559  coerceValue(myMultiThread, ( ( value ) ));
560  break;
561  case 10:
562  coerceValue(myUpdateNormals, ( ( value ) ));
563  break;
564  case 11:
565  coerceValue(myNumCount, ( ( value ) ));
566  break;
567  case 12:
568  coerceValue(myThreadJobSize, ( ( value ) ));
569  break;
570  case 13:
571  coerceValue(myMatchAttrib, ( ( value ) ));
572  break;
573  case 14:
574  coerceValue(mySelectionGroup, ( ( value ) ));
575  break;
576  case 15:
577  coerceValue(myCookInPlace, ( ( value ) ));
578  break;
579  case 16:
580  coerceValue(myVexPrecision, ( ( value ) ));
581  break;
582  case 17:
583  coerceValue(myVexSource, ( ( value ) ));
584  break;
585  case 18:
586  coerceValue(myScript, ( ( value ) ));
587  break;
588  case 19:
589  coerceValue(mySnippet, ( ( value ) ));
590  break;
591  case 20:
592  coerceValue(myEnforcePrototypes, ( ( value ) ));
593  break;
594  case 21:
595  coerceValue(myExportList, ( ( value ) ));
596  break;
597  case 22:
598  coerceValue(myStrictVariables, ( ( value ) ));
599  break;
600 
601  }
602  }
603 
604  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
605  { doSetParmValue(idx, instance, value); }
606  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
607  { doSetParmValue(idx, instance, value); }
608  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
609  { doSetParmValue(idx, instance, value); }
610  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
611  { doSetParmValue(idx, instance, value); }
612  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
613  { doSetParmValue(idx, instance, value); }
614  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
615  { doSetParmValue(idx, instance, value); }
616  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
617  { doSetParmValue(idx, instance, value); }
618  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
619  { doSetParmValue(idx, instance, value); }
620  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
621  { doSetParmValue(idx, instance, value); }
622  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
623  { doSetParmValue(idx, instance, value); }
624  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
625  { doSetParmValue(idx, instance, value); }
626 
627  exint getNestNumParms(TempIndex idx) const override
628  {
629  if (idx.size() == 0)
630  return 23;
631  switch (idx[0])
632  {
633  case 2:
634  return 2;
635  case 3:
636  return 2;
637 
638  }
639  // Invalid
640  return 0;
641  }
642 
643  const char *getNestParmName(TempIndex fieldnum) const override
644  {
645  if (fieldnum.size() < 1)
646  return 0;
647  switch (fieldnum[0])
648  {
649  case 0:
650  return "vex_cwdpath";
651  case 1:
652  return "vex_outputmask";
653  case 2:
654  if (fieldnum.size() == 1)
655  return "bindings";
656  switch (fieldnum[1])
657  {
658  case 0:
659  return "bindname#";
660  case 1:
661  return "bindparm#";
662 
663  }
664  return 0;
665  case 3:
666  if (fieldnum.size() == 1)
667  return "groupbindings";
668  switch (fieldnum[1])
669  {
670  case 0:
671  return "bindgroupname#";
672  case 1:
673  return "bindgroupparm#";
674 
675  }
676  return 0;
677  case 4:
678  return "autobind";
679  case 5:
680  return "groupautobind";
681  case 6:
682  return "bindclass";
683  case 7:
684  return "bindgroup";
685  case 8:
686  return "bindgrouptype";
687  case 9:
688  return "vex_multithread";
689  case 10:
690  return "vex_updatenmls";
691  case 11:
692  return "vex_numcount";
693  case 12:
694  return "vex_threadjobsize";
695  case 13:
696  return "vex_matchattrib";
697  case 14:
698  return "vex_selectiongroup";
699  case 15:
700  return "vex_inplace";
701  case 16:
702  return "vex_precision";
703  case 17:
704  return "vexsrc";
705  case 18:
706  return "script";
707  case 19:
708  return "vexsnippet";
709  case 20:
710  return "vex_strict";
711  case 21:
712  return "vex_exportlist";
713  case 22:
714  return "vex_strictvariables";
715 
716  }
717  return 0;
718  }
719 
720  ParmType getNestParmType(TempIndex fieldnum) const override
721  {
722  if (fieldnum.size() < 1)
723  return PARM_UNSUPPORTED;
724  switch (fieldnum[0])
725  {
726  case 0:
727  return PARM_STRING;
728  case 1:
729  return PARM_STRING;
730  case 2:
731  if (fieldnum.size() == 1)
732  return PARM_MULTIPARM;
733  switch (fieldnum[1])
734  {
735  case 0:
736  return PARM_STRING;
737  case 1:
738  return PARM_STRING;
739 
740  }
741  return PARM_UNSUPPORTED;
742  case 3:
743  if (fieldnum.size() == 1)
744  return PARM_MULTIPARM;
745  switch (fieldnum[1])
746  {
747  case 0:
748  return PARM_STRING;
749  case 1:
750  return PARM_STRING;
751 
752  }
753  return PARM_UNSUPPORTED;
754  case 4:
755  return PARM_INTEGER;
756  case 5:
757  return PARM_INTEGER;
758  case 6:
759  return PARM_INTEGER;
760  case 7:
761  return PARM_STRING;
762  case 8:
763  return PARM_INTEGER;
764  case 9:
765  return PARM_INTEGER;
766  case 10:
767  return PARM_INTEGER;
768  case 11:
769  return PARM_INTEGER;
770  case 12:
771  return PARM_INTEGER;
772  case 13:
773  return PARM_STRING;
774  case 14:
775  return PARM_STRING;
776  case 15:
777  return PARM_INTEGER;
778  case 16:
779  return PARM_STRING;
780  case 17:
781  return PARM_INTEGER;
782  case 18:
783  return PARM_STRING;
784  case 19:
785  return PARM_STRING;
786  case 20:
787  return PARM_INTEGER;
788  case 21:
789  return PARM_STRING;
790  case 22:
791  return PARM_INTEGER;
792 
793  }
794  return PARM_UNSUPPORTED;
795  }
796 
797  // Boiler plate to load individual types.
798  static void loadData(UT_IStream &is, int64 &v)
799  { is.bread(&v, 1); }
800  static void loadData(UT_IStream &is, bool &v)
801  { int64 iv; is.bread(&iv, 1); v = iv; }
802  static void loadData(UT_IStream &is, fpreal64 &v)
803  { is.bread<fpreal64>(&v, 1); }
804  static void loadData(UT_IStream &is, UT_Vector2D &v)
805  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
806  static void loadData(UT_IStream &is, UT_Vector3D &v)
807  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
808  is.bread<fpreal64>(&v.z(), 1); }
809  static void loadData(UT_IStream &is, UT_Vector4D &v)
810  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
811  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
812  static void loadData(UT_IStream &is, UT_Matrix2D &v)
813  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
814  static void loadData(UT_IStream &is, UT_Matrix3D &v)
815  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
816  static void loadData(UT_IStream &is, UT_Matrix4D &v)
817  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
818  static void loadData(UT_IStream &is, UT_Vector2I &v)
819  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
820  static void loadData(UT_IStream &is, UT_Vector3I &v)
821  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
822  is.bread<int64>(&v.z(), 1); }
823  static void loadData(UT_IStream &is, UT_Vector4I &v)
824  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
825  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
827  { is.bread(v); }
829  { UT_StringHolder rampdata;
830  loadData(is, rampdata);
831  if (rampdata.isstring())
832  {
833  v.reset(new UT_Ramp());
834  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
835  v->load(istr);
836  }
837  else v.reset();
838  }
841  loadData(is, data);
842  if (data.isstring())
843  {
844  // Find the data type.
845  const char *colon = UT_StringWrap(data).findChar(':');
846  if (colon)
847  {
848  int typelen = colon - data.buffer();
850  type.strncpy(data.buffer(), typelen);
851  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
852 
853  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
854  }
855  }
856  else v.reset();
857  }
858 
859  static void saveData(std::ostream &os, int64 v)
860  { UTwrite(os, &v); }
861  static void saveData(std::ostream &os, bool v)
862  { int64 iv = v; UTwrite(os, &iv); }
863  static void saveData(std::ostream &os, fpreal64 v)
864  { UTwrite<fpreal64>(os, &v); }
865  static void saveData(std::ostream &os, UT_Vector2D v)
866  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
867  static void saveData(std::ostream &os, UT_Vector3D v)
868  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
869  UTwrite<fpreal64>(os, &v.z()); }
870  static void saveData(std::ostream &os, UT_Vector4D v)
871  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
872  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
873  static void saveData(std::ostream &os, UT_Matrix2D v)
875  static void saveData(std::ostream &os, UT_Matrix3D v)
877  static void saveData(std::ostream &os, UT_Matrix4D v)
879  static void saveData(std::ostream &os, UT_StringHolder s)
880  { UT_StringWrap(s).saveBinary(os); }
881  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
883  UT_OStringStream ostr;
884  if (s) s->save(ostr);
885  result = ostr.str();
886  saveData(os, result);
887  }
888  static void saveData(std::ostream &os, PRM_DataItemHandle s)
890  UT_OStringStream ostr;
891  if (s)
892  {
893  ostr << s->getDataTypeToken();
894  ostr << ":";
895  s->saveBinary(ostr);
896  }
897  result = ostr.str();
898  saveData(os, result);
899  }
900 
901 
902  void save(std::ostream &os) const
903  {
904  int32 v = version();
905  UTwrite(os, &v);
906  saveData(os, myVexCWD);
907  saveData(os, myVexOutputMask);
908  {
909  int64 length = myBindings.entries();
910  UTwrite(os, &length);
911  for (exint i = 0; i < length; i++)
912  {
913  auto && _curentry = myBindings(i);
914  (void) _curentry;
915  saveData(os, _curentry.bindname);
916  saveData(os, _curentry.bindparm);
917 
918  }
919  }
920  {
921  int64 length = myGroupBindings.entries();
922  UTwrite(os, &length);
923  for (exint i = 0; i < length; i++)
924  {
925  auto && _curentry = myGroupBindings(i);
926  (void) _curentry;
927  saveData(os, _curentry.bindgroupname);
928  saveData(os, _curentry.bindgroupparm);
929 
930  }
931  }
932  saveData(os, myAutobind);
933  saveData(os, myGroupAutobind);
934  saveData(os, myBindClass);
935  saveData(os, myBindGroup);
936  saveData(os, myBindGroupType);
937  saveData(os, myMultiThread);
938  saveData(os, myUpdateNormals);
939  saveData(os, myNumCount);
940  saveData(os, myThreadJobSize);
941  saveData(os, myMatchAttrib);
942  saveData(os, mySelectionGroup);
943  saveData(os, myCookInPlace);
944  saveData(os, myVexPrecision);
945  saveData(os, myVexSource);
946  saveData(os, myScript);
947  saveData(os, mySnippet);
948  saveData(os, myEnforcePrototypes);
949  saveData(os, myExportList);
950  saveData(os, myStrictVariables);
951 
952  }
953 
954  bool load(UT_IStream &is)
955  {
956  int32 v;
957  is.bread(&v, 1);
958  if (version() != v)
959  {
960  // Fail incompatible versions
961  return false;
962  }
963  loadData(is, myVexCWD);
964  loadData(is, myVexOutputMask);
965  {
966  int64 length;
967  is.read(&length, 1);
968  myBindings.setSize(length);
969  for (exint i = 0; i < length; i++)
970  {
971  auto && _curentry = myBindings(i);
972  (void) _curentry;
973  loadData(is, _curentry.bindname);
974  loadData(is, _curentry.bindparm);
975 
976  }
977  }
978  {
979  int64 length;
980  is.read(&length, 1);
981  myGroupBindings.setSize(length);
982  for (exint i = 0; i < length; i++)
983  {
984  auto && _curentry = myGroupBindings(i);
985  (void) _curentry;
986  loadData(is, _curentry.bindgroupname);
987  loadData(is, _curentry.bindgroupparm);
988 
989  }
990  }
991  loadData(is, myAutobind);
992  loadData(is, myGroupAutobind);
993  loadData(is, myBindClass);
994  loadData(is, myBindGroup);
995  loadData(is, myBindGroupType);
996  loadData(is, myMultiThread);
997  loadData(is, myUpdateNormals);
998  loadData(is, myNumCount);
999  loadData(is, myThreadJobSize);
1000  loadData(is, myMatchAttrib);
1001  loadData(is, mySelectionGroup);
1002  loadData(is, myCookInPlace);
1003  loadData(is, myVexPrecision);
1004  loadData(is, myVexSource);
1005  loadData(is, myScript);
1006  loadData(is, mySnippet);
1007  loadData(is, myEnforcePrototypes);
1008  loadData(is, myExportList);
1009  loadData(is, myStrictVariables);
1010 
1011  return true;
1012  }
1013 
1014  const UT_StringHolder & getVexCWD() const { return myVexCWD; }
1015  void setVexCWD(const UT_StringHolder & val) { myVexCWD = val; }
1017  {
1018  SOP_Node *thissop = cookparms.getNode();
1019  if (!thissop) return getVexCWD();
1021  OP_Utils::evalOpParm(result, thissop, "vex_cwdpath", cookparms.getCookTime(), 0);
1022  return result;
1023  }
1024  const UT_StringHolder & getVexOutputMask() const { return myVexOutputMask; }
1025  void setVexOutputMask(const UT_StringHolder & val) { myVexOutputMask = val; }
1027  {
1028  SOP_Node *thissop = cookparms.getNode();
1029  if (!thissop) return getVexOutputMask();
1031  OP_Utils::evalOpParm(result, thissop, "vex_outputmask", cookparms.getCookTime(), 0);
1032  return result;
1033  }
1034  const UT_Array<Bindings> &getBindings() const { return myBindings; }
1035 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
1036  exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
1037  {
1038  SOP_Node *thissop = cookparms.getNode();
1039  if (!thissop) return getBindings().entries();
1040  exint result;
1041  OP_Utils::evalOpParm(result, thissop, "bindings", cookparms.getCookTime(), 0);
1042  return result;
1043  }
1045  { return opinstBindings_bindname(cookparms, &_idx); }
1046  UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1047  {
1048  SOP_Node *thissop = cookparms.getNode();
1049  if (!thissop) return (myBindings(_idx[0]).bindname);
1050  int _parmidx[2-1];
1051  _parmidx[1-1] = _idx[1-1] + 1;
1052 
1054  OP_Utils::evalOpParmInst(result, thissop, "bindname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1055  return (result);
1056  }
1058  { return opinstBindings_bindparm(cookparms, &_idx); }
1059  UT_StringHolder opinstBindings_bindparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1060  {
1061  SOP_Node *thissop = cookparms.getNode();
1062  if (!thissop) return (myBindings(_idx[0]).bindparm);
1063  int _parmidx[2-1];
1064  _parmidx[1-1] = _idx[1-1] + 1;
1065 
1067  OP_Utils::evalOpParmInst(result, thissop, "bindparm#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1068  return (result);
1069  }
1070 
1071  const UT_Array<GroupBindings> &getGroupBindings() const { return myGroupBindings; }
1072 void setGroupBindings(const UT_Array<GroupBindings> &val) { myGroupBindings = val; }
1074  {
1075  SOP_Node *thissop = cookparms.getNode();
1076  if (!thissop) return getGroupBindings().entries();
1077  exint result;
1078  OP_Utils::evalOpParm(result, thissop, "groupbindings", cookparms.getCookTime(), 0);
1079  return result;
1080  }
1082  { return opinstGroupBindings_bindgroupname(cookparms, &_idx); }
1084  {
1085  SOP_Node *thissop = cookparms.getNode();
1086  if (!thissop) return (myGroupBindings(_idx[0]).bindgroupname);
1087  int _parmidx[2-1];
1088  _parmidx[1-1] = _idx[1-1] + 1;
1089 
1091  OP_Utils::evalOpParmInst(result, thissop, "bindgroupname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1092  return (result);
1093  }
1095  { return opinstGroupBindings_bindgroupparm(cookparms, &_idx); }
1097  {
1098  SOP_Node *thissop = cookparms.getNode();
1099  if (!thissop) return (myGroupBindings(_idx[0]).bindgroupparm);
1100  int _parmidx[2-1];
1101  _parmidx[1-1] = _idx[1-1] + 1;
1102 
1104  OP_Utils::evalOpParmInst(result, thissop, "bindgroupparm#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1105  return (result);
1106  }
1107 
1108  bool getAutobind() const { return myAutobind; }
1109  void setAutobind(bool val) { myAutobind = val; }
1110  bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
1111  {
1112  SOP_Node *thissop = cookparms.getNode();
1113  if (!thissop) return getAutobind();
1114  bool result;
1115  OP_Utils::evalOpParm(result, thissop, "autobind", cookparms.getCookTime(), 0);
1116  return result;
1117  }
1118  bool getGroupAutobind() const { return myGroupAutobind; }
1119  void setGroupAutobind(bool val) { myGroupAutobind = val; }
1120  bool opGroupAutobind(const SOP_NodeVerb::CookParms &cookparms) const
1121  {
1122  SOP_Node *thissop = cookparms.getNode();
1123  if (!thissop) return getGroupAutobind();
1124  bool result;
1125  OP_Utils::evalOpParm(result, thissop, "groupautobind", cookparms.getCookTime(), 0);
1126  return result;
1127  }
1128  int64 getBindClass() const { return myBindClass; }
1129  void setBindClass(int64 val) { myBindClass = val; }
1131  {
1132  SOP_Node *thissop = cookparms.getNode();
1133  if (!thissop) return getBindClass();
1134  int64 result;
1135  OP_Utils::evalOpParm(result, thissop, "bindclass", cookparms.getCookTime(), 0);
1136  return result;
1137  }
1138  const UT_StringHolder & getBindGroup() const { return myBindGroup; }
1139  void setBindGroup(const UT_StringHolder & val) { myBindGroup = val; }
1141  {
1142  SOP_Node *thissop = cookparms.getNode();
1143  if (!thissop) return getBindGroup();
1145  OP_Utils::evalOpParm(result, thissop, "bindgroup", cookparms.getCookTime(), 0);
1146  return result;
1147  }
1148  int64 getBindGroupType() const { return myBindGroupType; }
1149  void setBindGroupType(int64 val) { myBindGroupType = val; }
1151  {
1152  SOP_Node *thissop = cookparms.getNode();
1153  if (!thissop) return getBindGroupType();
1154  int64 result;
1155  OP_Utils::evalOpParm(result, thissop, "bindgrouptype", cookparms.getCookTime(), 0);
1156  return result;
1157  }
1158  bool getMultiThread() const { return myMultiThread; }
1159  void setMultiThread(bool val) { myMultiThread = val; }
1160  bool opMultiThread(const SOP_NodeVerb::CookParms &cookparms) const
1161  {
1162  SOP_Node *thissop = cookparms.getNode();
1163  if (!thissop) return getMultiThread();
1164  bool result;
1165  OP_Utils::evalOpParm(result, thissop, "vex_multithread", cookparms.getCookTime(), 0);
1166  return result;
1167  }
1168  bool getUpdateNormals() const { return myUpdateNormals; }
1169  void setUpdateNormals(bool val) { myUpdateNormals = val; }
1170  bool opUpdateNormals(const SOP_NodeVerb::CookParms &cookparms) const
1171  {
1172  SOP_Node *thissop = cookparms.getNode();
1173  if (!thissop) return getUpdateNormals();
1174  bool result;
1175  OP_Utils::evalOpParm(result, thissop, "vex_updatenmls", cookparms.getCookTime(), 0);
1176  return result;
1177  }
1178  int64 getNumCount() const { return myNumCount; }
1179  void setNumCount(int64 val) { myNumCount = val; }
1180  int64 opNumCount(const SOP_NodeVerb::CookParms &cookparms) const
1181  {
1182  SOP_Node *thissop = cookparms.getNode();
1183  if (!thissop) return getNumCount();
1184  int64 result;
1185  OP_Utils::evalOpParm(result, thissop, "vex_numcount", cookparms.getCookTime(), 0);
1186  return result;
1187  }
1188  int64 getThreadJobSize() const { return myThreadJobSize; }
1189  void setThreadJobSize(int64 val) { myThreadJobSize = val; }
1191  {
1192  SOP_Node *thissop = cookparms.getNode();
1193  if (!thissop) return getThreadJobSize();
1194  int64 result;
1195  OP_Utils::evalOpParm(result, thissop, "vex_threadjobsize", cookparms.getCookTime(), 0);
1196  return result;
1197  }
1198  const UT_StringHolder & getMatchAttrib() const { return myMatchAttrib; }
1199  void setMatchAttrib(const UT_StringHolder & val) { myMatchAttrib = val; }
1201  {
1202  SOP_Node *thissop = cookparms.getNode();
1203  if (!thissop) return getMatchAttrib();
1205  OP_Utils::evalOpParm(result, thissop, "vex_matchattrib", cookparms.getCookTime(), 0);
1206  return result;
1207  }
1208  const UT_StringHolder & getSelectionGroup() const { return mySelectionGroup; }
1209  void setSelectionGroup(const UT_StringHolder & val) { mySelectionGroup = val; }
1211  {
1212  SOP_Node *thissop = cookparms.getNode();
1213  if (!thissop) return getSelectionGroup();
1215  OP_Utils::evalOpParm(result, thissop, "vex_selectiongroup", cookparms.getCookTime(), 0);
1216  return result;
1217  }
1218  bool getCookInPlace() const { return myCookInPlace; }
1219  void setCookInPlace(bool val) { myCookInPlace = val; }
1220  bool opCookInPlace(const SOP_NodeVerb::CookParms &cookparms) const
1221  {
1222  SOP_Node *thissop = cookparms.getNode();
1223  if (!thissop) return getCookInPlace();
1224  bool result;
1225  OP_Utils::evalOpParm(result, thissop, "vex_inplace", cookparms.getCookTime(), 0);
1226  return result;
1227  }
1228  const UT_StringHolder & getVexPrecision() const { return myVexPrecision; }
1229  void setVexPrecision(const UT_StringHolder & val) { myVexPrecision = val; }
1231  {
1232  SOP_Node *thissop = cookparms.getNode();
1233  if (!thissop) return getVexPrecision();
1235  OP_Utils::evalOpParm(result, thissop, "vex_precision", cookparms.getCookTime(), 0);
1236  return result;
1237  }
1238  int64 getVexSource() const { return myVexSource; }
1239  void setVexSource(int64 val) { myVexSource = val; }
1241  {
1242  SOP_Node *thissop = cookparms.getNode();
1243  if (!thissop) return getVexSource();
1244  int64 result;
1245  OP_Utils::evalOpParm(result, thissop, "vexsrc", cookparms.getCookTime(), 0);
1246  return result;
1247  }
1248  const UT_StringHolder & getScript() const { return myScript; }
1249  void setScript(const UT_StringHolder & val) { myScript = val; }
1251  {
1252  SOP_Node *thissop = cookparms.getNode();
1253  if (!thissop) return getScript();
1255  OP_Utils::evalOpParm(result, thissop, "script", cookparms.getCookTime(), 0);
1256  return result;
1257  }
1258  const UT_StringHolder & getSnippet() const { return mySnippet; }
1259  void setSnippet(const UT_StringHolder & val) { mySnippet = val; }
1261  {
1262  SOP_Node *thissop = cookparms.getNode();
1263  if (!thissop) return getSnippet();
1265  OP_Utils::evalOpParm(result, thissop, "vexsnippet", cookparms.getCookTime(), 0);
1266  return result;
1267  }
1268  bool getEnforcePrototypes() const { return myEnforcePrototypes; }
1269  void setEnforcePrototypes(bool val) { myEnforcePrototypes = val; }
1270  bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
1271  {
1272  SOP_Node *thissop = cookparms.getNode();
1273  if (!thissop) return getEnforcePrototypes();
1274  bool result;
1275  OP_Utils::evalOpParm(result, thissop, "vex_strict", cookparms.getCookTime(), 0);
1276  return result;
1277  }
1278  const UT_StringHolder & getExportList() const { return myExportList; }
1279  void setExportList(const UT_StringHolder & val) { myExportList = val; }
1281  {
1282  SOP_Node *thissop = cookparms.getNode();
1283  if (!thissop) return getExportList();
1285  OP_Utils::evalOpParm(result, thissop, "vex_exportlist", cookparms.getCookTime(), 0);
1286  return result;
1287  }
1288  bool getStrictVariables() const { return myStrictVariables; }
1289  void setStrictVariables(bool val) { myStrictVariables = val; }
1290  bool opStrictVariables(const SOP_NodeVerb::CookParms &cookparms) const
1291  {
1292  SOP_Node *thissop = cookparms.getNode();
1293  if (!thissop) return getStrictVariables();
1294  bool result;
1295  OP_Utils::evalOpParm(result, thissop, "vex_strictvariables", cookparms.getCookTime(), 0);
1296  return result;
1297  }
1298 
1299 private:
1300  UT_StringHolder myVexCWD;
1301  UT_StringHolder myVexOutputMask;
1302  UT_Array<Bindings> myBindings;
1303  UT_Array<GroupBindings> myGroupBindings;
1304  bool myAutobind;
1305  bool myGroupAutobind;
1306  int64 myBindClass;
1307  UT_StringHolder myBindGroup;
1308  int64 myBindGroupType;
1309  bool myMultiThread;
1310  bool myUpdateNormals;
1311  int64 myNumCount;
1312  int64 myThreadJobSize;
1313  UT_StringHolder myMatchAttrib;
1314  UT_StringHolder mySelectionGroup;
1315  bool myCookInPlace;
1316  UT_StringHolder myVexPrecision;
1317  int64 myVexSource;
1318  UT_StringHolder myScript;
1319  UT_StringHolder mySnippet;
1320  bool myEnforcePrototypes;
1321  UT_StringHolder myExportList;
1322  bool myStrictVariables;
1323 
1324 };
const char * getNestParmName(TempIndex fieldnum) const override
ParmType getNestParmType(TempIndex fieldnum) const override
type
Definition: core.h:556
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:63
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const UT_StringHolder & getVexPrecision() const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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
const UT_StringHolder & getScript() const
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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)
bool opStrictVariables(const SOP_NodeVerb::CookParms &cookparms) const
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:303
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:655
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:310
void setScript(const UT_StringHolder &val)
UT_StringHolder opinstGroupBindings_bindgroupparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
fpreal64 fpreal
Definition: SYS_Types.h:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
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:372
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:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
UT_StringHolder opScript(const SOP_NodeVerb::CookParms &cookparms) const
bool opCookInPlace(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
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)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_StringHolder opBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_StringHolder & getSnippet() const
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