HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Sort.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_SortEnums
24 {
25  enum class Ptsort
26  {
27  NONE = 0,
28  VTXORD,
29  BYX,
30  BYY,
31  BYZ,
32  REV,
33  SEED,
34  SHIF,
35  PROX,
36  VECTOR,
37  EXPRESSION,
38  SPATIAL,
39  ATTRIBUTE,
40  PRIMINDEX
41  };
42 
44  getToken(Ptsort enum_value)
45  {
46  using namespace UT::Literal;
47  switch (enum_value) {
48  case Ptsort::NONE: return "none"_sh;
49  case Ptsort::VTXORD: return "vtxord"_sh;
50  case Ptsort::BYX: return "byx"_sh;
51  case Ptsort::BYY: return "byy"_sh;
52  case Ptsort::BYZ: return "byz"_sh;
53  case Ptsort::REV: return "rev"_sh;
54  case Ptsort::SEED: return "seed"_sh;
55  case Ptsort::SHIF: return "shif"_sh;
56  case Ptsort::PROX: return "prox"_sh;
57  case Ptsort::VECTOR: return "vector"_sh;
58  case Ptsort::EXPRESSION: return "expression"_sh;
59  case Ptsort::SPATIAL: return "spatial"_sh;
60  case Ptsort::ATTRIBUTE: return "attribute"_sh;
61  case Ptsort::PRIMINDEX: return "primindex"_sh;
62  default: UT_ASSERT(false); return ""_sh;
63  }
64  }
65 
66  enum class Primsort
67  {
68  NONE = 0,
69  BYX,
70  BYY,
71  BYZ,
72  REV,
73  SEED,
74  SHIF,
75  PROX,
76  VECTOR,
77  EXPRESSION,
78  SPATIAL,
79  ATTRIBUTE
80  };
81 
83  getToken(Primsort enum_value)
84  {
85  using namespace UT::Literal;
86  switch (enum_value) {
87  case Primsort::NONE: return "none"_sh;
88  case Primsort::BYX: return "byx"_sh;
89  case Primsort::BYY: return "byy"_sh;
90  case Primsort::BYZ: return "byz"_sh;
91  case Primsort::REV: return "rev"_sh;
92  case Primsort::SEED: return "seed"_sh;
93  case Primsort::SHIF: return "shif"_sh;
94  case Primsort::PROX: return "prox"_sh;
95  case Primsort::VECTOR: return "vector"_sh;
96  case Primsort::EXPRESSION: return "expression"_sh;
97  case Primsort::SPATIAL: return "spatial"_sh;
98  case Primsort::ATTRIBUTE: return "attribute"_sh;
99  default: UT_ASSERT(false); return ""_sh;
100  }
101  }
102 
103 }
104 
105 
107 {
108 public:
109  static int version() { return 1; }
110 
112  {
113  myPtgroup = ""_UTsh;
114  myPtsort = 0;
115  myPointseed = 0;
116  myPointoffset = 0;
117  myPointprox = UT_Vector3D(0,0,0);
118  myPointobjpath = ""_UTsh;
119  myPointdir = UT_Vector3D(0,1,0);
120  myPointexpr = 0;
121  myPointattrib = ""_UTsh;
122  myPointattribcomp = 0;
123  myPointreverse = false;
124  myPrimgroup = ""_UTsh;
125  myPrimsort = 0;
126  myPrimseed = 0;
127  myPrimoffset = 0;
128  myPrimprox = UT_Vector3D(0,0,0);
129  myPrimobjpath = ""_UTsh;
130  myPrimdir = UT_Vector3D(0,1,0);
131  myPrimexpr = 0;
132  myPrimattrib = ""_UTsh;
133  myPrimattribcomp = 0;
134  myPrimreverse = false;
135  myVertexPrimOrder = true;
136 
137  }
138 
139  explicit SOP_SortParms(const SOP_SortParms &) = default;
140  SOP_SortParms &operator=(const SOP_SortParms &) = default;
141  SOP_SortParms(SOP_SortParms &&) noexcept = default;
142  SOP_SortParms &operator=(SOP_SortParms &&) noexcept = default;
143 
144  ~SOP_SortParms() override {}
145 
146  bool operator==(const SOP_SortParms &src) const
147  {
148  if (myPtgroup != src.myPtgroup) return false;
149  if (myPtsort != src.myPtsort) return false;
150  if (myPointseed != src.myPointseed) return false;
151  if (myPointoffset != src.myPointoffset) return false;
152  if (myPointprox != src.myPointprox) return false;
153  if (myPointobjpath != src.myPointobjpath) return false;
154  if (myPointdir != src.myPointdir) return false;
155  if (myPointexpr != src.myPointexpr) return false;
156  if (myPointattrib != src.myPointattrib) return false;
157  if (myPointattribcomp != src.myPointattribcomp) return false;
158  if (myPointreverse != src.myPointreverse) return false;
159  if (myPrimgroup != src.myPrimgroup) return false;
160  if (myPrimsort != src.myPrimsort) return false;
161  if (myPrimseed != src.myPrimseed) return false;
162  if (myPrimoffset != src.myPrimoffset) return false;
163  if (myPrimprox != src.myPrimprox) return false;
164  if (myPrimobjpath != src.myPrimobjpath) return false;
165  if (myPrimdir != src.myPrimdir) return false;
166  if (myPrimexpr != src.myPrimexpr) return false;
167  if (myPrimattrib != src.myPrimattrib) return false;
168  if (myPrimattribcomp != src.myPrimattribcomp) return false;
169  if (myPrimreverse != src.myPrimreverse) return false;
170  if (myVertexPrimOrder != src.myVertexPrimOrder) return false;
171 
172  return true;
173  }
174  bool operator!=(const SOP_SortParms &src) const
175  {
176  return !operator==(src);
177  }
180 
181 
182 
183  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
184  {
185  myPtgroup = ""_UTsh;
186  if (true)
187  graph->evalOpParm(myPtgroup, nodeidx, "ptgroup", time, 0);
188  myPtsort = 0;
189  if (true)
190  graph->evalOpParm(myPtsort, nodeidx, "ptsort", time, 0);
191  myPointseed = 0;
192  if (true && ( (true&&!(((int64(getPtsort())!=6)))) ) )
193  graph->evalOpParm(myPointseed, nodeidx, "pointseed", time, 0);
194  myPointoffset = 0;
195  if (true && ( (true&&!(((int64(getPtsort())!=7)))) ) )
196  graph->evalOpParm(myPointoffset, nodeidx, "pointoffset", time, 0);
197  myPointprox = UT_Vector3D(0,0,0);
198  if (true && ( (true&&!(((int64(getPtsort())!=8)))) ) )
199  graph->evalOpParm(myPointprox, nodeidx, "pointprox", time, 0);
200  myPointobjpath = ""_UTsh;
201  if (true && ( (true&&!(((int64(getPtsort())!=9)))) ) )
202  graph->evalOpParm(myPointobjpath, nodeidx, "pointobjpath", time, 0);
203  myPointdir = UT_Vector3D(0,1,0);
204  if (true && ( (true&&!(((int64(getPtsort())!=9)))) ) )
205  graph->evalOpParm(myPointdir, nodeidx, "pointdir", time, 0);
206  myPointexpr = 0;
207  if (true && ( (true&&!(((int64(getPtsort())!=10)))) ) )
208  graph->evalOpParm(myPointexpr, nodeidx, "pointexpr", time, 0);
209  myPointattrib = ""_UTsh;
210  if (true && ( (true&&!(((int64(getPtsort())!=12)))) ) )
211  graph->evalOpParm(myPointattrib, nodeidx, "pointattrib", time, 0);
212  myPointattribcomp = 0;
213  if (true && ( (true&&!(((int64(getPtsort())!=12)))) ) )
214  graph->evalOpParm(myPointattribcomp, nodeidx, "pointattribcomp", time, 0);
215  myPointreverse = false;
216  if (true)
217  graph->evalOpParm(myPointreverse, nodeidx, "pointreverse", time, 0);
218  myPrimgroup = ""_UTsh;
219  if (true)
220  graph->evalOpParm(myPrimgroup, nodeidx, "primgroup", time, 0);
221  myPrimsort = 0;
222  if (true)
223  graph->evalOpParm(myPrimsort, nodeidx, "primsort", time, 0);
224  myPrimseed = 0;
225  if (true && ( (true&&!(((int64(getPrimsort())!=5)))) ) )
226  graph->evalOpParm(myPrimseed, nodeidx, "primseed", time, 0);
227  myPrimoffset = 0;
228  if (true && ( (true&&!(((int64(getPrimsort())!=6)))) ) )
229  graph->evalOpParm(myPrimoffset, nodeidx, "primoffset", time, 0);
230  myPrimprox = UT_Vector3D(0,0,0);
231  if (true && ( (true&&!(((int64(getPrimsort())!=7)))) ) )
232  graph->evalOpParm(myPrimprox, nodeidx, "primprox", time, 0);
233  myPrimobjpath = ""_UTsh;
234  if (true && ( (true&&!(((int64(getPrimsort())!=8)))) ) )
235  graph->evalOpParm(myPrimobjpath, nodeidx, "primobjpath", time, 0);
236  myPrimdir = UT_Vector3D(0,1,0);
237  if (true && ( (true&&!(((int64(getPrimsort())!=8)))) ) )
238  graph->evalOpParm(myPrimdir, nodeidx, "primdir", time, 0);
239  myPrimexpr = 0;
240  if (true && ( (true&&!(((int64(getPrimsort())!=9)))) ) )
241  graph->evalOpParm(myPrimexpr, nodeidx, "primexpr", time, 0);
242  myPrimattrib = ""_UTsh;
243  if (true && ( (true&&!(((int64(getPrimsort())!=11)))) ) )
244  graph->evalOpParm(myPrimattrib, nodeidx, "primattrib", time, 0);
245  myPrimattribcomp = 0;
246  if (true && ( (true&&!(((int64(getPrimsort())!=11)))) ) )
247  graph->evalOpParm(myPrimattribcomp, nodeidx, "primattribcomp", time, 0);
248  myPrimreverse = false;
249  if (true)
250  graph->evalOpParm(myPrimreverse, nodeidx, "primreverse", time, 0);
251  myVertexPrimOrder = true;
252  if (true)
253  graph->evalOpParm(myVertexPrimOrder, nodeidx, "vertexprimorder", time, 0);
254 
255  }
256 
257 
258  void loadFromOpSubclass(const LoadParms &loadparms) override
259  {
260  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
261  }
262 
263 
264  void copyFrom(const OP_NodeParms *src) override
265  {
266  *this = *((const SOP_SortParms *)src);
267  }
268 
269  template <typename T>
270  void
271  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
272  {
273  if (idx.size() < 1)
274  return;
275  UT_ASSERT(idx.size() == instance.size()+1);
276  if (idx.size() != instance.size()+1)
277  return;
278  switch (idx[0])
279  {
280  case 0:
281  coerceValue(value, myPtgroup);
282  break;
283  case 1:
284  coerceValue(value, myPtsort);
285  break;
286  case 2:
287  coerceValue(value, myPointseed);
288  break;
289  case 3:
290  coerceValue(value, myPointoffset);
291  break;
292  case 4:
293  coerceValue(value, myPointprox);
294  break;
295  case 5:
296  coerceValue(value, myPointobjpath);
297  break;
298  case 6:
299  coerceValue(value, myPointdir);
300  break;
301  case 7:
302  coerceValue(value, myPointexpr);
303  break;
304  case 8:
305  coerceValue(value, myPointattrib);
306  break;
307  case 9:
308  coerceValue(value, myPointattribcomp);
309  break;
310  case 10:
311  coerceValue(value, myPointreverse);
312  break;
313  case 11:
314  coerceValue(value, myPrimgroup);
315  break;
316  case 12:
317  coerceValue(value, myPrimsort);
318  break;
319  case 13:
320  coerceValue(value, myPrimseed);
321  break;
322  case 14:
323  coerceValue(value, myPrimoffset);
324  break;
325  case 15:
326  coerceValue(value, myPrimprox);
327  break;
328  case 16:
329  coerceValue(value, myPrimobjpath);
330  break;
331  case 17:
332  coerceValue(value, myPrimdir);
333  break;
334  case 18:
335  coerceValue(value, myPrimexpr);
336  break;
337  case 19:
338  coerceValue(value, myPrimattrib);
339  break;
340  case 20:
341  coerceValue(value, myPrimattribcomp);
342  break;
343  case 21:
344  coerceValue(value, myPrimreverse);
345  break;
346  case 22:
347  coerceValue(value, myVertexPrimOrder);
348  break;
349 
350  }
351  }
352 
353  bool isParmColorRamp(exint idx) const override
354  {
355  switch (idx)
356  {
357 
358  }
359  return false;
360  }
361 
362  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
363  { doGetParmValue(idx, instance, value); }
364  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
365  { doGetParmValue(idx, instance, value); }
366  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
367  { doGetParmValue(idx, instance, value); }
368  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
369  { doGetParmValue(idx, instance, value); }
370  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
371  { doGetParmValue(idx, instance, value); }
372  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
373  { doGetParmValue(idx, instance, value); }
374  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
375  { doGetParmValue(idx, instance, value); }
376  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
377  { doGetParmValue(idx, instance, value); }
378  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
379  { doGetParmValue(idx, instance, value); }
380  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
381  { doGetParmValue(idx, instance, value); }
382  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
383  { doGetParmValue(idx, instance, value); }
384 
385  template <typename T>
386  void
387  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
388  {
389  if (idx.size() < 1)
390  return;
391  UT_ASSERT(idx.size() == instance.size()+1);
392  if (idx.size() != instance.size()+1)
393  return;
394  switch (idx[0])
395  {
396  case 0:
397  coerceValue(myPtgroup, ( ( value ) ));
398  break;
399  case 1:
400  coerceValue(myPtsort, clampMinValue(0, clampMaxValue(13, value ) ));
401  break;
402  case 2:
403  coerceValue(myPointseed, ( ( value ) ));
404  break;
405  case 3:
406  coerceValue(myPointoffset, ( ( value ) ));
407  break;
408  case 4:
409  coerceValue(myPointprox, ( ( value ) ));
410  break;
411  case 5:
412  coerceValue(myPointobjpath, ( ( value ) ));
413  break;
414  case 6:
415  coerceValue(myPointdir, ( ( value ) ));
416  break;
417  case 7:
418  coerceValue(myPointexpr, ( ( value ) ));
419  break;
420  case 8:
421  coerceValue(myPointattrib, ( ( value ) ));
422  break;
423  case 9:
424  coerceValue(myPointattribcomp, ( ( value ) ));
425  break;
426  case 10:
427  coerceValue(myPointreverse, ( ( value ) ));
428  break;
429  case 11:
430  coerceValue(myPrimgroup, ( ( value ) ));
431  break;
432  case 12:
433  coerceValue(myPrimsort, clampMinValue(0, clampMaxValue(11, value ) ));
434  break;
435  case 13:
436  coerceValue(myPrimseed, ( ( value ) ));
437  break;
438  case 14:
439  coerceValue(myPrimoffset, ( ( value ) ));
440  break;
441  case 15:
442  coerceValue(myPrimprox, ( ( value ) ));
443  break;
444  case 16:
445  coerceValue(myPrimobjpath, ( ( value ) ));
446  break;
447  case 17:
448  coerceValue(myPrimdir, ( ( value ) ));
449  break;
450  case 18:
451  coerceValue(myPrimexpr, ( ( value ) ));
452  break;
453  case 19:
454  coerceValue(myPrimattrib, ( ( value ) ));
455  break;
456  case 20:
457  coerceValue(myPrimattribcomp, ( ( value ) ));
458  break;
459  case 21:
460  coerceValue(myPrimreverse, ( ( value ) ));
461  break;
462  case 22:
463  coerceValue(myVertexPrimOrder, ( ( value ) ));
464  break;
465 
466  }
467  }
468 
469  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
470  { doSetParmValue(idx, instance, value); }
471  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
472  { doSetParmValue(idx, instance, value); }
473  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
474  { doSetParmValue(idx, instance, value); }
475  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
476  { doSetParmValue(idx, instance, value); }
477  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
478  { doSetParmValue(idx, instance, value); }
479  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
480  { doSetParmValue(idx, instance, value); }
481  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
482  { doSetParmValue(idx, instance, value); }
483  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
484  { doSetParmValue(idx, instance, value); }
485  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
486  { doSetParmValue(idx, instance, value); }
487  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
488  { doSetParmValue(idx, instance, value); }
489  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
490  { doSetParmValue(idx, instance, value); }
491 
492  exint getNestNumParms(TempIndex idx) const override
493  {
494  if (idx.size() == 0)
495  return 23;
496  switch (idx[0])
497  {
498 
499  }
500  // Invalid
501  return 0;
502  }
503 
504  const char *getNestParmName(TempIndex fieldnum) const override
505  {
506  if (fieldnum.size() < 1)
507  return 0;
508  switch (fieldnum[0])
509  {
510  case 0:
511  return "ptgroup";
512  case 1:
513  return "ptsort";
514  case 2:
515  return "pointseed";
516  case 3:
517  return "pointoffset";
518  case 4:
519  return "pointprox";
520  case 5:
521  return "pointobjpath";
522  case 6:
523  return "pointdir";
524  case 7:
525  return "pointexpr";
526  case 8:
527  return "pointattrib";
528  case 9:
529  return "pointattribcomp";
530  case 10:
531  return "pointreverse";
532  case 11:
533  return "primgroup";
534  case 12:
535  return "primsort";
536  case 13:
537  return "primseed";
538  case 14:
539  return "primoffset";
540  case 15:
541  return "primprox";
542  case 16:
543  return "primobjpath";
544  case 17:
545  return "primdir";
546  case 18:
547  return "primexpr";
548  case 19:
549  return "primattrib";
550  case 20:
551  return "primattribcomp";
552  case 21:
553  return "primreverse";
554  case 22:
555  return "vertexprimorder";
556 
557  }
558  return 0;
559  }
560 
561  ParmType getNestParmType(TempIndex fieldnum) const override
562  {
563  if (fieldnum.size() < 1)
564  return PARM_UNSUPPORTED;
565  switch (fieldnum[0])
566  {
567  case 0:
568  return PARM_STRING;
569  case 1:
570  return PARM_INTEGER;
571  case 2:
572  return PARM_INTEGER;
573  case 3:
574  return PARM_INTEGER;
575  case 4:
576  return PARM_VECTOR3;
577  case 5:
578  return PARM_STRING;
579  case 6:
580  return PARM_VECTOR3;
581  case 7:
582  return PARM_FLOAT;
583  case 8:
584  return PARM_STRING;
585  case 9:
586  return PARM_INTEGER;
587  case 10:
588  return PARM_INTEGER;
589  case 11:
590  return PARM_STRING;
591  case 12:
592  return PARM_INTEGER;
593  case 13:
594  return PARM_INTEGER;
595  case 14:
596  return PARM_INTEGER;
597  case 15:
598  return PARM_VECTOR3;
599  case 16:
600  return PARM_STRING;
601  case 17:
602  return PARM_VECTOR3;
603  case 18:
604  return PARM_FLOAT;
605  case 19:
606  return PARM_STRING;
607  case 20:
608  return PARM_INTEGER;
609  case 21:
610  return PARM_INTEGER;
611  case 22:
612  return PARM_INTEGER;
613 
614  }
615  return PARM_UNSUPPORTED;
616  }
617 
618  // Boiler plate to load individual types.
619  static void loadData(UT_IStream &is, int64 &v)
620  { is.bread(&v, 1); }
621  static void loadData(UT_IStream &is, bool &v)
622  { int64 iv; is.bread(&iv, 1); v = iv; }
623  static void loadData(UT_IStream &is, fpreal64 &v)
624  { is.bread<fpreal64>(&v, 1); }
625  static void loadData(UT_IStream &is, UT_Vector2D &v)
626  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
627  static void loadData(UT_IStream &is, UT_Vector3D &v)
628  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
629  is.bread<fpreal64>(&v.z(), 1); }
630  static void loadData(UT_IStream &is, UT_Vector4D &v)
631  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
632  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
633  static void loadData(UT_IStream &is, UT_Matrix2D &v)
634  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
635  static void loadData(UT_IStream &is, UT_Matrix3D &v)
636  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
637  static void loadData(UT_IStream &is, UT_Matrix4D &v)
638  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
639  static void loadData(UT_IStream &is, UT_Vector2I &v)
640  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
641  static void loadData(UT_IStream &is, UT_Vector3I &v)
642  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
643  is.bread<int64>(&v.z(), 1); }
644  static void loadData(UT_IStream &is, UT_Vector4I &v)
645  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
646  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
648  { is.bread(v); }
650  { UT_StringHolder rampdata;
651  loadData(is, rampdata);
652  if (rampdata.isstring())
653  {
654  v.reset(new UT_Ramp());
655  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
656  v->load(istr);
657  }
658  else v.reset();
659  }
662  loadData(is, data);
663  if (data.isstring())
664  {
665  // Find the data type.
666  const char *colon = UT_StringWrap(data).findChar(':');
667  if (colon)
668  {
669  int typelen = colon - data.buffer();
671  type.strncpy(data.buffer(), typelen);
672  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
673 
674  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
675  }
676  }
677  else v.reset();
678  }
679 
680  static void saveData(std::ostream &os, int64 v)
681  { UTwrite(os, &v); }
682  static void saveData(std::ostream &os, bool v)
683  { int64 iv = v; UTwrite(os, &iv); }
684  static void saveData(std::ostream &os, fpreal64 v)
685  { UTwrite<fpreal64>(os, &v); }
686  static void saveData(std::ostream &os, UT_Vector2D v)
687  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
688  static void saveData(std::ostream &os, UT_Vector3D v)
689  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
690  UTwrite<fpreal64>(os, &v.z()); }
691  static void saveData(std::ostream &os, UT_Vector4D v)
692  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
693  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
694  static void saveData(std::ostream &os, UT_Matrix2D v)
696  static void saveData(std::ostream &os, UT_Matrix3D v)
698  static void saveData(std::ostream &os, UT_Matrix4D v)
700  static void saveData(std::ostream &os, UT_StringHolder s)
701  { UT_StringWrap(s).saveBinary(os); }
702  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
704  UT_OStringStream ostr;
705  if (s) s->save(ostr);
706  result = ostr.str();
707  saveData(os, result);
708  }
709  static void saveData(std::ostream &os, PRM_DataItemHandle s)
711  UT_OStringStream ostr;
712  if (s)
713  {
714  ostr << s->getDataTypeToken();
715  ostr << ":";
716  s->saveBinary(ostr);
717  }
718  result = ostr.str();
719  saveData(os, result);
720  }
721 
722 
723  void save(std::ostream &os) const
724  {
725  int32 v = version();
726  UTwrite(os, &v);
727  saveData(os, myPtgroup);
728  saveData(os, myPtsort);
729  saveData(os, myPointseed);
730  saveData(os, myPointoffset);
731  saveData(os, myPointprox);
732  saveData(os, myPointobjpath);
733  saveData(os, myPointdir);
734  saveData(os, myPointexpr);
735  saveData(os, myPointattrib);
736  saveData(os, myPointattribcomp);
737  saveData(os, myPointreverse);
738  saveData(os, myPrimgroup);
739  saveData(os, myPrimsort);
740  saveData(os, myPrimseed);
741  saveData(os, myPrimoffset);
742  saveData(os, myPrimprox);
743  saveData(os, myPrimobjpath);
744  saveData(os, myPrimdir);
745  saveData(os, myPrimexpr);
746  saveData(os, myPrimattrib);
747  saveData(os, myPrimattribcomp);
748  saveData(os, myPrimreverse);
749  saveData(os, myVertexPrimOrder);
750 
751  }
752 
753  bool load(UT_IStream &is)
754  {
755  int32 v;
756  is.bread(&v, 1);
757  if (version() != v)
758  {
759  // Fail incompatible versions
760  return false;
761  }
762  loadData(is, myPtgroup);
763  loadData(is, myPtsort);
764  loadData(is, myPointseed);
765  loadData(is, myPointoffset);
766  loadData(is, myPointprox);
767  loadData(is, myPointobjpath);
768  loadData(is, myPointdir);
769  loadData(is, myPointexpr);
770  loadData(is, myPointattrib);
771  loadData(is, myPointattribcomp);
772  loadData(is, myPointreverse);
773  loadData(is, myPrimgroup);
774  loadData(is, myPrimsort);
775  loadData(is, myPrimseed);
776  loadData(is, myPrimoffset);
777  loadData(is, myPrimprox);
778  loadData(is, myPrimobjpath);
779  loadData(is, myPrimdir);
780  loadData(is, myPrimexpr);
781  loadData(is, myPrimattrib);
782  loadData(is, myPrimattribcomp);
783  loadData(is, myPrimreverse);
784  loadData(is, myVertexPrimOrder);
785 
786  return true;
787  }
788 
789  const UT_StringHolder & getPtgroup() const { return myPtgroup; }
790  void setPtgroup(const UT_StringHolder & val) { myPtgroup = val; }
792  {
793  SOP_Node *thissop = cookparms.getNode();
794  if (!thissop) return getPtgroup();
796  OP_Utils::evalOpParm(result, thissop, "ptgroup", cookparms.getCookTime(), 0);
797  return result;
798  }
799  Ptsort getPtsort() const { return Ptsort(myPtsort); }
800  void setPtsort(Ptsort val) { myPtsort = int64(val); }
801  Ptsort opPtsort(const SOP_NodeVerb::CookParms &cookparms) const
802  {
803  SOP_Node *thissop = cookparms.getNode();
804  if (!thissop) return getPtsort();
805  int64 result;
806  OP_Utils::evalOpParm(result, thissop, "ptsort", cookparms.getCookTime(), 0);
807  return Ptsort(result);
808  }
809  int64 getPointseed() const { return myPointseed; }
810  void setPointseed(int64 val) { myPointseed = val; }
811  int64 opPointseed(const SOP_NodeVerb::CookParms &cookparms) const
812  {
813  SOP_Node *thissop = cookparms.getNode();
814  if (!thissop) return getPointseed();
815  int64 result;
816  OP_Utils::evalOpParm(result, thissop, "pointseed", cookparms.getCookTime(), 0);
817  return result;
818  }
819  int64 getPointoffset() const { return myPointoffset; }
820  void setPointoffset(int64 val) { myPointoffset = val; }
822  {
823  SOP_Node *thissop = cookparms.getNode();
824  if (!thissop) return getPointoffset();
825  int64 result;
826  OP_Utils::evalOpParm(result, thissop, "pointoffset", cookparms.getCookTime(), 0);
827  return result;
828  }
829  UT_Vector3D getPointprox() const { return myPointprox; }
830  void setPointprox(UT_Vector3D val) { myPointprox = val; }
832  {
833  SOP_Node *thissop = cookparms.getNode();
834  if (!thissop) return getPointprox();
836  OP_Utils::evalOpParm(result, thissop, "pointprox", cookparms.getCookTime(), 0);
837  return result;
838  }
839  const UT_StringHolder & getPointobjpath() const { return myPointobjpath; }
840  void setPointobjpath(const UT_StringHolder & val) { myPointobjpath = val; }
842  {
843  SOP_Node *thissop = cookparms.getNode();
844  if (!thissop) return getPointobjpath();
846  OP_Utils::evalOpParm(result, thissop, "pointobjpath", cookparms.getCookTime(), 0);
847  return result;
848  }
849  UT_Vector3D getPointdir() const { return myPointdir; }
850  void setPointdir(UT_Vector3D val) { myPointdir = val; }
852  {
853  SOP_Node *thissop = cookparms.getNode();
854  if (!thissop) return getPointdir();
856  OP_Utils::evalOpParm(result, thissop, "pointdir", cookparms.getCookTime(), 0);
857  return result;
858  }
859  fpreal64 getPointexpr() const { return myPointexpr; }
860  void setPointexpr(fpreal64 val) { myPointexpr = val; }
862  {
863  SOP_Node *thissop = cookparms.getNode();
864  if (!thissop) return getPointexpr();
866  OP_Utils::evalOpParm(result, thissop, "pointexpr", cookparms.getCookTime(), 0);
867  return result;
868  }
869  const UT_StringHolder & getPointattrib() const { return myPointattrib; }
870  void setPointattrib(const UT_StringHolder & val) { myPointattrib = val; }
872  {
873  SOP_Node *thissop = cookparms.getNode();
874  if (!thissop) return getPointattrib();
876  OP_Utils::evalOpParm(result, thissop, "pointattrib", cookparms.getCookTime(), 0);
877  return result;
878  }
879  int64 getPointattribcomp() const { return myPointattribcomp; }
880  void setPointattribcomp(int64 val) { myPointattribcomp = val; }
882  {
883  SOP_Node *thissop = cookparms.getNode();
884  if (!thissop) return getPointattribcomp();
885  int64 result;
886  OP_Utils::evalOpParm(result, thissop, "pointattribcomp", cookparms.getCookTime(), 0);
887  return result;
888  }
889  bool getPointreverse() const { return myPointreverse; }
890  void setPointreverse(bool val) { myPointreverse = val; }
891  bool opPointreverse(const SOP_NodeVerb::CookParms &cookparms) const
892  {
893  SOP_Node *thissop = cookparms.getNode();
894  if (!thissop) return getPointreverse();
895  bool result;
896  OP_Utils::evalOpParm(result, thissop, "pointreverse", cookparms.getCookTime(), 0);
897  return result;
898  }
899  const UT_StringHolder & getPrimgroup() const { return myPrimgroup; }
900  void setPrimgroup(const UT_StringHolder & val) { myPrimgroup = val; }
902  {
903  SOP_Node *thissop = cookparms.getNode();
904  if (!thissop) return getPrimgroup();
906  OP_Utils::evalOpParm(result, thissop, "primgroup", cookparms.getCookTime(), 0);
907  return result;
908  }
909  Primsort getPrimsort() const { return Primsort(myPrimsort); }
910  void setPrimsort(Primsort val) { myPrimsort = int64(val); }
912  {
913  SOP_Node *thissop = cookparms.getNode();
914  if (!thissop) return getPrimsort();
915  int64 result;
916  OP_Utils::evalOpParm(result, thissop, "primsort", cookparms.getCookTime(), 0);
917  return Primsort(result);
918  }
919  int64 getPrimseed() const { return myPrimseed; }
920  void setPrimseed(int64 val) { myPrimseed = val; }
921  int64 opPrimseed(const SOP_NodeVerb::CookParms &cookparms) const
922  {
923  SOP_Node *thissop = cookparms.getNode();
924  if (!thissop) return getPrimseed();
925  int64 result;
926  OP_Utils::evalOpParm(result, thissop, "primseed", cookparms.getCookTime(), 0);
927  return result;
928  }
929  int64 getPrimoffset() const { return myPrimoffset; }
930  void setPrimoffset(int64 val) { myPrimoffset = val; }
932  {
933  SOP_Node *thissop = cookparms.getNode();
934  if (!thissop) return getPrimoffset();
935  int64 result;
936  OP_Utils::evalOpParm(result, thissop, "primoffset", cookparms.getCookTime(), 0);
937  return result;
938  }
939  UT_Vector3D getPrimprox() const { return myPrimprox; }
940  void setPrimprox(UT_Vector3D val) { myPrimprox = val; }
942  {
943  SOP_Node *thissop = cookparms.getNode();
944  if (!thissop) return getPrimprox();
946  OP_Utils::evalOpParm(result, thissop, "primprox", cookparms.getCookTime(), 0);
947  return result;
948  }
949  const UT_StringHolder & getPrimobjpath() const { return myPrimobjpath; }
950  void setPrimobjpath(const UT_StringHolder & val) { myPrimobjpath = val; }
952  {
953  SOP_Node *thissop = cookparms.getNode();
954  if (!thissop) return getPrimobjpath();
956  OP_Utils::evalOpParm(result, thissop, "primobjpath", cookparms.getCookTime(), 0);
957  return result;
958  }
959  UT_Vector3D getPrimdir() const { return myPrimdir; }
960  void setPrimdir(UT_Vector3D val) { myPrimdir = val; }
962  {
963  SOP_Node *thissop = cookparms.getNode();
964  if (!thissop) return getPrimdir();
966  OP_Utils::evalOpParm(result, thissop, "primdir", cookparms.getCookTime(), 0);
967  return result;
968  }
969  fpreal64 getPrimexpr() const { return myPrimexpr; }
970  void setPrimexpr(fpreal64 val) { myPrimexpr = val; }
972  {
973  SOP_Node *thissop = cookparms.getNode();
974  if (!thissop) return getPrimexpr();
976  OP_Utils::evalOpParm(result, thissop, "primexpr", cookparms.getCookTime(), 0);
977  return result;
978  }
979  const UT_StringHolder & getPrimattrib() const { return myPrimattrib; }
980  void setPrimattrib(const UT_StringHolder & val) { myPrimattrib = val; }
982  {
983  SOP_Node *thissop = cookparms.getNode();
984  if (!thissop) return getPrimattrib();
986  OP_Utils::evalOpParm(result, thissop, "primattrib", cookparms.getCookTime(), 0);
987  return result;
988  }
989  int64 getPrimattribcomp() const { return myPrimattribcomp; }
990  void setPrimattribcomp(int64 val) { myPrimattribcomp = val; }
992  {
993  SOP_Node *thissop = cookparms.getNode();
994  if (!thissop) return getPrimattribcomp();
995  int64 result;
996  OP_Utils::evalOpParm(result, thissop, "primattribcomp", cookparms.getCookTime(), 0);
997  return result;
998  }
999  bool getPrimreverse() const { return myPrimreverse; }
1000  void setPrimreverse(bool val) { myPrimreverse = val; }
1001  bool opPrimreverse(const SOP_NodeVerb::CookParms &cookparms) const
1002  {
1003  SOP_Node *thissop = cookparms.getNode();
1004  if (!thissop) return getPrimreverse();
1005  bool result;
1006  OP_Utils::evalOpParm(result, thissop, "primreverse", cookparms.getCookTime(), 0);
1007  return result;
1008  }
1009  bool getVertexPrimOrder() const { return myVertexPrimOrder; }
1010  void setVertexPrimOrder(bool val) { myVertexPrimOrder = val; }
1011  bool opVertexPrimOrder(const SOP_NodeVerb::CookParms &cookparms) const
1012  {
1013  SOP_Node *thissop = cookparms.getNode();
1014  if (!thissop) return getVertexPrimOrder();
1015  bool result;
1016  OP_Utils::evalOpParm(result, thissop, "vertexprimorder", cookparms.getCookTime(), 0);
1017  return result;
1018  }
1019 
1020 private:
1021  UT_StringHolder myPtgroup;
1022  int64 myPtsort;
1023  int64 myPointseed;
1024  int64 myPointoffset;
1025  UT_Vector3D myPointprox;
1026  UT_StringHolder myPointobjpath;
1027  UT_Vector3D myPointdir;
1028  fpreal64 myPointexpr;
1029  UT_StringHolder myPointattrib;
1030  int64 myPointattribcomp;
1031  bool myPointreverse;
1032  UT_StringHolder myPrimgroup;
1033  int64 myPrimsort;
1034  int64 myPrimseed;
1035  int64 myPrimoffset;
1036  UT_Vector3D myPrimprox;
1037  UT_StringHolder myPrimobjpath;
1038  UT_Vector3D myPrimdir;
1039  fpreal64 myPrimexpr;
1040  UT_StringHolder myPrimattrib;
1041  int64 myPrimattribcomp;
1042  bool myPrimreverse;
1043  bool myVertexPrimOrder;
1044 
1045 };
void setPointreverse(bool val)
void setPointobjpath(const UT_StringHolder &val)
int64 opPrimattribcomp(const SOP_NodeVerb::CookParms &cookparms) const
bool getVertexPrimOrder() const
int64 getPointseed() const
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_StringHolder opPrimgroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
UT_Vector3D getPrimdir() const
void save(std::ostream &os) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setPrimreverse(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setPointexpr(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setPtgroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, bool &v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
int64 opPointattribcomp(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_SortParms &src) const
const UT_StringHolder & getPointobjpath() const
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
ParmType getNestParmType(TempIndex fieldnum) const override
static void saveData(std::ostream &os, fpreal64 v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void saveData(std::ostream &os, UT_Vector4D v)
fpreal64 getPrimexpr() const
Primsort opPrimsort(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setPointoffset(int64 val)
SYS_FORCE_INLINE const char * buffer() const
int64 getPointattribcomp() const
UT_Vector3D opPointprox(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
static void saveData(std::ostream &os, UT_Matrix3D v)
void setPrimexpr(fpreal64 val)
int64 opPrimoffset(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder opPrimobjpath(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
**But if you need a result
Definition: thread.h:613
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool opPrimreverse(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
Ptsort getPtsort() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setPointattribcomp(int64 val)
void setPrimattribcomp(int64 val)
fpreal64 opPointexpr(const SOP_NodeVerb::CookParms &cookparms) const
Primsort getPrimsort() 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.
static void loadData(UT_IStream &is, fpreal64 &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
UT_Vector3D opPointdir(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool opVertexPrimOrder(const SOP_NodeVerb::CookParms &cookparms) const
void setPointdir(UT_Vector3D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool getPointreverse() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
int64 opPointoffset(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimseed(int64 val)
void copyFrom(const OP_NodeParms *src) override
static void saveData(std::ostream &os, UT_Vector3D v)
exint length() const
UT_Vector3D getPointprox() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &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
const UT_StringHolder & getPrimattrib() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void loadData(UT_IStream &is, UT_Vector4I &v)
int64 getPrimattribcomp() const
int64 getPrimseed() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
static int version()
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
long long int64
Definition: SYS_Types.h:116
void setPrimdir(UT_Vector3D val)
int64 getPointoffset() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
Ptsort opPtsort(const SOP_NodeVerb::CookParms &cookparms) const
void setPointattrib(const UT_StringHolder &val)
UT_StringHolder opPrimattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
bool load(UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool getPrimreverse() const
UT_Vector3D getPointdir() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void setPtsort(Ptsort val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
int64 opPrimseed(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
int64 getPrimoffset() const
UT_Vector3D opPrimprox(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
const char * getNestParmName(TempIndex fieldnum) const override
const UT_StringHolder & getPointattrib() const
UT_StringHolder opPointattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPrimgroup() const
SYS_FORCE_INLINE UT_StringHolder getToken(Ptsort enum_value)
void setPrimobjpath(const UT_StringHolder &val)
void setPrimoffset(int64 val)
UT_StringHolder opPtgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimprox(UT_Vector3D val)
const UT_StringHolder & getPrimobjpath() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
int64 opPointseed(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
LeafData & operator=(const LeafData &)=delete
static void saveData(std::ostream &os, UT_Matrix2D v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setPrimsort(Primsort val)
void setVertexPrimOrder(bool val)
#define SOP_API
Definition: SOP_API.h:10
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, int64 v)
fpreal64 opPrimexpr(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
bool opPointreverse(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void setPrimattrib(const UT_StringHolder &val)
void loadFromOpSubclass(const LoadParms &loadparms) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
Definition: core.h:1131
exint getNestNumParms(TempIndex idx) const override
static void saveData(std::ostream &os, UT_StringHolder s)
GLboolean r
Definition: glcorearb.h:1222
void setPrimgroup(const UT_StringHolder &val)
UT_Vector3D getPrimprox() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setPointseed(int64 val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setPointprox(UT_Vector3D val)
type
Definition: core.h:1059
bool isParmColorRamp(exint idx) const override
bool operator!=(const SOP_SortParms &src) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_StringHolder opPointobjpath(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
fpreal64 getPointexpr() const
UT_Vector3D opPrimdir(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
const UT_StringHolder & getPtgroup() const
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override