HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Attribute.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 Ptrenames
29  {
32 
33 
35  {
36  frompt = ""_UTsh;
37  topt = ""_UTsh;
38 
39  }
40 
41  bool operator==(const Ptrenames &src) const
42  {
43  if (frompt != src.frompt) return false;
44  if (topt != src.topt) return false;
45 
46  return true;
47  }
48  bool operator!=(const Ptrenames &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).frompt).makeQuotedString('"'); buf.strcat(tmp); }
67  buf.append(", ");
68  { UT_String tmp; tmp = UT_StringWrap(list(i).topt).makeQuotedString('"'); buf.strcat(tmp); }
69 
70  buf.strcat(" )");
71  }
72  buf.strcat(" ]");
73 
75  return result;
76  }
77  struct Vtxrenames
78  {
81 
82 
84  {
85  fromvtx = ""_UTsh;
86  tovtx = ""_UTsh;
87 
88  }
89 
90  bool operator==(const Vtxrenames &src) const
91  {
92  if (fromvtx != src.fromvtx) return false;
93  if (tovtx != src.tovtx) return false;
94 
95  return true;
96  }
97  bool operator!=(const Vtxrenames &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).fromvtx).makeQuotedString('"'); buf.strcat(tmp); }
116  buf.append(", ");
117  { UT_String tmp; tmp = UT_StringWrap(list(i).tovtx).makeQuotedString('"'); buf.strcat(tmp); }
118 
119  buf.strcat(" )");
120  }
121  buf.strcat(" ]");
122 
124  return result;
125  }
126  struct Primrenames
127  {
130 
131 
133  {
134  frompr = ""_UTsh;
135  topr = ""_UTsh;
136 
137  }
138 
139  bool operator==(const Primrenames &src) const
140  {
141  if (frompr != src.frompr) return false;
142  if (topr != src.topr) return false;
143 
144  return true;
145  }
146  bool operator!=(const Primrenames &src) const
147  {
148  return !operator==(src);
149  }
150 
151  };
152 
154  {
156 
157  buf.strcat("[ ");
158  for (int i = 0; i < list.entries(); i++)
159  {
160  if (i)
161  buf.strcat(", ");
162  buf.strcat("( ");
163  buf.append("");
164  { UT_String tmp; tmp = UT_StringWrap(list(i).frompr).makeQuotedString('"'); buf.strcat(tmp); }
165  buf.append(", ");
166  { UT_String tmp; tmp = UT_StringWrap(list(i).topr).makeQuotedString('"'); buf.strcat(tmp); }
167 
168  buf.strcat(" )");
169  }
170  buf.strcat(" ]");
171 
173  return result;
174  }
176  {
179 
180 
182  {
183  fromdtl = ""_UTsh;
184  todtl = ""_UTsh;
185 
186  }
187 
188  bool operator==(const Detailrenames &src) const
189  {
190  if (fromdtl != src.fromdtl) return false;
191  if (todtl != src.todtl) return false;
192 
193  return true;
194  }
195  bool operator!=(const Detailrenames &src) const
196  {
197  return !operator==(src);
198  }
199 
200  };
201 
203  {
205 
206  buf.strcat("[ ");
207  for (int i = 0; i < list.entries(); i++)
208  {
209  if (i)
210  buf.strcat(", ");
211  buf.strcat("( ");
212  buf.append("");
213  { UT_String tmp; tmp = UT_StringWrap(list(i).fromdtl).makeQuotedString('"'); buf.strcat(tmp); }
214  buf.append(", ");
215  { UT_String tmp; tmp = UT_StringWrap(list(i).todtl).makeQuotedString('"'); buf.strcat(tmp); }
216 
217  buf.strcat(" )");
218  }
219  buf.strcat(" ]");
220 
222  return result;
223  }
225  {
230 
231 
233  {
234  hname = ""_UTsh;
235  riname = ""_UTsh;
236  ritype = "vtx_float"_UTsh;
237  rioff = 0;
238 
239  }
240 
241  bool operator==(const Rmanconversions &src) const
242  {
243  if (hname != src.hname) return false;
244  if (riname != src.riname) return false;
245  if (ritype != src.ritype) return false;
246  if (rioff != src.rioff) return false;
247 
248  return true;
249  }
250  bool operator!=(const Rmanconversions &src) const
251  {
252  return !operator==(src);
253  }
254 
255  };
256 
258  {
260 
261  buf.strcat("[ ");
262  for (int i = 0; i < list.entries(); i++)
263  {
264  if (i)
265  buf.strcat(", ");
266  buf.strcat("( ");
267  buf.append("");
268  { UT_String tmp; tmp = UT_StringWrap(list(i).hname).makeQuotedString('"'); buf.strcat(tmp); }
269  buf.append(", ");
270  { UT_String tmp; tmp = UT_StringWrap(list(i).riname).makeQuotedString('"'); buf.strcat(tmp); }
271  buf.append(", ");
272  { UT_String tmp; tmp = UT_StringWrap(list(i).ritype).makeQuotedString('"'); buf.strcat(tmp); }
273  buf.append(", ");
274  buf.appendSprintf("%d", (int) list(i).rioff);
275 
276  buf.strcat(" )");
277  }
278  buf.strcat(" ]");
279 
281  return result;
282  }
283 
285  {
286  myPtrenames.setSize(5);
287  myPtdel = ""_UTsh;
288  myPtkeep = "*"_UTsh;
289  myVtxrenames.setSize(5);
290  myVtxdel = ""_UTsh;
291  myVtxkeep = "*"_UTsh;
292  myPrimrenames.setSize(5);
293  myPrimdel = ""_UTsh;
294  myPrimkeep = "*"_UTsh;
295  myDetailrenames.setSize(5);
296  myDtldel = ""_UTsh;
297  myDtlkeep = "*"_UTsh;
298  myRmanconversions.setSize(5);
299  myRidefault = false;
300  myUpdatevar = true;
301  myOverwrite = false;
302  myEncodenames = false;
303 
304  }
305 
306  explicit SOP_AttributeParms(const SOP_AttributeParms &) = default;
307  SOP_AttributeParms &operator=(const SOP_AttributeParms &) = default;
308  SOP_AttributeParms(SOP_AttributeParms &&) noexcept = default;
309  SOP_AttributeParms &operator=(SOP_AttributeParms &&) noexcept = default;
310 
311  ~SOP_AttributeParms() override {}
312 
313  bool operator==(const SOP_AttributeParms &src) const
314  {
315  if (myPtrenames != src.myPtrenames) return false;
316  if (myPtdel != src.myPtdel) return false;
317  if (myPtkeep != src.myPtkeep) return false;
318  if (myVtxrenames != src.myVtxrenames) return false;
319  if (myVtxdel != src.myVtxdel) return false;
320  if (myVtxkeep != src.myVtxkeep) return false;
321  if (myPrimrenames != src.myPrimrenames) return false;
322  if (myPrimdel != src.myPrimdel) return false;
323  if (myPrimkeep != src.myPrimkeep) return false;
324  if (myDetailrenames != src.myDetailrenames) return false;
325  if (myDtldel != src.myDtldel) return false;
326  if (myDtlkeep != src.myDtlkeep) return false;
327  if (myRmanconversions != src.myRmanconversions) return false;
328  if (myRidefault != src.myRidefault) return false;
329  if (myUpdatevar != src.myUpdatevar) return false;
330  if (myOverwrite != src.myOverwrite) return false;
331  if (myEncodenames != src.myEncodenames) return false;
332 
333  return true;
334  }
335  bool operator!=(const SOP_AttributeParms &src) const
336  {
337  return !operator==(src);
338  }
339 
340 
341 
342  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
343  {
344  if (true)
345  {
346  int64 length = 0;
347  graph->evalOpParm(length, nodeidx, "ptrenames", time, 0);
348  if (length < 0) length = 0;
349  myPtrenames.setSize(length);
350  for (exint i = 0; i < length; i++)
351  {
352  int parmidx[1];
353  int offsets[1];
354  parmidx[0] = i+0;
355  offsets[0] = 0;
356  auto && _curentry = myPtrenames(i);
357  (void) _curentry;
358  _curentry.frompt = ""_UTsh;
359  if (true)
360  graph->evalOpParmInst(_curentry.frompt, nodeidx, "frompt#", parmidx, offsets, time, 0, 2-1);
361  _curentry.topt = ""_UTsh;
362  if (true)
363  graph->evalOpParmInst(_curentry.topt, nodeidx, "topt#", parmidx, offsets, time, 0, 2-1);
364 
365  }
366  }
367  else
368  myPtrenames.clear();
369  myPtdel = ""_UTsh;
370  if (true)
371  graph->evalOpParm(myPtdel, nodeidx, "ptdel", time, 0);
372  myPtkeep = "*"_UTsh;
373  if (true)
374  graph->evalOpParm(myPtkeep, nodeidx, "ptkeep", time, 0);
375  if (true)
376  {
377  int64 length = 0;
378  graph->evalOpParm(length, nodeidx, "vtxrenames", time, 0);
379  if (length < 0) length = 0;
380  myVtxrenames.setSize(length);
381  for (exint i = 0; i < length; i++)
382  {
383  int parmidx[1];
384  int offsets[1];
385  parmidx[0] = i+0;
386  offsets[0] = 0;
387  auto && _curentry = myVtxrenames(i);
388  (void) _curentry;
389  _curentry.fromvtx = ""_UTsh;
390  if (true)
391  graph->evalOpParmInst(_curentry.fromvtx, nodeidx, "fromvtx#", parmidx, offsets, time, 0, 2-1);
392  _curentry.tovtx = ""_UTsh;
393  if (true)
394  graph->evalOpParmInst(_curentry.tovtx, nodeidx, "tovtx#", parmidx, offsets, time, 0, 2-1);
395 
396  }
397  }
398  else
399  myVtxrenames.clear();
400  myVtxdel = ""_UTsh;
401  if (true)
402  graph->evalOpParm(myVtxdel, nodeidx, "vtxdel", time, 0);
403  myVtxkeep = "*"_UTsh;
404  if (true)
405  graph->evalOpParm(myVtxkeep, nodeidx, "vtxkeep", time, 0);
406  if (true)
407  {
408  int64 length = 0;
409  graph->evalOpParm(length, nodeidx, "primrenames", time, 0);
410  if (length < 0) length = 0;
411  myPrimrenames.setSize(length);
412  for (exint i = 0; i < length; i++)
413  {
414  int parmidx[1];
415  int offsets[1];
416  parmidx[0] = i+0;
417  offsets[0] = 0;
418  auto && _curentry = myPrimrenames(i);
419  (void) _curentry;
420  _curentry.frompr = ""_UTsh;
421  if (true)
422  graph->evalOpParmInst(_curentry.frompr, nodeidx, "frompr#", parmidx, offsets, time, 0, 2-1);
423  _curentry.topr = ""_UTsh;
424  if (true)
425  graph->evalOpParmInst(_curentry.topr, nodeidx, "topr#", parmidx, offsets, time, 0, 2-1);
426 
427  }
428  }
429  else
430  myPrimrenames.clear();
431  myPrimdel = ""_UTsh;
432  if (true)
433  graph->evalOpParm(myPrimdel, nodeidx, "primdel", time, 0);
434  myPrimkeep = "*"_UTsh;
435  if (true)
436  graph->evalOpParm(myPrimkeep, nodeidx, "primkeep", time, 0);
437  if (true)
438  {
439  int64 length = 0;
440  graph->evalOpParm(length, nodeidx, "detailrenames", time, 0);
441  if (length < 0) length = 0;
442  myDetailrenames.setSize(length);
443  for (exint i = 0; i < length; i++)
444  {
445  int parmidx[1];
446  int offsets[1];
447  parmidx[0] = i+0;
448  offsets[0] = 0;
449  auto && _curentry = myDetailrenames(i);
450  (void) _curentry;
451  _curentry.fromdtl = ""_UTsh;
452  if (true)
453  graph->evalOpParmInst(_curentry.fromdtl, nodeidx, "fromdtl#", parmidx, offsets, time, 0, 2-1);
454  _curentry.todtl = ""_UTsh;
455  if (true)
456  graph->evalOpParmInst(_curentry.todtl, nodeidx, "todtl#", parmidx, offsets, time, 0, 2-1);
457 
458  }
459  }
460  else
461  myDetailrenames.clear();
462  myDtldel = ""_UTsh;
463  if (true)
464  graph->evalOpParm(myDtldel, nodeidx, "dtldel", time, 0);
465  myDtlkeep = "*"_UTsh;
466  if (true)
467  graph->evalOpParm(myDtlkeep, nodeidx, "dtlkeep", time, 0);
468  if (true)
469  {
470  int64 length = 0;
471  graph->evalOpParm(length, nodeidx, "rmanconversions", time, 0);
472  if (length < 0) length = 0;
473  myRmanconversions.setSize(length);
474  for (exint i = 0; i < length; i++)
475  {
476  int parmidx[1];
477  int offsets[1];
478  parmidx[0] = i+0;
479  offsets[0] = 0;
480  auto && _curentry = myRmanconversions(i);
481  (void) _curentry;
482  _curentry.hname = ""_UTsh;
483  if (true)
484  graph->evalOpParmInst(_curentry.hname, nodeidx, "hname#", parmidx, offsets, time, 0, 2-1);
485  _curentry.riname = ""_UTsh;
486  if (true)
487  graph->evalOpParmInst(_curentry.riname, nodeidx, "riname#", parmidx, offsets, time, 0, 2-1);
488  _curentry.ritype = "vtx_float"_UTsh;
489  if (true)
490  graph->evalOpParmInst(_curentry.ritype, nodeidx, "ritype#", parmidx, offsets, time, 0, 2-1);
491  _curentry.rioff = 0;
492  if (true)
493  graph->evalOpParmInst(_curentry.rioff, nodeidx, "rioff#", parmidx, offsets, time, 0, 2-1);
494 
495  }
496  }
497  else
498  myRmanconversions.clear();
499  myRidefault = false;
500  if (true)
501  graph->evalOpParm(myRidefault, nodeidx, "ridefault", time, 0);
502  myUpdatevar = true;
503  if (true)
504  graph->evalOpParm(myUpdatevar, nodeidx, "updatevar", time, 0);
505  myOverwrite = false;
506  if (true)
507  graph->evalOpParm(myOverwrite, nodeidx, "overwrite", time, 0);
508  myEncodenames = false;
509  if (true)
510  graph->evalOpParm(myEncodenames, nodeidx, "encodenames", time, 0);
511 
512  }
513 
514 
515  void loadFromOpSubclass(const LoadParms &loadparms) override
516  {
517  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
518  }
519 
520 
521  void copyFrom(const OP_NodeParms *src) override
522  {
523  *this = *((const SOP_AttributeParms *)src);
524  }
525 
526  template <typename T>
527  void
528  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
529  {
530  if (idx.size() < 1)
531  return;
532  UT_ASSERT(idx.size() == instance.size()+1);
533  if (idx.size() != instance.size()+1)
534  return;
535  switch (idx[0])
536  {
537  case 0:
538  if (idx.size() == 1)
539  coerceValue(value, myPtrenames.entries());
540  else if (instance[0] < myPtrenames.entries())
541  {
542  auto && _data = myPtrenames(instance[0]);
543  switch (idx[1])
544  {
545  case 0:
546  coerceValue(value, _data.frompt);
547  break;
548  case 1:
549  coerceValue(value, _data.topt);
550  break;
551 
552  }
553  }
554  break;
555  case 1:
556  coerceValue(value, myPtdel);
557  break;
558  case 2:
559  coerceValue(value, myPtkeep);
560  break;
561  case 3:
562  if (idx.size() == 1)
563  coerceValue(value, myVtxrenames.entries());
564  else if (instance[0] < myVtxrenames.entries())
565  {
566  auto && _data = myVtxrenames(instance[0]);
567  switch (idx[1])
568  {
569  case 0:
570  coerceValue(value, _data.fromvtx);
571  break;
572  case 1:
573  coerceValue(value, _data.tovtx);
574  break;
575 
576  }
577  }
578  break;
579  case 4:
580  coerceValue(value, myVtxdel);
581  break;
582  case 5:
583  coerceValue(value, myVtxkeep);
584  break;
585  case 6:
586  if (idx.size() == 1)
587  coerceValue(value, myPrimrenames.entries());
588  else if (instance[0] < myPrimrenames.entries())
589  {
590  auto && _data = myPrimrenames(instance[0]);
591  switch (idx[1])
592  {
593  case 0:
594  coerceValue(value, _data.frompr);
595  break;
596  case 1:
597  coerceValue(value, _data.topr);
598  break;
599 
600  }
601  }
602  break;
603  case 7:
604  coerceValue(value, myPrimdel);
605  break;
606  case 8:
607  coerceValue(value, myPrimkeep);
608  break;
609  case 9:
610  if (idx.size() == 1)
611  coerceValue(value, myDetailrenames.entries());
612  else if (instance[0] < myDetailrenames.entries())
613  {
614  auto && _data = myDetailrenames(instance[0]);
615  switch (idx[1])
616  {
617  case 0:
618  coerceValue(value, _data.fromdtl);
619  break;
620  case 1:
621  coerceValue(value, _data.todtl);
622  break;
623 
624  }
625  }
626  break;
627  case 10:
628  coerceValue(value, myDtldel);
629  break;
630  case 11:
631  coerceValue(value, myDtlkeep);
632  break;
633  case 12:
634  if (idx.size() == 1)
635  coerceValue(value, myRmanconversions.entries());
636  else if (instance[0] < myRmanconversions.entries())
637  {
638  auto && _data = myRmanconversions(instance[0]);
639  switch (idx[1])
640  {
641  case 0:
642  coerceValue(value, _data.hname);
643  break;
644  case 1:
645  coerceValue(value, _data.riname);
646  break;
647  case 2:
648  coerceValue(value, _data.ritype);
649  break;
650  case 3:
651  coerceValue(value, _data.rioff);
652  break;
653 
654  }
655  }
656  break;
657  case 13:
658  coerceValue(value, myRidefault);
659  break;
660  case 14:
661  coerceValue(value, myUpdatevar);
662  break;
663  case 15:
664  coerceValue(value, myOverwrite);
665  break;
666  case 16:
667  coerceValue(value, myEncodenames);
668  break;
669 
670  }
671  }
672 
673  bool isParmColorRamp(exint idx) const override
674  {
675  switch (idx)
676  {
677 
678  }
679  return false;
680  }
681 
682  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
683  { doGetParmValue(idx, instance, value); }
684  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
685  { doGetParmValue(idx, instance, value); }
686  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
687  { doGetParmValue(idx, instance, value); }
688  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
689  { doGetParmValue(idx, instance, value); }
690  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
691  { doGetParmValue(idx, instance, value); }
692  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
693  { doGetParmValue(idx, instance, value); }
694  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
695  { doGetParmValue(idx, instance, value); }
696  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
697  { doGetParmValue(idx, instance, value); }
698  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
699  { doGetParmValue(idx, instance, value); }
700  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
701  { doGetParmValue(idx, instance, value); }
702  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
703  { doGetParmValue(idx, instance, value); }
704 
705  template <typename T>
706  void
707  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
708  {
709  if (idx.size() < 1)
710  return;
711  UT_ASSERT(idx.size() == instance.size()+1);
712  if (idx.size() != instance.size()+1)
713  return;
714  switch (idx[0])
715  {
716  case 0:
717  if (idx.size() == 1)
718  {
719  exint newsize;
720  coerceValue(newsize, value);
721  if (newsize < 0) newsize = 0;
722  myPtrenames.setSize(newsize);
723  }
724  else
725  {
726  if (instance[0] < 0)
727  return;
728  myPtrenames.setSizeIfNeeded(instance[0]+1);
729  auto && _data = myPtrenames(instance[0]);
730  switch (idx[1])
731  {
732  case 0:
733  coerceValue(_data.frompt, value);
734  break;
735  case 1:
736  coerceValue(_data.topt, value);
737  break;
738 
739  }
740  }
741  break;
742  case 1:
743  coerceValue(myPtdel, ( ( value ) ));
744  break;
745  case 2:
746  coerceValue(myPtkeep, ( ( value ) ));
747  break;
748  case 3:
749  if (idx.size() == 1)
750  {
751  exint newsize;
752  coerceValue(newsize, value);
753  if (newsize < 0) newsize = 0;
754  myVtxrenames.setSize(newsize);
755  }
756  else
757  {
758  if (instance[0] < 0)
759  return;
760  myVtxrenames.setSizeIfNeeded(instance[0]+1);
761  auto && _data = myVtxrenames(instance[0]);
762  switch (idx[1])
763  {
764  case 0:
765  coerceValue(_data.fromvtx, value);
766  break;
767  case 1:
768  coerceValue(_data.tovtx, value);
769  break;
770 
771  }
772  }
773  break;
774  case 4:
775  coerceValue(myVtxdel, ( ( value ) ));
776  break;
777  case 5:
778  coerceValue(myVtxkeep, ( ( value ) ));
779  break;
780  case 6:
781  if (idx.size() == 1)
782  {
783  exint newsize;
784  coerceValue(newsize, value);
785  if (newsize < 0) newsize = 0;
786  myPrimrenames.setSize(newsize);
787  }
788  else
789  {
790  if (instance[0] < 0)
791  return;
792  myPrimrenames.setSizeIfNeeded(instance[0]+1);
793  auto && _data = myPrimrenames(instance[0]);
794  switch (idx[1])
795  {
796  case 0:
797  coerceValue(_data.frompr, value);
798  break;
799  case 1:
800  coerceValue(_data.topr, value);
801  break;
802 
803  }
804  }
805  break;
806  case 7:
807  coerceValue(myPrimdel, ( ( value ) ));
808  break;
809  case 8:
810  coerceValue(myPrimkeep, ( ( value ) ));
811  break;
812  case 9:
813  if (idx.size() == 1)
814  {
815  exint newsize;
816  coerceValue(newsize, value);
817  if (newsize < 0) newsize = 0;
818  myDetailrenames.setSize(newsize);
819  }
820  else
821  {
822  if (instance[0] < 0)
823  return;
824  myDetailrenames.setSizeIfNeeded(instance[0]+1);
825  auto && _data = myDetailrenames(instance[0]);
826  switch (idx[1])
827  {
828  case 0:
829  coerceValue(_data.fromdtl, value);
830  break;
831  case 1:
832  coerceValue(_data.todtl, value);
833  break;
834 
835  }
836  }
837  break;
838  case 10:
839  coerceValue(myDtldel, ( ( value ) ));
840  break;
841  case 11:
842  coerceValue(myDtlkeep, ( ( value ) ));
843  break;
844  case 12:
845  if (idx.size() == 1)
846  {
847  exint newsize;
848  coerceValue(newsize, value);
849  if (newsize < 0) newsize = 0;
850  myRmanconversions.setSize(newsize);
851  }
852  else
853  {
854  if (instance[0] < 0)
855  return;
856  myRmanconversions.setSizeIfNeeded(instance[0]+1);
857  auto && _data = myRmanconversions(instance[0]);
858  switch (idx[1])
859  {
860  case 0:
861  coerceValue(_data.hname, value);
862  break;
863  case 1:
864  coerceValue(_data.riname, value);
865  break;
866  case 2:
867  coerceValue(_data.ritype, value);
868  break;
869  case 3:
870  coerceValue(_data.rioff, value);
871  break;
872 
873  }
874  }
875  break;
876  case 13:
877  coerceValue(myRidefault, ( ( value ) ));
878  break;
879  case 14:
880  coerceValue(myUpdatevar, ( ( value ) ));
881  break;
882  case 15:
883  coerceValue(myOverwrite, ( ( value ) ));
884  break;
885  case 16:
886  coerceValue(myEncodenames, ( ( value ) ));
887  break;
888 
889  }
890  }
891 
892  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
893  { doSetParmValue(idx, instance, value); }
894  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
895  { doSetParmValue(idx, instance, value); }
896  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
897  { doSetParmValue(idx, instance, value); }
898  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
899  { doSetParmValue(idx, instance, value); }
900  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
901  { doSetParmValue(idx, instance, value); }
902  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
903  { doSetParmValue(idx, instance, value); }
904  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
905  { doSetParmValue(idx, instance, value); }
906  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
907  { doSetParmValue(idx, instance, value); }
908  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
909  { doSetParmValue(idx, instance, value); }
910  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
911  { doSetParmValue(idx, instance, value); }
912  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
913  { doSetParmValue(idx, instance, value); }
914 
915  exint getNestNumParms(TempIndex idx) const override
916  {
917  if (idx.size() == 0)
918  return 17;
919  switch (idx[0])
920  {
921  case 0:
922  return 2;
923  case 3:
924  return 2;
925  case 6:
926  return 2;
927  case 9:
928  return 2;
929  case 12:
930  return 4;
931 
932  }
933  // Invalid
934  return 0;
935  }
936 
937  const char *getNestParmName(TempIndex fieldnum) const override
938  {
939  if (fieldnum.size() < 1)
940  return 0;
941  switch (fieldnum[0])
942  {
943  case 0:
944  if (fieldnum.size() == 1)
945  return "ptrenames";
946  switch (fieldnum[1])
947  {
948  case 0:
949  return "frompt#";
950  case 1:
951  return "topt#";
952 
953  }
954  return 0;
955  case 1:
956  return "ptdel";
957  case 2:
958  return "ptkeep";
959  case 3:
960  if (fieldnum.size() == 1)
961  return "vtxrenames";
962  switch (fieldnum[1])
963  {
964  case 0:
965  return "fromvtx#";
966  case 1:
967  return "tovtx#";
968 
969  }
970  return 0;
971  case 4:
972  return "vtxdel";
973  case 5:
974  return "vtxkeep";
975  case 6:
976  if (fieldnum.size() == 1)
977  return "primrenames";
978  switch (fieldnum[1])
979  {
980  case 0:
981  return "frompr#";
982  case 1:
983  return "topr#";
984 
985  }
986  return 0;
987  case 7:
988  return "primdel";
989  case 8:
990  return "primkeep";
991  case 9:
992  if (fieldnum.size() == 1)
993  return "detailrenames";
994  switch (fieldnum[1])
995  {
996  case 0:
997  return "fromdtl#";
998  case 1:
999  return "todtl#";
1000 
1001  }
1002  return 0;
1003  case 10:
1004  return "dtldel";
1005  case 11:
1006  return "dtlkeep";
1007  case 12:
1008  if (fieldnum.size() == 1)
1009  return "rmanconversions";
1010  switch (fieldnum[1])
1011  {
1012  case 0:
1013  return "hname#";
1014  case 1:
1015  return "riname#";
1016  case 2:
1017  return "ritype#";
1018  case 3:
1019  return "rioff#";
1020 
1021  }
1022  return 0;
1023  case 13:
1024  return "ridefault";
1025  case 14:
1026  return "updatevar";
1027  case 15:
1028  return "overwrite";
1029  case 16:
1030  return "encodenames";
1031 
1032  }
1033  return 0;
1034  }
1035 
1036  ParmType getNestParmType(TempIndex fieldnum) const override
1037  {
1038  if (fieldnum.size() < 1)
1039  return PARM_UNSUPPORTED;
1040  switch (fieldnum[0])
1041  {
1042  case 0:
1043  if (fieldnum.size() == 1)
1044  return PARM_MULTIPARM;
1045  switch (fieldnum[1])
1046  {
1047  case 0:
1048  return PARM_STRING;
1049  case 1:
1050  return PARM_STRING;
1051 
1052  }
1053  return PARM_UNSUPPORTED;
1054  case 1:
1055  return PARM_STRING;
1056  case 2:
1057  return PARM_STRING;
1058  case 3:
1059  if (fieldnum.size() == 1)
1060  return PARM_MULTIPARM;
1061  switch (fieldnum[1])
1062  {
1063  case 0:
1064  return PARM_STRING;
1065  case 1:
1066  return PARM_STRING;
1067 
1068  }
1069  return PARM_UNSUPPORTED;
1070  case 4:
1071  return PARM_STRING;
1072  case 5:
1073  return PARM_STRING;
1074  case 6:
1075  if (fieldnum.size() == 1)
1076  return PARM_MULTIPARM;
1077  switch (fieldnum[1])
1078  {
1079  case 0:
1080  return PARM_STRING;
1081  case 1:
1082  return PARM_STRING;
1083 
1084  }
1085  return PARM_UNSUPPORTED;
1086  case 7:
1087  return PARM_STRING;
1088  case 8:
1089  return PARM_STRING;
1090  case 9:
1091  if (fieldnum.size() == 1)
1092  return PARM_MULTIPARM;
1093  switch (fieldnum[1])
1094  {
1095  case 0:
1096  return PARM_STRING;
1097  case 1:
1098  return PARM_STRING;
1099 
1100  }
1101  return PARM_UNSUPPORTED;
1102  case 10:
1103  return PARM_STRING;
1104  case 11:
1105  return PARM_STRING;
1106  case 12:
1107  if (fieldnum.size() == 1)
1108  return PARM_MULTIPARM;
1109  switch (fieldnum[1])
1110  {
1111  case 0:
1112  return PARM_STRING;
1113  case 1:
1114  return PARM_STRING;
1115  case 2:
1116  return PARM_STRING;
1117  case 3:
1118  return PARM_INTEGER;
1119 
1120  }
1121  return PARM_UNSUPPORTED;
1122  case 13:
1123  return PARM_INTEGER;
1124  case 14:
1125  return PARM_INTEGER;
1126  case 15:
1127  return PARM_INTEGER;
1128  case 16:
1129  return PARM_INTEGER;
1130 
1131  }
1132  return PARM_UNSUPPORTED;
1133  }
1134 
1135  // Boiler plate to load individual types.
1136  static void loadData(UT_IStream &is, int64 &v)
1137  { is.bread(&v, 1); }
1138  static void loadData(UT_IStream &is, bool &v)
1139  { int64 iv; is.bread(&iv, 1); v = iv; }
1140  static void loadData(UT_IStream &is, fpreal64 &v)
1141  { is.bread<fpreal64>(&v, 1); }
1142  static void loadData(UT_IStream &is, UT_Vector2D &v)
1143  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1144  static void loadData(UT_IStream &is, UT_Vector3D &v)
1145  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1146  is.bread<fpreal64>(&v.z(), 1); }
1147  static void loadData(UT_IStream &is, UT_Vector4D &v)
1148  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1149  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1150  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1151  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1152  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1153  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1154  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1155  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1156  static void loadData(UT_IStream &is, UT_Vector2I &v)
1157  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1158  static void loadData(UT_IStream &is, UT_Vector3I &v)
1159  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1160  is.bread<int64>(&v.z(), 1); }
1161  static void loadData(UT_IStream &is, UT_Vector4I &v)
1162  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1163  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1165  { is.bread(v); }
1167  { UT_StringHolder rampdata;
1168  loadData(is, rampdata);
1169  if (rampdata.isstring())
1170  {
1171  v.reset(new UT_Ramp());
1172  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1173  v->load(istr);
1174  }
1175  else v.reset();
1176  }
1179  loadData(is, data);
1180  if (data.isstring())
1181  {
1182  // Find the data type.
1183  const char *colon = UT_StringWrap(data).findChar(':');
1184  if (colon)
1185  {
1186  int typelen = colon - data.buffer();
1188  type.strncpy(data.buffer(), typelen);
1189  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1190 
1191  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1192  }
1193  }
1194  else v.reset();
1195  }
1196 
1197  static void saveData(std::ostream &os, int64 v)
1198  { UTwrite(os, &v); }
1199  static void saveData(std::ostream &os, bool v)
1200  { int64 iv = v; UTwrite(os, &iv); }
1201  static void saveData(std::ostream &os, fpreal64 v)
1202  { UTwrite<fpreal64>(os, &v); }
1203  static void saveData(std::ostream &os, UT_Vector2D v)
1204  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1205  static void saveData(std::ostream &os, UT_Vector3D v)
1206  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1207  UTwrite<fpreal64>(os, &v.z()); }
1208  static void saveData(std::ostream &os, UT_Vector4D v)
1209  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1210  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1211  static void saveData(std::ostream &os, UT_Matrix2D v)
1213  static void saveData(std::ostream &os, UT_Matrix3D v)
1215  static void saveData(std::ostream &os, UT_Matrix4D v)
1217  static void saveData(std::ostream &os, UT_StringHolder s)
1218  { UT_StringWrap(s).saveBinary(os); }
1219  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1221  UT_OStringStream ostr;
1222  if (s) s->save(ostr);
1223  result = ostr.str();
1224  saveData(os, result);
1225  }
1226  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1228  UT_OStringStream ostr;
1229  if (s)
1230  {
1231  ostr << s->getDataTypeToken();
1232  ostr << ":";
1233  s->saveBinary(ostr);
1234  }
1235  result = ostr.str();
1236  saveData(os, result);
1237  }
1238 
1239 
1240  void save(std::ostream &os) const
1241  {
1242  int32 v = version();
1243  UTwrite(os, &v);
1244  {
1245  int64 length = myPtrenames.entries();
1246  UTwrite(os, &length);
1247  for (exint i = 0; i < length; i++)
1248  {
1249  auto && _curentry = myPtrenames(i);
1250  (void) _curentry;
1251  saveData(os, _curentry.frompt);
1252  saveData(os, _curentry.topt);
1253 
1254  }
1255  }
1256  saveData(os, myPtdel);
1257  saveData(os, myPtkeep);
1258  {
1259  int64 length = myVtxrenames.entries();
1260  UTwrite(os, &length);
1261  for (exint i = 0; i < length; i++)
1262  {
1263  auto && _curentry = myVtxrenames(i);
1264  (void) _curentry;
1265  saveData(os, _curentry.fromvtx);
1266  saveData(os, _curentry.tovtx);
1267 
1268  }
1269  }
1270  saveData(os, myVtxdel);
1271  saveData(os, myVtxkeep);
1272  {
1273  int64 length = myPrimrenames.entries();
1274  UTwrite(os, &length);
1275  for (exint i = 0; i < length; i++)
1276  {
1277  auto && _curentry = myPrimrenames(i);
1278  (void) _curentry;
1279  saveData(os, _curentry.frompr);
1280  saveData(os, _curentry.topr);
1281 
1282  }
1283  }
1284  saveData(os, myPrimdel);
1285  saveData(os, myPrimkeep);
1286  {
1287  int64 length = myDetailrenames.entries();
1288  UTwrite(os, &length);
1289  for (exint i = 0; i < length; i++)
1290  {
1291  auto && _curentry = myDetailrenames(i);
1292  (void) _curentry;
1293  saveData(os, _curentry.fromdtl);
1294  saveData(os, _curentry.todtl);
1295 
1296  }
1297  }
1298  saveData(os, myDtldel);
1299  saveData(os, myDtlkeep);
1300  {
1301  int64 length = myRmanconversions.entries();
1302  UTwrite(os, &length);
1303  for (exint i = 0; i < length; i++)
1304  {
1305  auto && _curentry = myRmanconversions(i);
1306  (void) _curentry;
1307  saveData(os, _curentry.hname);
1308  saveData(os, _curentry.riname);
1309  saveData(os, _curentry.ritype);
1310  saveData(os, _curentry.rioff);
1311 
1312  }
1313  }
1314  saveData(os, myRidefault);
1315  saveData(os, myUpdatevar);
1316  saveData(os, myOverwrite);
1317  saveData(os, myEncodenames);
1318 
1319  }
1320 
1321  bool load(UT_IStream &is)
1322  {
1323  int32 v;
1324  is.bread(&v, 1);
1325  if (version() != v)
1326  {
1327  // Fail incompatible versions
1328  return false;
1329  }
1330  {
1331  int64 length;
1332  is.read(&length, 1);
1333  myPtrenames.setSize(length);
1334  for (exint i = 0; i < length; i++)
1335  {
1336  auto && _curentry = myPtrenames(i);
1337  (void) _curentry;
1338  loadData(is, _curentry.frompt);
1339  loadData(is, _curentry.topt);
1340 
1341  }
1342  }
1343  loadData(is, myPtdel);
1344  loadData(is, myPtkeep);
1345  {
1346  int64 length;
1347  is.read(&length, 1);
1348  myVtxrenames.setSize(length);
1349  for (exint i = 0; i < length; i++)
1350  {
1351  auto && _curentry = myVtxrenames(i);
1352  (void) _curentry;
1353  loadData(is, _curentry.fromvtx);
1354  loadData(is, _curentry.tovtx);
1355 
1356  }
1357  }
1358  loadData(is, myVtxdel);
1359  loadData(is, myVtxkeep);
1360  {
1361  int64 length;
1362  is.read(&length, 1);
1363  myPrimrenames.setSize(length);
1364  for (exint i = 0; i < length; i++)
1365  {
1366  auto && _curentry = myPrimrenames(i);
1367  (void) _curentry;
1368  loadData(is, _curentry.frompr);
1369  loadData(is, _curentry.topr);
1370 
1371  }
1372  }
1373  loadData(is, myPrimdel);
1374  loadData(is, myPrimkeep);
1375  {
1376  int64 length;
1377  is.read(&length, 1);
1378  myDetailrenames.setSize(length);
1379  for (exint i = 0; i < length; i++)
1380  {
1381  auto && _curentry = myDetailrenames(i);
1382  (void) _curentry;
1383  loadData(is, _curentry.fromdtl);
1384  loadData(is, _curentry.todtl);
1385 
1386  }
1387  }
1388  loadData(is, myDtldel);
1389  loadData(is, myDtlkeep);
1390  {
1391  int64 length;
1392  is.read(&length, 1);
1393  myRmanconversions.setSize(length);
1394  for (exint i = 0; i < length; i++)
1395  {
1396  auto && _curentry = myRmanconversions(i);
1397  (void) _curentry;
1398  loadData(is, _curentry.hname);
1399  loadData(is, _curentry.riname);
1400  loadData(is, _curentry.ritype);
1401  loadData(is, _curentry.rioff);
1402 
1403  }
1404  }
1405  loadData(is, myRidefault);
1406  loadData(is, myUpdatevar);
1407  loadData(is, myOverwrite);
1408  loadData(is, myEncodenames);
1409 
1410  return true;
1411  }
1412 
1413  const UT_Array<Ptrenames> &getPtrenames() const { return myPtrenames; }
1414 void setPtrenames(const UT_Array<Ptrenames> &val) { myPtrenames = val; }
1416  {
1417  SOP_Node *thissop = cookparms.getNode();
1418  if (!thissop) return getPtrenames().entries();
1419  exint result;
1420  OP_Utils::evalOpParm(result, thissop, "ptrenames", cookparms.getCookTime(), 0);
1421  return result;
1422  }
1424  { return opinstPtrenames_frompt(cookparms, &_idx); }
1425  UT_StringHolder opinstPtrenames_frompt(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1426  {
1427  SOP_Node *thissop = cookparms.getNode();
1428  if (!thissop) return (myPtrenames(_idx[0]).frompt);
1429  int _parmidx[2-1];
1430  _parmidx[1-1] = _idx[1-1] + 0;
1431 
1433  OP_Utils::evalOpParmInst(result, thissop, "frompt#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1434  return (result);
1435  }
1437  { return opinstPtrenames_topt(cookparms, &_idx); }
1438  UT_StringHolder opinstPtrenames_topt(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1439  {
1440  SOP_Node *thissop = cookparms.getNode();
1441  if (!thissop) return (myPtrenames(_idx[0]).topt);
1442  int _parmidx[2-1];
1443  _parmidx[1-1] = _idx[1-1] + 0;
1444 
1446  OP_Utils::evalOpParmInst(result, thissop, "topt#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1447  return (result);
1448  }
1449 
1450  const UT_StringHolder & getPtdel() const { return myPtdel; }
1451  void setPtdel(const UT_StringHolder & val) { myPtdel = val; }
1453  {
1454  SOP_Node *thissop = cookparms.getNode();
1455  if (!thissop) return getPtdel();
1457  OP_Utils::evalOpParm(result, thissop, "ptdel", cookparms.getCookTime(), 0);
1458  return result;
1459  }
1460  const UT_StringHolder & getPtkeep() const { return myPtkeep; }
1461  void setPtkeep(const UT_StringHolder & val) { myPtkeep = val; }
1463  {
1464  SOP_Node *thissop = cookparms.getNode();
1465  if (!thissop) return getPtkeep();
1467  OP_Utils::evalOpParm(result, thissop, "ptkeep", cookparms.getCookTime(), 0);
1468  return result;
1469  }
1470  const UT_Array<Vtxrenames> &getVtxrenames() const { return myVtxrenames; }
1471 void setVtxrenames(const UT_Array<Vtxrenames> &val) { myVtxrenames = val; }
1473  {
1474  SOP_Node *thissop = cookparms.getNode();
1475  if (!thissop) return getVtxrenames().entries();
1476  exint result;
1477  OP_Utils::evalOpParm(result, thissop, "vtxrenames", cookparms.getCookTime(), 0);
1478  return result;
1479  }
1481  { return opinstVtxrenames_fromvtx(cookparms, &_idx); }
1482  UT_StringHolder opinstVtxrenames_fromvtx(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1483  {
1484  SOP_Node *thissop = cookparms.getNode();
1485  if (!thissop) return (myVtxrenames(_idx[0]).fromvtx);
1486  int _parmidx[2-1];
1487  _parmidx[1-1] = _idx[1-1] + 0;
1488 
1490  OP_Utils::evalOpParmInst(result, thissop, "fromvtx#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1491  return (result);
1492  }
1494  { return opinstVtxrenames_tovtx(cookparms, &_idx); }
1495  UT_StringHolder opinstVtxrenames_tovtx(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1496  {
1497  SOP_Node *thissop = cookparms.getNode();
1498  if (!thissop) return (myVtxrenames(_idx[0]).tovtx);
1499  int _parmidx[2-1];
1500  _parmidx[1-1] = _idx[1-1] + 0;
1501 
1503  OP_Utils::evalOpParmInst(result, thissop, "tovtx#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1504  return (result);
1505  }
1506 
1507  const UT_StringHolder & getVtxdel() const { return myVtxdel; }
1508  void setVtxdel(const UT_StringHolder & val) { myVtxdel = val; }
1510  {
1511  SOP_Node *thissop = cookparms.getNode();
1512  if (!thissop) return getVtxdel();
1514  OP_Utils::evalOpParm(result, thissop, "vtxdel", cookparms.getCookTime(), 0);
1515  return result;
1516  }
1517  const UT_StringHolder & getVtxkeep() const { return myVtxkeep; }
1518  void setVtxkeep(const UT_StringHolder & val) { myVtxkeep = val; }
1520  {
1521  SOP_Node *thissop = cookparms.getNode();
1522  if (!thissop) return getVtxkeep();
1524  OP_Utils::evalOpParm(result, thissop, "vtxkeep", cookparms.getCookTime(), 0);
1525  return result;
1526  }
1527  const UT_Array<Primrenames> &getPrimrenames() const { return myPrimrenames; }
1528 void setPrimrenames(const UT_Array<Primrenames> &val) { myPrimrenames = val; }
1530  {
1531  SOP_Node *thissop = cookparms.getNode();
1532  if (!thissop) return getPrimrenames().entries();
1533  exint result;
1534  OP_Utils::evalOpParm(result, thissop, "primrenames", cookparms.getCookTime(), 0);
1535  return result;
1536  }
1538  { return opinstPrimrenames_frompr(cookparms, &_idx); }
1539  UT_StringHolder opinstPrimrenames_frompr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1540  {
1541  SOP_Node *thissop = cookparms.getNode();
1542  if (!thissop) return (myPrimrenames(_idx[0]).frompr);
1543  int _parmidx[2-1];
1544  _parmidx[1-1] = _idx[1-1] + 0;
1545 
1547  OP_Utils::evalOpParmInst(result, thissop, "frompr#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1548  return (result);
1549  }
1551  { return opinstPrimrenames_topr(cookparms, &_idx); }
1552  UT_StringHolder opinstPrimrenames_topr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1553  {
1554  SOP_Node *thissop = cookparms.getNode();
1555  if (!thissop) return (myPrimrenames(_idx[0]).topr);
1556  int _parmidx[2-1];
1557  _parmidx[1-1] = _idx[1-1] + 0;
1558 
1560  OP_Utils::evalOpParmInst(result, thissop, "topr#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1561  return (result);
1562  }
1563 
1564  const UT_StringHolder & getPrimdel() const { return myPrimdel; }
1565  void setPrimdel(const UT_StringHolder & val) { myPrimdel = val; }
1567  {
1568  SOP_Node *thissop = cookparms.getNode();
1569  if (!thissop) return getPrimdel();
1571  OP_Utils::evalOpParm(result, thissop, "primdel", cookparms.getCookTime(), 0);
1572  return result;
1573  }
1574  const UT_StringHolder & getPrimkeep() const { return myPrimkeep; }
1575  void setPrimkeep(const UT_StringHolder & val) { myPrimkeep = val; }
1577  {
1578  SOP_Node *thissop = cookparms.getNode();
1579  if (!thissop) return getPrimkeep();
1581  OP_Utils::evalOpParm(result, thissop, "primkeep", cookparms.getCookTime(), 0);
1582  return result;
1583  }
1584  const UT_Array<Detailrenames> &getDetailrenames() const { return myDetailrenames; }
1585 void setDetailrenames(const UT_Array<Detailrenames> &val) { myDetailrenames = val; }
1587  {
1588  SOP_Node *thissop = cookparms.getNode();
1589  if (!thissop) return getDetailrenames().entries();
1590  exint result;
1591  OP_Utils::evalOpParm(result, thissop, "detailrenames", cookparms.getCookTime(), 0);
1592  return result;
1593  }
1595  { return opinstDetailrenames_fromdtl(cookparms, &_idx); }
1597  {
1598  SOP_Node *thissop = cookparms.getNode();
1599  if (!thissop) return (myDetailrenames(_idx[0]).fromdtl);
1600  int _parmidx[2-1];
1601  _parmidx[1-1] = _idx[1-1] + 0;
1602 
1604  OP_Utils::evalOpParmInst(result, thissop, "fromdtl#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1605  return (result);
1606  }
1608  { return opinstDetailrenames_todtl(cookparms, &_idx); }
1609  UT_StringHolder opinstDetailrenames_todtl(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1610  {
1611  SOP_Node *thissop = cookparms.getNode();
1612  if (!thissop) return (myDetailrenames(_idx[0]).todtl);
1613  int _parmidx[2-1];
1614  _parmidx[1-1] = _idx[1-1] + 0;
1615 
1617  OP_Utils::evalOpParmInst(result, thissop, "todtl#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1618  return (result);
1619  }
1620 
1621  const UT_StringHolder & getDtldel() const { return myDtldel; }
1622  void setDtldel(const UT_StringHolder & val) { myDtldel = val; }
1624  {
1625  SOP_Node *thissop = cookparms.getNode();
1626  if (!thissop) return getDtldel();
1628  OP_Utils::evalOpParm(result, thissop, "dtldel", cookparms.getCookTime(), 0);
1629  return result;
1630  }
1631  const UT_StringHolder & getDtlkeep() const { return myDtlkeep; }
1632  void setDtlkeep(const UT_StringHolder & val) { myDtlkeep = val; }
1634  {
1635  SOP_Node *thissop = cookparms.getNode();
1636  if (!thissop) return getDtlkeep();
1638  OP_Utils::evalOpParm(result, thissop, "dtlkeep", cookparms.getCookTime(), 0);
1639  return result;
1640  }
1641  const UT_Array<Rmanconversions> &getRmanconversions() const { return myRmanconversions; }
1642 void setRmanconversions(const UT_Array<Rmanconversions> &val) { myRmanconversions = val; }
1644  {
1645  SOP_Node *thissop = cookparms.getNode();
1646  if (!thissop) return getRmanconversions().entries();
1647  exint result;
1648  OP_Utils::evalOpParm(result, thissop, "rmanconversions", cookparms.getCookTime(), 0);
1649  return result;
1650  }
1652  { return opinstRmanconversions_hname(cookparms, &_idx); }
1654  {
1655  SOP_Node *thissop = cookparms.getNode();
1656  if (!thissop) return (myRmanconversions(_idx[0]).hname);
1657  int _parmidx[2-1];
1658  _parmidx[1-1] = _idx[1-1] + 0;
1659 
1661  OP_Utils::evalOpParmInst(result, thissop, "hname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1662  return (result);
1663  }
1665  { return opinstRmanconversions_riname(cookparms, &_idx); }
1667  {
1668  SOP_Node *thissop = cookparms.getNode();
1669  if (!thissop) return (myRmanconversions(_idx[0]).riname);
1670  int _parmidx[2-1];
1671  _parmidx[1-1] = _idx[1-1] + 0;
1672 
1674  OP_Utils::evalOpParmInst(result, thissop, "riname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1675  return (result);
1676  }
1678  { return opinstRmanconversions_ritype(cookparms, &_idx); }
1680  {
1681  SOP_Node *thissop = cookparms.getNode();
1682  if (!thissop) return (myRmanconversions(_idx[0]).ritype);
1683  int _parmidx[2-1];
1684  _parmidx[1-1] = _idx[1-1] + 0;
1685 
1687  OP_Utils::evalOpParmInst(result, thissop, "ritype#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1688  return (result);
1689  }
1690  int64 opRmanconversions_rioff(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1691  { return opinstRmanconversions_rioff(cookparms, &_idx); }
1692  int64 opinstRmanconversions_rioff(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1693  {
1694  SOP_Node *thissop = cookparms.getNode();
1695  if (!thissop) return (myRmanconversions(_idx[0]).rioff);
1696  int _parmidx[2-1];
1697  _parmidx[1-1] = _idx[1-1] + 0;
1698 
1699  int64 result;
1700  OP_Utils::evalOpParmInst(result, thissop, "rioff#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1701  return (result);
1702  }
1703 
1704  bool getRidefault() const { return myRidefault; }
1705  void setRidefault(bool val) { myRidefault = val; }
1706  bool opRidefault(const SOP_NodeVerb::CookParms &cookparms) const
1707  {
1708  SOP_Node *thissop = cookparms.getNode();
1709  if (!thissop) return getRidefault();
1710  bool result;
1711  OP_Utils::evalOpParm(result, thissop, "ridefault", cookparms.getCookTime(), 0);
1712  return result;
1713  }
1714  bool getUpdatevar() const { return myUpdatevar; }
1715  void setUpdatevar(bool val) { myUpdatevar = val; }
1716  bool opUpdatevar(const SOP_NodeVerb::CookParms &cookparms) const
1717  {
1718  SOP_Node *thissop = cookparms.getNode();
1719  if (!thissop) return getUpdatevar();
1720  bool result;
1721  OP_Utils::evalOpParm(result, thissop, "updatevar", cookparms.getCookTime(), 0);
1722  return result;
1723  }
1724  bool getOverwrite() const { return myOverwrite; }
1725  void setOverwrite(bool val) { myOverwrite = val; }
1726  bool opOverwrite(const SOP_NodeVerb::CookParms &cookparms) const
1727  {
1728  SOP_Node *thissop = cookparms.getNode();
1729  if (!thissop) return getOverwrite();
1730  bool result;
1731  OP_Utils::evalOpParm(result, thissop, "overwrite", cookparms.getCookTime(), 0);
1732  return result;
1733  }
1734  bool getEncodenames() const { return myEncodenames; }
1735  void setEncodenames(bool val) { myEncodenames = val; }
1736  bool opEncodenames(const SOP_NodeVerb::CookParms &cookparms) const
1737  {
1738  SOP_Node *thissop = cookparms.getNode();
1739  if (!thissop) return getEncodenames();
1740  bool result;
1741  OP_Utils::evalOpParm(result, thissop, "encodenames", cookparms.getCookTime(), 0);
1742  return result;
1743  }
1744 
1745 private:
1746  UT_Array<Ptrenames> myPtrenames;
1747  UT_StringHolder myPtdel;
1748  UT_StringHolder myPtkeep;
1749  UT_Array<Vtxrenames> myVtxrenames;
1750  UT_StringHolder myVtxdel;
1751  UT_StringHolder myVtxkeep;
1752  UT_Array<Primrenames> myPrimrenames;
1753  UT_StringHolder myPrimdel;
1754  UT_StringHolder myPrimkeep;
1755  UT_Array<Detailrenames> myDetailrenames;
1756  UT_StringHolder myDtldel;
1757  UT_StringHolder myDtlkeep;
1758  UT_Array<Rmanconversions> myRmanconversions;
1759  bool myRidefault;
1760  bool myUpdatevar;
1761  bool myOverwrite;
1762  bool myEncodenames;
1763 
1764 };
void setDetailrenames(const UT_Array< Detailrenames > &val)
exint opRmanconversions(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setPrimrenames(const UT_Array< Primrenames > &val)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void setUpdatevar(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
UT_StringHolder opDtlkeep(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder createString(const UT_Array< Ptrenames > &list) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
const UT_StringHolder & getVtxkeep() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
bool operator!=(const SOP_AttributeParms &src) const
UT_StringHolder opinstPtrenames_frompt(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setPtrenames(const UT_Array< Ptrenames > &val)
bool opOverwrite(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opinstPtrenames_topt(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
UT_StringHolder opRmanconversions_riname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void
Definition: png.h:1083
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
static void loadData(UT_IStream &is, UT_Vector4I &v)
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder createString(const UT_Array< Vtxrenames > &list) const
UT_StringHolder opinstPrimrenames_topr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstRmanconversions_riname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opinstRmanconversions_rioff(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, bool v)
UT_StringHolder createString(const UT_Array< Detailrenames > &list) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, UT_Vector3D v)
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
static void saveData(std::ostream &os, UT_StringHolder s)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
exint getNestNumParms(TempIndex idx) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
UT_StringHolder opPtdel(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
UT_StringHolder opVtxkeep(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opinstPrimrenames_frompr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
const UT_Array< Detailrenames > & getDetailrenames() const
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
bool operator!=(const Primrenames &src) const
bool operator!=(const Rmanconversions &src) const
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_StringHolder opinstVtxrenames_tovtx(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
**But if you need a result
Definition: thread.h:613
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_StringHolder opPrimdel(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPrimdel() const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void loadData(UT_IStream &is, bool &v)
const UT_Array< Primrenames > & getPrimrenames() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
UT_StringHolder opRmanconversions_ritype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setPtdel(const UT_StringHolder &val)
const char * getNestParmName(TempIndex fieldnum) const override
UT_StringHolder opDetailrenames_fromdtl(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
UT_StringHolder opinstRmanconversions_ritype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
const UT_Array< Ptrenames > & getPtrenames() const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
UT_StringHolder opVtxrenames_tovtx(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setPrimkeep(const UT_StringHolder &val)
UT_StringHolder opDetailrenames_todtl(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool operator!=(const Vtxrenames &src) const
UT_StringHolder opPtkeep(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPtrenames_frompt(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
const UT_StringHolder & getPtkeep() const
UT_StringHolder opinstVtxrenames_fromvtx(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool isParmColorRamp(exint idx) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
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
UT_StringHolder opPrimrenames_frompr(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, UT_Vector4D v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, fpreal64 &v)
UT_StringHolder opDtldel(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Detailrenames &src) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
UT_StringHolder opPtrenames_topt(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_StringHolder & getPrimkeep() const
void setEncodenames(bool val)
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
void copyFrom(const OP_NodeParms *src) override
long long int64
Definition: SYS_Types.h:116
const UT_StringHolder & getDtldel() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void save(std::ostream &os) const
UT_StringHolder opVtxrenames_fromvtx(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder createString(const UT_Array< Rmanconversions > &list) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
UT_StringHolder opinstRmanconversions_hname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opVtxdel(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
ParmType getNestParmType(TempIndex fieldnum) const override
void setOverwrite(bool val)
UT_StringHolder opinstDetailrenames_todtl(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
exint opPtrenames(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
const UT_Array< Rmanconversions > & getRmanconversions() const
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
exint opPrimrenames(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_Array< Vtxrenames > & getVtxrenames() const
UT_StringHolder createString(const UT_Array< Primrenames > &list) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool operator==(const SOP_AttributeParms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
void setRidefault(bool val)
UT_StringHolder opPrimrenames_topr(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, int64 v)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
static void loadData(UT_IStream &is, int64 &v)
const UT_StringHolder & getDtlkeep() const
UT_StringHolder opPrimkeep(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
void setVtxkeep(const UT_StringHolder &val)
void setVtxrenames(const UT_Array< Vtxrenames > &val)
bool operator==(const Ptrenames &src) const
const UT_StringHolder & getPtdel() const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
UT_StringHolder opRmanconversions_hname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLuint GLfloat * val
Definition: glcorearb.h:1608
bool operator==(const Rmanconversions &src) const
UT_StringHolder opinstDetailrenames_fromdtl(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opRmanconversions_rioff(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
#define SOP_API
Definition: SOP_API.h:10
void setPtkeep(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
const UT_StringHolder & getVtxdel() const
exint opDetailrenames(const SOP_NodeVerb::CookParms &cookparms) const
bool opUpdatevar(const SOP_NodeVerb::CookParms &cookparms) const
void setVtxdel(const UT_StringHolder &val)
exint opVtxrenames(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setPrimdel(const UT_StringHolder &val)
GLboolean r
Definition: glcorearb.h:1222
bool opEncodenames(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
bool operator!=(const Detailrenames &src) const
bool operator!=(const Ptrenames &src) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setDtldel(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
bool operator==(const Primrenames &src) const
static void saveData(std::ostream &os, fpreal64 v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
type
Definition: core.h:1059
bool operator==(const Vtxrenames &src) const
bool opRidefault(const SOP_NodeVerb::CookParms &cookparms) const
void setDtlkeep(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
bool load(UT_IStream &is)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
bool getEncodenames() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
SYS_FORCE_INLINE bool isstring() const
void setRmanconversions(const UT_Array< Rmanconversions > &val)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663