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 <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 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 
334  if (baseGetSignature() != src.baseGetSignature()) return false;
335 
336  return true;
337  }
338  bool operator!=(const SOP_AttributeParms &src) const
339  {
340  return !operator==(src);
341  }
342 
343 
344 
345  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
346  {
347  if (true)
348  {
349  int64 length = 0;
350  graph->evalOpParm(length, nodeidx, "ptrenames", time, graph->isDirect()?nullptr:depnode);
351  if (length < 0) length = 0;
352  myPtrenames.setSize(length);
353  for (exint i = 0; i < length; i++)
354  {
355  int parmidx[1];
356  int offsets[1];
357  parmidx[0] = i+0;
358  offsets[0] = 0;
359  auto && _curentry = myPtrenames(i);
360  (void) _curentry;
361  _curentry.frompt = ""_UTsh;
362  if (true)
363  graph->evalOpParmInst(_curentry.frompt, nodeidx, "frompt#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
364  _curentry.topt = ""_UTsh;
365  if (true)
366  graph->evalOpParmInst(_curentry.topt, nodeidx, "topt#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
367 
368  }
369  }
370  else
371  myPtrenames.clear();
372  myPtdel = ""_UTsh;
373  if (true)
374  graph->evalOpParm(myPtdel, nodeidx, "ptdel", time, graph->isDirect()?nullptr:depnode);
375  myPtkeep = "*"_UTsh;
376  if (true)
377  graph->evalOpParm(myPtkeep, nodeidx, "ptkeep", time, graph->isDirect()?nullptr:depnode);
378  if (true)
379  {
380  int64 length = 0;
381  graph->evalOpParm(length, nodeidx, "vtxrenames", time, graph->isDirect()?nullptr:depnode);
382  if (length < 0) length = 0;
383  myVtxrenames.setSize(length);
384  for (exint i = 0; i < length; i++)
385  {
386  int parmidx[1];
387  int offsets[1];
388  parmidx[0] = i+0;
389  offsets[0] = 0;
390  auto && _curentry = myVtxrenames(i);
391  (void) _curentry;
392  _curentry.fromvtx = ""_UTsh;
393  if (true)
394  graph->evalOpParmInst(_curentry.fromvtx, nodeidx, "fromvtx#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
395  _curentry.tovtx = ""_UTsh;
396  if (true)
397  graph->evalOpParmInst(_curentry.tovtx, nodeidx, "tovtx#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
398 
399  }
400  }
401  else
402  myVtxrenames.clear();
403  myVtxdel = ""_UTsh;
404  if (true)
405  graph->evalOpParm(myVtxdel, nodeidx, "vtxdel", time, graph->isDirect()?nullptr:depnode);
406  myVtxkeep = "*"_UTsh;
407  if (true)
408  graph->evalOpParm(myVtxkeep, nodeidx, "vtxkeep", time, graph->isDirect()?nullptr:depnode);
409  if (true)
410  {
411  int64 length = 0;
412  graph->evalOpParm(length, nodeidx, "primrenames", time, graph->isDirect()?nullptr:depnode);
413  if (length < 0) length = 0;
414  myPrimrenames.setSize(length);
415  for (exint i = 0; i < length; i++)
416  {
417  int parmidx[1];
418  int offsets[1];
419  parmidx[0] = i+0;
420  offsets[0] = 0;
421  auto && _curentry = myPrimrenames(i);
422  (void) _curentry;
423  _curentry.frompr = ""_UTsh;
424  if (true)
425  graph->evalOpParmInst(_curentry.frompr, nodeidx, "frompr#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
426  _curentry.topr = ""_UTsh;
427  if (true)
428  graph->evalOpParmInst(_curentry.topr, nodeidx, "topr#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
429 
430  }
431  }
432  else
433  myPrimrenames.clear();
434  myPrimdel = ""_UTsh;
435  if (true)
436  graph->evalOpParm(myPrimdel, nodeidx, "primdel", time, graph->isDirect()?nullptr:depnode);
437  myPrimkeep = "*"_UTsh;
438  if (true)
439  graph->evalOpParm(myPrimkeep, nodeidx, "primkeep", time, graph->isDirect()?nullptr:depnode);
440  if (true)
441  {
442  int64 length = 0;
443  graph->evalOpParm(length, nodeidx, "detailrenames", time, graph->isDirect()?nullptr:depnode);
444  if (length < 0) length = 0;
445  myDetailrenames.setSize(length);
446  for (exint i = 0; i < length; i++)
447  {
448  int parmidx[1];
449  int offsets[1];
450  parmidx[0] = i+0;
451  offsets[0] = 0;
452  auto && _curentry = myDetailrenames(i);
453  (void) _curentry;
454  _curentry.fromdtl = ""_UTsh;
455  if (true)
456  graph->evalOpParmInst(_curentry.fromdtl, nodeidx, "fromdtl#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
457  _curentry.todtl = ""_UTsh;
458  if (true)
459  graph->evalOpParmInst(_curentry.todtl, nodeidx, "todtl#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
460 
461  }
462  }
463  else
464  myDetailrenames.clear();
465  myDtldel = ""_UTsh;
466  if (true)
467  graph->evalOpParm(myDtldel, nodeidx, "dtldel", time, graph->isDirect()?nullptr:depnode);
468  myDtlkeep = "*"_UTsh;
469  if (true)
470  graph->evalOpParm(myDtlkeep, nodeidx, "dtlkeep", time, graph->isDirect()?nullptr:depnode);
471  if (true)
472  {
473  int64 length = 0;
474  graph->evalOpParm(length, nodeidx, "rmanconversions", time, graph->isDirect()?nullptr:depnode);
475  if (length < 0) length = 0;
476  myRmanconversions.setSize(length);
477  for (exint i = 0; i < length; i++)
478  {
479  int parmidx[1];
480  int offsets[1];
481  parmidx[0] = i+0;
482  offsets[0] = 0;
483  auto && _curentry = myRmanconversions(i);
484  (void) _curentry;
485  _curentry.hname = ""_UTsh;
486  if (true)
487  graph->evalOpParmInst(_curentry.hname, nodeidx, "hname#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
488  _curentry.riname = ""_UTsh;
489  if (true)
490  graph->evalOpParmInst(_curentry.riname, nodeidx, "riname#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
491  _curentry.ritype = "vtx_float"_UTsh;
492  if (true)
493  graph->evalOpParmInst(_curentry.ritype, nodeidx, "ritype#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
494  _curentry.rioff = 0;
495  if (true)
496  graph->evalOpParmInst(_curentry.rioff, nodeidx, "rioff#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
497 
498  }
499  }
500  else
501  myRmanconversions.clear();
502  myRidefault = false;
503  if (true)
504  graph->evalOpParm(myRidefault, nodeidx, "ridefault", time, graph->isDirect()?nullptr:depnode);
505  myUpdatevar = true;
506  if (true)
507  graph->evalOpParm(myUpdatevar, nodeidx, "updatevar", time, graph->isDirect()?nullptr:depnode);
508  myOverwrite = false;
509  if (true)
510  graph->evalOpParm(myOverwrite, nodeidx, "overwrite", time, graph->isDirect()?nullptr:depnode);
511  myEncodenames = false;
512  if (true)
513  graph->evalOpParm(myEncodenames, nodeidx, "encodenames", time, graph->isDirect()?nullptr:depnode);
514 
515  }
516 
517 
518  void loadFromOpSubclass(const LoadParms &loadparms) override
519  {
520  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
521  }
522 
523 
524  void copyFrom(const OP_NodeParms *src) override
525  {
526  *this = *((const SOP_AttributeParms *)src);
527  }
528 
529  template <typename T>
530  void
531  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
532  {
533  if (idx.size() < 1)
534  return;
535  UT_ASSERT(idx.size() == instance.size()+1);
536  if (idx.size() != instance.size()+1)
537  return;
538  switch (idx[0])
539  {
540  case 0:
541  if (idx.size() == 1)
542  coerceValue(value, myPtrenames.entries());
543  else if (instance[0] < myPtrenames.entries())
544  {
545  auto && _data = myPtrenames(instance[0]);
546  switch (idx[1])
547  {
548  case 0:
549  coerceValue(value, _data.frompt);
550  break;
551  case 1:
552  coerceValue(value, _data.topt);
553  break;
554 
555  }
556  }
557  break;
558  case 1:
559  coerceValue(value, myPtdel);
560  break;
561  case 2:
562  coerceValue(value, myPtkeep);
563  break;
564  case 3:
565  if (idx.size() == 1)
566  coerceValue(value, myVtxrenames.entries());
567  else if (instance[0] < myVtxrenames.entries())
568  {
569  auto && _data = myVtxrenames(instance[0]);
570  switch (idx[1])
571  {
572  case 0:
573  coerceValue(value, _data.fromvtx);
574  break;
575  case 1:
576  coerceValue(value, _data.tovtx);
577  break;
578 
579  }
580  }
581  break;
582  case 4:
583  coerceValue(value, myVtxdel);
584  break;
585  case 5:
586  coerceValue(value, myVtxkeep);
587  break;
588  case 6:
589  if (idx.size() == 1)
590  coerceValue(value, myPrimrenames.entries());
591  else if (instance[0] < myPrimrenames.entries())
592  {
593  auto && _data = myPrimrenames(instance[0]);
594  switch (idx[1])
595  {
596  case 0:
597  coerceValue(value, _data.frompr);
598  break;
599  case 1:
600  coerceValue(value, _data.topr);
601  break;
602 
603  }
604  }
605  break;
606  case 7:
607  coerceValue(value, myPrimdel);
608  break;
609  case 8:
610  coerceValue(value, myPrimkeep);
611  break;
612  case 9:
613  if (idx.size() == 1)
614  coerceValue(value, myDetailrenames.entries());
615  else if (instance[0] < myDetailrenames.entries())
616  {
617  auto && _data = myDetailrenames(instance[0]);
618  switch (idx[1])
619  {
620  case 0:
621  coerceValue(value, _data.fromdtl);
622  break;
623  case 1:
624  coerceValue(value, _data.todtl);
625  break;
626 
627  }
628  }
629  break;
630  case 10:
631  coerceValue(value, myDtldel);
632  break;
633  case 11:
634  coerceValue(value, myDtlkeep);
635  break;
636  case 12:
637  if (idx.size() == 1)
638  coerceValue(value, myRmanconversions.entries());
639  else if (instance[0] < myRmanconversions.entries())
640  {
641  auto && _data = myRmanconversions(instance[0]);
642  switch (idx[1])
643  {
644  case 0:
645  coerceValue(value, _data.hname);
646  break;
647  case 1:
648  coerceValue(value, _data.riname);
649  break;
650  case 2:
651  coerceValue(value, _data.ritype);
652  break;
653  case 3:
654  coerceValue(value, _data.rioff);
655  break;
656 
657  }
658  }
659  break;
660  case 13:
661  coerceValue(value, myRidefault);
662  break;
663  case 14:
664  coerceValue(value, myUpdatevar);
665  break;
666  case 15:
667  coerceValue(value, myOverwrite);
668  break;
669  case 16:
670  coerceValue(value, myEncodenames);
671  break;
672 
673  }
674  }
675 
676  bool isParmColorRamp(exint idx) const override
677  {
678  switch (idx)
679  {
680 
681  }
682  return false;
683  }
684 
685  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
686  { doGetParmValue(idx, instance, value); }
687  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
688  { doGetParmValue(idx, instance, value); }
689  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
690  { doGetParmValue(idx, instance, value); }
691  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
692  { doGetParmValue(idx, instance, value); }
693  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
694  { doGetParmValue(idx, instance, value); }
695  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
696  { doGetParmValue(idx, instance, value); }
697  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
698  { doGetParmValue(idx, instance, value); }
699  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
700  { doGetParmValue(idx, instance, value); }
701  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
702  { doGetParmValue(idx, instance, value); }
703  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
704  { doGetParmValue(idx, instance, value); }
705  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
706  { doGetParmValue(idx, instance, value); }
707 
708  template <typename T>
709  void
710  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
711  {
712  if (idx.size() < 1)
713  return;
714  UT_ASSERT(idx.size() == instance.size()+1);
715  if (idx.size() != instance.size()+1)
716  return;
717  switch (idx[0])
718  {
719  case 0:
720  if (idx.size() == 1)
721  {
722  exint newsize;
723  coerceValue(newsize, value);
724  if (newsize < 0) newsize = 0;
725  myPtrenames.setSize(newsize);
726  }
727  else
728  {
729  if (instance[0] < 0)
730  return;
731  myPtrenames.setSizeIfNeeded(instance[0]+1);
732  auto && _data = myPtrenames(instance[0]);
733  switch (idx[1])
734  {
735  case 0:
736  coerceValue(_data.frompt, value);
737  break;
738  case 1:
739  coerceValue(_data.topt, value);
740  break;
741 
742  }
743  }
744  break;
745  case 1:
746  coerceValue(myPtdel, ( ( value ) ));
747  break;
748  case 2:
749  coerceValue(myPtkeep, ( ( value ) ));
750  break;
751  case 3:
752  if (idx.size() == 1)
753  {
754  exint newsize;
755  coerceValue(newsize, value);
756  if (newsize < 0) newsize = 0;
757  myVtxrenames.setSize(newsize);
758  }
759  else
760  {
761  if (instance[0] < 0)
762  return;
763  myVtxrenames.setSizeIfNeeded(instance[0]+1);
764  auto && _data = myVtxrenames(instance[0]);
765  switch (idx[1])
766  {
767  case 0:
768  coerceValue(_data.fromvtx, value);
769  break;
770  case 1:
771  coerceValue(_data.tovtx, value);
772  break;
773 
774  }
775  }
776  break;
777  case 4:
778  coerceValue(myVtxdel, ( ( value ) ));
779  break;
780  case 5:
781  coerceValue(myVtxkeep, ( ( value ) ));
782  break;
783  case 6:
784  if (idx.size() == 1)
785  {
786  exint newsize;
787  coerceValue(newsize, value);
788  if (newsize < 0) newsize = 0;
789  myPrimrenames.setSize(newsize);
790  }
791  else
792  {
793  if (instance[0] < 0)
794  return;
795  myPrimrenames.setSizeIfNeeded(instance[0]+1);
796  auto && _data = myPrimrenames(instance[0]);
797  switch (idx[1])
798  {
799  case 0:
800  coerceValue(_data.frompr, value);
801  break;
802  case 1:
803  coerceValue(_data.topr, value);
804  break;
805 
806  }
807  }
808  break;
809  case 7:
810  coerceValue(myPrimdel, ( ( value ) ));
811  break;
812  case 8:
813  coerceValue(myPrimkeep, ( ( value ) ));
814  break;
815  case 9:
816  if (idx.size() == 1)
817  {
818  exint newsize;
819  coerceValue(newsize, value);
820  if (newsize < 0) newsize = 0;
821  myDetailrenames.setSize(newsize);
822  }
823  else
824  {
825  if (instance[0] < 0)
826  return;
827  myDetailrenames.setSizeIfNeeded(instance[0]+1);
828  auto && _data = myDetailrenames(instance[0]);
829  switch (idx[1])
830  {
831  case 0:
832  coerceValue(_data.fromdtl, value);
833  break;
834  case 1:
835  coerceValue(_data.todtl, value);
836  break;
837 
838  }
839  }
840  break;
841  case 10:
842  coerceValue(myDtldel, ( ( value ) ));
843  break;
844  case 11:
845  coerceValue(myDtlkeep, ( ( value ) ));
846  break;
847  case 12:
848  if (idx.size() == 1)
849  {
850  exint newsize;
851  coerceValue(newsize, value);
852  if (newsize < 0) newsize = 0;
853  myRmanconversions.setSize(newsize);
854  }
855  else
856  {
857  if (instance[0] < 0)
858  return;
859  myRmanconversions.setSizeIfNeeded(instance[0]+1);
860  auto && _data = myRmanconversions(instance[0]);
861  switch (idx[1])
862  {
863  case 0:
864  coerceValue(_data.hname, value);
865  break;
866  case 1:
867  coerceValue(_data.riname, value);
868  break;
869  case 2:
870  coerceValue(_data.ritype, value);
871  break;
872  case 3:
873  coerceValue(_data.rioff, value);
874  break;
875 
876  }
877  }
878  break;
879  case 13:
880  coerceValue(myRidefault, ( ( value ) ));
881  break;
882  case 14:
883  coerceValue(myUpdatevar, ( ( value ) ));
884  break;
885  case 15:
886  coerceValue(myOverwrite, ( ( value ) ));
887  break;
888  case 16:
889  coerceValue(myEncodenames, ( ( value ) ));
890  break;
891 
892  }
893  }
894 
895  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
896  { doSetParmValue(idx, instance, value); }
897  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
898  { doSetParmValue(idx, instance, value); }
899  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
900  { doSetParmValue(idx, instance, value); }
901  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
902  { doSetParmValue(idx, instance, value); }
903  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
904  { doSetParmValue(idx, instance, value); }
905  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
906  { doSetParmValue(idx, instance, value); }
907  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
908  { doSetParmValue(idx, instance, value); }
909  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
910  { doSetParmValue(idx, instance, value); }
911  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
912  { doSetParmValue(idx, instance, value); }
913  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
914  { doSetParmValue(idx, instance, value); }
915  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
916  { doSetParmValue(idx, instance, value); }
917 
918  exint getNestNumParms(TempIndex idx) const override
919  {
920  if (idx.size() == 0)
921  return 17;
922  switch (idx[0])
923  {
924  case 0:
925  return 2;
926  case 3:
927  return 2;
928  case 6:
929  return 2;
930  case 9:
931  return 2;
932  case 12:
933  return 4;
934 
935  }
936  // Invalid
937  return 0;
938  }
939 
940  const char *getNestParmName(TempIndex fieldnum) const override
941  {
942  if (fieldnum.size() < 1)
943  return 0;
944  switch (fieldnum[0])
945  {
946  case 0:
947  if (fieldnum.size() == 1)
948  return "ptrenames";
949  switch (fieldnum[1])
950  {
951  case 0:
952  return "frompt#";
953  case 1:
954  return "topt#";
955 
956  }
957  return 0;
958  case 1:
959  return "ptdel";
960  case 2:
961  return "ptkeep";
962  case 3:
963  if (fieldnum.size() == 1)
964  return "vtxrenames";
965  switch (fieldnum[1])
966  {
967  case 0:
968  return "fromvtx#";
969  case 1:
970  return "tovtx#";
971 
972  }
973  return 0;
974  case 4:
975  return "vtxdel";
976  case 5:
977  return "vtxkeep";
978  case 6:
979  if (fieldnum.size() == 1)
980  return "primrenames";
981  switch (fieldnum[1])
982  {
983  case 0:
984  return "frompr#";
985  case 1:
986  return "topr#";
987 
988  }
989  return 0;
990  case 7:
991  return "primdel";
992  case 8:
993  return "primkeep";
994  case 9:
995  if (fieldnum.size() == 1)
996  return "detailrenames";
997  switch (fieldnum[1])
998  {
999  case 0:
1000  return "fromdtl#";
1001  case 1:
1002  return "todtl#";
1003 
1004  }
1005  return 0;
1006  case 10:
1007  return "dtldel";
1008  case 11:
1009  return "dtlkeep";
1010  case 12:
1011  if (fieldnum.size() == 1)
1012  return "rmanconversions";
1013  switch (fieldnum[1])
1014  {
1015  case 0:
1016  return "hname#";
1017  case 1:
1018  return "riname#";
1019  case 2:
1020  return "ritype#";
1021  case 3:
1022  return "rioff#";
1023 
1024  }
1025  return 0;
1026  case 13:
1027  return "ridefault";
1028  case 14:
1029  return "updatevar";
1030  case 15:
1031  return "overwrite";
1032  case 16:
1033  return "encodenames";
1034 
1035  }
1036  return 0;
1037  }
1038 
1039  ParmType getNestParmType(TempIndex fieldnum) const override
1040  {
1041  if (fieldnum.size() < 1)
1042  return PARM_UNSUPPORTED;
1043  switch (fieldnum[0])
1044  {
1045  case 0:
1046  if (fieldnum.size() == 1)
1047  return PARM_MULTIPARM;
1048  switch (fieldnum[1])
1049  {
1050  case 0:
1051  return PARM_STRING;
1052  case 1:
1053  return PARM_STRING;
1054 
1055  }
1056  return PARM_UNSUPPORTED;
1057  case 1:
1058  return PARM_STRING;
1059  case 2:
1060  return PARM_STRING;
1061  case 3:
1062  if (fieldnum.size() == 1)
1063  return PARM_MULTIPARM;
1064  switch (fieldnum[1])
1065  {
1066  case 0:
1067  return PARM_STRING;
1068  case 1:
1069  return PARM_STRING;
1070 
1071  }
1072  return PARM_UNSUPPORTED;
1073  case 4:
1074  return PARM_STRING;
1075  case 5:
1076  return PARM_STRING;
1077  case 6:
1078  if (fieldnum.size() == 1)
1079  return PARM_MULTIPARM;
1080  switch (fieldnum[1])
1081  {
1082  case 0:
1083  return PARM_STRING;
1084  case 1:
1085  return PARM_STRING;
1086 
1087  }
1088  return PARM_UNSUPPORTED;
1089  case 7:
1090  return PARM_STRING;
1091  case 8:
1092  return PARM_STRING;
1093  case 9:
1094  if (fieldnum.size() == 1)
1095  return PARM_MULTIPARM;
1096  switch (fieldnum[1])
1097  {
1098  case 0:
1099  return PARM_STRING;
1100  case 1:
1101  return PARM_STRING;
1102 
1103  }
1104  return PARM_UNSUPPORTED;
1105  case 10:
1106  return PARM_STRING;
1107  case 11:
1108  return PARM_STRING;
1109  case 12:
1110  if (fieldnum.size() == 1)
1111  return PARM_MULTIPARM;
1112  switch (fieldnum[1])
1113  {
1114  case 0:
1115  return PARM_STRING;
1116  case 1:
1117  return PARM_STRING;
1118  case 2:
1119  return PARM_STRING;
1120  case 3:
1121  return PARM_INTEGER;
1122 
1123  }
1124  return PARM_UNSUPPORTED;
1125  case 13:
1126  return PARM_INTEGER;
1127  case 14:
1128  return PARM_INTEGER;
1129  case 15:
1130  return PARM_INTEGER;
1131  case 16:
1132  return PARM_INTEGER;
1133 
1134  }
1135  return PARM_UNSUPPORTED;
1136  }
1137 
1138  // Boiler plate to load individual types.
1139  static void loadData(UT_IStream &is, int64 &v)
1140  { is.bread(&v, 1); }
1141  static void loadData(UT_IStream &is, bool &v)
1142  { int64 iv; is.bread(&iv, 1); v = iv; }
1143  static void loadData(UT_IStream &is, fpreal64 &v)
1144  { is.bread<fpreal64>(&v, 1); }
1145  static void loadData(UT_IStream &is, UT_Vector2D &v)
1146  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1147  static void loadData(UT_IStream &is, UT_Vector3D &v)
1148  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1149  is.bread<fpreal64>(&v.z(), 1); }
1150  static void loadData(UT_IStream &is, UT_Vector4D &v)
1151  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1152  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1153  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1154  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1155  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1156  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1157  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1158  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1159  static void loadData(UT_IStream &is, UT_Vector2I &v)
1160  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1161  static void loadData(UT_IStream &is, UT_Vector3I &v)
1162  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1163  is.bread<int64>(&v.z(), 1); }
1164  static void loadData(UT_IStream &is, UT_Vector4I &v)
1165  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1166  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1168  { is.bread(v); }
1170  { UT_StringHolder rampdata;
1171  loadData(is, rampdata);
1172  if (rampdata.isstring())
1173  {
1174  v.reset(new UT_Ramp());
1175  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1176  v->load(istr);
1177  }
1178  else v.reset();
1179  }
1182  loadData(is, data);
1183  if (data.isstring())
1184  {
1185  // Find the data type.
1186  const char *colon = UT_StringWrap(data).findChar(':');
1187  if (colon)
1188  {
1189  int typelen = colon - data.buffer();
1191  type.strncpy(data.buffer(), typelen);
1192  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1193 
1194  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1195  }
1196  }
1197  else v.reset();
1198  }
1199 
1200  static void saveData(std::ostream &os, int64 v)
1201  { UTwrite(os, &v); }
1202  static void saveData(std::ostream &os, bool v)
1203  { int64 iv = v; UTwrite(os, &iv); }
1204  static void saveData(std::ostream &os, fpreal64 v)
1205  { UTwrite<fpreal64>(os, &v); }
1206  static void saveData(std::ostream &os, UT_Vector2D v)
1207  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1208  static void saveData(std::ostream &os, UT_Vector3D v)
1209  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1210  UTwrite<fpreal64>(os, &v.z()); }
1211  static void saveData(std::ostream &os, UT_Vector4D v)
1212  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1213  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1214  static void saveData(std::ostream &os, UT_Matrix2D v)
1216  static void saveData(std::ostream &os, UT_Matrix3D v)
1218  static void saveData(std::ostream &os, UT_Matrix4D v)
1220  static void saveData(std::ostream &os, UT_StringHolder s)
1221  { UT_StringWrap(s).saveBinary(os); }
1222  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1224  UT_OStringStream ostr;
1225  if (s) s->save(ostr);
1226  result = ostr.str();
1227  saveData(os, result);
1228  }
1229  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1231  UT_OStringStream ostr;
1232  if (s)
1233  {
1234  ostr << s->getDataTypeToken();
1235  ostr << ":";
1236  s->saveBinary(ostr);
1237  }
1238  result = ostr.str();
1239  saveData(os, result);
1240  }
1241 
1242 
1243  void save(std::ostream &os) const
1244  {
1245  int32 v = version();
1246  UTwrite(os, &v);
1247  {
1248  int64 length = myPtrenames.entries();
1249  UTwrite(os, &length);
1250  for (exint i = 0; i < length; i++)
1251  {
1252  auto && _curentry = myPtrenames(i);
1253  (void) _curentry;
1254  saveData(os, _curentry.frompt);
1255  saveData(os, _curentry.topt);
1256 
1257  }
1258  }
1259  saveData(os, myPtdel);
1260  saveData(os, myPtkeep);
1261  {
1262  int64 length = myVtxrenames.entries();
1263  UTwrite(os, &length);
1264  for (exint i = 0; i < length; i++)
1265  {
1266  auto && _curentry = myVtxrenames(i);
1267  (void) _curentry;
1268  saveData(os, _curentry.fromvtx);
1269  saveData(os, _curentry.tovtx);
1270 
1271  }
1272  }
1273  saveData(os, myVtxdel);
1274  saveData(os, myVtxkeep);
1275  {
1276  int64 length = myPrimrenames.entries();
1277  UTwrite(os, &length);
1278  for (exint i = 0; i < length; i++)
1279  {
1280  auto && _curentry = myPrimrenames(i);
1281  (void) _curentry;
1282  saveData(os, _curentry.frompr);
1283  saveData(os, _curentry.topr);
1284 
1285  }
1286  }
1287  saveData(os, myPrimdel);
1288  saveData(os, myPrimkeep);
1289  {
1290  int64 length = myDetailrenames.entries();
1291  UTwrite(os, &length);
1292  for (exint i = 0; i < length; i++)
1293  {
1294  auto && _curentry = myDetailrenames(i);
1295  (void) _curentry;
1296  saveData(os, _curentry.fromdtl);
1297  saveData(os, _curentry.todtl);
1298 
1299  }
1300  }
1301  saveData(os, myDtldel);
1302  saveData(os, myDtlkeep);
1303  {
1304  int64 length = myRmanconversions.entries();
1305  UTwrite(os, &length);
1306  for (exint i = 0; i < length; i++)
1307  {
1308  auto && _curentry = myRmanconversions(i);
1309  (void) _curentry;
1310  saveData(os, _curentry.hname);
1311  saveData(os, _curentry.riname);
1312  saveData(os, _curentry.ritype);
1313  saveData(os, _curentry.rioff);
1314 
1315  }
1316  }
1317  saveData(os, myRidefault);
1318  saveData(os, myUpdatevar);
1319  saveData(os, myOverwrite);
1320  saveData(os, myEncodenames);
1321 
1322  }
1323 
1324  bool load(UT_IStream &is)
1325  {
1326  int32 v;
1327  is.bread(&v, 1);
1328  if (version() != v)
1329  {
1330  // Fail incompatible versions
1331  return false;
1332  }
1333  {
1334  int64 length;
1335  is.read(&length, 1);
1336  myPtrenames.setSize(length);
1337  for (exint i = 0; i < length; i++)
1338  {
1339  auto && _curentry = myPtrenames(i);
1340  (void) _curentry;
1341  loadData(is, _curentry.frompt);
1342  loadData(is, _curentry.topt);
1343 
1344  }
1345  }
1346  loadData(is, myPtdel);
1347  loadData(is, myPtkeep);
1348  {
1349  int64 length;
1350  is.read(&length, 1);
1351  myVtxrenames.setSize(length);
1352  for (exint i = 0; i < length; i++)
1353  {
1354  auto && _curentry = myVtxrenames(i);
1355  (void) _curentry;
1356  loadData(is, _curentry.fromvtx);
1357  loadData(is, _curentry.tovtx);
1358 
1359  }
1360  }
1361  loadData(is, myVtxdel);
1362  loadData(is, myVtxkeep);
1363  {
1364  int64 length;
1365  is.read(&length, 1);
1366  myPrimrenames.setSize(length);
1367  for (exint i = 0; i < length; i++)
1368  {
1369  auto && _curentry = myPrimrenames(i);
1370  (void) _curentry;
1371  loadData(is, _curentry.frompr);
1372  loadData(is, _curentry.topr);
1373 
1374  }
1375  }
1376  loadData(is, myPrimdel);
1377  loadData(is, myPrimkeep);
1378  {
1379  int64 length;
1380  is.read(&length, 1);
1381  myDetailrenames.setSize(length);
1382  for (exint i = 0; i < length; i++)
1383  {
1384  auto && _curentry = myDetailrenames(i);
1385  (void) _curentry;
1386  loadData(is, _curentry.fromdtl);
1387  loadData(is, _curentry.todtl);
1388 
1389  }
1390  }
1391  loadData(is, myDtldel);
1392  loadData(is, myDtlkeep);
1393  {
1394  int64 length;
1395  is.read(&length, 1);
1396  myRmanconversions.setSize(length);
1397  for (exint i = 0; i < length; i++)
1398  {
1399  auto && _curentry = myRmanconversions(i);
1400  (void) _curentry;
1401  loadData(is, _curentry.hname);
1402  loadData(is, _curentry.riname);
1403  loadData(is, _curentry.ritype);
1404  loadData(is, _curentry.rioff);
1405 
1406  }
1407  }
1408  loadData(is, myRidefault);
1409  loadData(is, myUpdatevar);
1410  loadData(is, myOverwrite);
1411  loadData(is, myEncodenames);
1412 
1413  return true;
1414  }
1415 
1416  const UT_Array<Ptrenames> &getPtrenames() const { return myPtrenames; }
1417 void setPtrenames(const UT_Array<Ptrenames> &val) { myPtrenames = val; }
1419  {
1420  SOP_Node *thissop = cookparms.getNode();
1421  if (!thissop) return getPtrenames().entries();
1422  exint result;
1423  OP_Utils::evalOpParm(result, thissop, "ptrenames", cookparms.getCookTime(), 0);
1424  return result;
1425  }
1427  { return opinstPtrenames_frompt(cookparms, &_idx); }
1428  UT_StringHolder opinstPtrenames_frompt(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1429  {
1430  SOP_Node *thissop = cookparms.getNode();
1431  if (!thissop) return (myPtrenames(_idx[0]).frompt);
1432  int _parmidx[2-1];
1433  _parmidx[1-1] = _idx[1-1] + 0;
1434 
1436  OP_Utils::evalOpParmInst(result, thissop, "frompt#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1437  return (result);
1438  }
1440  { return opinstPtrenames_topt(cookparms, &_idx); }
1441  UT_StringHolder opinstPtrenames_topt(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1442  {
1443  SOP_Node *thissop = cookparms.getNode();
1444  if (!thissop) return (myPtrenames(_idx[0]).topt);
1445  int _parmidx[2-1];
1446  _parmidx[1-1] = _idx[1-1] + 0;
1447 
1449  OP_Utils::evalOpParmInst(result, thissop, "topt#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1450  return (result);
1451  }
1452 
1453  const UT_StringHolder & getPtdel() const { return myPtdel; }
1454  void setPtdel(const UT_StringHolder & val) { myPtdel = val; }
1456  {
1457  SOP_Node *thissop = cookparms.getNode();
1458  if (!thissop) return getPtdel();
1460  OP_Utils::evalOpParm(result, thissop, "ptdel", cookparms.getCookTime(), 0);
1461  return result;
1462  }
1463  const UT_StringHolder & getPtkeep() const { return myPtkeep; }
1464  void setPtkeep(const UT_StringHolder & val) { myPtkeep = val; }
1466  {
1467  SOP_Node *thissop = cookparms.getNode();
1468  if (!thissop) return getPtkeep();
1470  OP_Utils::evalOpParm(result, thissop, "ptkeep", cookparms.getCookTime(), 0);
1471  return result;
1472  }
1473  const UT_Array<Vtxrenames> &getVtxrenames() const { return myVtxrenames; }
1474 void setVtxrenames(const UT_Array<Vtxrenames> &val) { myVtxrenames = val; }
1476  {
1477  SOP_Node *thissop = cookparms.getNode();
1478  if (!thissop) return getVtxrenames().entries();
1479  exint result;
1480  OP_Utils::evalOpParm(result, thissop, "vtxrenames", cookparms.getCookTime(), 0);
1481  return result;
1482  }
1484  { return opinstVtxrenames_fromvtx(cookparms, &_idx); }
1485  UT_StringHolder opinstVtxrenames_fromvtx(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1486  {
1487  SOP_Node *thissop = cookparms.getNode();
1488  if (!thissop) return (myVtxrenames(_idx[0]).fromvtx);
1489  int _parmidx[2-1];
1490  _parmidx[1-1] = _idx[1-1] + 0;
1491 
1493  OP_Utils::evalOpParmInst(result, thissop, "fromvtx#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1494  return (result);
1495  }
1497  { return opinstVtxrenames_tovtx(cookparms, &_idx); }
1498  UT_StringHolder opinstVtxrenames_tovtx(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1499  {
1500  SOP_Node *thissop = cookparms.getNode();
1501  if (!thissop) return (myVtxrenames(_idx[0]).tovtx);
1502  int _parmidx[2-1];
1503  _parmidx[1-1] = _idx[1-1] + 0;
1504 
1506  OP_Utils::evalOpParmInst(result, thissop, "tovtx#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1507  return (result);
1508  }
1509 
1510  const UT_StringHolder & getVtxdel() const { return myVtxdel; }
1511  void setVtxdel(const UT_StringHolder & val) { myVtxdel = val; }
1513  {
1514  SOP_Node *thissop = cookparms.getNode();
1515  if (!thissop) return getVtxdel();
1517  OP_Utils::evalOpParm(result, thissop, "vtxdel", cookparms.getCookTime(), 0);
1518  return result;
1519  }
1520  const UT_StringHolder & getVtxkeep() const { return myVtxkeep; }
1521  void setVtxkeep(const UT_StringHolder & val) { myVtxkeep = val; }
1523  {
1524  SOP_Node *thissop = cookparms.getNode();
1525  if (!thissop) return getVtxkeep();
1527  OP_Utils::evalOpParm(result, thissop, "vtxkeep", cookparms.getCookTime(), 0);
1528  return result;
1529  }
1530  const UT_Array<Primrenames> &getPrimrenames() const { return myPrimrenames; }
1531 void setPrimrenames(const UT_Array<Primrenames> &val) { myPrimrenames = val; }
1533  {
1534  SOP_Node *thissop = cookparms.getNode();
1535  if (!thissop) return getPrimrenames().entries();
1536  exint result;
1537  OP_Utils::evalOpParm(result, thissop, "primrenames", cookparms.getCookTime(), 0);
1538  return result;
1539  }
1541  { return opinstPrimrenames_frompr(cookparms, &_idx); }
1542  UT_StringHolder opinstPrimrenames_frompr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1543  {
1544  SOP_Node *thissop = cookparms.getNode();
1545  if (!thissop) return (myPrimrenames(_idx[0]).frompr);
1546  int _parmidx[2-1];
1547  _parmidx[1-1] = _idx[1-1] + 0;
1548 
1550  OP_Utils::evalOpParmInst(result, thissop, "frompr#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1551  return (result);
1552  }
1554  { return opinstPrimrenames_topr(cookparms, &_idx); }
1555  UT_StringHolder opinstPrimrenames_topr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1556  {
1557  SOP_Node *thissop = cookparms.getNode();
1558  if (!thissop) return (myPrimrenames(_idx[0]).topr);
1559  int _parmidx[2-1];
1560  _parmidx[1-1] = _idx[1-1] + 0;
1561 
1563  OP_Utils::evalOpParmInst(result, thissop, "topr#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1564  return (result);
1565  }
1566 
1567  const UT_StringHolder & getPrimdel() const { return myPrimdel; }
1568  void setPrimdel(const UT_StringHolder & val) { myPrimdel = val; }
1570  {
1571  SOP_Node *thissop = cookparms.getNode();
1572  if (!thissop) return getPrimdel();
1574  OP_Utils::evalOpParm(result, thissop, "primdel", cookparms.getCookTime(), 0);
1575  return result;
1576  }
1577  const UT_StringHolder & getPrimkeep() const { return myPrimkeep; }
1578  void setPrimkeep(const UT_StringHolder & val) { myPrimkeep = val; }
1580  {
1581  SOP_Node *thissop = cookparms.getNode();
1582  if (!thissop) return getPrimkeep();
1584  OP_Utils::evalOpParm(result, thissop, "primkeep", cookparms.getCookTime(), 0);
1585  return result;
1586  }
1587  const UT_Array<Detailrenames> &getDetailrenames() const { return myDetailrenames; }
1588 void setDetailrenames(const UT_Array<Detailrenames> &val) { myDetailrenames = val; }
1590  {
1591  SOP_Node *thissop = cookparms.getNode();
1592  if (!thissop) return getDetailrenames().entries();
1593  exint result;
1594  OP_Utils::evalOpParm(result, thissop, "detailrenames", cookparms.getCookTime(), 0);
1595  return result;
1596  }
1598  { return opinstDetailrenames_fromdtl(cookparms, &_idx); }
1600  {
1601  SOP_Node *thissop = cookparms.getNode();
1602  if (!thissop) return (myDetailrenames(_idx[0]).fromdtl);
1603  int _parmidx[2-1];
1604  _parmidx[1-1] = _idx[1-1] + 0;
1605 
1607  OP_Utils::evalOpParmInst(result, thissop, "fromdtl#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1608  return (result);
1609  }
1611  { return opinstDetailrenames_todtl(cookparms, &_idx); }
1612  UT_StringHolder opinstDetailrenames_todtl(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1613  {
1614  SOP_Node *thissop = cookparms.getNode();
1615  if (!thissop) return (myDetailrenames(_idx[0]).todtl);
1616  int _parmidx[2-1];
1617  _parmidx[1-1] = _idx[1-1] + 0;
1618 
1620  OP_Utils::evalOpParmInst(result, thissop, "todtl#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1621  return (result);
1622  }
1623 
1624  const UT_StringHolder & getDtldel() const { return myDtldel; }
1625  void setDtldel(const UT_StringHolder & val) { myDtldel = val; }
1627  {
1628  SOP_Node *thissop = cookparms.getNode();
1629  if (!thissop) return getDtldel();
1631  OP_Utils::evalOpParm(result, thissop, "dtldel", cookparms.getCookTime(), 0);
1632  return result;
1633  }
1634  const UT_StringHolder & getDtlkeep() const { return myDtlkeep; }
1635  void setDtlkeep(const UT_StringHolder & val) { myDtlkeep = val; }
1637  {
1638  SOP_Node *thissop = cookparms.getNode();
1639  if (!thissop) return getDtlkeep();
1641  OP_Utils::evalOpParm(result, thissop, "dtlkeep", cookparms.getCookTime(), 0);
1642  return result;
1643  }
1644  const UT_Array<Rmanconversions> &getRmanconversions() const { return myRmanconversions; }
1645 void setRmanconversions(const UT_Array<Rmanconversions> &val) { myRmanconversions = val; }
1647  {
1648  SOP_Node *thissop = cookparms.getNode();
1649  if (!thissop) return getRmanconversions().entries();
1650  exint result;
1651  OP_Utils::evalOpParm(result, thissop, "rmanconversions", cookparms.getCookTime(), 0);
1652  return result;
1653  }
1655  { return opinstRmanconversions_hname(cookparms, &_idx); }
1657  {
1658  SOP_Node *thissop = cookparms.getNode();
1659  if (!thissop) return (myRmanconversions(_idx[0]).hname);
1660  int _parmidx[2-1];
1661  _parmidx[1-1] = _idx[1-1] + 0;
1662 
1664  OP_Utils::evalOpParmInst(result, thissop, "hname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1665  return (result);
1666  }
1668  { return opinstRmanconversions_riname(cookparms, &_idx); }
1670  {
1671  SOP_Node *thissop = cookparms.getNode();
1672  if (!thissop) return (myRmanconversions(_idx[0]).riname);
1673  int _parmidx[2-1];
1674  _parmidx[1-1] = _idx[1-1] + 0;
1675 
1677  OP_Utils::evalOpParmInst(result, thissop, "riname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1678  return (result);
1679  }
1681  { return opinstRmanconversions_ritype(cookparms, &_idx); }
1683  {
1684  SOP_Node *thissop = cookparms.getNode();
1685  if (!thissop) return (myRmanconversions(_idx[0]).ritype);
1686  int _parmidx[2-1];
1687  _parmidx[1-1] = _idx[1-1] + 0;
1688 
1690  OP_Utils::evalOpParmInst(result, thissop, "ritype#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1691  return (result);
1692  }
1693  int64 opRmanconversions_rioff(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1694  { return opinstRmanconversions_rioff(cookparms, &_idx); }
1695  int64 opinstRmanconversions_rioff(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1696  {
1697  SOP_Node *thissop = cookparms.getNode();
1698  if (!thissop) return (myRmanconversions(_idx[0]).rioff);
1699  int _parmidx[2-1];
1700  _parmidx[1-1] = _idx[1-1] + 0;
1701 
1702  int64 result;
1703  OP_Utils::evalOpParmInst(result, thissop, "rioff#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1704  return (result);
1705  }
1706 
1707  bool getRidefault() const { return myRidefault; }
1708  void setRidefault(bool val) { myRidefault = val; }
1709  bool opRidefault(const SOP_NodeVerb::CookParms &cookparms) const
1710  {
1711  SOP_Node *thissop = cookparms.getNode();
1712  if (!thissop) return getRidefault();
1713  bool result;
1714  OP_Utils::evalOpParm(result, thissop, "ridefault", cookparms.getCookTime(), 0);
1715  return result;
1716  }
1717  bool getUpdatevar() const { return myUpdatevar; }
1718  void setUpdatevar(bool val) { myUpdatevar = val; }
1719  bool opUpdatevar(const SOP_NodeVerb::CookParms &cookparms) const
1720  {
1721  SOP_Node *thissop = cookparms.getNode();
1722  if (!thissop) return getUpdatevar();
1723  bool result;
1724  OP_Utils::evalOpParm(result, thissop, "updatevar", cookparms.getCookTime(), 0);
1725  return result;
1726  }
1727  bool getOverwrite() const { return myOverwrite; }
1728  void setOverwrite(bool val) { myOverwrite = val; }
1729  bool opOverwrite(const SOP_NodeVerb::CookParms &cookparms) const
1730  {
1731  SOP_Node *thissop = cookparms.getNode();
1732  if (!thissop) return getOverwrite();
1733  bool result;
1734  OP_Utils::evalOpParm(result, thissop, "overwrite", cookparms.getCookTime(), 0);
1735  return result;
1736  }
1737  bool getEncodenames() const { return myEncodenames; }
1738  void setEncodenames(bool val) { myEncodenames = val; }
1739  bool opEncodenames(const SOP_NodeVerb::CookParms &cookparms) const
1740  {
1741  SOP_Node *thissop = cookparms.getNode();
1742  if (!thissop) return getEncodenames();
1743  bool result;
1744  OP_Utils::evalOpParm(result, thissop, "encodenames", cookparms.getCookTime(), 0);
1745  return result;
1746  }
1747 
1748 private:
1749  UT_Array<Ptrenames> myPtrenames;
1750  UT_StringHolder myPtdel;
1751  UT_StringHolder myPtkeep;
1752  UT_Array<Vtxrenames> myVtxrenames;
1753  UT_StringHolder myVtxdel;
1754  UT_StringHolder myVtxkeep;
1755  UT_Array<Primrenames> myPrimrenames;
1756  UT_StringHolder myPrimdel;
1757  UT_StringHolder myPrimkeep;
1758  UT_Array<Detailrenames> myDetailrenames;
1759  UT_StringHolder myDtldel;
1760  UT_StringHolder myDtlkeep;
1761  UT_Array<Rmanconversions> myRmanconversions;
1762  bool myRidefault;
1763  bool myUpdatevar;
1764  bool myOverwrite;
1765  bool myEncodenames;
1766 
1767 };
void setDetailrenames(const UT_Array< Detailrenames > &val)
type
Definition: core.h:556
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:63
UT_StringHolder createString(const UT_Array< Vtxrenames > &list) const
UT_StringHolder opinstPrimrenames_topr(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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:303
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:655
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:310
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:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
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:372
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:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
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
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
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
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