HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_PackedEdit.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 namespace SOP_PackedEditEnums
24 {
25  enum class Viewportlod
26  {
27  UNCHANGED = 0,
28  FULL,
29  POINTS,
30  BOX,
31  CENTROID,
32  HIDDEN
33  };
34 
36  getToken(Viewportlod enum_value)
37  {
38  using namespace UT::Literal;
39  switch (enum_value) {
40  case Viewportlod::UNCHANGED: return "unchanged"_sh;
41  case Viewportlod::FULL: return "full"_sh;
42  case Viewportlod::POINTS: return "points"_sh;
43  case Viewportlod::BOX: return "box"_sh;
44  case Viewportlod::CENTROID: return "centroid"_sh;
45  case Viewportlod::HIDDEN: return "hidden"_sh;
46  default: UT_ASSERT(false); return ""_sh;
47  }
48  }
49 
50  enum class Visible3d
51  {
52  UNCHANGED = 0,
53  HIDE,
54  SHOW,
55  TOGGLE
56  };
57 
59  getToken(Visible3d enum_value)
60  {
61  using namespace UT::Literal;
62  switch (enum_value) {
63  case Visible3d::UNCHANGED: return "unchanged"_sh;
64  case Visible3d::HIDE: return "hide"_sh;
65  case Visible3d::SHOW: return "show"_sh;
66  case Visible3d::TOGGLE: return "toggle"_sh;
67  default: UT_ASSERT(false); return ""_sh;
68  }
69  }
70 
71  enum class Visible2d
72  {
73  UNCHANGED = 0,
74  HIDE,
75  SHOW,
76  TOGGLE
77  };
78 
80  getToken(Visible2d enum_value)
81  {
82  using namespace UT::Literal;
83  switch (enum_value) {
84  case Visible2d::UNCHANGED: return "unchanged"_sh;
85  case Visible2d::HIDE: return "hide"_sh;
86  case Visible2d::SHOW: return "show"_sh;
87  case Visible2d::TOGGLE: return "toggle"_sh;
88  default: UT_ASSERT(false); return ""_sh;
89  }
90  }
91 
92 }
93 
94 
96 {
97 public:
98  static int version() { return 1; }
99  struct Vopcount
100  {
106 
107 
109  {
110  vgroup = ""_UTsh;
111  vpackedname = ""_UTsh;
112  viewportlod = 0;
113  visible3d = 0;
114  visible2d = 0;
115 
116  }
117 
118  bool operator==(const Vopcount &src) const
119  {
120  if (vgroup != src.vgroup) return false;
121  if (vpackedname != src.vpackedname) return false;
122  if (viewportlod != src.viewportlod) return false;
123  if (visible3d != src.visible3d) return false;
124  if (visible2d != src.visible2d) return false;
125 
126  return true;
127  }
128  bool operator!=(const Vopcount &src) const
129  {
130  return !operator==(src);
131  }
132 
133  };
134 
136  {
138 
139  buf.strcat("[ ");
140  for (int i = 0; i < list.entries(); i++)
141  {
142  if (i)
143  buf.strcat(", ");
144  buf.strcat("( ");
145  buf.append("");
146  { UT_String tmp; tmp = UT_StringWrap(list(i).vgroup).makeQuotedString('"'); buf.strcat(tmp); }
147  buf.append(", ");
148  { UT_String tmp; tmp = UT_StringWrap(list(i).vpackedname).makeQuotedString('"'); buf.strcat(tmp); }
149  buf.append(", ");
150  buf.appendSprintf("%d", (int) list(i).viewportlod);
151  buf.append(", ");
152  buf.appendSprintf("%d", (int) list(i).visible3d);
153  buf.append(", ");
154  buf.appendSprintf("%d", (int) list(i).visible2d);
155 
156  buf.strcat(" )");
157  }
158  buf.strcat(" ]");
159 
161  return result;
162  }
163  struct Mopcount
164  {
168 
169 
171  {
172  mgroup = ""_UTsh;
173  mpackedname = ""_UTsh;
174  shop_materialpath = ""_UTsh;
175 
176  }
177 
178  bool operator==(const Mopcount &src) const
179  {
180  if (mgroup != src.mgroup) return false;
181  if (mpackedname != src.mpackedname) return false;
182  if (shop_materialpath != src.shop_materialpath) return false;
183 
184  return true;
185  }
186  bool operator!=(const Mopcount &src) const
187  {
188  return !operator==(src);
189  }
190 
191  };
192 
194  {
196 
197  buf.strcat("[ ");
198  for (int i = 0; i < list.entries(); i++)
199  {
200  if (i)
201  buf.strcat(", ");
202  buf.strcat("( ");
203  buf.append("");
204  { UT_String tmp; tmp = UT_StringWrap(list(i).mgroup).makeQuotedString('"'); buf.strcat(tmp); }
205  buf.append(", ");
206  { UT_String tmp; tmp = UT_StringWrap(list(i).mpackedname).makeQuotedString('"'); buf.strcat(tmp); }
207  buf.append(", ");
208  { UT_String tmp; tmp = UT_StringWrap(list(i).shop_materialpath).makeQuotedString('"'); buf.strcat(tmp); }
209 
210  buf.strcat(" )");
211  }
212  buf.strcat(" ]");
213 
215  return result;
216  }
217  struct Lopcount
218  {
222 
223 
225  {
226  lgroup = ""_UTsh;
227  lpackedname = ""_UTsh;
228  lightcategories = "*"_UTsh;
229 
230  }
231 
232  bool operator==(const Lopcount &src) const
233  {
234  if (lgroup != src.lgroup) return false;
235  if (lpackedname != src.lpackedname) return false;
236  if (lightcategories != src.lightcategories) return false;
237 
238  return true;
239  }
240  bool operator!=(const Lopcount &src) const
241  {
242  return !operator==(src);
243  }
244 
245  };
246 
248  {
250 
251  buf.strcat("[ ");
252  for (int i = 0; i < list.entries(); i++)
253  {
254  if (i)
255  buf.strcat(", ");
256  buf.strcat("( ");
257  buf.append("");
258  { UT_String tmp; tmp = UT_StringWrap(list(i).lgroup).makeQuotedString('"'); buf.strcat(tmp); }
259  buf.append(", ");
260  { UT_String tmp; tmp = UT_StringWrap(list(i).lpackedname).makeQuotedString('"'); buf.strcat(tmp); }
261  buf.append(", ");
262  { UT_String tmp; tmp = UT_StringWrap(list(i).lightcategories).makeQuotedString('"'); buf.strcat(tmp); }
263 
264  buf.strcat(" )");
265  }
266  buf.strcat(" ]");
267 
269  return result;
270  }
271 
273  {
274  myVopcount.setSize(1);
275  myMopcount.setSize(1);
276  myLopcount.setSize(1);
277 
278  }
279 
280  explicit SOP_PackedEditParms(const SOP_PackedEditParms &) = default;
282  SOP_PackedEditParms(SOP_PackedEditParms &&) noexcept = default;
283  SOP_PackedEditParms &operator=(SOP_PackedEditParms &&) noexcept = default;
284 
285  ~SOP_PackedEditParms() override {}
286 
287  bool operator==(const SOP_PackedEditParms &src) const
288  {
289  if (myVopcount != src.myVopcount) return false;
290  if (myMopcount != src.myMopcount) return false;
291  if (myLopcount != src.myLopcount) return false;
292 
293  return true;
294  }
295  bool operator!=(const SOP_PackedEditParms &src) const
296  {
297  return !operator==(src);
298  }
302 
303 
304 
305  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
306  {
307  if (true)
308  {
309  int64 length = 0;
310  graph->evalOpParm(length, nodeidx, "vopcount", time, 0);
311  if (length < 0) length = 0;
312  myVopcount.setSize(length);
313  for (exint i = 0; i < length; i++)
314  {
315  int parmidx[1];
316  int offsets[1];
317  parmidx[0] = i+0;
318  offsets[0] = 0;
319  auto && _curentry = myVopcount(i);
320  (void) _curentry;
321  _curentry.vgroup = ""_UTsh;
322  if (true)
323  graph->evalOpParmInst(_curentry.vgroup, nodeidx, "vgroup#", parmidx, offsets, time, 0, 2-1);
324  _curentry.vpackedname = ""_UTsh;
325  if (true)
326  graph->evalOpParmInst(_curentry.vpackedname, nodeidx, "vpackedname#", parmidx, offsets, time, 0, 2-1);
327  _curentry.viewportlod = 0;
328  if (true)
329  graph->evalOpParmInst(_curentry.viewportlod, nodeidx, "viewportlod#", parmidx, offsets, time, 0, 2-1);
330  _curentry.visible3d = 0;
331  if (true)
332  graph->evalOpParmInst(_curentry.visible3d, nodeidx, "visible3d#", parmidx, offsets, time, 0, 2-1);
333  _curentry.visible2d = 0;
334  if (true)
335  graph->evalOpParmInst(_curentry.visible2d, nodeidx, "visible2d#", parmidx, offsets, time, 0, 2-1);
336 
337  }
338  }
339  else
340  myVopcount.clear();
341  if (true)
342  {
343  int64 length = 0;
344  graph->evalOpParm(length, nodeidx, "mopcount", time, 0);
345  if (length < 0) length = 0;
346  myMopcount.setSize(length);
347  for (exint i = 0; i < length; i++)
348  {
349  int parmidx[1];
350  int offsets[1];
351  parmidx[0] = i+0;
352  offsets[0] = 0;
353  auto && _curentry = myMopcount(i);
354  (void) _curentry;
355  _curentry.mgroup = ""_UTsh;
356  if (true)
357  graph->evalOpParmInst(_curentry.mgroup, nodeidx, "mgroup#", parmidx, offsets, time, 0, 2-1);
358  _curentry.mpackedname = ""_UTsh;
359  if (true)
360  graph->evalOpParmInst(_curentry.mpackedname, nodeidx, "mpackedname#", parmidx, offsets, time, 0, 2-1);
361  _curentry.shop_materialpath = ""_UTsh;
362  if (true)
363  graph->evalOpParmInst(_curentry.shop_materialpath, nodeidx, "shop_materialpath#", parmidx, offsets, time, 0, 2-1);
364 
365  }
366  }
367  else
368  myMopcount.clear();
369  if (true)
370  {
371  int64 length = 0;
372  graph->evalOpParm(length, nodeidx, "lopcount", time, 0);
373  if (length < 0) length = 0;
374  myLopcount.setSize(length);
375  for (exint i = 0; i < length; i++)
376  {
377  int parmidx[1];
378  int offsets[1];
379  parmidx[0] = i+0;
380  offsets[0] = 0;
381  auto && _curentry = myLopcount(i);
382  (void) _curentry;
383  _curentry.lgroup = ""_UTsh;
384  if (true)
385  graph->evalOpParmInst(_curentry.lgroup, nodeidx, "lgroup#", parmidx, offsets, time, 0, 2-1);
386  _curentry.lpackedname = ""_UTsh;
387  if (true)
388  graph->evalOpParmInst(_curentry.lpackedname, nodeidx, "lpackedname#", parmidx, offsets, time, 0, 2-1);
389  _curentry.lightcategories = "*"_UTsh;
390  if (true)
391  graph->evalOpParmInst(_curentry.lightcategories, nodeidx, "lightcategories#", parmidx, offsets, time, 0, 2-1);
392 
393  }
394  }
395  else
396  myLopcount.clear();
397 
398  }
399 
400 
401  void loadFromOpSubclass(const LoadParms &loadparms) override
402  {
403  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
404  }
405 
406 
407  void copyFrom(const OP_NodeParms *src) override
408  {
409  *this = *((const SOP_PackedEditParms *)src);
410  }
411 
412  template <typename T>
413  void
414  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
415  {
416  if (idx.size() < 1)
417  return;
418  UT_ASSERT(idx.size() == instance.size()+1);
419  if (idx.size() != instance.size()+1)
420  return;
421  switch (idx[0])
422  {
423  case 0:
424  if (idx.size() == 1)
425  coerceValue(value, myVopcount.entries());
426  else if (instance[0] < myVopcount.entries())
427  {
428  auto && _data = myVopcount(instance[0]);
429  switch (idx[1])
430  {
431  case 0:
432  coerceValue(value, _data.vgroup);
433  break;
434  case 1:
435  coerceValue(value, _data.vpackedname);
436  break;
437  case 2:
438  coerceValue(value, _data.viewportlod);
439  break;
440  case 3:
441  coerceValue(value, _data.visible3d);
442  break;
443  case 4:
444  coerceValue(value, _data.visible2d);
445  break;
446 
447  }
448  }
449  break;
450  case 1:
451  if (idx.size() == 1)
452  coerceValue(value, myMopcount.entries());
453  else if (instance[0] < myMopcount.entries())
454  {
455  auto && _data = myMopcount(instance[0]);
456  switch (idx[1])
457  {
458  case 0:
459  coerceValue(value, _data.mgroup);
460  break;
461  case 1:
462  coerceValue(value, _data.mpackedname);
463  break;
464  case 2:
465  coerceValue(value, _data.shop_materialpath);
466  break;
467 
468  }
469  }
470  break;
471  case 2:
472  if (idx.size() == 1)
473  coerceValue(value, myLopcount.entries());
474  else if (instance[0] < myLopcount.entries())
475  {
476  auto && _data = myLopcount(instance[0]);
477  switch (idx[1])
478  {
479  case 0:
480  coerceValue(value, _data.lgroup);
481  break;
482  case 1:
483  coerceValue(value, _data.lpackedname);
484  break;
485  case 2:
486  coerceValue(value, _data.lightcategories);
487  break;
488 
489  }
490  }
491  break;
492 
493  }
494  }
495 
496  bool isParmColorRamp(exint idx) const override
497  {
498  switch (idx)
499  {
500 
501  }
502  return false;
503  }
504 
505  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
506  { doGetParmValue(idx, instance, value); }
507  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
508  { doGetParmValue(idx, instance, value); }
509  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
510  { doGetParmValue(idx, instance, value); }
511  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
512  { doGetParmValue(idx, instance, value); }
513  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
514  { doGetParmValue(idx, instance, value); }
515  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
516  { doGetParmValue(idx, instance, value); }
517  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
518  { doGetParmValue(idx, instance, value); }
519  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
520  { doGetParmValue(idx, instance, value); }
521  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
522  { doGetParmValue(idx, instance, value); }
523  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
524  { doGetParmValue(idx, instance, value); }
525  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
526  { doGetParmValue(idx, instance, value); }
527 
528  template <typename T>
529  void
530  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
531  {
532  if (idx.size() < 1)
533  return;
534  UT_ASSERT(idx.size() == instance.size()+1);
535  if (idx.size() != instance.size()+1)
536  return;
537  switch (idx[0])
538  {
539  case 0:
540  if (idx.size() == 1)
541  {
542  exint newsize;
543  coerceValue(newsize, value);
544  if (newsize < 0) newsize = 0;
545  myVopcount.setSize(newsize);
546  }
547  else
548  {
549  if (instance[0] < 0)
550  return;
551  myVopcount.setSizeIfNeeded(instance[0]+1);
552  auto && _data = myVopcount(instance[0]);
553  switch (idx[1])
554  {
555  case 0:
556  coerceValue(_data.vgroup, value);
557  break;
558  case 1:
559  coerceValue(_data.vpackedname, value);
560  break;
561  case 2:
562  coerceValue(_data.viewportlod, value);
563  break;
564  case 3:
565  coerceValue(_data.visible3d, value);
566  break;
567  case 4:
568  coerceValue(_data.visible2d, value);
569  break;
570 
571  }
572  }
573  break;
574  case 1:
575  if (idx.size() == 1)
576  {
577  exint newsize;
578  coerceValue(newsize, value);
579  if (newsize < 0) newsize = 0;
580  myMopcount.setSize(newsize);
581  }
582  else
583  {
584  if (instance[0] < 0)
585  return;
586  myMopcount.setSizeIfNeeded(instance[0]+1);
587  auto && _data = myMopcount(instance[0]);
588  switch (idx[1])
589  {
590  case 0:
591  coerceValue(_data.mgroup, value);
592  break;
593  case 1:
594  coerceValue(_data.mpackedname, value);
595  break;
596  case 2:
597  coerceValue(_data.shop_materialpath, value);
598  break;
599 
600  }
601  }
602  break;
603  case 2:
604  if (idx.size() == 1)
605  {
606  exint newsize;
607  coerceValue(newsize, value);
608  if (newsize < 0) newsize = 0;
609  myLopcount.setSize(newsize);
610  }
611  else
612  {
613  if (instance[0] < 0)
614  return;
615  myLopcount.setSizeIfNeeded(instance[0]+1);
616  auto && _data = myLopcount(instance[0]);
617  switch (idx[1])
618  {
619  case 0:
620  coerceValue(_data.lgroup, value);
621  break;
622  case 1:
623  coerceValue(_data.lpackedname, value);
624  break;
625  case 2:
626  coerceValue(_data.lightcategories, value);
627  break;
628 
629  }
630  }
631  break;
632 
633  }
634  }
635 
636  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
637  { doSetParmValue(idx, instance, value); }
638  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
639  { doSetParmValue(idx, instance, value); }
640  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
641  { doSetParmValue(idx, instance, value); }
642  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
643  { doSetParmValue(idx, instance, value); }
644  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
645  { doSetParmValue(idx, instance, value); }
646  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
647  { doSetParmValue(idx, instance, value); }
648  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
649  { doSetParmValue(idx, instance, value); }
650  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
651  { doSetParmValue(idx, instance, value); }
652  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
653  { doSetParmValue(idx, instance, value); }
654  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
655  { doSetParmValue(idx, instance, value); }
656  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
657  { doSetParmValue(idx, instance, value); }
658 
659  exint getNestNumParms(TempIndex idx) const override
660  {
661  if (idx.size() == 0)
662  return 3;
663  switch (idx[0])
664  {
665  case 0:
666  return 5;
667  case 1:
668  return 3;
669  case 2:
670  return 3;
671 
672  }
673  // Invalid
674  return 0;
675  }
676 
677  const char *getNestParmName(TempIndex fieldnum) const override
678  {
679  if (fieldnum.size() < 1)
680  return 0;
681  switch (fieldnum[0])
682  {
683  case 0:
684  if (fieldnum.size() == 1)
685  return "vopcount";
686  switch (fieldnum[1])
687  {
688  case 0:
689  return "vgroup#";
690  case 1:
691  return "vpackedname#";
692  case 2:
693  return "viewportlod#";
694  case 3:
695  return "visible3d#";
696  case 4:
697  return "visible2d#";
698 
699  }
700  return 0;
701  case 1:
702  if (fieldnum.size() == 1)
703  return "mopcount";
704  switch (fieldnum[1])
705  {
706  case 0:
707  return "mgroup#";
708  case 1:
709  return "mpackedname#";
710  case 2:
711  return "shop_materialpath#";
712 
713  }
714  return 0;
715  case 2:
716  if (fieldnum.size() == 1)
717  return "lopcount";
718  switch (fieldnum[1])
719  {
720  case 0:
721  return "lgroup#";
722  case 1:
723  return "lpackedname#";
724  case 2:
725  return "lightcategories#";
726 
727  }
728  return 0;
729 
730  }
731  return 0;
732  }
733 
734  ParmType getNestParmType(TempIndex fieldnum) const override
735  {
736  if (fieldnum.size() < 1)
737  return PARM_UNSUPPORTED;
738  switch (fieldnum[0])
739  {
740  case 0:
741  if (fieldnum.size() == 1)
742  return PARM_MULTIPARM;
743  switch (fieldnum[1])
744  {
745  case 0:
746  return PARM_STRING;
747  case 1:
748  return PARM_STRING;
749  case 2:
750  return PARM_INTEGER;
751  case 3:
752  return PARM_INTEGER;
753  case 4:
754  return PARM_INTEGER;
755 
756  }
757  return PARM_UNSUPPORTED;
758  case 1:
759  if (fieldnum.size() == 1)
760  return PARM_MULTIPARM;
761  switch (fieldnum[1])
762  {
763  case 0:
764  return PARM_STRING;
765  case 1:
766  return PARM_STRING;
767  case 2:
768  return PARM_STRING;
769 
770  }
771  return PARM_UNSUPPORTED;
772  case 2:
773  if (fieldnum.size() == 1)
774  return PARM_MULTIPARM;
775  switch (fieldnum[1])
776  {
777  case 0:
778  return PARM_STRING;
779  case 1:
780  return PARM_STRING;
781  case 2:
782  return PARM_STRING;
783 
784  }
785  return PARM_UNSUPPORTED;
786 
787  }
788  return PARM_UNSUPPORTED;
789  }
790 
791  // Boiler plate to load individual types.
792  static void loadData(UT_IStream &is, int64 &v)
793  { is.bread(&v, 1); }
794  static void loadData(UT_IStream &is, bool &v)
795  { int64 iv; is.bread(&iv, 1); v = iv; }
796  static void loadData(UT_IStream &is, fpreal64 &v)
797  { is.bread<fpreal64>(&v, 1); }
798  static void loadData(UT_IStream &is, UT_Vector2D &v)
799  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
800  static void loadData(UT_IStream &is, UT_Vector3D &v)
801  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
802  is.bread<fpreal64>(&v.z(), 1); }
803  static void loadData(UT_IStream &is, UT_Vector4D &v)
804  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
805  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
806  static void loadData(UT_IStream &is, UT_Matrix2D &v)
807  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
808  static void loadData(UT_IStream &is, UT_Matrix3D &v)
809  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
810  static void loadData(UT_IStream &is, UT_Matrix4D &v)
811  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
812  static void loadData(UT_IStream &is, UT_Vector2I &v)
813  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
814  static void loadData(UT_IStream &is, UT_Vector3I &v)
815  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
816  is.bread<int64>(&v.z(), 1); }
817  static void loadData(UT_IStream &is, UT_Vector4I &v)
818  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
819  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
821  { is.bread(v); }
823  { UT_StringHolder rampdata;
824  loadData(is, rampdata);
825  if (rampdata.isstring())
826  {
827  v.reset(new UT_Ramp());
828  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
829  v->load(istr);
830  }
831  else v.reset();
832  }
835  loadData(is, data);
836  if (data.isstring())
837  {
838  // Find the data type.
839  const char *colon = UT_StringWrap(data).findChar(':');
840  if (colon)
841  {
842  int typelen = colon - data.buffer();
844  type.strncpy(data.buffer(), typelen);
845  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
846 
847  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
848  }
849  }
850  else v.reset();
851  }
852 
853  static void saveData(std::ostream &os, int64 v)
854  { UTwrite(os, &v); }
855  static void saveData(std::ostream &os, bool v)
856  { int64 iv = v; UTwrite(os, &iv); }
857  static void saveData(std::ostream &os, fpreal64 v)
858  { UTwrite<fpreal64>(os, &v); }
859  static void saveData(std::ostream &os, UT_Vector2D v)
860  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
861  static void saveData(std::ostream &os, UT_Vector3D v)
862  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
863  UTwrite<fpreal64>(os, &v.z()); }
864  static void saveData(std::ostream &os, UT_Vector4D v)
865  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
866  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
867  static void saveData(std::ostream &os, UT_Matrix2D v)
869  static void saveData(std::ostream &os, UT_Matrix3D v)
871  static void saveData(std::ostream &os, UT_Matrix4D v)
873  static void saveData(std::ostream &os, UT_StringHolder s)
874  { UT_StringWrap(s).saveBinary(os); }
875  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
877  UT_OStringStream ostr;
878  if (s) s->save(ostr);
879  result = ostr.str();
880  saveData(os, result);
881  }
882  static void saveData(std::ostream &os, PRM_DataItemHandle s)
884  UT_OStringStream ostr;
885  if (s)
886  {
887  ostr << s->getDataTypeToken();
888  ostr << ":";
889  s->saveBinary(ostr);
890  }
891  result = ostr.str();
892  saveData(os, result);
893  }
894 
895 
896  void save(std::ostream &os) const
897  {
898  int32 v = version();
899  UTwrite(os, &v);
900  {
901  int64 length = myVopcount.entries();
902  UTwrite(os, &length);
903  for (exint i = 0; i < length; i++)
904  {
905  auto && _curentry = myVopcount(i);
906  (void) _curentry;
907  saveData(os, _curentry.vgroup);
908  saveData(os, _curentry.vpackedname);
909  saveData(os, _curentry.viewportlod);
910  saveData(os, _curentry.visible3d);
911  saveData(os, _curentry.visible2d);
912 
913  }
914  }
915  {
916  int64 length = myMopcount.entries();
917  UTwrite(os, &length);
918  for (exint i = 0; i < length; i++)
919  {
920  auto && _curentry = myMopcount(i);
921  (void) _curentry;
922  saveData(os, _curentry.mgroup);
923  saveData(os, _curentry.mpackedname);
924  saveData(os, _curentry.shop_materialpath);
925 
926  }
927  }
928  {
929  int64 length = myLopcount.entries();
930  UTwrite(os, &length);
931  for (exint i = 0; i < length; i++)
932  {
933  auto && _curentry = myLopcount(i);
934  (void) _curentry;
935  saveData(os, _curentry.lgroup);
936  saveData(os, _curentry.lpackedname);
937  saveData(os, _curentry.lightcategories);
938 
939  }
940  }
941 
942  }
943 
944  bool load(UT_IStream &is)
945  {
946  int32 v;
947  is.bread(&v, 1);
948  if (version() != v)
949  {
950  // Fail incompatible versions
951  return false;
952  }
953  {
954  int64 length;
955  is.read(&length, 1);
956  myVopcount.setSize(length);
957  for (exint i = 0; i < length; i++)
958  {
959  auto && _curentry = myVopcount(i);
960  (void) _curentry;
961  loadData(is, _curentry.vgroup);
962  loadData(is, _curentry.vpackedname);
963  loadData(is, _curentry.viewportlod);
964  loadData(is, _curentry.visible3d);
965  loadData(is, _curentry.visible2d);
966 
967  }
968  }
969  {
970  int64 length;
971  is.read(&length, 1);
972  myMopcount.setSize(length);
973  for (exint i = 0; i < length; i++)
974  {
975  auto && _curentry = myMopcount(i);
976  (void) _curentry;
977  loadData(is, _curentry.mgroup);
978  loadData(is, _curentry.mpackedname);
979  loadData(is, _curentry.shop_materialpath);
980 
981  }
982  }
983  {
984  int64 length;
985  is.read(&length, 1);
986  myLopcount.setSize(length);
987  for (exint i = 0; i < length; i++)
988  {
989  auto && _curentry = myLopcount(i);
990  (void) _curentry;
991  loadData(is, _curentry.lgroup);
992  loadData(is, _curentry.lpackedname);
993  loadData(is, _curentry.lightcategories);
994 
995  }
996  }
997 
998  return true;
999  }
1000 
1001  const UT_Array<Vopcount> &getVopcount() const { return myVopcount; }
1002 void setVopcount(const UT_Array<Vopcount> &val) { myVopcount = val; }
1003  exint opVopcount(const SOP_NodeVerb::CookParms &cookparms) const
1004  {
1005  SOP_Node *thissop = cookparms.getNode();
1006  if (!thissop) return getVopcount().entries();
1007  exint result;
1008  OP_Utils::evalOpParm(result, thissop, "vopcount", cookparms.getCookTime(), 0);
1009  return result;
1010  }
1012  { return opinstVopcount_vgroup(cookparms, &_idx); }
1013  UT_StringHolder opinstVopcount_vgroup(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1014  {
1015  SOP_Node *thissop = cookparms.getNode();
1016  if (!thissop) return (myVopcount(_idx[0]).vgroup);
1017  int _parmidx[2-1];
1018  _parmidx[1-1] = _idx[1-1] + 0;
1019 
1021  OP_Utils::evalOpParmInst(result, thissop, "vgroup#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1022  return (result);
1023  }
1025  { return opinstVopcount_vpackedname(cookparms, &_idx); }
1026  UT_StringHolder opinstVopcount_vpackedname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1027  {
1028  SOP_Node *thissop = cookparms.getNode();
1029  if (!thissop) return (myVopcount(_idx[0]).vpackedname);
1030  int _parmidx[2-1];
1031  _parmidx[1-1] = _idx[1-1] + 0;
1032 
1034  OP_Utils::evalOpParmInst(result, thissop, "vpackedname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1035  return (result);
1036  }
1037  int64 opVopcount_viewportlod(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1038  { return opinstVopcount_viewportlod(cookparms, &_idx); }
1039  int64 opinstVopcount_viewportlod(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1040  {
1041  SOP_Node *thissop = cookparms.getNode();
1042  if (!thissop) return (myVopcount(_idx[0]).viewportlod);
1043  int _parmidx[2-1];
1044  _parmidx[1-1] = _idx[1-1] + 0;
1045 
1046  int64 result;
1047  OP_Utils::evalOpParmInst(result, thissop, "viewportlod#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1048  return (result);
1049  }
1050  int64 opVopcount_visible3d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1051  { return opinstVopcount_visible3d(cookparms, &_idx); }
1052  int64 opinstVopcount_visible3d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1053  {
1054  SOP_Node *thissop = cookparms.getNode();
1055  if (!thissop) return (myVopcount(_idx[0]).visible3d);
1056  int _parmidx[2-1];
1057  _parmidx[1-1] = _idx[1-1] + 0;
1058 
1059  int64 result;
1060  OP_Utils::evalOpParmInst(result, thissop, "visible3d#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1061  return (result);
1062  }
1063  int64 opVopcount_visible2d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1064  { return opinstVopcount_visible2d(cookparms, &_idx); }
1065  int64 opinstVopcount_visible2d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1066  {
1067  SOP_Node *thissop = cookparms.getNode();
1068  if (!thissop) return (myVopcount(_idx[0]).visible2d);
1069  int _parmidx[2-1];
1070  _parmidx[1-1] = _idx[1-1] + 0;
1071 
1072  int64 result;
1073  OP_Utils::evalOpParmInst(result, thissop, "visible2d#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1074  return (result);
1075  }
1076 
1077  const UT_Array<Mopcount> &getMopcount() const { return myMopcount; }
1078 void setMopcount(const UT_Array<Mopcount> &val) { myMopcount = val; }
1079  exint opMopcount(const SOP_NodeVerb::CookParms &cookparms) const
1080  {
1081  SOP_Node *thissop = cookparms.getNode();
1082  if (!thissop) return getMopcount().entries();
1083  exint result;
1084  OP_Utils::evalOpParm(result, thissop, "mopcount", cookparms.getCookTime(), 0);
1085  return result;
1086  }
1088  { return opinstMopcount_mgroup(cookparms, &_idx); }
1089  UT_StringHolder opinstMopcount_mgroup(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1090  {
1091  SOP_Node *thissop = cookparms.getNode();
1092  if (!thissop) return (myMopcount(_idx[0]).mgroup);
1093  int _parmidx[2-1];
1094  _parmidx[1-1] = _idx[1-1] + 0;
1095 
1097  OP_Utils::evalOpParmInst(result, thissop, "mgroup#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1098  return (result);
1099  }
1101  { return opinstMopcount_mpackedname(cookparms, &_idx); }
1102  UT_StringHolder opinstMopcount_mpackedname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1103  {
1104  SOP_Node *thissop = cookparms.getNode();
1105  if (!thissop) return (myMopcount(_idx[0]).mpackedname);
1106  int _parmidx[2-1];
1107  _parmidx[1-1] = _idx[1-1] + 0;
1108 
1110  OP_Utils::evalOpParmInst(result, thissop, "mpackedname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1111  return (result);
1112  }
1114  { return opinstMopcount_shop_materialpath(cookparms, &_idx); }
1116  {
1117  SOP_Node *thissop = cookparms.getNode();
1118  if (!thissop) return (myMopcount(_idx[0]).shop_materialpath);
1119  int _parmidx[2-1];
1120  _parmidx[1-1] = _idx[1-1] + 0;
1121 
1123  OP_Utils::evalOpParmInst(result, thissop, "shop_materialpath#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1124  return (result);
1125  }
1126 
1127  const UT_Array<Lopcount> &getLopcount() const { return myLopcount; }
1128 void setLopcount(const UT_Array<Lopcount> &val) { myLopcount = val; }
1129  exint opLopcount(const SOP_NodeVerb::CookParms &cookparms) const
1130  {
1131  SOP_Node *thissop = cookparms.getNode();
1132  if (!thissop) return getLopcount().entries();
1133  exint result;
1134  OP_Utils::evalOpParm(result, thissop, "lopcount", cookparms.getCookTime(), 0);
1135  return result;
1136  }
1138  { return opinstLopcount_lgroup(cookparms, &_idx); }
1139  UT_StringHolder opinstLopcount_lgroup(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1140  {
1141  SOP_Node *thissop = cookparms.getNode();
1142  if (!thissop) return (myLopcount(_idx[0]).lgroup);
1143  int _parmidx[2-1];
1144  _parmidx[1-1] = _idx[1-1] + 0;
1145 
1147  OP_Utils::evalOpParmInst(result, thissop, "lgroup#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1148  return (result);
1149  }
1151  { return opinstLopcount_lpackedname(cookparms, &_idx); }
1152  UT_StringHolder opinstLopcount_lpackedname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1153  {
1154  SOP_Node *thissop = cookparms.getNode();
1155  if (!thissop) return (myLopcount(_idx[0]).lpackedname);
1156  int _parmidx[2-1];
1157  _parmidx[1-1] = _idx[1-1] + 0;
1158 
1160  OP_Utils::evalOpParmInst(result, thissop, "lpackedname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1161  return (result);
1162  }
1164  { return opinstLopcount_lightcategories(cookparms, &_idx); }
1166  {
1167  SOP_Node *thissop = cookparms.getNode();
1168  if (!thissop) return (myLopcount(_idx[0]).lightcategories);
1169  int _parmidx[2-1];
1170  _parmidx[1-1] = _idx[1-1] + 0;
1171 
1173  OP_Utils::evalOpParmInst(result, thissop, "lightcategories#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1174  return (result);
1175  }
1176 
1177 
1178 private:
1179  UT_Array<Vopcount> myVopcount;
1180  UT_Array<Mopcount> myMopcount;
1181  UT_Array<Lopcount> myLopcount;
1182 
1183 };
bool operator==(const Lopcount &src) const
static void saveData(std::ostream &os, UT_Vector4D v)
static void saveData(std::ostream &os, UT_StringHolder s)
void loadFromOpSubclass(const LoadParms &loadparms) override
static void loadData(UT_IStream &is, UT_Vector2D &v)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
int64 opinstVopcount_viewportlod(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, int64 v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
static void saveData(std::ostream &os, fpreal64 v)
bool operator==(const Mopcount &src) const
void setVopcount(const UT_Array< Vopcount > &val)
static void loadData(UT_IStream &is, int64 &v)
UT_StringHolder opinstMopcount_mgroup(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void
Definition: png.h:1083
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
UT_StringHolder opMopcount_shop_materialpath(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
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
exint opMopcount(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder opinstLopcount_lgroup(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opLopcount_lgroup(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, UT_Vector2D v)
exint opLopcount(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder createString(const UT_Array< Vopcount > &list) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
UT_StringHolder opMopcount_mpackedname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, UT_Matrix2D &v)
bool operator!=(const Lopcount &src) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
UT_StringHolder opLopcount_lpackedname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
**But if you need a result
Definition: thread.h:613
UT_StringHolder opLopcount_lightcategories(const SOP_NodeVerb::CookParms &cookparms, int _idx) 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.
UT_StringHolder opMopcount_mgroup(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder createString(const UT_Array< Lopcount > &list) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
const char * getNestParmName(TempIndex fieldnum) const override
const UT_Array< Lopcount > & getLopcount() const
int64 opVopcount_visible2d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder opVopcount_vpackedname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
UT_StringHolder opinstVopcount_vgroup(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
const UT_Array< Vopcount > & getVopcount() const
bool operator!=(const Vopcount &src) const
UT_StringHolder opinstVopcount_vpackedname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, UT_Matrix4D v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
exint length() const
static void loadData(UT_IStream &is, bool &v)
UT_StringHolder opinstLopcount_lpackedname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setLopcount(const UT_Array< Lopcount > &val)
static void saveData(std::ostream &os, UT_Vector3D v)
static void loadData(UT_IStream &is, UT_Vector4I &v)
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static void loadData(UT_IStream &is, UT_StringHolder &v)
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void copyFrom(const OP_NodeParms *src) override
UT_StringHolder opinstMopcount_mpackedname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstLopcount_lightcategories(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
long long int64
Definition: SYS_Types.h:116
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
const UT_Array< Mopcount > & getMopcount() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool operator!=(const Mopcount &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
UT_StringHolder opinstMopcount_shop_materialpath(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool operator!=(const SOP_PackedEditParms &src) 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
void setMopcount(const UT_Array< Mopcount > &val)
GT_API const UT_StringHolder version
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
static void loadData(UT_IStream &is, UT_Vector3D &v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
int64 opinstVopcount_visible2d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool operator==(const Vopcount &src) const
static void saveData(std::ostream &os, UT_Matrix3D v)
UT_StringHolder opVopcount_vgroup(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
fpreal64 fpreal
Definition: SYS_Types.h:277
exint getNestNumParms(TempIndex idx) const override
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
bool isParmColorRamp(exint idx) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
GLuint GLfloat * val
Definition: glcorearb.h:1608
#define SOP_API
Definition: SOP_API.h:10
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_StringHolder createString(const UT_Array< Mopcount > &list) const
bool operator==(const SOP_PackedEditParms &src) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
ParmType getNestParmType(TempIndex fieldnum) const override
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
exint opVopcount(const SOP_NodeVerb::CookParms &cookparms) const
Definition: core.h:1131
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
GLboolean r
Definition: glcorearb.h:1222
int64 opinstVopcount_visible3d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
bool load(UT_IStream &is)
static void saveData(std::ostream &os, bool v)
type
Definition: core.h:1059
SYS_FORCE_INLINE UT_StringHolder getToken(Viewportlod enum_value)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
int64 opVopcount_visible3d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 opVopcount_viewportlod(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GA_API const UT_StringHolder shop_materialpath
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void save(std::ostream &os) const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663