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 <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 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 
315  if (baseGetSignature() != src.baseGetSignature()) return false;
316 
317  return true;
318  }
320  {
321  return !operator==(src);
322  }
331 
332 
333 
334  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
335  {
336  if (true)
337  {
338  int64 length = 0;
339  graph->evalOpParm(length, nodeidx, "numcombine", time, graph->isDirect()?nullptr:depnode);
340  if (length < 0) length = 0;
341  myNumcombine.setSize(length);
342  for (exint i = 0; i < length; i++)
343  {
344  int parmidx[1];
345  int offsets[1];
346  parmidx[0] = i+1;
347  offsets[0] = 1;
348  auto && _curentry = myNumcombine(i);
349  (void) _curentry;
350  _curentry.grouptype = 0;
351  if (true)
352  graph->evalOpParmInst(_curentry.grouptype, nodeidx, "grouptype#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
353  _curentry.group = ""_UTsh;
354  if (true)
355  graph->evalOpParmInst(_curentry.group, nodeidx, "group#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
356  _curentry.negate_a = 0;
357  if (true)
358  graph->evalOpParmInst(_curentry.negate_a, nodeidx, "negate_a#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
359  _curentry.group_a = ""_UTsh;
360  if (true)
361  graph->evalOpParmInst(_curentry.group_a, nodeidx, "group_a#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
362  _curentry.op_ab = 0;
363  if (true)
364  graph->evalOpParmInst(_curentry.op_ab, nodeidx, "op_ab#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
365  _curentry.negate_b = 0;
366  if (true && ( (true&&!(((_curentry.op_ab==0)))) ) )
367  graph->evalOpParmInst(_curentry.negate_b, nodeidx, "negate_b#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
368  _curentry.group_b = ""_UTsh;
369  if (true && ( (true&&!(((_curentry.op_ab==0)))) ) )
370  graph->evalOpParmInst(_curentry.group_b, nodeidx, "group_b#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
371  _curentry.op_bc = 0;
372  if (true)
373  graph->evalOpParmInst(_curentry.op_bc, nodeidx, "op_bc#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
374  _curentry.negate_c = 0;
375  if (true && ( (true&&!(((_curentry.op_bc==0)))) ) )
376  graph->evalOpParmInst(_curentry.negate_c, nodeidx, "negate_c#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
377  _curentry.group_c = ""_UTsh;
378  if (true && ( (true&&!(((_curentry.op_bc==0)))) ) )
379  graph->evalOpParmInst(_curentry.group_c, nodeidx, "group_c#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
380  _curentry.op_cd = 0;
381  if (true)
382  graph->evalOpParmInst(_curentry.op_cd, nodeidx, "op_cd#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
383  _curentry.negate_d = 0;
384  if (true && ( (true&&!(((_curentry.op_cd==0)))) ) )
385  graph->evalOpParmInst(_curentry.negate_d, nodeidx, "negate_d#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
386  _curentry.group_d = ""_UTsh;
387  if (true && ( (true&&!(((_curentry.op_cd==0)))) ) )
388  graph->evalOpParmInst(_curentry.group_d, nodeidx, "group_d#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
389 
390  }
391  }
392  else
393  myNumcombine.clear();
394 
395  }
396 
397 
398  void loadFromOpSubclass(const LoadParms &loadparms) override
399  {
400  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
401  }
402 
403 
404  void copyFrom(const OP_NodeParms *src) override
405  {
406  *this = *((const SOP_GroupCombineParms *)src);
407  }
408 
409  template <typename T>
410  void
411  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
412  {
413  if (idx.size() < 1)
414  return;
415  UT_ASSERT(idx.size() == instance.size()+1);
416  if (idx.size() != instance.size()+1)
417  return;
418  switch (idx[0])
419  {
420  case 0:
421  if (idx.size() == 1)
422  coerceValue(value, myNumcombine.entries());
423  else if (instance[0] < myNumcombine.entries())
424  {
425  auto && _data = myNumcombine(instance[0]);
426  switch (idx[1])
427  {
428  case 0:
429  coerceValue(value, _data.grouptype);
430  break;
431  case 1:
432  coerceValue(value, _data.group);
433  break;
434  case 2:
435  coerceValue(value, _data.negate_a);
436  break;
437  case 3:
438  coerceValue(value, _data.group_a);
439  break;
440  case 4:
441  coerceValue(value, _data.op_ab);
442  break;
443  case 5:
444  coerceValue(value, _data.negate_b);
445  break;
446  case 6:
447  coerceValue(value, _data.group_b);
448  break;
449  case 7:
450  coerceValue(value, _data.op_bc);
451  break;
452  case 8:
453  coerceValue(value, _data.negate_c);
454  break;
455  case 9:
456  coerceValue(value, _data.group_c);
457  break;
458  case 10:
459  coerceValue(value, _data.op_cd);
460  break;
461  case 11:
462  coerceValue(value, _data.negate_d);
463  break;
464  case 12:
465  coerceValue(value, _data.group_d);
466  break;
467 
468  }
469  }
470  break;
471 
472  }
473  }
474 
475  bool isParmColorRamp(exint idx) const override
476  {
477  switch (idx)
478  {
479 
480  }
481  return false;
482  }
483 
484  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
485  { doGetParmValue(idx, instance, value); }
486  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
487  { doGetParmValue(idx, instance, value); }
488  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
489  { doGetParmValue(idx, instance, value); }
490  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
491  { doGetParmValue(idx, instance, value); }
492  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
493  { doGetParmValue(idx, instance, value); }
494  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
495  { doGetParmValue(idx, instance, value); }
496  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
497  { doGetParmValue(idx, instance, value); }
498  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
499  { doGetParmValue(idx, instance, value); }
500  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
501  { doGetParmValue(idx, instance, value); }
502  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
503  { doGetParmValue(idx, instance, value); }
504  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
505  { doGetParmValue(idx, instance, value); }
506 
507  template <typename T>
508  void
509  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
510  {
511  if (idx.size() < 1)
512  return;
513  UT_ASSERT(idx.size() == instance.size()+1);
514  if (idx.size() != instance.size()+1)
515  return;
516  switch (idx[0])
517  {
518  case 0:
519  if (idx.size() == 1)
520  {
521  exint newsize;
522  coerceValue(newsize, value);
523  if (newsize < 0) newsize = 0;
524  myNumcombine.setSize(newsize);
525  }
526  else
527  {
528  if (instance[0] < 0)
529  return;
530  myNumcombine.setSizeIfNeeded(instance[0]+1);
531  auto && _data = myNumcombine(instance[0]);
532  switch (idx[1])
533  {
534  case 0:
535  coerceValue(_data.grouptype, value);
536  break;
537  case 1:
538  coerceValue(_data.group, value);
539  break;
540  case 2:
541  coerceValue(_data.negate_a, value);
542  break;
543  case 3:
544  coerceValue(_data.group_a, value);
545  break;
546  case 4:
547  coerceValue(_data.op_ab, value);
548  break;
549  case 5:
550  coerceValue(_data.negate_b, value);
551  break;
552  case 6:
553  coerceValue(_data.group_b, value);
554  break;
555  case 7:
556  coerceValue(_data.op_bc, value);
557  break;
558  case 8:
559  coerceValue(_data.negate_c, value);
560  break;
561  case 9:
562  coerceValue(_data.group_c, value);
563  break;
564  case 10:
565  coerceValue(_data.op_cd, value);
566  break;
567  case 11:
568  coerceValue(_data.negate_d, value);
569  break;
570  case 12:
571  coerceValue(_data.group_d, value);
572  break;
573 
574  }
575  }
576  break;
577 
578  }
579  }
580 
581  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
582  { doSetParmValue(idx, instance, value); }
583  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
584  { doSetParmValue(idx, instance, value); }
585  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
586  { doSetParmValue(idx, instance, value); }
587  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
588  { doSetParmValue(idx, instance, value); }
589  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
590  { doSetParmValue(idx, instance, value); }
591  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
592  { doSetParmValue(idx, instance, value); }
593  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
594  { doSetParmValue(idx, instance, value); }
595  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
596  { doSetParmValue(idx, instance, value); }
597  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
598  { doSetParmValue(idx, instance, value); }
599  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
600  { doSetParmValue(idx, instance, value); }
601  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
602  { doSetParmValue(idx, instance, value); }
603 
604  exint getNestNumParms(TempIndex idx) const override
605  {
606  if (idx.size() == 0)
607  return 1;
608  switch (idx[0])
609  {
610  case 0:
611  return 13;
612 
613  }
614  // Invalid
615  return 0;
616  }
617 
618  const char *getNestParmName(TempIndex fieldnum) const override
619  {
620  if (fieldnum.size() < 1)
621  return 0;
622  switch (fieldnum[0])
623  {
624  case 0:
625  if (fieldnum.size() == 1)
626  return "numcombine";
627  switch (fieldnum[1])
628  {
629  case 0:
630  return "grouptype#";
631  case 1:
632  return "group#";
633  case 2:
634  return "negate_a#";
635  case 3:
636  return "group_a#";
637  case 4:
638  return "op_ab#";
639  case 5:
640  return "negate_b#";
641  case 6:
642  return "group_b#";
643  case 7:
644  return "op_bc#";
645  case 8:
646  return "negate_c#";
647  case 9:
648  return "group_c#";
649  case 10:
650  return "op_cd#";
651  case 11:
652  return "negate_d#";
653  case 12:
654  return "group_d#";
655 
656  }
657  return 0;
658 
659  }
660  return 0;
661  }
662 
663  ParmType getNestParmType(TempIndex fieldnum) const override
664  {
665  if (fieldnum.size() < 1)
666  return PARM_UNSUPPORTED;
667  switch (fieldnum[0])
668  {
669  case 0:
670  if (fieldnum.size() == 1)
671  return PARM_MULTIPARM;
672  switch (fieldnum[1])
673  {
674  case 0:
675  return PARM_INTEGER;
676  case 1:
677  return PARM_STRING;
678  case 2:
679  return PARM_INTEGER;
680  case 3:
681  return PARM_STRING;
682  case 4:
683  return PARM_INTEGER;
684  case 5:
685  return PARM_INTEGER;
686  case 6:
687  return PARM_STRING;
688  case 7:
689  return PARM_INTEGER;
690  case 8:
691  return PARM_INTEGER;
692  case 9:
693  return PARM_STRING;
694  case 10:
695  return PARM_INTEGER;
696  case 11:
697  return PARM_INTEGER;
698  case 12:
699  return PARM_STRING;
700 
701  }
702  return PARM_UNSUPPORTED;
703 
704  }
705  return PARM_UNSUPPORTED;
706  }
707 
708  // Boiler plate to load individual types.
709  static void loadData(UT_IStream &is, int64 &v)
710  { is.bread(&v, 1); }
711  static void loadData(UT_IStream &is, bool &v)
712  { int64 iv; is.bread(&iv, 1); v = iv; }
713  static void loadData(UT_IStream &is, fpreal64 &v)
714  { is.bread<fpreal64>(&v, 1); }
715  static void loadData(UT_IStream &is, UT_Vector2D &v)
716  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
717  static void loadData(UT_IStream &is, UT_Vector3D &v)
718  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
719  is.bread<fpreal64>(&v.z(), 1); }
720  static void loadData(UT_IStream &is, UT_Vector4D &v)
721  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
722  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
723  static void loadData(UT_IStream &is, UT_Matrix2D &v)
724  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
725  static void loadData(UT_IStream &is, UT_Matrix3D &v)
726  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
727  static void loadData(UT_IStream &is, UT_Matrix4D &v)
728  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
729  static void loadData(UT_IStream &is, UT_Vector2I &v)
730  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
731  static void loadData(UT_IStream &is, UT_Vector3I &v)
732  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
733  is.bread<int64>(&v.z(), 1); }
734  static void loadData(UT_IStream &is, UT_Vector4I &v)
735  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
736  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
738  { is.bread(v); }
740  { UT_StringHolder rampdata;
741  loadData(is, rampdata);
742  if (rampdata.isstring())
743  {
744  v.reset(new UT_Ramp());
745  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
746  v->load(istr);
747  }
748  else v.reset();
749  }
752  loadData(is, data);
753  if (data.isstring())
754  {
755  // Find the data type.
756  const char *colon = UT_StringWrap(data).findChar(':');
757  if (colon)
758  {
759  int typelen = colon - data.buffer();
761  type.strncpy(data.buffer(), typelen);
762  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
763 
764  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
765  }
766  }
767  else v.reset();
768  }
769 
770  static void saveData(std::ostream &os, int64 v)
771  { UTwrite(os, &v); }
772  static void saveData(std::ostream &os, bool v)
773  { int64 iv = v; UTwrite(os, &iv); }
774  static void saveData(std::ostream &os, fpreal64 v)
775  { UTwrite<fpreal64>(os, &v); }
776  static void saveData(std::ostream &os, UT_Vector2D v)
777  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
778  static void saveData(std::ostream &os, UT_Vector3D v)
779  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
780  UTwrite<fpreal64>(os, &v.z()); }
781  static void saveData(std::ostream &os, UT_Vector4D v)
782  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
783  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
784  static void saveData(std::ostream &os, UT_Matrix2D v)
786  static void saveData(std::ostream &os, UT_Matrix3D v)
788  static void saveData(std::ostream &os, UT_Matrix4D v)
790  static void saveData(std::ostream &os, UT_StringHolder s)
791  { UT_StringWrap(s).saveBinary(os); }
792  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
794  UT_OStringStream ostr;
795  if (s) s->save(ostr);
796  result = ostr.str();
797  saveData(os, result);
798  }
799  static void saveData(std::ostream &os, PRM_DataItemHandle s)
801  UT_OStringStream ostr;
802  if (s)
803  {
804  ostr << s->getDataTypeToken();
805  ostr << ":";
806  s->saveBinary(ostr);
807  }
808  result = ostr.str();
809  saveData(os, result);
810  }
811 
812 
813  void save(std::ostream &os) const
814  {
815  int32 v = version();
816  UTwrite(os, &v);
817  {
818  int64 length = myNumcombine.entries();
819  UTwrite(os, &length);
820  for (exint i = 0; i < length; i++)
821  {
822  auto && _curentry = myNumcombine(i);
823  (void) _curentry;
824  saveData(os, _curentry.grouptype);
825  saveData(os, _curentry.group);
826  saveData(os, _curentry.negate_a);
827  saveData(os, _curentry.group_a);
828  saveData(os, _curentry.op_ab);
829  saveData(os, _curentry.negate_b);
830  saveData(os, _curentry.group_b);
831  saveData(os, _curentry.op_bc);
832  saveData(os, _curentry.negate_c);
833  saveData(os, _curentry.group_c);
834  saveData(os, _curentry.op_cd);
835  saveData(os, _curentry.negate_d);
836  saveData(os, _curentry.group_d);
837 
838  }
839  }
840 
841  }
842 
843  bool load(UT_IStream &is)
844  {
845  int32 v;
846  is.bread(&v, 1);
847  if (version() != v)
848  {
849  // Fail incompatible versions
850  return false;
851  }
852  {
853  int64 length;
854  is.read(&length, 1);
855  myNumcombine.setSize(length);
856  for (exint i = 0; i < length; i++)
857  {
858  auto && _curentry = myNumcombine(i);
859  (void) _curentry;
860  loadData(is, _curentry.grouptype);
861  loadData(is, _curentry.group);
862  loadData(is, _curentry.negate_a);
863  loadData(is, _curentry.group_a);
864  loadData(is, _curentry.op_ab);
865  loadData(is, _curentry.negate_b);
866  loadData(is, _curentry.group_b);
867  loadData(is, _curentry.op_bc);
868  loadData(is, _curentry.negate_c);
869  loadData(is, _curentry.group_c);
870  loadData(is, _curentry.op_cd);
871  loadData(is, _curentry.negate_d);
872  loadData(is, _curentry.group_d);
873 
874  }
875  }
876 
877  return true;
878  }
879 
880  const UT_Array<Numcombine> &getNumcombine() const { return myNumcombine; }
881 void setNumcombine(const UT_Array<Numcombine> &val) { myNumcombine = val; }
883  {
884  SOP_Node *thissop = cookparms.getNode();
885  if (!thissop) return getNumcombine().entries();
886  exint result;
887  OP_Utils::evalOpParm(result, thissop, "numcombine", cookparms.getCookTime(), 0);
888  return result;
889  }
890  int64 opNumcombine_grouptype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
891  { return opinstNumcombine_grouptype(cookparms, &_idx); }
892  int64 opinstNumcombine_grouptype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
893  {
894  SOP_Node *thissop = cookparms.getNode();
895  if (!thissop) return (myNumcombine(_idx[0]).grouptype);
896  int _parmidx[2-1];
897  _parmidx[1-1] = _idx[1-1] + 1;
898 
899  int64 result;
900  OP_Utils::evalOpParmInst(result, thissop, "grouptype#", _parmidx, cookparms.getCookTime(), 0, 2-1);
901  return (result);
902  }
904  { return opinstNumcombine_group(cookparms, &_idx); }
905  UT_StringHolder opinstNumcombine_group(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
906  {
907  SOP_Node *thissop = cookparms.getNode();
908  if (!thissop) return (myNumcombine(_idx[0]).group);
909  int _parmidx[2-1];
910  _parmidx[1-1] = _idx[1-1] + 1;
911 
913  OP_Utils::evalOpParmInst(result, thissop, "group#", _parmidx, cookparms.getCookTime(), 0, 2-1);
914  return (result);
915  }
916  int64 opNumcombine_negate_a(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
917  { return opinstNumcombine_negate_a(cookparms, &_idx); }
918  int64 opinstNumcombine_negate_a(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
919  {
920  SOP_Node *thissop = cookparms.getNode();
921  if (!thissop) return (myNumcombine(_idx[0]).negate_a);
922  int _parmidx[2-1];
923  _parmidx[1-1] = _idx[1-1] + 1;
924 
925  int64 result;
926  OP_Utils::evalOpParmInst(result, thissop, "negate_a#", _parmidx, cookparms.getCookTime(), 0, 2-1);
927  return (result);
928  }
930  { return opinstNumcombine_group_a(cookparms, &_idx); }
931  UT_StringHolder opinstNumcombine_group_a(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
932  {
933  SOP_Node *thissop = cookparms.getNode();
934  if (!thissop) return (myNumcombine(_idx[0]).group_a);
935  int _parmidx[2-1];
936  _parmidx[1-1] = _idx[1-1] + 1;
937 
939  OP_Utils::evalOpParmInst(result, thissop, "group_a#", _parmidx, cookparms.getCookTime(), 0, 2-1);
940  return (result);
941  }
942  int64 opNumcombine_op_ab(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
943  { return opinstNumcombine_op_ab(cookparms, &_idx); }
944  int64 opinstNumcombine_op_ab(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
945  {
946  SOP_Node *thissop = cookparms.getNode();
947  if (!thissop) return (myNumcombine(_idx[0]).op_ab);
948  int _parmidx[2-1];
949  _parmidx[1-1] = _idx[1-1] + 1;
950 
951  int64 result;
952  OP_Utils::evalOpParmInst(result, thissop, "op_ab#", _parmidx, cookparms.getCookTime(), 0, 2-1);
953  return (result);
954  }
955  int64 opNumcombine_negate_b(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
956  { return opinstNumcombine_negate_b(cookparms, &_idx); }
957  int64 opinstNumcombine_negate_b(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
958  {
959  SOP_Node *thissop = cookparms.getNode();
960  if (!thissop) return (myNumcombine(_idx[0]).negate_b);
961  int _parmidx[2-1];
962  _parmidx[1-1] = _idx[1-1] + 1;
963 
964  int64 result;
965  OP_Utils::evalOpParmInst(result, thissop, "negate_b#", _parmidx, cookparms.getCookTime(), 0, 2-1);
966  return (result);
967  }
969  { return opinstNumcombine_group_b(cookparms, &_idx); }
970  UT_StringHolder opinstNumcombine_group_b(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
971  {
972  SOP_Node *thissop = cookparms.getNode();
973  if (!thissop) return (myNumcombine(_idx[0]).group_b);
974  int _parmidx[2-1];
975  _parmidx[1-1] = _idx[1-1] + 1;
976 
978  OP_Utils::evalOpParmInst(result, thissop, "group_b#", _parmidx, cookparms.getCookTime(), 0, 2-1);
979  return (result);
980  }
981  int64 opNumcombine_op_bc(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
982  { return opinstNumcombine_op_bc(cookparms, &_idx); }
983  int64 opinstNumcombine_op_bc(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
984  {
985  SOP_Node *thissop = cookparms.getNode();
986  if (!thissop) return (myNumcombine(_idx[0]).op_bc);
987  int _parmidx[2-1];
988  _parmidx[1-1] = _idx[1-1] + 1;
989 
990  int64 result;
991  OP_Utils::evalOpParmInst(result, thissop, "op_bc#", _parmidx, cookparms.getCookTime(), 0, 2-1);
992  return (result);
993  }
994  int64 opNumcombine_negate_c(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
995  { return opinstNumcombine_negate_c(cookparms, &_idx); }
996  int64 opinstNumcombine_negate_c(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
997  {
998  SOP_Node *thissop = cookparms.getNode();
999  if (!thissop) return (myNumcombine(_idx[0]).negate_c);
1000  int _parmidx[2-1];
1001  _parmidx[1-1] = _idx[1-1] + 1;
1002 
1003  int64 result;
1004  OP_Utils::evalOpParmInst(result, thissop, "negate_c#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1005  return (result);
1006  }
1008  { return opinstNumcombine_group_c(cookparms, &_idx); }
1009  UT_StringHolder opinstNumcombine_group_c(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1010  {
1011  SOP_Node *thissop = cookparms.getNode();
1012  if (!thissop) return (myNumcombine(_idx[0]).group_c);
1013  int _parmidx[2-1];
1014  _parmidx[1-1] = _idx[1-1] + 1;
1015 
1017  OP_Utils::evalOpParmInst(result, thissop, "group_c#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1018  return (result);
1019  }
1020  int64 opNumcombine_op_cd(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1021  { return opinstNumcombine_op_cd(cookparms, &_idx); }
1022  int64 opinstNumcombine_op_cd(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1023  {
1024  SOP_Node *thissop = cookparms.getNode();
1025  if (!thissop) return (myNumcombine(_idx[0]).op_cd);
1026  int _parmidx[2-1];
1027  _parmidx[1-1] = _idx[1-1] + 1;
1028 
1029  int64 result;
1030  OP_Utils::evalOpParmInst(result, thissop, "op_cd#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1031  return (result);
1032  }
1033  int64 opNumcombine_negate_d(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1034  { return opinstNumcombine_negate_d(cookparms, &_idx); }
1035  int64 opinstNumcombine_negate_d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1036  {
1037  SOP_Node *thissop = cookparms.getNode();
1038  if (!thissop) return (myNumcombine(_idx[0]).negate_d);
1039  int _parmidx[2-1];
1040  _parmidx[1-1] = _idx[1-1] + 1;
1041 
1042  int64 result;
1043  OP_Utils::evalOpParmInst(result, thissop, "negate_d#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1044  return (result);
1045  }
1047  { return opinstNumcombine_group_d(cookparms, &_idx); }
1048  UT_StringHolder opinstNumcombine_group_d(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1049  {
1050  SOP_Node *thissop = cookparms.getNode();
1051  if (!thissop) return (myNumcombine(_idx[0]).group_d);
1052  int _parmidx[2-1];
1053  _parmidx[1-1] = _idx[1-1] + 1;
1054 
1056  OP_Utils::evalOpParmInst(result, thissop, "group_d#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1057  return (result);
1058  }
1059 
1060 
1061 private:
1062  UT_Array<Numcombine> myNumcombine;
1063 
1064 };
UT_StringHolder opNumcombine_group_a(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
type
Definition: core.h:556
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:63
UT_StringHolder opNumcombine_group_c(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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:303
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:655
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:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
#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:372
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
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
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
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)
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