HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_GroupCombine.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_GroupCombineEnums
24 {
25  enum class Grouptype
26  {
27  GUESS = 0,
28  POINTS,
29  PRIMS,
30  EDGES,
31  VERTICES
32  };
33 
35  getToken(Grouptype enum_value)
36  {
37  using namespace UT::Literal;
38  switch (enum_value) {
39  case Grouptype::GUESS: return "guess"_sh;
40  case Grouptype::POINTS: return "points"_sh;
41  case Grouptype::PRIMS: return "prims"_sh;
42  case Grouptype::EDGES: return "edges"_sh;
43  case Grouptype::VERTICES: return "vertices"_sh;
44  default: UT_ASSERT(false); return ""_sh;
45  }
46  }
47 
48  enum class Negate_a
49  {
50  OFF = 0,
51  ON
52  };
53 
55  getToken(Negate_a enum_value)
56  {
57  using namespace UT::Literal;
58  switch (enum_value) {
59  case Negate_a::OFF: return "off"_sh;
60  case Negate_a::ON: return "on"_sh;
61  default: UT_ASSERT(false); return ""_sh;
62  }
63  }
64 
65  enum class Op_ab
66  {
67  NONE = 0,
68  OR,
69  AND,
70  XOR,
71  SUB
72  };
73 
75  getToken(Op_ab enum_value)
76  {
77  using namespace UT::Literal;
78  switch (enum_value) {
79  case Op_ab::NONE: return "none"_sh;
80  case Op_ab::OR: return "or"_sh;
81  case Op_ab::AND: return "and"_sh;
82  case Op_ab::XOR: return "xor"_sh;
83  case Op_ab::SUB: return "sub"_sh;
84  default: UT_ASSERT(false); return ""_sh;
85  }
86  }
87 
88  enum class Negate_b
89  {
90  OFF = 0,
91  ON
92  };
93 
95  getToken(Negate_b enum_value)
96  {
97  using namespace UT::Literal;
98  switch (enum_value) {
99  case Negate_b::OFF: return "off"_sh;
100  case Negate_b::ON: return "on"_sh;
101  default: UT_ASSERT(false); return ""_sh;
102  }
103  }
104 
105  enum class Op_bc
106  {
107  NONE = 0,
108  OR,
109  AND,
110  XOR,
111  SUB
112  };
113 
115  getToken(Op_bc enum_value)
116  {
117  using namespace UT::Literal;
118  switch (enum_value) {
119  case Op_bc::NONE: return "none"_sh;
120  case Op_bc::OR: return "or"_sh;
121  case Op_bc::AND: return "and"_sh;
122  case Op_bc::XOR: return "xor"_sh;
123  case Op_bc::SUB: return "sub"_sh;
124  default: UT_ASSERT(false); return ""_sh;
125  }
126  }
127 
128  enum class Negate_c
129  {
130  OFF = 0,
131  ON
132  };
133 
135  getToken(Negate_c enum_value)
136  {
137  using namespace UT::Literal;
138  switch (enum_value) {
139  case Negate_c::OFF: return "off"_sh;
140  case Negate_c::ON: return "on"_sh;
141  default: UT_ASSERT(false); return ""_sh;
142  }
143  }
144 
145  enum class Op_cd
146  {
147  NONE = 0,
148  OR,
149  AND,
150  XOR,
151  SUB
152  };
153 
155  getToken(Op_cd enum_value)
156  {
157  using namespace UT::Literal;
158  switch (enum_value) {
159  case Op_cd::NONE: return "none"_sh;
160  case Op_cd::OR: return "or"_sh;
161  case Op_cd::AND: return "and"_sh;
162  case Op_cd::XOR: return "xor"_sh;
163  case Op_cd::SUB: return "sub"_sh;
164  default: UT_ASSERT(false); return ""_sh;
165  }
166  }
167 
168  enum class Negate_d
169  {
170  OFF = 0,
171  ON
172  };
173 
175  getToken(Negate_d enum_value)
176  {
177  using namespace UT::Literal;
178  switch (enum_value) {
179  case Negate_d::OFF: return "off"_sh;
180  case Negate_d::ON: return "on"_sh;
181  default: UT_ASSERT(false); return ""_sh;
182  }
183  }
184 
185 }
186 
187 
189 {
190 public:
191  static int version() { return 1; }
192  struct Numcombine
193  {
207 
208 
210  {
211  grouptype = 0;
212  group = ""_UTsh;
213  negate_a = 0;
214  group_a = ""_UTsh;
215  op_ab = 0;
216  negate_b = 0;
217  group_b = ""_UTsh;
218  op_bc = 0;
219  negate_c = 0;
220  group_c = ""_UTsh;
221  op_cd = 0;
222  negate_d = 0;
223  group_d = ""_UTsh;
224 
225  }
226 
227  bool operator==(const Numcombine &src) const
228  {
229  if (grouptype != src.grouptype) return false;
230  if (group != src.group) return false;
231  if (negate_a != src.negate_a) return false;
232  if (group_a != src.group_a) return false;
233  if (op_ab != src.op_ab) return false;
234  if (negate_b != src.negate_b) return false;
235  if (group_b != src.group_b) return false;
236  if (op_bc != src.op_bc) return false;
237  if (negate_c != src.negate_c) return false;
238  if (group_c != src.group_c) return false;
239  if (op_cd != src.op_cd) return false;
240  if (negate_d != src.negate_d) return false;
241  if (group_d != src.group_d) return false;
242 
243  return true;
244  }
245  bool operator!=(const Numcombine &src) const
246  {
247  return !operator==(src);
248  }
249 
250  };
251 
253  {
255 
256  buf.strcat("[ ");
257  for (int i = 0; i < list.entries(); i++)
258  {
259  if (i)
260  buf.strcat(", ");
261  buf.strcat("( ");
262  buf.append("");
263  buf.appendSprintf("%d", (int) list(i).grouptype);
264  buf.append(", ");
265  { UT_String tmp; tmp = UT_StringWrap(list(i).group).makeQuotedString('"'); buf.strcat(tmp); }
266  buf.append(", ");
267  buf.appendSprintf("%d", (int) list(i).negate_a);
268  buf.append(", ");
269  { UT_String tmp; tmp = UT_StringWrap(list(i).group_a).makeQuotedString('"'); buf.strcat(tmp); }
270  buf.append(", ");
271  buf.appendSprintf("%d", (int) list(i).op_ab);
272  buf.append(", ");
273  buf.appendSprintf("%d", (int) list(i).negate_b);
274  buf.append(", ");
275  { UT_String tmp; tmp = UT_StringWrap(list(i).group_b).makeQuotedString('"'); buf.strcat(tmp); }
276  buf.append(", ");
277  buf.appendSprintf("%d", (int) list(i).op_bc);
278  buf.append(", ");
279  buf.appendSprintf("%d", (int) list(i).negate_c);
280  buf.append(", ");
281  { UT_String tmp; tmp = UT_StringWrap(list(i).group_c).makeQuotedString('"'); buf.strcat(tmp); }
282  buf.append(", ");
283  buf.appendSprintf("%d", (int) list(i).op_cd);
284  buf.append(", ");
285  buf.appendSprintf("%d", (int) list(i).negate_d);
286  buf.append(", ");
287  { UT_String tmp; tmp = UT_StringWrap(list(i).group_d).makeQuotedString('"'); buf.strcat(tmp); }
288 
289  buf.strcat(" )");
290  }
291  buf.strcat(" ]");
292 
294  return result;
295  }
296 
298  {
299  myNumcombine.setSize(1);
300 
301  }
302 
303  explicit SOP_GroupCombineParms(const SOP_GroupCombineParms &) = default;
305  SOP_GroupCombineParms(SOP_GroupCombineParms &&) noexcept = default;
306  SOP_GroupCombineParms &operator=(SOP_GroupCombineParms &&) noexcept = default;
307 
308  ~SOP_GroupCombineParms() override {}
309 
311  {
312  if (myNumcombine != src.myNumcombine) return false;
313 
314  return true;
315  }
317  {
318  return !operator==(src);
319  }
328 
329 
330 
331  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
332  {
333  if (true)
334  {
335  int64 length = 0;
336  graph->evalOpParm(length, nodeidx, "numcombine", time, 0);
337  if (length < 0) length = 0;
338  myNumcombine.setSize(length);
339  for (exint i = 0; i < length; i++)
340  {
341  int parmidx[1];
342  int offsets[1];
343  parmidx[0] = i+1;
344  offsets[0] = 1;
345  auto && _curentry = myNumcombine(i);
346  (void) _curentry;
347  _curentry.grouptype = 0;
348  if (true)
349  graph->evalOpParmInst(_curentry.grouptype, nodeidx, "grouptype#", parmidx, offsets, time, 0, 2-1);
350  _curentry.group = ""_UTsh;
351  if (true)
352  graph->evalOpParmInst(_curentry.group, nodeidx, "group#", parmidx, offsets, time, 0, 2-1);
353  _curentry.negate_a = 0;
354  if (true)
355  graph->evalOpParmInst(_curentry.negate_a, nodeidx, "negate_a#", parmidx, offsets, time, 0, 2-1);
356  _curentry.group_a = ""_UTsh;
357  if (true)
358  graph->evalOpParmInst(_curentry.group_a, nodeidx, "group_a#", parmidx, offsets, time, 0, 2-1);
359  _curentry.op_ab = 0;
360  if (true)
361  graph->evalOpParmInst(_curentry.op_ab, nodeidx, "op_ab#", parmidx, offsets, time, 0, 2-1);
362  _curentry.negate_b = 0;
363  if (true && ( (true&&!(((_curentry.op_ab==0)))) ) )
364  graph->evalOpParmInst(_curentry.negate_b, nodeidx, "negate_b#", parmidx, offsets, time, 0, 2-1);
365  _curentry.group_b = ""_UTsh;
366  if (true && ( (true&&!(((_curentry.op_ab==0)))) ) )
367  graph->evalOpParmInst(_curentry.group_b, nodeidx, "group_b#", parmidx, offsets, time, 0, 2-1);
368  _curentry.op_bc = 0;
369  if (true)
370  graph->evalOpParmInst(_curentry.op_bc, nodeidx, "op_bc#", parmidx, offsets, time, 0, 2-1);
371  _curentry.negate_c = 0;
372  if (true && ( (true&&!(((_curentry.op_bc==0)))) ) )
373  graph->evalOpParmInst(_curentry.negate_c, nodeidx, "negate_c#", parmidx, offsets, time, 0, 2-1);
374  _curentry.group_c = ""_UTsh;
375  if (true && ( (true&&!(((_curentry.op_bc==0)))) ) )
376  graph->evalOpParmInst(_curentry.group_c, nodeidx, "group_c#", parmidx, offsets, time, 0, 2-1);
377  _curentry.op_cd = 0;
378  if (true)
379  graph->evalOpParmInst(_curentry.op_cd, nodeidx, "op_cd#", parmidx, offsets, time, 0, 2-1);
380  _curentry.negate_d = 0;
381  if (true && ( (true&&!(((_curentry.op_cd==0)))) ) )
382  graph->evalOpParmInst(_curentry.negate_d, nodeidx, "negate_d#", parmidx, offsets, time, 0, 2-1);
383  _curentry.group_d = ""_UTsh;
384  if (true && ( (true&&!(((_curentry.op_cd==0)))) ) )
385  graph->evalOpParmInst(_curentry.group_d, nodeidx, "group_d#", parmidx, offsets, time, 0, 2-1);
386 
387  }
388  }
389  else
390  myNumcombine.clear();
391 
392  }
393 
394 
395  void loadFromOpSubclass(const LoadParms &loadparms) override
396  {
397  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
398  }
399 
400 
401  void copyFrom(const OP_NodeParms *src) override
402  {
403  *this = *((const SOP_GroupCombineParms *)src);
404  }
405 
406  template <typename T>
407  void
408  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
409  {
410  if (idx.size() < 1)
411  return;
412  UT_ASSERT(idx.size() == instance.size()+1);
413  if (idx.size() != instance.size()+1)
414  return;
415  switch (idx[0])
416  {
417  case 0:
418  if (idx.size() == 1)
419  coerceValue(value, myNumcombine.entries());
420  else if (instance[0] < myNumcombine.entries())
421  {
422  auto && _data = myNumcombine(instance[0]);
423  switch (idx[1])
424  {
425  case 0:
426  coerceValue(value, _data.grouptype);
427  break;
428  case 1:
429  coerceValue(value, _data.group);
430  break;
431  case 2:
432  coerceValue(value, _data.negate_a);
433  break;
434  case 3:
435  coerceValue(value, _data.group_a);
436  break;
437  case 4:
438  coerceValue(value, _data.op_ab);
439  break;
440  case 5:
441  coerceValue(value, _data.negate_b);
442  break;
443  case 6:
444  coerceValue(value, _data.group_b);
445  break;
446  case 7:
447  coerceValue(value, _data.op_bc);
448  break;
449  case 8:
450  coerceValue(value, _data.negate_c);
451  break;
452  case 9:
453  coerceValue(value, _data.group_c);
454  break;
455  case 10:
456  coerceValue(value, _data.op_cd);
457  break;
458  case 11:
459  coerceValue(value, _data.negate_d);
460  break;
461  case 12:
462  coerceValue(value, _data.group_d);
463  break;
464 
465  }
466  }
467  break;
468 
469  }
470  }
471 
472  bool isParmColorRamp(exint idx) const override
473  {
474  switch (idx)
475  {
476 
477  }
478  return false;
479  }
480 
481  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
482  { doGetParmValue(idx, instance, value); }
483  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
484  { doGetParmValue(idx, instance, value); }
485  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
486  { doGetParmValue(idx, instance, value); }
487  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
488  { doGetParmValue(idx, instance, value); }
489  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
490  { doGetParmValue(idx, instance, value); }
491  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
492  { doGetParmValue(idx, instance, value); }
493  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
494  { doGetParmValue(idx, instance, value); }
495  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
496  { doGetParmValue(idx, instance, value); }
497  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
498  { doGetParmValue(idx, instance, value); }
499  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
500  { doGetParmValue(idx, instance, value); }
501  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
502  { doGetParmValue(idx, instance, value); }
503 
504  template <typename T>
505  void
506  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
507  {
508  if (idx.size() < 1)
509  return;
510  UT_ASSERT(idx.size() == instance.size()+1);
511  if (idx.size() != instance.size()+1)
512  return;
513  switch (idx[0])
514  {
515  case 0:
516  if (idx.size() == 1)
517  {
518  exint newsize;
519  coerceValue(newsize, value);
520  if (newsize < 0) newsize = 0;
521  myNumcombine.setSize(newsize);
522  }
523  else
524  {
525  if (instance[0] < 0)
526  return;
527  myNumcombine.setSizeIfNeeded(instance[0]+1);
528  auto && _data = myNumcombine(instance[0]);
529  switch (idx[1])
530  {
531  case 0:
532  coerceValue(_data.grouptype, value);
533  break;
534  case 1:
535  coerceValue(_data.group, value);
536  break;
537  case 2:
538  coerceValue(_data.negate_a, value);
539  break;
540  case 3:
541  coerceValue(_data.group_a, value);
542  break;
543  case 4:
544  coerceValue(_data.op_ab, value);
545  break;
546  case 5:
547  coerceValue(_data.negate_b, value);
548  break;
549  case 6:
550  coerceValue(_data.group_b, value);
551  break;
552  case 7:
553  coerceValue(_data.op_bc, value);
554  break;
555  case 8:
556  coerceValue(_data.negate_c, value);
557  break;
558  case 9:
559  coerceValue(_data.group_c, value);
560  break;
561  case 10:
562  coerceValue(_data.op_cd, value);
563  break;
564  case 11:
565  coerceValue(_data.negate_d, value);
566  break;
567  case 12:
568  coerceValue(_data.group_d, value);
569  break;
570 
571  }
572  }
573  break;
574 
575  }
576  }
577 
578  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
579  { doSetParmValue(idx, instance, value); }
580  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
581  { doSetParmValue(idx, instance, value); }
582  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
583  { doSetParmValue(idx, instance, value); }
584  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
585  { doSetParmValue(idx, instance, value); }
586  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
587  { doSetParmValue(idx, instance, value); }
588  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
589  { doSetParmValue(idx, instance, value); }
590  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
591  { doSetParmValue(idx, instance, value); }
592  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
593  { doSetParmValue(idx, instance, value); }
594  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
595  { doSetParmValue(idx, instance, value); }
596  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
597  { doSetParmValue(idx, instance, value); }
598  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
599  { doSetParmValue(idx, instance, value); }
600 
601  exint getNestNumParms(TempIndex idx) const override
602  {
603  if (idx.size() == 0)
604  return 1;
605  switch (idx[0])
606  {
607  case 0:
608  return 13;
609 
610  }
611  // Invalid
612  return 0;
613  }
614 
615  const char *getNestParmName(TempIndex fieldnum) const override
616  {
617  if (fieldnum.size() < 1)
618  return 0;
619  switch (fieldnum[0])
620  {
621  case 0:
622  if (fieldnum.size() == 1)
623  return "numcombine";
624  switch (fieldnum[1])
625  {
626  case 0:
627  return "grouptype#";
628  case 1:
629  return "group#";
630  case 2:
631  return "negate_a#";
632  case 3:
633  return "group_a#";
634  case 4:
635  return "op_ab#";
636  case 5:
637  return "negate_b#";
638  case 6:
639  return "group_b#";
640  case 7:
641  return "op_bc#";
642  case 8:
643  return "negate_c#";
644  case 9:
645  return "group_c#";
646  case 10:
647  return "op_cd#";
648  case 11:
649  return "negate_d#";
650  case 12:
651  return "group_d#";
652 
653  }
654  return 0;
655 
656  }
657  return 0;
658  }
659 
660  ParmType getNestParmType(TempIndex fieldnum) const override
661  {
662  if (fieldnum.size() < 1)
663  return PARM_UNSUPPORTED;
664  switch (fieldnum[0])
665  {
666  case 0:
667  if (fieldnum.size() == 1)
668  return PARM_MULTIPARM;
669  switch (fieldnum[1])
670  {
671  case 0:
672  return PARM_INTEGER;
673  case 1:
674  return PARM_STRING;
675  case 2:
676  return PARM_INTEGER;
677  case 3:
678  return PARM_STRING;
679  case 4:
680  return PARM_INTEGER;
681  case 5:
682  return PARM_INTEGER;
683  case 6:
684  return PARM_STRING;
685  case 7:
686  return PARM_INTEGER;
687  case 8:
688  return PARM_INTEGER;
689  case 9:
690  return PARM_STRING;
691  case 10:
692  return PARM_INTEGER;
693  case 11:
694  return PARM_INTEGER;
695  case 12:
696  return PARM_STRING;
697 
698  }
699  return PARM_UNSUPPORTED;
700 
701  }
702  return PARM_UNSUPPORTED;
703  }
704 
705  // Boiler plate to load individual types.
706  static void loadData(UT_IStream &is, int64 &v)
707  { is.bread(&v, 1); }
708  static void loadData(UT_IStream &is, bool &v)
709  { int64 iv; is.bread(&iv, 1); v = iv; }
710  static void loadData(UT_IStream &is, fpreal64 &v)
711  { is.bread<fpreal64>(&v, 1); }
712  static void loadData(UT_IStream &is, UT_Vector2D &v)
713  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
714  static void loadData(UT_IStream &is, UT_Vector3D &v)
715  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
716  is.bread<fpreal64>(&v.z(), 1); }
717  static void loadData(UT_IStream &is, UT_Vector4D &v)
718  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
719  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
720  static void loadData(UT_IStream &is, UT_Matrix2D &v)
721  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
722  static void loadData(UT_IStream &is, UT_Matrix3D &v)
723  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
724  static void loadData(UT_IStream &is, UT_Matrix4D &v)
725  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
726  static void loadData(UT_IStream &is, UT_Vector2I &v)
727  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
728  static void loadData(UT_IStream &is, UT_Vector3I &v)
729  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
730  is.bread<int64>(&v.z(), 1); }
731  static void loadData(UT_IStream &is, UT_Vector4I &v)
732  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
733  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
735  { is.bread(v); }
737  { UT_StringHolder rampdata;
738  loadData(is, rampdata);
739  if (rampdata.isstring())
740  {
741  v.reset(new UT_Ramp());
742  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
743  v->load(istr);
744  }
745  else v.reset();
746  }
749  loadData(is, data);
750  if (data.isstring())
751  {
752  // Find the data type.
753  const char *colon = UT_StringWrap(data).findChar(':');
754  if (colon)
755  {
756  int typelen = colon - data.buffer();
758  type.strncpy(data.buffer(), typelen);
759  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
760 
761  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
762  }
763  }
764  else v.reset();
765  }
766 
767  static void saveData(std::ostream &os, int64 v)
768  { UTwrite(os, &v); }
769  static void saveData(std::ostream &os, bool v)
770  { int64 iv = v; UTwrite(os, &iv); }
771  static void saveData(std::ostream &os, fpreal64 v)
772  { UTwrite<fpreal64>(os, &v); }
773  static void saveData(std::ostream &os, UT_Vector2D v)
774  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
775  static void saveData(std::ostream &os, UT_Vector3D v)
776  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
777  UTwrite<fpreal64>(os, &v.z()); }
778  static void saveData(std::ostream &os, UT_Vector4D v)
779  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
780  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
781  static void saveData(std::ostream &os, UT_Matrix2D v)
783  static void saveData(std::ostream &os, UT_Matrix3D v)
785  static void saveData(std::ostream &os, UT_Matrix4D v)
787  static void saveData(std::ostream &os, UT_StringHolder s)
788  { UT_StringWrap(s).saveBinary(os); }
789  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
791  UT_OStringStream ostr;
792  if (s) s->save(ostr);
793  result = ostr.str();
794  saveData(os, result);
795  }
796  static void saveData(std::ostream &os, PRM_DataItemHandle s)
798  UT_OStringStream ostr;
799  if (s)
800  {
801  ostr << s->getDataTypeToken();
802  ostr << ":";
803  s->saveBinary(ostr);
804  }
805  result = ostr.str();
806  saveData(os, result);
807  }
808 
809 
810  void save(std::ostream &os) const
811  {
812  int32 v = version();
813  UTwrite(os, &v);
814  {
815  int64 length = myNumcombine.entries();
816  UTwrite(os, &length);
817  for (exint i = 0; i < length; i++)
818  {
819  auto && _curentry = myNumcombine(i);
820  (void) _curentry;
821  saveData(os, _curentry.grouptype);
822  saveData(os, _curentry.group);
823  saveData(os, _curentry.negate_a);
824  saveData(os, _curentry.group_a);
825  saveData(os, _curentry.op_ab);
826  saveData(os, _curentry.negate_b);
827  saveData(os, _curentry.group_b);
828  saveData(os, _curentry.op_bc);
829  saveData(os, _curentry.negate_c);
830  saveData(os, _curentry.group_c);
831  saveData(os, _curentry.op_cd);
832  saveData(os, _curentry.negate_d);
833  saveData(os, _curentry.group_d);
834 
835  }
836  }
837 
838  }
839 
840  bool load(UT_IStream &is)
841  {
842  int32 v;
843  is.bread(&v, 1);
844  if (version() != v)
845  {
846  // Fail incompatible versions
847  return false;
848  }
849  {
850  int64 length;
851  is.read(&length, 1);
852  myNumcombine.setSize(length);
853  for (exint i = 0; i < length; i++)
854  {
855  auto && _curentry = myNumcombine(i);
856  (void) _curentry;
857  loadData(is, _curentry.grouptype);
858  loadData(is, _curentry.group);
859  loadData(is, _curentry.negate_a);
860  loadData(is, _curentry.group_a);
861  loadData(is, _curentry.op_ab);
862  loadData(is, _curentry.negate_b);
863  loadData(is, _curentry.group_b);
864  loadData(is, _curentry.op_bc);
865  loadData(is, _curentry.negate_c);
866  loadData(is, _curentry.group_c);
867  loadData(is, _curentry.op_cd);
868  loadData(is, _curentry.negate_d);
869  loadData(is, _curentry.group_d);
870 
871  }
872  }
873 
874  return true;
875  }
876 
877  const UT_Array<Numcombine> &getNumcombine() const { return myNumcombine; }
878 void setNumcombine(const UT_Array<Numcombine> &val) { myNumcombine = val; }
880  {
881  SOP_Node *thissop = cookparms.getNode();
882  if (!thissop) return getNumcombine().entries();
883  exint result;
884  OP_Utils::evalOpParm(result, thissop, "numcombine", cookparms.getCookTime(), 0);
885  return result;
886  }
887  int64 opNumcombine_grouptype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
888  { return opinstNumcombine_grouptype(cookparms, &_idx); }
889  int64 opinstNumcombine_grouptype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
890  {
891  SOP_Node *thissop = cookparms.getNode();
892  if (!thissop) return (myNumcombine(_idx[0]).grouptype);
893  int _parmidx[2-1];
894  _parmidx[1-1] = _idx[1-1] + 1;
895 
896  int64 result;
897  OP_Utils::evalOpParmInst(result, thissop, "grouptype#", _parmidx, cookparms.getCookTime(), 0, 2-1);
898  return (result);
899  }
901  { return opinstNumcombine_group(cookparms, &_idx); }
902  UT_StringHolder opinstNumcombine_group(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
903  {
904  SOP_Node *thissop = cookparms.getNode();
905  if (!thissop) return (myNumcombine(_idx[0]).group);
906  int _parmidx[2-1];
907  _parmidx[1-1] = _idx[1-1] + 1;
908 
910  OP_Utils::evalOpParmInst(result, thissop, "group#", _parmidx, cookparms.getCookTime(), 0, 2-1);
911  return (result);
912  }
913  int64 opNumcombine_negate_a(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
914  { return opinstNumcombine_negate_a(cookparms, &_idx); }
915  int64 opinstNumcombine_negate_a(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
916  {
917  SOP_Node *thissop = cookparms.getNode();
918  if (!thissop) return (myNumcombine(_idx[0]).negate_a);
919  int _parmidx[2-1];
920  _parmidx[1-1] = _idx[1-1] + 1;
921 
922  int64 result;
923  OP_Utils::evalOpParmInst(result, thissop, "negate_a#", _parmidx, cookparms.getCookTime(), 0, 2-1);
924  return (result);
925  }
927  { return opinstNumcombine_group_a(cookparms, &_idx); }
928  UT_StringHolder opinstNumcombine_group_a(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
929  {
930  SOP_Node *thissop = cookparms.getNode();
931  if (!thissop) return (myNumcombine(_idx[0]).group_a);
932  int _parmidx[2-1];
933  _parmidx[1-1] = _idx[1-1] + 1;
934 
936  OP_Utils::evalOpParmInst(result, thissop, "group_a#", _parmidx, cookparms.getCookTime(), 0, 2-1);
937  return (result);
938  }
939  int64 opNumcombine_op_ab(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
940  { return opinstNumcombine_op_ab(cookparms, &_idx); }
941  int64 opinstNumcombine_op_ab(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
942  {
943  SOP_Node *thissop = cookparms.getNode();
944  if (!thissop) return (myNumcombine(_idx[0]).op_ab);
945  int _parmidx[2-1];
946  _parmidx[1-1] = _idx[1-1] + 1;
947 
948  int64 result;
949  OP_Utils::evalOpParmInst(result, thissop, "op_ab#", _parmidx, cookparms.getCookTime(), 0, 2-1);
950  return (result);
951  }
952  int64 opNumcombine_negate_b(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
953  { return opinstNumcombine_negate_b(cookparms, &_idx); }
954  int64 opinstNumcombine_negate_b(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
955  {
956  SOP_Node *thissop = cookparms.getNode();
957  if (!thissop) return (myNumcombine(_idx[0]).negate_b);
958  int _parmidx[2-1];
959  _parmidx[1-1] = _idx[1-1] + 1;
960 
961  int64 result;
962  OP_Utils::evalOpParmInst(result, thissop, "negate_b#", _parmidx, cookparms.getCookTime(), 0, 2-1);
963  return (result);
964  }
966  { return opinstNumcombine_group_b(cookparms, &_idx); }
967  UT_StringHolder opinstNumcombine_group_b(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
968  {
969  SOP_Node *thissop = cookparms.getNode();
970  if (!thissop) return (myNumcombine(_idx[0]).group_b);
971  int _parmidx[2-1];
972  _parmidx[1-1] = _idx[1-1] + 1;
973 
975  OP_Utils::evalOpParmInst(result, thissop, "group_b#", _parmidx, cookparms.getCookTime(), 0, 2-1);
976  return (result);
977  }
978  int64 opNumcombine_op_bc(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
979  { return opinstNumcombine_op_bc(cookparms, &_idx); }
980  int64 opinstNumcombine_op_bc(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
981  {
982  SOP_Node *thissop = cookparms.getNode();
983  if (!thissop) return (myNumcombine(_idx[0]).op_bc);
984  int _parmidx[2-1];
985  _parmidx[1-1] = _idx[1-1] + 1;
986 
987  int64 result;
988  OP_Utils::evalOpParmInst(result, thissop, "op_bc#", _parmidx, cookparms.getCookTime(), 0, 2-1);
989  return (result);
990  }
991  int64 opNumcombine_negate_c(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
992  { return opinstNumcombine_negate_c(cookparms, &_idx); }
993  int64 opinstNumcombine_negate_c(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
994  {
995  SOP_Node *thissop = cookparms.getNode();
996  if (!thissop) return (myNumcombine(_idx[0]).negate_c);
997  int _parmidx[2-1];
998  _parmidx[1-1] = _idx[1-1] + 1;
999 
1000  int64 result;
1001  OP_Utils::evalOpParmInst(result, thissop, "negate_c#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1002  return (result);
1003  }
1005  { return opinstNumcombine_group_c(cookparms, &_idx); }
1006  UT_StringHolder opinstNumcombine_group_c(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1007  {
1008  SOP_Node *thissop = cookparms.getNode();
1009  if (!thissop) return (myNumcombine(_idx[0]).group_c);
1010  int _parmidx[2-1];
1011  _parmidx[1-1] = _idx[1-1] + 1;
1012 
1014  OP_Utils::evalOpParmInst(result, thissop, "group_c#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1015  return (result);
1016  }
1017  int64 opNumcombine_op_cd(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1018  { return opinstNumcombine_op_cd(cookparms, &_idx); }
1019  int64 opinstNumcombine_op_cd(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1020  {
1021  SOP_Node *thissop = cookparms.getNode();
1022  if (!thissop) return (myNumcombine(_idx[0]).op_cd);
1023  int _parmidx[2-1];
1024  _parmidx[1-1] = _idx[1-1] + 1;
1025 
1026  int64 result;
1027  OP_Utils::evalOpParmInst(result, thissop, "op_cd#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1028  return (result);
1029  }
1030  int64 opNumcombine_negate_d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1031  { return opinstNumcombine_negate_d(cookparms, &_idx); }
1032  int64 opinstNumcombine_negate_d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1033  {
1034  SOP_Node *thissop = cookparms.getNode();
1035  if (!thissop) return (myNumcombine(_idx[0]).negate_d);
1036  int _parmidx[2-1];
1037  _parmidx[1-1] = _idx[1-1] + 1;
1038 
1039  int64 result;
1040  OP_Utils::evalOpParmInst(result, thissop, "negate_d#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1041  return (result);
1042  }
1044  { return opinstNumcombine_group_d(cookparms, &_idx); }
1045  UT_StringHolder opinstNumcombine_group_d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1046  {
1047  SOP_Node *thissop = cookparms.getNode();
1048  if (!thissop) return (myNumcombine(_idx[0]).group_d);
1049  int _parmidx[2-1];
1050  _parmidx[1-1] = _idx[1-1] + 1;
1051 
1053  OP_Utils::evalOpParmInst(result, thissop, "group_d#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1054  return (result);
1055  }
1056 
1057 
1058 private:
1059  UT_Array<Numcombine> myNumcombine;
1060 
1061 };
UT_StringHolder opNumcombine_group_a(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder opinstNumcombine_group_b(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
int64 opinstNumcombine_negate_a(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
int64 opNumcombine_op_bc(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, UT_Matrix3D v)
bool operator==(const Numcombine &src) const
static void saveData(std::ostream &os, UT_Vector4D v)
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
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder opNumcombine_group_c(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, int64 v)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
SYS_FORCE_INLINE const char * buffer() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_StringHolder &v)
int64 opinstNumcombine_grouptype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, bool v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
**But if you need a result
Definition: thread.h:613
int64 opinstNumcombine_op_ab(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool isParmColorRamp(exint idx) const override
int64 opinstNumcombine_negate_c(const SOP_NodeVerb::CookParms &cookparms, const 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.
bool load(UT_IStream &is)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
static void saveData(std::ostream &os, UT_Vector3D v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
UT_StringHolder opNumcombine_group(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void save(std::ostream &os) const
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_Array< Numcombine > & getNumcombine() const
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
int64 opNumcombine_negate_b(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opinstNumcombine_negate_b(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool operator==(const SOP_GroupCombineParms &src) const
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_StringHolder opNumcombine_group_b(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
exint length() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
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
exint opNumcombine(const SOP_NodeVerb::CookParms &cookparms) const
int64 opNumcombine_grouptype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opNumcombine_negate_a(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void copyFrom(const OP_NodeParms *src) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const char * getNestParmName(TempIndex fieldnum) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
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
bool operator!=(const Numcombine &src) const
UT_StringHolder createString(const UT_Array< Numcombine > &list) const
UT_StringHolder opinstNumcombine_group(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void loadData(UT_IStream &is, int64 &v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, bool &v)
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setNumcombine(const UT_Array< Numcombine > &val)
GT_API const UT_StringHolder version
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
static void saveData(std::ostream &os, fpreal64 v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
ParmType getNestParmType(TempIndex fieldnum) const override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
fpreal64 fpreal
Definition: SYS_Types.h:277
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
static void saveData(std::ostream &os, UT_Matrix2D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
#define SOP_API
Definition: SOP_API.h:10
int64 opNumcombine_op_cd(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
SYS_FORCE_INLINE UT_StringHolder getToken(Grouptype enum_value)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
int64 opinstNumcombine_negate_d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstNumcombine_group_a(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
GLboolean r
Definition: glcorearb.h:1222
int64 opinstNumcombine_op_cd(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
static void loadData(UT_IStream &is, UT_Vector2D &v)
exint getNestNumParms(TempIndex idx) const override
bool operator!=(const SOP_GroupCombineParms &src) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
int64 opinstNumcombine_op_bc(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
type
Definition: core.h:1059
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
UT_StringHolder opNumcombine_group_d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder opinstNumcombine_group_d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
int64 opNumcombine_op_ab(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opNumcombine_negate_c(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix4D v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
int64 opNumcombine_negate_d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
UT_StringHolder opinstNumcombine_group_c(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const