HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_GroupRange.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_NodeVerb.h>
7 #include <SOP/SOP_GraphProxy.h>
8 
9 #include <OP/OP_Utils.h>
10 #include <PRM/PRM_Parm.h>
11 #include <UT/UT_IStream.h>
12 #include <UT/UT_NTStreamUtil.h>
13 #include <UT/UT_Ramp.h>
14 #include <UT/UT_SharedPtr.h>
15 #include <UT/UT_StringHolder.h>
16 #include <UT/UT_StringStream.h>
17 #include <UT/UT_VectorTypes.h>
18 #include <SYS/SYS_Types.h>
19 
20 using namespace UT::Literal;
21 
22 class DEP_MicroNode;
23 namespace SOP_GroupRangeEnums
24 {
25  enum class Grouptype
26  {
27  POINTS = 0,
28  PRIMS,
29  VERTICES
30  };
31  enum class Mergeop
32  {
33  REPLACE = 0,
34  UNION,
35  INTERSECT,
36  SUBTRACT
37  };
38  enum class Method
39  {
40  ABSOLUTE = 0,
41  RELATIVE,
42  LENGTH,
43  PARTITION
44  };
45  enum class Colgrouptype
46  {
47  EDGES = 0,
48  POINTS,
49  PRIMS,
50  VERTICES
51  };
52 }
53 
54 
56 {
57 public:
58  static int version() { return 1; }
59  struct Numrange
60  {
61  bool enable;
72  bool invert;
77  bool useattrib;
83  bool usepartnum;
86 
87 
89  {
90  enable = true;
91  groupname = "group#"_sh;
92  group = ""_sh;
93  grouptype = 1;
94  mergeop = 0;
95  method = 1;
96  start = 0;
97  end = 0;
98  length = 1;
99  partition = 0;
100  numpartition = 1;
101  invert = false;
102  selectamount = 1;
103  selecttotal = 1;
104  selectoffset = 0;
105  connectedgeo = false;
106  useattrib = false;
107  attrib = ""_sh;
108  usecolgroup = false;
109  colgroup = ""_sh;
110  colgrouptype = 0;
111  colallowonbnd = true;
112  usepartnum = false;
113  keeponlypartnum = true;
114  partnum = 0;
115 
116  }
117 
118  bool operator==(const Numrange &src) const
119  {
120  if (enable != src.enable) return false;
121  if (groupname != src.groupname) return false;
122  if (group != src.group) return false;
123  if (grouptype != src.grouptype) return false;
124  if (mergeop != src.mergeop) return false;
125  if (method != src.method) return false;
126  if (start != src.start) return false;
127  if (end != src.end) return false;
128  if (length != src.length) return false;
129  if (partition != src.partition) return false;
130  if (numpartition != src.numpartition) return false;
131  if (invert != src.invert) return false;
132  if (selectamount != src.selectamount) return false;
133  if (selecttotal != src.selecttotal) return false;
134  if (selectoffset != src.selectoffset) return false;
135  if (connectedgeo != src.connectedgeo) return false;
136  if (useattrib != src.useattrib) return false;
137  if (attrib != src.attrib) return false;
138  if (usecolgroup != src.usecolgroup) return false;
139  if (colgroup != src.colgroup) return false;
140  if (colgrouptype != src.colgrouptype) return false;
141  if (colallowonbnd != src.colallowonbnd) return false;
142  if (usepartnum != src.usepartnum) return false;
143  if (keeponlypartnum != src.keeponlypartnum) return false;
144  if (partnum != src.partnum) return false;
145 
146  return true;
147  }
148  bool operator!=(const Numrange &src) const
149  {
150  return !operator==(src);
151  }
152 
153  };
154 
156  {
158 
159  buf.strcat("[ ");
160  for (int i = 0; i < list.entries(); i++)
161  {
162  if (i)
163  buf.strcat(", ");
164  buf.strcat("( ");
165  buf.append("");
166  buf.appendSprintf("%s", (list(i).enable) ? "true" : "false");
167  buf.append(", ");
168  { UT_String tmp; tmp = UT_StringWrap(list(i).groupname).makeQuotedString('"'); buf.strcat(tmp); }
169  buf.append(", ");
170  { UT_String tmp; tmp = UT_StringWrap(list(i).group).makeQuotedString('"'); buf.strcat(tmp); }
171  buf.append(", ");
172  buf.appendSprintf("%d", (int) list(i).grouptype);
173  buf.append(", ");
174  buf.appendSprintf("%d", (int) list(i).mergeop);
175  buf.append(", ");
176  buf.appendSprintf("%d", (int) list(i).method);
177  buf.append(", ");
178  buf.appendSprintf("%d", (int) list(i).start);
179  buf.append(", ");
180  buf.appendSprintf("%d", (int) list(i).end);
181  buf.append(", ");
182  buf.appendSprintf("%d", (int) list(i).length);
183  buf.append(", ");
184  buf.appendSprintf("%d", (int) list(i).partition);
185  buf.append(", ");
186  buf.appendSprintf("%d", (int) list(i).numpartition);
187  buf.append(", ");
188  buf.appendSprintf("%s", (list(i).invert) ? "true" : "false");
189  buf.append(", ");
190  buf.appendSprintf("%d", (int) list(i).selectamount);
191  buf.append(", ");
192  buf.appendSprintf("%d", (int) list(i).selecttotal);
193  buf.append(", ");
194  buf.appendSprintf("%d", (int) list(i).selectoffset);
195  buf.append(", ");
196  buf.appendSprintf("%s", (list(i).connectedgeo) ? "true" : "false");
197  buf.append(", ");
198  buf.appendSprintf("%s", (list(i).useattrib) ? "true" : "false");
199  buf.append(", ");
200  { UT_String tmp; tmp = UT_StringWrap(list(i).attrib).makeQuotedString('"'); buf.strcat(tmp); }
201  buf.append(", ");
202  buf.appendSprintf("%s", (list(i).usecolgroup) ? "true" : "false");
203  buf.append(", ");
204  { UT_String tmp; tmp = UT_StringWrap(list(i).colgroup).makeQuotedString('"'); buf.strcat(tmp); }
205  buf.append(", ");
206  buf.appendSprintf("%d", (int) list(i).colgrouptype);
207  buf.append(", ");
208  buf.appendSprintf("%s", (list(i).colallowonbnd) ? "true" : "false");
209  buf.append(", ");
210  buf.appendSprintf("%s", (list(i).usepartnum) ? "true" : "false");
211  buf.append(", ");
212  buf.appendSprintf("%s", (list(i).keeponlypartnum) ? "true" : "false");
213  buf.append(", ");
214  buf.appendSprintf("%d", (int) list(i).partnum);
215 
216  buf.strcat(" )");
217  }
218  buf.strcat(" ]");
219 
221  return result;
222  }
223 
225  {
226 
227  }
228 
229  explicit SOP_GroupRangeParms(const SOP_GroupRangeParms &) = default;
230 
231  ~SOP_GroupRangeParms() override {}
232 
233  bool operator==(const SOP_GroupRangeParms &src) const
234  {
235  if (myNumrange != src.myNumrange) return false;
236 
237  return true;
238  }
239  bool operator!=(const SOP_GroupRangeParms &src) const
240  {
241  return !operator==(src);
242  }
247 
248 
249 
250  void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
251  {
252  if (true)
253  {
254  int64 length = 0;
255  graph->evalOpParm(length, nodeidx, "numrange", time, 0);
256  myNumrange.entries(length);
257  for (exint i = 0; i < length; i++)
258  {
259  int parmidx = i+1;
260  auto && _curentry = myNumrange(i);
261  (void) _curentry;
262  myNumrange(i).enable = true;
263  if (true)
264  graph->evalOpParmInst(myNumrange(i).enable, nodeidx, "enable#", &parmidx, time, 0);
265  myNumrange(i).groupname = "group#"_sh;
266  if (true && ( (!(((_curentry.enable==0)))) ) )
267  graph->evalOpParmInst(myNumrange(i).groupname, nodeidx, "groupname#", &parmidx, time, 0);
268  myNumrange(i).group = ""_sh;
269  if (true)
270  graph->evalOpParmInst(myNumrange(i).group, nodeidx, "group#", &parmidx, time, 0);
271  myNumrange(i).grouptype = 1;
272  if (true)
273  graph->evalOpParmInst(myNumrange(i).grouptype, nodeidx, "grouptype#", &parmidx, time, 0);
274  myNumrange(i).mergeop = 0;
275  if (true)
276  graph->evalOpParmInst(myNumrange(i).mergeop, nodeidx, "mergeop#", &parmidx, time, 0);
277  myNumrange(i).method = 1;
278  if (true)
279  graph->evalOpParmInst(myNumrange(i).method, nodeidx, "method#", &parmidx, time, 0);
280  myNumrange(i).start = 0;
281  if (true && ( (!(((_curentry.method==3)))) ) )
282  graph->evalOpParmInst(myNumrange(i).start, nodeidx, "start#", &parmidx, time, 0);
283  myNumrange(i).end = 0;
284  if (true && ( (!(((_curentry.method!=0)&&(_curentry.method!=1)))) ) )
285  graph->evalOpParmInst(myNumrange(i).end, nodeidx, "end#", &parmidx, time, 0);
286  myNumrange(i).length = 1;
287  if (true && ( (!(((_curentry.method!=2)))) ) )
288  graph->evalOpParmInst(myNumrange(i).length, nodeidx, "length#", &parmidx, time, 0);
289  myNumrange(i).partition = 0;
290  if (true && ( (!(((_curentry.method!=3)))) ) )
291  graph->evalOpParmInst(myNumrange(i).partition, nodeidx, "partition#", &parmidx, time, 0);
292  myNumrange(i).numpartition = 1;
293  if (true && ( (!(((_curentry.method!=3)))) ) )
294  graph->evalOpParmInst(myNumrange(i).numpartition, nodeidx, "numpartition#", &parmidx, time, 0);
295  myNumrange(i).invert = false;
296  if (true)
297  graph->evalOpParmInst(myNumrange(i).invert, nodeidx, "invert#", &parmidx, time, 0);
298  myNumrange(i).selectamount = 1;
299  if (true)
300  graph->evalOpParmInst(myNumrange(i).selectamount, nodeidx, "selectamount#", &parmidx, time, 0);
301  myNumrange(i).selecttotal = 1;
302  if (true)
303  graph->evalOpParmInst(myNumrange(i).selecttotal, nodeidx, "selecttotal#", &parmidx, time, 0);
304  myNumrange(i).selectoffset = 0;
305  if (true)
306  graph->evalOpParmInst(myNumrange(i).selectoffset, nodeidx, "selectoffset#", &parmidx, time, 0);
307  myNumrange(i).connectedgeo = false;
308  if (true)
309  graph->evalOpParmInst(myNumrange(i).connectedgeo, nodeidx, "connectedgeo#", &parmidx, time, 0);
310  myNumrange(i).useattrib = false;
311  if (true)
312  graph->evalOpParmInst(myNumrange(i).useattrib, nodeidx, "useattrib#", &parmidx, time, 0);
313  myNumrange(i).attrib = ""_sh;
314  if (true && ( (!(((_curentry.useattrib==0)))) ) )
315  graph->evalOpParmInst(myNumrange(i).attrib, nodeidx, "attrib#", &parmidx, time, 0);
316  myNumrange(i).usecolgroup = false;
317  if (true)
318  graph->evalOpParmInst(myNumrange(i).usecolgroup, nodeidx, "usecolgroup#", &parmidx, time, 0);
319  myNumrange(i).colgroup = ""_sh;
320  if (true && ( (!(((_curentry.usecolgroup==0)))) ) )
321  graph->evalOpParmInst(myNumrange(i).colgroup, nodeidx, "colgroup#", &parmidx, time, 0);
322  myNumrange(i).colgrouptype = 0;
323  if (true && ( (!(((_curentry.usecolgroup==0)))) ) )
324  graph->evalOpParmInst(myNumrange(i).colgrouptype, nodeidx, "colgrouptype#", &parmidx, time, 0);
325  myNumrange(i).colallowonbnd = true;
326  if (true && ( (!(((_curentry.usecolgroup==0)))) ) )
327  graph->evalOpParmInst(myNumrange(i).colallowonbnd, nodeidx, "colallowonbnd#", &parmidx, time, 0);
328  myNumrange(i).usepartnum = false;
329  if (true)
330  graph->evalOpParmInst(myNumrange(i).usepartnum, nodeidx, "usepartnum#", &parmidx, time, 0);
331  myNumrange(i).keeponlypartnum = true;
332  if (true && ( (!(((_curentry.usepartnum==0)))) ) )
333  graph->evalOpParmInst(myNumrange(i).keeponlypartnum, nodeidx, "keeponlypartnum#", &parmidx, time, 0);
334  myNumrange(i).partnum = 0;
335  if (true && ( (!(((_curentry.usepartnum==0)))) ) )
336  graph->evalOpParmInst(myNumrange(i).partnum, nodeidx, "partnum#", &parmidx, time, 0);
337 
338  }
339  }
340  else
341  myNumrange.clear();
342 
343  }
344 
345 
346  void loadFromOpSubclass(const LoadParms &loadparms) override
347  {
348  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
349  }
350 
351 
352  void copyFrom(const SOP_NodeParms *src) override
353  {
354  *this = *((const SOP_GroupRangeParms *)src);
355  }
356 
357  template <typename T>
358  void
359  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
360  {
361  if (idx.size() < 1)
362  return;
363  UT_ASSERT(idx.size() == instance.size()+1);
364  if (idx.size() != instance.size()+1)
365  return;
366  switch (idx[0])
367  {
368  case 0:
369  if (idx.size() == 1)
370  coerceValue(value, myNumrange.entries());
371  else if (instance[0] < myNumrange.entries())
372  {
373  auto && _data = myNumrange(instance[0]);
374  switch (idx[1])
375  {
376  case 0:
377  coerceValue(value, _data.enable);
378  break;
379  case 1:
380  coerceValue(value, _data.groupname);
381  break;
382  case 2:
383  coerceValue(value, _data.group);
384  break;
385  case 3:
386  coerceValue(value, _data.grouptype);
387  break;
388  case 4:
389  coerceValue(value, _data.mergeop);
390  break;
391  case 5:
392  coerceValue(value, _data.method);
393  break;
394  case 6:
395  coerceValue(value, _data.start);
396  break;
397  case 7:
398  coerceValue(value, _data.end);
399  break;
400  case 8:
401  coerceValue(value, _data.length);
402  break;
403  case 9:
404  coerceValue(value, _data.partition);
405  break;
406  case 10:
407  coerceValue(value, _data.numpartition);
408  break;
409  case 11:
410  coerceValue(value, _data.invert);
411  break;
412  case 12:
413  coerceValue(value, _data.selectamount);
414  break;
415  case 13:
416  coerceValue(value, _data.selecttotal);
417  break;
418  case 14:
419  coerceValue(value, _data.selectoffset);
420  break;
421  case 15:
422  coerceValue(value, _data.connectedgeo);
423  break;
424  case 16:
425  coerceValue(value, _data.useattrib);
426  break;
427  case 17:
428  coerceValue(value, _data.attrib);
429  break;
430  case 18:
431  coerceValue(value, _data.usecolgroup);
432  break;
433  case 19:
434  coerceValue(value, _data.colgroup);
435  break;
436  case 20:
437  coerceValue(value, _data.colgrouptype);
438  break;
439  case 21:
440  coerceValue(value, _data.colallowonbnd);
441  break;
442  case 22:
443  coerceValue(value, _data.usepartnum);
444  break;
445  case 23:
446  coerceValue(value, _data.keeponlypartnum);
447  break;
448  case 24:
449  coerceValue(value, _data.partnum);
450  break;
451 
452  }
453  }
454  break;
455 
456  }
457  }
458 
459  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
460  { doGetParmValue(idx, instance, value); }
461  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
462  { doGetParmValue(idx, instance, value); }
463  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
464  { doGetParmValue(idx, instance, value); }
465  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
466  { doGetParmValue(idx, instance, value); }
467  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
468  { doGetParmValue(idx, instance, value); }
469  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
470  { doGetParmValue(idx, instance, value); }
471  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
472  { doGetParmValue(idx, instance, value); }
473  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
474  { doGetParmValue(idx, instance, value); }
475  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
476  { doGetParmValue(idx, instance, value); }
477  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
478  { doGetParmValue(idx, instance, value); }
479  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
480  { doGetParmValue(idx, instance, value); }
481 
482  template <typename T>
483  void
484  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
485  {
486  if (idx.size() < 1)
487  return;
488  UT_ASSERT(idx.size() == instance.size()+1);
489  if (idx.size() != instance.size()+1)
490  return;
491  switch (idx[0])
492  {
493  case 0:
494  if (idx.size() == 1)
495  {
496  exint newsize;
497  coerceValue(newsize, value);
498  myNumrange.setSize(newsize);
499  }
500  else
501  {
502  myNumrange.setSizeIfNeeded(instance[0]+1);
503  auto && _data = myNumrange(instance[0]);
504  switch (idx[1])
505  {
506  case 0:
507  coerceValue(_data.enable, value);
508  break;
509  case 1:
510  coerceValue(_data.groupname, value);
511  break;
512  case 2:
513  coerceValue(_data.group, value);
514  break;
515  case 3:
516  coerceValue(_data.grouptype, value);
517  break;
518  case 4:
519  coerceValue(_data.mergeop, value);
520  break;
521  case 5:
522  coerceValue(_data.method, value);
523  break;
524  case 6:
525  coerceValue(_data.start, value);
526  break;
527  case 7:
528  coerceValue(_data.end, value);
529  break;
530  case 8:
531  coerceValue(_data.length, value);
532  break;
533  case 9:
534  coerceValue(_data.partition, value);
535  break;
536  case 10:
537  coerceValue(_data.numpartition, value);
538  break;
539  case 11:
540  coerceValue(_data.invert, value);
541  break;
542  case 12:
543  coerceValue(_data.selectamount, value);
544  break;
545  case 13:
546  coerceValue(_data.selecttotal, value);
547  break;
548  case 14:
549  coerceValue(_data.selectoffset, value);
550  break;
551  case 15:
552  coerceValue(_data.connectedgeo, value);
553  break;
554  case 16:
555  coerceValue(_data.useattrib, value);
556  break;
557  case 17:
558  coerceValue(_data.attrib, value);
559  break;
560  case 18:
561  coerceValue(_data.usecolgroup, value);
562  break;
563  case 19:
564  coerceValue(_data.colgroup, value);
565  break;
566  case 20:
567  coerceValue(_data.colgrouptype, value);
568  break;
569  case 21:
570  coerceValue(_data.colallowonbnd, value);
571  break;
572  case 22:
573  coerceValue(_data.usepartnum, value);
574  break;
575  case 23:
576  coerceValue(_data.keeponlypartnum, value);
577  break;
578  case 24:
579  coerceValue(_data.partnum, value);
580  break;
581 
582  }
583  }
584  break;
585 
586  }
587  }
588 
589  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
590  { doSetParmValue(idx, instance, value); }
591  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
592  { doSetParmValue(idx, instance, value); }
593  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
594  { doSetParmValue(idx, instance, value); }
595  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
596  { doSetParmValue(idx, instance, value); }
597  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
598  { doSetParmValue(idx, instance, value); }
599  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
600  { doSetParmValue(idx, instance, value); }
601  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
602  { doSetParmValue(idx, instance, value); }
603  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
604  { doSetParmValue(idx, instance, value); }
605  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
606  { doSetParmValue(idx, instance, value); }
607  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
608  { doSetParmValue(idx, instance, value); }
609  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
610  { doSetParmValue(idx, instance, value); }
611 
612  exint getNestNumParms(TempIndex idx) const override
613  {
614  if (idx.size() == 0)
615  return 1;
616  switch (idx[0])
617  {
618  case 0:
619  return 25;
620 
621  }
622  // Invalid
623  return 0;
624  }
625 
626  const char *getNestParmName(TempIndex fieldnum) const override
627  {
628  if (fieldnum.size() < 1)
629  return 0;
630  switch (fieldnum[0])
631  {
632  case 0:
633  if (fieldnum.size() == 1)
634  return "numrange";
635  switch (fieldnum[1])
636  {
637  case 0:
638  return "enable#";
639  case 1:
640  return "groupname#";
641  case 2:
642  return "group#";
643  case 3:
644  return "grouptype#";
645  case 4:
646  return "mergeop#";
647  case 5:
648  return "method#";
649  case 6:
650  return "start#";
651  case 7:
652  return "end#";
653  case 8:
654  return "length#";
655  case 9:
656  return "partition#";
657  case 10:
658  return "numpartition#";
659  case 11:
660  return "invert#";
661  case 12:
662  return "selectamount#";
663  case 13:
664  return "selecttotal#";
665  case 14:
666  return "selectoffset#";
667  case 15:
668  return "connectedgeo#";
669  case 16:
670  return "useattrib#";
671  case 17:
672  return "attrib#";
673  case 18:
674  return "usecolgroup#";
675  case 19:
676  return "colgroup#";
677  case 20:
678  return "colgrouptype#";
679  case 21:
680  return "colallowonbnd#";
681  case 22:
682  return "usepartnum#";
683  case 23:
684  return "keeponlypartnum#";
685  case 24:
686  return "partnum#";
687 
688  }
689  return 0;
690 
691  }
692  return 0;
693  }
694 
695  ParmType getNestParmType(TempIndex fieldnum) const override
696  {
697  if (fieldnum.size() < 1)
698  return PARM_UNSUPPORTED;
699  switch (fieldnum[0])
700  {
701  case 0:
702  if (fieldnum.size() == 1)
703  return PARM_MULTIPARM;
704  switch (fieldnum[1])
705  {
706  case 0:
707  return PARM_INTEGER;
708  case 1:
709  return PARM_STRING;
710  case 2:
711  return PARM_STRING;
712  case 3:
713  return PARM_INTEGER;
714  case 4:
715  return PARM_INTEGER;
716  case 5:
717  return PARM_INTEGER;
718  case 6:
719  return PARM_INTEGER;
720  case 7:
721  return PARM_INTEGER;
722  case 8:
723  return PARM_INTEGER;
724  case 9:
725  return PARM_INTEGER;
726  case 10:
727  return PARM_INTEGER;
728  case 11:
729  return PARM_INTEGER;
730  case 12:
731  return PARM_INTEGER;
732  case 13:
733  return PARM_INTEGER;
734  case 14:
735  return PARM_INTEGER;
736  case 15:
737  return PARM_INTEGER;
738  case 16:
739  return PARM_INTEGER;
740  case 17:
741  return PARM_STRING;
742  case 18:
743  return PARM_INTEGER;
744  case 19:
745  return PARM_STRING;
746  case 20:
747  return PARM_INTEGER;
748  case 21:
749  return PARM_INTEGER;
750  case 22:
751  return PARM_INTEGER;
752  case 23:
753  return PARM_INTEGER;
754  case 24:
755  return PARM_INTEGER;
756 
757  }
758  return PARM_UNSUPPORTED;
759 
760  }
761  return PARM_UNSUPPORTED;
762  }
763 
764  // Boiler plate to load individual types.
765  static void loadData(UT_IStream &is, int64 &v)
766  { is.bread(&v, 1); }
767  static void loadData(UT_IStream &is, bool &v)
768  { int64 iv; is.bread(&iv, 1); v = iv; }
769  static void loadData(UT_IStream &is, fpreal64 &v)
770  { is.bread<fpreal64>(&v, 1); }
771  static void loadData(UT_IStream &is, UT_Vector2D &v)
772  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
773  static void loadData(UT_IStream &is, UT_Vector3D &v)
774  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
775  is.bread<fpreal64>(&v.z(), 1); }
776  static void loadData(UT_IStream &is, UT_Vector4D &v)
777  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
778  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
779  static void loadData(UT_IStream &is, UT_Matrix2D &v)
780  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
781  static void loadData(UT_IStream &is, UT_Matrix3D &v)
782  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
783  static void loadData(UT_IStream &is, UT_Matrix4D &v)
784  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
785  static void loadData(UT_IStream &is, UT_Vector2I &v)
786  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
787  static void loadData(UT_IStream &is, UT_Vector3I &v)
788  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
789  is.bread<int64>(&v.z(), 1); }
790  static void loadData(UT_IStream &is, UT_Vector4I &v)
791  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
792  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
794  { is.bread(v); }
796  { UT_StringHolder rampdata;
797  loadData(is, rampdata);
798  if (rampdata.isstring())
799  {
800  v.reset(new UT_Ramp());
801  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
802  v->load(istr);
803  }
804  else v.reset();
805  }
808  loadData(is, data);
809  if (data.isstring())
810  {
811  // Find the data type.
812  const char *colon = UT_StringWrap(data).findChar(':');
813  if (colon)
814  {
815  int typelen = colon - data.buffer();
817  type.strncpy(data.buffer(), typelen);
818  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
819 
820  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
821  }
822  }
823  else v.reset();
824  }
825 
826  static void saveData(std::ostream &os, int64 v)
827  { UTwrite(os, &v); }
828  static void saveData(std::ostream &os, bool v)
829  { int64 iv = v; UTwrite(os, &iv); }
830  static void saveData(std::ostream &os, fpreal64 v)
831  { UTwrite<fpreal64>(os, &v); }
832  static void saveData(std::ostream &os, UT_Vector2D v)
833  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
834  static void saveData(std::ostream &os, UT_Vector3D v)
835  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
836  UTwrite<fpreal64>(os, &v.z()); }
837  static void saveData(std::ostream &os, UT_Vector4D v)
838  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
839  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
840  static void saveData(std::ostream &os, UT_Matrix2D v)
842  static void saveData(std::ostream &os, UT_Matrix3D v)
844  static void saveData(std::ostream &os, UT_Matrix4D v)
846  static void saveData(std::ostream &os, UT_StringHolder s)
847  { UT_StringWrap(s).saveBinary(os); }
848  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
850  UT_OStringStream ostr;
851  if (s) s->save(ostr);
852  result = ostr.str();
853  saveData(os, result);
854  }
855  static void saveData(std::ostream &os, PRM_DataItemHandle s)
857  UT_OStringStream ostr;
858  if (s)
859  {
860  ostr << s->getDataTypeToken();
861  ostr << ":";
862  s->saveBinary(ostr);
863  }
864  result = ostr.str();
865  saveData(os, result);
866  }
867 
868 
869  void save(std::ostream &os) const
870  {
871  int32 v = version();
872  UTwrite(os, &v);
873  {
874  int64 length = myNumrange.entries();
875  UTwrite(os, &length);
876  for (exint i = 0; i < length; i++)
877  {
878  saveData(os, myNumrange(i).enable);
879  saveData(os, myNumrange(i).groupname);
880  saveData(os, myNumrange(i).group);
881  saveData(os, myNumrange(i).grouptype);
882  saveData(os, myNumrange(i).mergeop);
883  saveData(os, myNumrange(i).method);
884  saveData(os, myNumrange(i).start);
885  saveData(os, myNumrange(i).end);
886  saveData(os, myNumrange(i).length);
887  saveData(os, myNumrange(i).partition);
888  saveData(os, myNumrange(i).numpartition);
889  saveData(os, myNumrange(i).invert);
890  saveData(os, myNumrange(i).selectamount);
891  saveData(os, myNumrange(i).selecttotal);
892  saveData(os, myNumrange(i).selectoffset);
893  saveData(os, myNumrange(i).connectedgeo);
894  saveData(os, myNumrange(i).useattrib);
895  saveData(os, myNumrange(i).attrib);
896  saveData(os, myNumrange(i).usecolgroup);
897  saveData(os, myNumrange(i).colgroup);
898  saveData(os, myNumrange(i).colgrouptype);
899  saveData(os, myNumrange(i).colallowonbnd);
900  saveData(os, myNumrange(i).usepartnum);
901  saveData(os, myNumrange(i).keeponlypartnum);
902  saveData(os, myNumrange(i).partnum);
903 
904  }
905  }
906 
907  }
908 
909  bool load(UT_IStream &is)
910  {
911  int32 v;
912  is.bread(&v, 1);
913  if (version() != v)
914  {
915  // Fail incompatible versions
916  return false;
917  }
918  {
919  int64 length;
920  is.read(&length, 1);
921  myNumrange.entries(length);
922  for (exint i = 0; i < length; i++)
923  {
924  loadData(is, myNumrange(i).enable);
925  loadData(is, myNumrange(i).groupname);
926  loadData(is, myNumrange(i).group);
927  loadData(is, myNumrange(i).grouptype);
928  loadData(is, myNumrange(i).mergeop);
929  loadData(is, myNumrange(i).method);
930  loadData(is, myNumrange(i).start);
931  loadData(is, myNumrange(i).end);
932  loadData(is, myNumrange(i).length);
933  loadData(is, myNumrange(i).partition);
934  loadData(is, myNumrange(i).numpartition);
935  loadData(is, myNumrange(i).invert);
936  loadData(is, myNumrange(i).selectamount);
937  loadData(is, myNumrange(i).selecttotal);
938  loadData(is, myNumrange(i).selectoffset);
939  loadData(is, myNumrange(i).connectedgeo);
940  loadData(is, myNumrange(i).useattrib);
941  loadData(is, myNumrange(i).attrib);
942  loadData(is, myNumrange(i).usecolgroup);
943  loadData(is, myNumrange(i).colgroup);
944  loadData(is, myNumrange(i).colgrouptype);
945  loadData(is, myNumrange(i).colallowonbnd);
946  loadData(is, myNumrange(i).usepartnum);
947  loadData(is, myNumrange(i).keeponlypartnum);
948  loadData(is, myNumrange(i).partnum);
949 
950  }
951  }
952 
953  return true;
954  }
955 
956  const UT_Array<Numrange> &getNumrange() const { return myNumrange; }
957  void setNumrange(const UT_Array<Numrange> &val) { myNumrange = val; }
958  exint opNumrange(const SOP_NodeVerb::CookParms &cookparms) const
959  {
960  SOP_Node *thissop = cookparms.getNode();
961  if (!thissop) return getNumrange().entries();
962  exint result;
963  OP_Utils::evalOpParm(result, thissop, "numrange", cookparms.getCookTime(), 0);
964  return result;
965  }
966  bool opNumrange_enable(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
967  {
968  SOP_Node *thissop = cookparms.getNode();
969  if (!thissop) return (myNumrange(_idx).enable);
970  int _parmidx = _idx + 1;
971  bool result;
972  OP_Utils::evalOpParmInst(result, thissop, "enable#", &_parmidx, cookparms.getCookTime(), 0);
973  return (result);
974  }
976  {
977  SOP_Node *thissop = cookparms.getNode();
978  if (!thissop) return (myNumrange(_idx).groupname);
979  int _parmidx = _idx + 1;
981  OP_Utils::evalOpParmInst(result, thissop, "groupname#", &_parmidx, cookparms.getCookTime(), 0);
982  return (result);
983  }
985  {
986  SOP_Node *thissop = cookparms.getNode();
987  if (!thissop) return (myNumrange(_idx).group);
988  int _parmidx = _idx + 1;
990  OP_Utils::evalOpParmInst(result, thissop, "group#", &_parmidx, cookparms.getCookTime(), 0);
991  return (result);
992  }
994  {
995  SOP_Node *thissop = cookparms.getNode();
996  if (!thissop) return (myNumrange(_idx).grouptype);
997  int _parmidx = _idx + 1;
998  int64 result;
999  OP_Utils::evalOpParmInst(result, thissop, "grouptype#", &_parmidx, cookparms.getCookTime(), 0);
1000  return (result);
1001  }
1003  {
1004  SOP_Node *thissop = cookparms.getNode();
1005  if (!thissop) return (myNumrange(_idx).mergeop);
1006  int _parmidx = _idx + 1;
1007  int64 result;
1008  OP_Utils::evalOpParmInst(result, thissop, "mergeop#", &_parmidx, cookparms.getCookTime(), 0);
1009  return (result);
1010  }
1012  {
1013  SOP_Node *thissop = cookparms.getNode();
1014  if (!thissop) return (myNumrange(_idx).method);
1015  int _parmidx = _idx + 1;
1016  int64 result;
1017  OP_Utils::evalOpParmInst(result, thissop, "method#", &_parmidx, cookparms.getCookTime(), 0);
1018  return (result);
1019  }
1020  int64 opNumrange_start(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1021  {
1022  SOP_Node *thissop = cookparms.getNode();
1023  if (!thissop) return (myNumrange(_idx).start);
1024  int _parmidx = _idx + 1;
1025  int64 result;
1026  OP_Utils::evalOpParmInst(result, thissop, "start#", &_parmidx, cookparms.getCookTime(), 0);
1027  return (result);
1028  }
1029  int64 opNumrange_end(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1030  {
1031  SOP_Node *thissop = cookparms.getNode();
1032  if (!thissop) return (myNumrange(_idx).end);
1033  int _parmidx = _idx + 1;
1034  int64 result;
1035  OP_Utils::evalOpParmInst(result, thissop, "end#", &_parmidx, cookparms.getCookTime(), 0);
1036  return (result);
1037  }
1039  {
1040  SOP_Node *thissop = cookparms.getNode();
1041  if (!thissop) return (myNumrange(_idx).length);
1042  int _parmidx = _idx + 1;
1043  int64 result;
1044  OP_Utils::evalOpParmInst(result, thissop, "length#", &_parmidx, cookparms.getCookTime(), 0);
1045  return (result);
1046  }
1048  {
1049  SOP_Node *thissop = cookparms.getNode();
1050  if (!thissop) return (myNumrange(_idx).partition);
1051  int _parmidx = _idx + 1;
1052  int64 result;
1053  OP_Utils::evalOpParmInst(result, thissop, "partition#", &_parmidx, cookparms.getCookTime(), 0);
1054  return (result);
1055  }
1057  {
1058  SOP_Node *thissop = cookparms.getNode();
1059  if (!thissop) return (myNumrange(_idx).numpartition);
1060  int _parmidx = _idx + 1;
1061  int64 result;
1062  OP_Utils::evalOpParmInst(result, thissop, "numpartition#", &_parmidx, cookparms.getCookTime(), 0);
1063  return (result);
1064  }
1065  bool opNumrange_invert(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1066  {
1067  SOP_Node *thissop = cookparms.getNode();
1068  if (!thissop) return (myNumrange(_idx).invert);
1069  int _parmidx = _idx + 1;
1070  bool result;
1071  OP_Utils::evalOpParmInst(result, thissop, "invert#", &_parmidx, cookparms.getCookTime(), 0);
1072  return (result);
1073  }
1075  {
1076  SOP_Node *thissop = cookparms.getNode();
1077  if (!thissop) return (myNumrange(_idx).selectamount);
1078  int _parmidx = _idx + 1;
1079  int64 result;
1080  OP_Utils::evalOpParmInst(result, thissop, "selectamount#", &_parmidx, cookparms.getCookTime(), 0);
1081  return (result);
1082  }
1084  {
1085  SOP_Node *thissop = cookparms.getNode();
1086  if (!thissop) return (myNumrange(_idx).selecttotal);
1087  int _parmidx = _idx + 1;
1088  int64 result;
1089  OP_Utils::evalOpParmInst(result, thissop, "selecttotal#", &_parmidx, cookparms.getCookTime(), 0);
1090  return (result);
1091  }
1093  {
1094  SOP_Node *thissop = cookparms.getNode();
1095  if (!thissop) return (myNumrange(_idx).selectoffset);
1096  int _parmidx = _idx + 1;
1097  int64 result;
1098  OP_Utils::evalOpParmInst(result, thissop, "selectoffset#", &_parmidx, cookparms.getCookTime(), 0);
1099  return (result);
1100  }
1101  bool opNumrange_connectedgeo(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1102  {
1103  SOP_Node *thissop = cookparms.getNode();
1104  if (!thissop) return (myNumrange(_idx).connectedgeo);
1105  int _parmidx = _idx + 1;
1106  bool result;
1107  OP_Utils::evalOpParmInst(result, thissop, "connectedgeo#", &_parmidx, cookparms.getCookTime(), 0);
1108  return (result);
1109  }
1110  bool opNumrange_useattrib(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1111  {
1112  SOP_Node *thissop = cookparms.getNode();
1113  if (!thissop) return (myNumrange(_idx).useattrib);
1114  int _parmidx = _idx + 1;
1115  bool result;
1116  OP_Utils::evalOpParmInst(result, thissop, "useattrib#", &_parmidx, cookparms.getCookTime(), 0);
1117  return (result);
1118  }
1120  {
1121  SOP_Node *thissop = cookparms.getNode();
1122  if (!thissop) return (myNumrange(_idx).attrib);
1123  int _parmidx = _idx + 1;
1125  OP_Utils::evalOpParmInst(result, thissop, "attrib#", &_parmidx, cookparms.getCookTime(), 0);
1126  return (result);
1127  }
1128  bool opNumrange_usecolgroup(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1129  {
1130  SOP_Node *thissop = cookparms.getNode();
1131  if (!thissop) return (myNumrange(_idx).usecolgroup);
1132  int _parmidx = _idx + 1;
1133  bool result;
1134  OP_Utils::evalOpParmInst(result, thissop, "usecolgroup#", &_parmidx, cookparms.getCookTime(), 0);
1135  return (result);
1136  }
1138  {
1139  SOP_Node *thissop = cookparms.getNode();
1140  if (!thissop) return (myNumrange(_idx).colgroup);
1141  int _parmidx = _idx + 1;
1143  OP_Utils::evalOpParmInst(result, thissop, "colgroup#", &_parmidx, cookparms.getCookTime(), 0);
1144  return (result);
1145  }
1147  {
1148  SOP_Node *thissop = cookparms.getNode();
1149  if (!thissop) return (myNumrange(_idx).colgrouptype);
1150  int _parmidx = _idx + 1;
1151  int64 result;
1152  OP_Utils::evalOpParmInst(result, thissop, "colgrouptype#", &_parmidx, cookparms.getCookTime(), 0);
1153  return (result);
1154  }
1155  bool opNumrange_colallowonbnd(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1156  {
1157  SOP_Node *thissop = cookparms.getNode();
1158  if (!thissop) return (myNumrange(_idx).colallowonbnd);
1159  int _parmidx = _idx + 1;
1160  bool result;
1161  OP_Utils::evalOpParmInst(result, thissop, "colallowonbnd#", &_parmidx, cookparms.getCookTime(), 0);
1162  return (result);
1163  }
1164  bool opNumrange_usepartnum(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1165  {
1166  SOP_Node *thissop = cookparms.getNode();
1167  if (!thissop) return (myNumrange(_idx).usepartnum);
1168  int _parmidx = _idx + 1;
1169  bool result;
1170  OP_Utils::evalOpParmInst(result, thissop, "usepartnum#", &_parmidx, cookparms.getCookTime(), 0);
1171  return (result);
1172  }
1173  bool opNumrange_keeponlypartnum(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
1174  {
1175  SOP_Node *thissop = cookparms.getNode();
1176  if (!thissop) return (myNumrange(_idx).keeponlypartnum);
1177  int _parmidx = _idx + 1;
1178  bool result;
1179  OP_Utils::evalOpParmInst(result, thissop, "keeponlypartnum#", &_parmidx, cookparms.getCookTime(), 0);
1180  return (result);
1181  }
1183  {
1184  SOP_Node *thissop = cookparms.getNode();
1185  if (!thissop) return (myNumrange(_idx).partnum);
1186  int _parmidx = _idx + 1;
1187  int64 result;
1188  OP_Utils::evalOpParmInst(result, thissop, "partnum#", &_parmidx, cookparms.getCookTime(), 0);
1189  return (result);
1190  }
1191 
1192 
1193 private:
1194  UT_Array<Numrange> myNumrange;
1195 
1196 };
bool opNumrange_useattrib(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
GLdouble s
Definition: glew.h:1390
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
GLboolean invert
Definition: glew.h:1422
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void saveData(std::ostream &os, bool v)
exint nodeIdx() const
Definition: SOP_NodeVerb.h:114
GLenum src
Definition: glew.h:2410
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:640
static void saveData(std::ostream &os, fpreal64 v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, int *inst, fpreal time, DEP_MicroNode *depnode) const =0
static void saveData(std::ostream &os, int64 v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void partition(I begin, I middle, I end, const Pred &pred, I *out_eqbeg, I *out_eqend)
Definition: pugixml.cpp:7255
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
fpreal getTime() const
Definition: OP_Context.h:60
UT_StringHolder createString(const UT_Array< Numrange > &list) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
GLuint const GLfloat * val
Definition: glew.h:2794
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool operator==(const SOP_GroupRangeParms &src) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
bool opNumrange_usecolgroup(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
const SOP_GraphProxy * graph() const
Definition: SOP_NodeVerb.h:113
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
An output stream object that owns its own string buffer storage.
const GLdouble * v
Definition: glew.h:1391
static void saveData(std::ostream &os, UT_StringHolder s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
bool opNumrange_invert(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
int64 opNumrange_selectoffset(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void save(std::ostream &os) const
void loadFromOpSubclass(const LoadParms &loadparms) override
bool opNumrange_keeponlypartnum(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
UT_StringHolder opNumrange_group(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
double fpreal64
Definition: SYS_Types.h:201
static void loadData(UT_IStream &is, bool &v)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const char * getNestParmName(TempIndex fieldnum) const override
int64 opNumrange_partnum(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:513
static void loadData(UT_IStream &is, UT_Vector4D &v)
int64 opNumrange_selecttotal(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
exint length() const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:28
bool operator!=(const Numrange &src) const
int64 opNumrange_end(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
GLint GLenum GLsizei GLint GLsizei const void * data
Definition: glew.h:1379
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
bool opNumrange_enable(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
int64 opNumrange_method(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
exint getNestNumParms(TempIndex idx) const override
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:284
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:515
GLuint GLuint end
Definition: glew.h:1253
void
Definition: png.h:1083
static void saveData(std::ostream &os, UT_Matrix4D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
const GLfloat * c
Definition: glew.h:16296
bool opNumrange_connectedgeo(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
GLuint GLsizei GLsizei * length
Definition: glew.h:1825
int64 opNumrange_mergeop(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
long long int64
Definition: SYS_Types.h:116
int64 opNumrange_partition(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
static void saveData(std::ostream &os, UT_Matrix2D v)
const UT_Array< Numrange > & getNumrange() const
int64 opNumrange_grouptype(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
int64 opNumrange_numpartition(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
static void loadData(UT_IStream &is, int64 &v)
static void saveData(std::ostream &os, UT_Vector4D v)
GLuint start
Definition: glew.h:1253
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
SYS_FORCE_INLINE void strcat(const char *src)
static void loadData(UT_IStream &is, fpreal64 &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:294
static void loadData(UT_IStream &is, UT_StringHolder &v)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
Definition: SOP_NodeVerb.h:121
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:460
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void loadData(UT_IStream &is, UT_Matrix3D &v)
bool opNumrange_usepartnum(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
fpreal64 fpreal
Definition: SYS_Types.h:277
int64 opNumrange_selectamount(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void copyFrom(const SOP_NodeParms *src) override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
ParmType getNestParmType(TempIndex fieldnum) const override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
SYS_FORCE_INLINE void append(char character)
GLdouble GLdouble GLdouble r
Definition: glew.h:1406
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setNumrange(const UT_Array< Numrange > &val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
#define SOP_API
Definition: SOP_API.h:10
static void saveData(std::ostream &os, UT_Vector3D v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
UT_StringHolder opNumrange_groupname(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:511
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:654
int64 opNumrange_colgrouptype(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
GLuint64EXT * result
Definition: glew.h:14007
const char * findChar(int c) const
Definition: UT_String.h:1367
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:135
UT_StringHolder opNumrange_colgroup(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
bool operator==(const Numrange &src) const
UT_StringHolder opNumrange_attrib(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
exint opNumrange(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
GLenum GLuint GLsizei const GLchar * buf
Definition: glew.h:2580
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
GLsizei const GLfloat * value
Definition: glew.h:1849
bool load(UT_IStream &is)
GLboolean enable
Definition: glew.h:2745
const OP_Context & context() const
Definition: SOP_NodeVerb.h:119
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
SYS_FORCE_INLINE bool isstring() const
int64 opNumrange_length(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool operator!=(const SOP_GroupRangeParms &src) const
type
Definition: core.h:528
bool opNumrange_colallowonbnd(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
int64 opNumrange_start(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
GLboolean GLuint group
Definition: glew.h:2745
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void loadData(UT_IStream &is, UT_Vector3D &v)