HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_PolyWire.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_PolyWireEnums
24 {
25  enum class UseScaleAttrib
26  {
27  CONSTANT = 0,
28  ATTRIB
29  };
30 
32  getToken(UseScaleAttrib enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case UseScaleAttrib::CONSTANT: return "constant"_sh;
37  case UseScaleAttrib::ATTRIB: return "attrib"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class UseSmoothAttrib
43  {
44  CONSTANT = 0,
45  ATTRIB
46  };
47 
50  {
51  using namespace UT::Literal;
52  switch (enum_value) {
53  case UseSmoothAttrib::CONSTANT: return "constant"_sh;
54  case UseSmoothAttrib::ATTRIB: return "attrib"_sh;
55  default: UT_ASSERT(false); return ""_sh;
56  }
57  }
58 
59  enum class UseDivAttrib
60  {
61  CONSTANT = 0,
62  ATTRIB
63  };
64 
66  getToken(UseDivAttrib enum_value)
67  {
68  using namespace UT::Literal;
69  switch (enum_value) {
70  case UseDivAttrib::CONSTANT: return "constant"_sh;
71  case UseDivAttrib::ATTRIB: return "attrib"_sh;
72  default: UT_ASSERT(false); return ""_sh;
73  }
74  }
75 
76  enum class UseSegsAttrib
77  {
78  CONSTANT = 0,
79  ATTRIB
80  };
81 
83  getToken(UseSegsAttrib enum_value)
84  {
85  using namespace UT::Literal;
86  switch (enum_value) {
87  case UseSegsAttrib::CONSTANT: return "constant"_sh;
88  case UseSegsAttrib::ATTRIB: return "attrib"_sh;
89  default: UT_ASSERT(false); return ""_sh;
90  }
91  }
92 
93  enum class UseTextVAttrib
94  {
95  CONSTANT = 0,
96  ATTRIB
97  };
98 
101  {
102  using namespace UT::Literal;
103  switch (enum_value) {
104  case UseTextVAttrib::CONSTANT: return "constant"_sh;
105  case UseTextVAttrib::ATTRIB: return "attrib"_sh;
106  default: UT_ASSERT(false); return ""_sh;
107  }
108  }
109 
110  enum class UseUpAttrib
111  {
112  OFF = 0,
113  ON,
114  ATTRIB
115  };
116 
118  getToken(UseUpAttrib enum_value)
119  {
120  using namespace UT::Literal;
121  switch (enum_value) {
122  case UseUpAttrib::OFF: return "off"_sh;
123  case UseUpAttrib::ON: return "on"_sh;
124  case UseUpAttrib::ATTRIB: return "attrib"_sh;
125  default: UT_ASSERT(false); return ""_sh;
126  }
127  }
128 
129 }
130 
131 
133 {
134 public:
135  static int version() { return 1; }
136 
138  {
139  myGroup = ""_UTsh;
140  myRadius = 0.1;
141  myUseScaleAttrib = 0;
142  myScaleAttrib = "pscale"_UTsh;
143  myJointcorrect = true;
144  myMaxscale = 2;
145  mySmooth = 1;
146  myUseSmoothAttrib = 0;
147  mySmoothAttrib = "smooth"_UTsh;
148  myMaxValence = 25;
149  myDiv = 4;
150  myUseDivAttrib = 0;
151  myDivAttrib = "div"_UTsh;
152  mySegs = 1;
153  myUseSegsAttrib = 0;
154  mySegsAttrib = "segs"_UTsh;
155  myUseSegScale = true;
156  mySegScale = UT_Vector2D(0,0);
157  myDotexture = true;
158  myUoff = 0;
159  myTextu = UT_Vector2D(0,1);
160  myUseTextVAttrib = 0;
161  myTextVAttrib = "arc"_UTsh;
162  myTextv = UT_Vector2D(0,1);
163  myUseUpAttrib = 0;
164  myUpvector = UT_Vector3D(0,1,0);
165  myUpAttrib = "up"_UTsh;
166 
167  }
168 
169  explicit SOP_PolyWireParms(const SOP_PolyWireParms &) = default;
170  SOP_PolyWireParms &operator=(const SOP_PolyWireParms &) = default;
171  SOP_PolyWireParms(SOP_PolyWireParms &&) noexcept = default;
172  SOP_PolyWireParms &operator=(SOP_PolyWireParms &&) noexcept = default;
173 
174  ~SOP_PolyWireParms() override {}
175 
176  bool operator==(const SOP_PolyWireParms &src) const
177  {
178  if (myGroup != src.myGroup) return false;
179  if (myRadius != src.myRadius) return false;
180  if (myUseScaleAttrib != src.myUseScaleAttrib) return false;
181  if (myScaleAttrib != src.myScaleAttrib) return false;
182  if (myJointcorrect != src.myJointcorrect) return false;
183  if (myMaxscale != src.myMaxscale) return false;
184  if (mySmooth != src.mySmooth) return false;
185  if (myUseSmoothAttrib != src.myUseSmoothAttrib) return false;
186  if (mySmoothAttrib != src.mySmoothAttrib) return false;
187  if (myMaxValence != src.myMaxValence) return false;
188  if (myDiv != src.myDiv) return false;
189  if (myUseDivAttrib != src.myUseDivAttrib) return false;
190  if (myDivAttrib != src.myDivAttrib) return false;
191  if (mySegs != src.mySegs) return false;
192  if (myUseSegsAttrib != src.myUseSegsAttrib) return false;
193  if (mySegsAttrib != src.mySegsAttrib) return false;
194  if (myUseSegScale != src.myUseSegScale) return false;
195  if (mySegScale != src.mySegScale) return false;
196  if (myDotexture != src.myDotexture) return false;
197  if (myUoff != src.myUoff) return false;
198  if (myTextu != src.myTextu) return false;
199  if (myUseTextVAttrib != src.myUseTextVAttrib) return false;
200  if (myTextVAttrib != src.myTextVAttrib) return false;
201  if (myTextv != src.myTextv) return false;
202  if (myUseUpAttrib != src.myUseUpAttrib) return false;
203  if (myUpvector != src.myUpvector) return false;
204  if (myUpAttrib != src.myUpAttrib) return false;
205 
206  return true;
207  }
208  bool operator!=(const SOP_PolyWireParms &src) const
209  {
210  return !operator==(src);
211  }
218 
219 
220 
221  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
222  {
223  myGroup = ""_UTsh;
224  if (true)
225  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
226  myRadius = 0.1;
227  if (true)
228  graph->evalOpParm(myRadius, nodeidx, "radius", time, 0);
229  myUseScaleAttrib = 0;
230  if (true)
231  graph->evalOpParm(myUseScaleAttrib, nodeidx, "usescaleattrib", time, 0);
232  myScaleAttrib = "pscale"_UTsh;
233  if (true && ( (true&&!(((int64(getUseScaleAttrib())==0)))) ) )
234  graph->evalOpParm(myScaleAttrib, nodeidx, "scaleattrib", time, 0);
235  myJointcorrect = true;
236  if (true)
237  graph->evalOpParm(myJointcorrect, nodeidx, "jointcorrect", time, 0);
238  myMaxscale = 2;
239  if (true && ( (true&&!(((getJointcorrect()==0)))) ) )
240  graph->evalOpParm(myMaxscale, nodeidx, "maxscale", time, 0);
241  mySmooth = 1;
242  if (true)
243  graph->evalOpParm(mySmooth, nodeidx, "smooth", time, 0);
244  myUseSmoothAttrib = 0;
245  if (true)
246  graph->evalOpParm(myUseSmoothAttrib, nodeidx, "usesmoothattrib", time, 0);
247  mySmoothAttrib = "smooth"_UTsh;
248  if (true && ( (true&&!(((int64(getUseSmoothAttrib())==0)))) ) )
249  graph->evalOpParm(mySmoothAttrib, nodeidx, "smoothattrib", time, 0);
250  myMaxValence = 25;
251  if (true)
252  graph->evalOpParm(myMaxValence, nodeidx, "maxvalence", time, 0);
253  myDiv = 4;
254  if (true)
255  graph->evalOpParm(myDiv, nodeidx, "div", time, 0);
256  myUseDivAttrib = 0;
257  if (true)
258  graph->evalOpParm(myUseDivAttrib, nodeidx, "usedivattrib", time, 0);
259  myDivAttrib = "div"_UTsh;
260  if (true && ( (true&&!(((int64(getUseDivAttrib())==0)))) ) )
261  graph->evalOpParm(myDivAttrib, nodeidx, "divattrib", time, 0);
262  mySegs = 1;
263  if (true)
264  graph->evalOpParm(mySegs, nodeidx, "segs", time, 0);
265  myUseSegsAttrib = 0;
266  if (true)
267  graph->evalOpParm(myUseSegsAttrib, nodeidx, "usesegsattrib", time, 0);
268  mySegsAttrib = "segs"_UTsh;
269  if (true && ( (true&&!(((int64(getUseSegsAttrib())==0)))) ) )
270  graph->evalOpParm(mySegsAttrib, nodeidx, "segsattrib", time, 0);
271  myUseSegScale = true;
272  if (true)
273  graph->evalOpParm(myUseSegScale, nodeidx, "usesegscale", time, 0);
274  mySegScale = UT_Vector2D(0,0);
275  if (true && ( (true&&!(((getUseSegScale()==0)))) ) )
276  graph->evalOpParm(mySegScale, nodeidx, "segscale", time, 0);
277  myDotexture = true;
278  if (true)
279  graph->evalOpParm(myDotexture, nodeidx, "dotexture", time, 0);
280  myUoff = 0;
281  if (true && ( (true&&!(((getDotexture()==0)))) ) )
282  graph->evalOpParm(myUoff, nodeidx, "uoff", time, 0);
283  myTextu = UT_Vector2D(0,1);
284  if (true && ( (true&&!(((getDotexture()==0)))) ) )
285  graph->evalOpParm(myTextu, nodeidx, "textu", time, 0);
286  myUseTextVAttrib = 0;
287  if (true && ( (true&&!(((getDotexture()==0)))) ) )
288  graph->evalOpParm(myUseTextVAttrib, nodeidx, "usetextvattrib", time, 0);
289  myTextVAttrib = "arc"_UTsh;
290  if (true && ( (true&&!(((getDotexture()==0))||((int64(getUseTextVAttrib())!=1)))) ) )
291  graph->evalOpParm(myTextVAttrib, nodeidx, "textvattrib", time, 0);
292  myTextv = UT_Vector2D(0,1);
293  if (true && ( (true&&!(((getDotexture()==0))||((int64(getUseTextVAttrib())!=0)))) ) )
294  graph->evalOpParm(myTextv, nodeidx, "textv", time, 0);
295  myUseUpAttrib = 0;
296  if (true)
297  graph->evalOpParm(myUseUpAttrib, nodeidx, "upenable", time, 0);
298  myUpvector = UT_Vector3D(0,1,0);
299  if (true && ( (true&&!(((int64(getUseUpAttrib())!=1)))) ) )
300  graph->evalOpParm(myUpvector, nodeidx, "upvector", time, 0);
301  myUpAttrib = "up"_UTsh;
302  if (true && ( (true&&!(((int64(getUseUpAttrib())!=2)))) ) )
303  graph->evalOpParm(myUpAttrib, nodeidx, "upattrib", time, 0);
304 
305  }
306 
307 
308  void loadFromOpSubclass(const LoadParms &loadparms) override
309  {
310  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
311  }
312 
313 
314  void copyFrom(const OP_NodeParms *src) override
315  {
316  *this = *((const SOP_PolyWireParms *)src);
317  }
318 
319  template <typename T>
320  void
321  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
322  {
323  if (idx.size() < 1)
324  return;
325  UT_ASSERT(idx.size() == instance.size()+1);
326  if (idx.size() != instance.size()+1)
327  return;
328  switch (idx[0])
329  {
330  case 0:
331  coerceValue(value, myGroup);
332  break;
333  case 1:
334  coerceValue(value, myRadius);
335  break;
336  case 2:
337  coerceValue(value, myUseScaleAttrib);
338  break;
339  case 3:
340  coerceValue(value, myScaleAttrib);
341  break;
342  case 4:
343  coerceValue(value, myJointcorrect);
344  break;
345  case 5:
346  coerceValue(value, myMaxscale);
347  break;
348  case 6:
349  coerceValue(value, mySmooth);
350  break;
351  case 7:
352  coerceValue(value, myUseSmoothAttrib);
353  break;
354  case 8:
355  coerceValue(value, mySmoothAttrib);
356  break;
357  case 9:
358  coerceValue(value, myMaxValence);
359  break;
360  case 10:
361  coerceValue(value, myDiv);
362  break;
363  case 11:
364  coerceValue(value, myUseDivAttrib);
365  break;
366  case 12:
367  coerceValue(value, myDivAttrib);
368  break;
369  case 13:
370  coerceValue(value, mySegs);
371  break;
372  case 14:
373  coerceValue(value, myUseSegsAttrib);
374  break;
375  case 15:
376  coerceValue(value, mySegsAttrib);
377  break;
378  case 16:
379  coerceValue(value, myUseSegScale);
380  break;
381  case 17:
382  coerceValue(value, mySegScale);
383  break;
384  case 18:
385  coerceValue(value, myDotexture);
386  break;
387  case 19:
388  coerceValue(value, myUoff);
389  break;
390  case 20:
391  coerceValue(value, myTextu);
392  break;
393  case 21:
394  coerceValue(value, myUseTextVAttrib);
395  break;
396  case 22:
397  coerceValue(value, myTextVAttrib);
398  break;
399  case 23:
400  coerceValue(value, myTextv);
401  break;
402  case 24:
403  coerceValue(value, myUseUpAttrib);
404  break;
405  case 25:
406  coerceValue(value, myUpvector);
407  break;
408  case 26:
409  coerceValue(value, myUpAttrib);
410  break;
411 
412  }
413  }
414 
415  bool isParmColorRamp(exint idx) const override
416  {
417  switch (idx)
418  {
419 
420  }
421  return false;
422  }
423 
424  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
425  { doGetParmValue(idx, instance, value); }
426  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
427  { doGetParmValue(idx, instance, value); }
428  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
429  { doGetParmValue(idx, instance, value); }
430  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
431  { doGetParmValue(idx, instance, value); }
432  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
433  { doGetParmValue(idx, instance, value); }
434  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
435  { doGetParmValue(idx, instance, value); }
436  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
437  { doGetParmValue(idx, instance, value); }
438  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
439  { doGetParmValue(idx, instance, value); }
440  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
441  { doGetParmValue(idx, instance, value); }
442  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
443  { doGetParmValue(idx, instance, value); }
444  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
445  { doGetParmValue(idx, instance, value); }
446 
447  template <typename T>
448  void
449  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
450  {
451  if (idx.size() < 1)
452  return;
453  UT_ASSERT(idx.size() == instance.size()+1);
454  if (idx.size() != instance.size()+1)
455  return;
456  switch (idx[0])
457  {
458  case 0:
459  coerceValue(myGroup, ( ( value ) ));
460  break;
461  case 1:
462  coerceValue(myRadius, ( ( value ) ));
463  break;
464  case 2:
465  coerceValue(myUseScaleAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
466  break;
467  case 3:
468  coerceValue(myScaleAttrib, ( ( value ) ));
469  break;
470  case 4:
471  coerceValue(myJointcorrect, ( ( value ) ));
472  break;
473  case 5:
474  coerceValue(myMaxscale, clampMinValue(1, ( value ) ));
475  break;
476  case 6:
477  coerceValue(mySmooth, ( ( value ) ));
478  break;
479  case 7:
480  coerceValue(myUseSmoothAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
481  break;
482  case 8:
483  coerceValue(mySmoothAttrib, ( ( value ) ));
484  break;
485  case 9:
486  coerceValue(myMaxValence, clampMinValue(0, ( value ) ));
487  break;
488  case 10:
489  coerceValue(myDiv, clampMinValue(3, ( value ) ));
490  break;
491  case 11:
492  coerceValue(myUseDivAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
493  break;
494  case 12:
495  coerceValue(myDivAttrib, ( ( value ) ));
496  break;
497  case 13:
498  coerceValue(mySegs, clampMinValue(1, ( value ) ));
499  break;
500  case 14:
501  coerceValue(myUseSegsAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
502  break;
503  case 15:
504  coerceValue(mySegsAttrib, ( ( value ) ));
505  break;
506  case 16:
507  coerceValue(myUseSegScale, ( ( value ) ));
508  break;
509  case 17:
510  coerceValue(mySegScale, ( ( value ) ));
511  break;
512  case 18:
513  coerceValue(myDotexture, ( ( value ) ));
514  break;
515  case 19:
516  coerceValue(myUoff, ( ( value ) ));
517  break;
518  case 20:
519  coerceValue(myTextu, ( ( value ) ));
520  break;
521  case 21:
522  coerceValue(myUseTextVAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
523  break;
524  case 22:
525  coerceValue(myTextVAttrib, ( ( value ) ));
526  break;
527  case 23:
528  coerceValue(myTextv, ( ( value ) ));
529  break;
530  case 24:
531  coerceValue(myUseUpAttrib, clampMinValue(0, clampMaxValue(2, value ) ));
532  break;
533  case 25:
534  coerceValue(myUpvector, ( ( value ) ));
535  break;
536  case 26:
537  coerceValue(myUpAttrib, ( ( value ) ));
538  break;
539 
540  }
541  }
542 
543  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
544  { doSetParmValue(idx, instance, value); }
545  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
546  { doSetParmValue(idx, instance, value); }
547  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
548  { doSetParmValue(idx, instance, value); }
549  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
550  { doSetParmValue(idx, instance, value); }
551  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
552  { doSetParmValue(idx, instance, value); }
553  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
554  { doSetParmValue(idx, instance, value); }
555  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
556  { doSetParmValue(idx, instance, value); }
557  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
558  { doSetParmValue(idx, instance, value); }
559  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
560  { doSetParmValue(idx, instance, value); }
561  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
562  { doSetParmValue(idx, instance, value); }
563  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
564  { doSetParmValue(idx, instance, value); }
565 
566  exint getNestNumParms(TempIndex idx) const override
567  {
568  if (idx.size() == 0)
569  return 27;
570  switch (idx[0])
571  {
572 
573  }
574  // Invalid
575  return 0;
576  }
577 
578  const char *getNestParmName(TempIndex fieldnum) const override
579  {
580  if (fieldnum.size() < 1)
581  return 0;
582  switch (fieldnum[0])
583  {
584  case 0:
585  return "group";
586  case 1:
587  return "radius";
588  case 2:
589  return "usescaleattrib";
590  case 3:
591  return "scaleattrib";
592  case 4:
593  return "jointcorrect";
594  case 5:
595  return "maxscale";
596  case 6:
597  return "smooth";
598  case 7:
599  return "usesmoothattrib";
600  case 8:
601  return "smoothattrib";
602  case 9:
603  return "maxvalence";
604  case 10:
605  return "div";
606  case 11:
607  return "usedivattrib";
608  case 12:
609  return "divattrib";
610  case 13:
611  return "segs";
612  case 14:
613  return "usesegsattrib";
614  case 15:
615  return "segsattrib";
616  case 16:
617  return "usesegscale";
618  case 17:
619  return "segscale";
620  case 18:
621  return "dotexture";
622  case 19:
623  return "uoff";
624  case 20:
625  return "textu";
626  case 21:
627  return "usetextvattrib";
628  case 22:
629  return "textvattrib";
630  case 23:
631  return "textv";
632  case 24:
633  return "upenable";
634  case 25:
635  return "upvector";
636  case 26:
637  return "upattrib";
638 
639  }
640  return 0;
641  }
642 
643  ParmType getNestParmType(TempIndex fieldnum) const override
644  {
645  if (fieldnum.size() < 1)
646  return PARM_UNSUPPORTED;
647  switch (fieldnum[0])
648  {
649  case 0:
650  return PARM_STRING;
651  case 1:
652  return PARM_FLOAT;
653  case 2:
654  return PARM_INTEGER;
655  case 3:
656  return PARM_STRING;
657  case 4:
658  return PARM_INTEGER;
659  case 5:
660  return PARM_FLOAT;
661  case 6:
662  return PARM_INTEGER;
663  case 7:
664  return PARM_INTEGER;
665  case 8:
666  return PARM_STRING;
667  case 9:
668  return PARM_INTEGER;
669  case 10:
670  return PARM_INTEGER;
671  case 11:
672  return PARM_INTEGER;
673  case 12:
674  return PARM_STRING;
675  case 13:
676  return PARM_INTEGER;
677  case 14:
678  return PARM_INTEGER;
679  case 15:
680  return PARM_STRING;
681  case 16:
682  return PARM_INTEGER;
683  case 17:
684  return PARM_VECTOR2;
685  case 18:
686  return PARM_INTEGER;
687  case 19:
688  return PARM_FLOAT;
689  case 20:
690  return PARM_VECTOR2;
691  case 21:
692  return PARM_INTEGER;
693  case 22:
694  return PARM_STRING;
695  case 23:
696  return PARM_VECTOR2;
697  case 24:
698  return PARM_INTEGER;
699  case 25:
700  return PARM_VECTOR3;
701  case 26:
702  return PARM_STRING;
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  saveData(os, myGroup);
818  saveData(os, myRadius);
819  saveData(os, myUseScaleAttrib);
820  saveData(os, myScaleAttrib);
821  saveData(os, myJointcorrect);
822  saveData(os, myMaxscale);
823  saveData(os, mySmooth);
824  saveData(os, myUseSmoothAttrib);
825  saveData(os, mySmoothAttrib);
826  saveData(os, myMaxValence);
827  saveData(os, myDiv);
828  saveData(os, myUseDivAttrib);
829  saveData(os, myDivAttrib);
830  saveData(os, mySegs);
831  saveData(os, myUseSegsAttrib);
832  saveData(os, mySegsAttrib);
833  saveData(os, myUseSegScale);
834  saveData(os, mySegScale);
835  saveData(os, myDotexture);
836  saveData(os, myUoff);
837  saveData(os, myTextu);
838  saveData(os, myUseTextVAttrib);
839  saveData(os, myTextVAttrib);
840  saveData(os, myTextv);
841  saveData(os, myUseUpAttrib);
842  saveData(os, myUpvector);
843  saveData(os, myUpAttrib);
844 
845  }
846 
847  bool load(UT_IStream &is)
848  {
849  int32 v;
850  is.bread(&v, 1);
851  if (version() != v)
852  {
853  // Fail incompatible versions
854  return false;
855  }
856  loadData(is, myGroup);
857  loadData(is, myRadius);
858  loadData(is, myUseScaleAttrib);
859  loadData(is, myScaleAttrib);
860  loadData(is, myJointcorrect);
861  loadData(is, myMaxscale);
862  loadData(is, mySmooth);
863  loadData(is, myUseSmoothAttrib);
864  loadData(is, mySmoothAttrib);
865  loadData(is, myMaxValence);
866  loadData(is, myDiv);
867  loadData(is, myUseDivAttrib);
868  loadData(is, myDivAttrib);
869  loadData(is, mySegs);
870  loadData(is, myUseSegsAttrib);
871  loadData(is, mySegsAttrib);
872  loadData(is, myUseSegScale);
873  loadData(is, mySegScale);
874  loadData(is, myDotexture);
875  loadData(is, myUoff);
876  loadData(is, myTextu);
877  loadData(is, myUseTextVAttrib);
878  loadData(is, myTextVAttrib);
879  loadData(is, myTextv);
880  loadData(is, myUseUpAttrib);
881  loadData(is, myUpvector);
882  loadData(is, myUpAttrib);
883 
884  return true;
885  }
886 
887  const UT_StringHolder & getGroup() const { return myGroup; }
888  void setGroup(const UT_StringHolder & val) { myGroup = val; }
890  {
891  SOP_Node *thissop = cookparms.getNode();
892  if (!thissop) return getGroup();
894  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
895  return result;
896  }
897  fpreal64 getRadius() const { return myRadius; }
898  void setRadius(fpreal64 val) { myRadius = val; }
899  fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
900  {
901  SOP_Node *thissop = cookparms.getNode();
902  if (!thissop) return getRadius();
904  OP_Utils::evalOpParm(result, thissop, "radius", cookparms.getCookTime(), 0);
905  return result;
906  }
907  UseScaleAttrib getUseScaleAttrib() const { return UseScaleAttrib(myUseScaleAttrib); }
908  void setUseScaleAttrib(UseScaleAttrib val) { myUseScaleAttrib = int64(val); }
910  {
911  SOP_Node *thissop = cookparms.getNode();
912  if (!thissop) return getUseScaleAttrib();
913  int64 result;
914  OP_Utils::evalOpParm(result, thissop, "usescaleattrib", cookparms.getCookTime(), 0);
915  return UseScaleAttrib(result);
916  }
917  const UT_StringHolder & getScaleAttrib() const { return myScaleAttrib; }
918  void setScaleAttrib(const UT_StringHolder & val) { myScaleAttrib = val; }
920  {
921  SOP_Node *thissop = cookparms.getNode();
922  if (!thissop) return getScaleAttrib();
924  OP_Utils::evalOpParm(result, thissop, "scaleattrib", cookparms.getCookTime(), 0);
925  return result;
926  }
927  bool getJointcorrect() const { return myJointcorrect; }
928  void setJointcorrect(bool val) { myJointcorrect = val; }
929  bool opJointcorrect(const SOP_NodeVerb::CookParms &cookparms) const
930  {
931  SOP_Node *thissop = cookparms.getNode();
932  if (!thissop) return getJointcorrect();
933  bool result;
934  OP_Utils::evalOpParm(result, thissop, "jointcorrect", cookparms.getCookTime(), 0);
935  return result;
936  }
937  fpreal64 getMaxscale() const { return myMaxscale; }
938  void setMaxscale(fpreal64 val) { myMaxscale = val; }
940  {
941  SOP_Node *thissop = cookparms.getNode();
942  if (!thissop) return getMaxscale();
944  OP_Utils::evalOpParm(result, thissop, "maxscale", cookparms.getCookTime(), 0);
945  return result;
946  }
947  int64 getSmooth() const { return mySmooth; }
948  void setSmooth(int64 val) { mySmooth = val; }
949  int64 opSmooth(const SOP_NodeVerb::CookParms &cookparms) const
950  {
951  SOP_Node *thissop = cookparms.getNode();
952  if (!thissop) return getSmooth();
953  int64 result;
954  OP_Utils::evalOpParm(result, thissop, "smooth", cookparms.getCookTime(), 0);
955  return result;
956  }
957  UseSmoothAttrib getUseSmoothAttrib() const { return UseSmoothAttrib(myUseSmoothAttrib); }
958  void setUseSmoothAttrib(UseSmoothAttrib val) { myUseSmoothAttrib = int64(val); }
960  {
961  SOP_Node *thissop = cookparms.getNode();
962  if (!thissop) return getUseSmoothAttrib();
963  int64 result;
964  OP_Utils::evalOpParm(result, thissop, "usesmoothattrib", cookparms.getCookTime(), 0);
965  return UseSmoothAttrib(result);
966  }
967  const UT_StringHolder & getSmoothAttrib() const { return mySmoothAttrib; }
968  void setSmoothAttrib(const UT_StringHolder & val) { mySmoothAttrib = val; }
970  {
971  SOP_Node *thissop = cookparms.getNode();
972  if (!thissop) return getSmoothAttrib();
974  OP_Utils::evalOpParm(result, thissop, "smoothattrib", cookparms.getCookTime(), 0);
975  return result;
976  }
977  int64 getMaxValence() const { return myMaxValence; }
978  void setMaxValence(int64 val) { myMaxValence = val; }
980  {
981  SOP_Node *thissop = cookparms.getNode();
982  if (!thissop) return getMaxValence();
983  int64 result;
984  OP_Utils::evalOpParm(result, thissop, "maxvalence", cookparms.getCookTime(), 0);
985  return result;
986  }
987  int64 getDiv() const { return myDiv; }
988  void setDiv(int64 val) { myDiv = val; }
989  int64 opDiv(const SOP_NodeVerb::CookParms &cookparms) const
990  {
991  SOP_Node *thissop = cookparms.getNode();
992  if (!thissop) return getDiv();
993  int64 result;
994  OP_Utils::evalOpParm(result, thissop, "div", cookparms.getCookTime(), 0);
995  return result;
996  }
997  UseDivAttrib getUseDivAttrib() const { return UseDivAttrib(myUseDivAttrib); }
998  void setUseDivAttrib(UseDivAttrib val) { myUseDivAttrib = int64(val); }
1000  {
1001  SOP_Node *thissop = cookparms.getNode();
1002  if (!thissop) return getUseDivAttrib();
1003  int64 result;
1004  OP_Utils::evalOpParm(result, thissop, "usedivattrib", cookparms.getCookTime(), 0);
1005  return UseDivAttrib(result);
1006  }
1007  const UT_StringHolder & getDivAttrib() const { return myDivAttrib; }
1008  void setDivAttrib(const UT_StringHolder & val) { myDivAttrib = val; }
1010  {
1011  SOP_Node *thissop = cookparms.getNode();
1012  if (!thissop) return getDivAttrib();
1014  OP_Utils::evalOpParm(result, thissop, "divattrib", cookparms.getCookTime(), 0);
1015  return result;
1016  }
1017  int64 getSegs() const { return mySegs; }
1018  void setSegs(int64 val) { mySegs = val; }
1019  int64 opSegs(const SOP_NodeVerb::CookParms &cookparms) const
1020  {
1021  SOP_Node *thissop = cookparms.getNode();
1022  if (!thissop) return getSegs();
1023  int64 result;
1024  OP_Utils::evalOpParm(result, thissop, "segs", cookparms.getCookTime(), 0);
1025  return result;
1026  }
1027  UseSegsAttrib getUseSegsAttrib() const { return UseSegsAttrib(myUseSegsAttrib); }
1028  void setUseSegsAttrib(UseSegsAttrib val) { myUseSegsAttrib = int64(val); }
1030  {
1031  SOP_Node *thissop = cookparms.getNode();
1032  if (!thissop) return getUseSegsAttrib();
1033  int64 result;
1034  OP_Utils::evalOpParm(result, thissop, "usesegsattrib", cookparms.getCookTime(), 0);
1035  return UseSegsAttrib(result);
1036  }
1037  const UT_StringHolder & getSegsAttrib() const { return mySegsAttrib; }
1038  void setSegsAttrib(const UT_StringHolder & val) { mySegsAttrib = val; }
1040  {
1041  SOP_Node *thissop = cookparms.getNode();
1042  if (!thissop) return getSegsAttrib();
1044  OP_Utils::evalOpParm(result, thissop, "segsattrib", cookparms.getCookTime(), 0);
1045  return result;
1046  }
1047  bool getUseSegScale() const { return myUseSegScale; }
1048  void setUseSegScale(bool val) { myUseSegScale = val; }
1049  bool opUseSegScale(const SOP_NodeVerb::CookParms &cookparms) const
1050  {
1051  SOP_Node *thissop = cookparms.getNode();
1052  if (!thissop) return getUseSegScale();
1053  bool result;
1054  OP_Utils::evalOpParm(result, thissop, "usesegscale", cookparms.getCookTime(), 0);
1055  return result;
1056  }
1057  UT_Vector2D getSegScale() const { return mySegScale; }
1058  void setSegScale(UT_Vector2D val) { mySegScale = val; }
1060  {
1061  SOP_Node *thissop = cookparms.getNode();
1062  if (!thissop) return getSegScale();
1064  OP_Utils::evalOpParm(result, thissop, "segscale", cookparms.getCookTime(), 0);
1065  return result;
1066  }
1067  bool getDotexture() const { return myDotexture; }
1068  void setDotexture(bool val) { myDotexture = val; }
1069  bool opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
1070  {
1071  SOP_Node *thissop = cookparms.getNode();
1072  if (!thissop) return getDotexture();
1073  bool result;
1074  OP_Utils::evalOpParm(result, thissop, "dotexture", cookparms.getCookTime(), 0);
1075  return result;
1076  }
1077  fpreal64 getUoff() const { return myUoff; }
1078  void setUoff(fpreal64 val) { myUoff = val; }
1079  fpreal64 opUoff(const SOP_NodeVerb::CookParms &cookparms) const
1080  {
1081  SOP_Node *thissop = cookparms.getNode();
1082  if (!thissop) return getUoff();
1083  fpreal64 result;
1084  OP_Utils::evalOpParm(result, thissop, "uoff", cookparms.getCookTime(), 0);
1085  return result;
1086  }
1087  UT_Vector2D getTextu() const { return myTextu; }
1088  void setTextu(UT_Vector2D val) { myTextu = val; }
1090  {
1091  SOP_Node *thissop = cookparms.getNode();
1092  if (!thissop) return getTextu();
1094  OP_Utils::evalOpParm(result, thissop, "textu", cookparms.getCookTime(), 0);
1095  return result;
1096  }
1097  UseTextVAttrib getUseTextVAttrib() const { return UseTextVAttrib(myUseTextVAttrib); }
1098  void setUseTextVAttrib(UseTextVAttrib val) { myUseTextVAttrib = int64(val); }
1100  {
1101  SOP_Node *thissop = cookparms.getNode();
1102  if (!thissop) return getUseTextVAttrib();
1103  int64 result;
1104  OP_Utils::evalOpParm(result, thissop, "usetextvattrib", cookparms.getCookTime(), 0);
1105  return UseTextVAttrib(result);
1106  }
1107  const UT_StringHolder & getTextVAttrib() const { return myTextVAttrib; }
1108  void setTextVAttrib(const UT_StringHolder & val) { myTextVAttrib = val; }
1110  {
1111  SOP_Node *thissop = cookparms.getNode();
1112  if (!thissop) return getTextVAttrib();
1114  OP_Utils::evalOpParm(result, thissop, "textvattrib", cookparms.getCookTime(), 0);
1115  return result;
1116  }
1117  UT_Vector2D getTextv() const { return myTextv; }
1118  void setTextv(UT_Vector2D val) { myTextv = val; }
1120  {
1121  SOP_Node *thissop = cookparms.getNode();
1122  if (!thissop) return getTextv();
1124  OP_Utils::evalOpParm(result, thissop, "textv", cookparms.getCookTime(), 0);
1125  return result;
1126  }
1127  UseUpAttrib getUseUpAttrib() const { return UseUpAttrib(myUseUpAttrib); }
1128  void setUseUpAttrib(UseUpAttrib val) { myUseUpAttrib = int64(val); }
1130  {
1131  SOP_Node *thissop = cookparms.getNode();
1132  if (!thissop) return getUseUpAttrib();
1133  int64 result;
1134  OP_Utils::evalOpParm(result, thissop, "upenable", cookparms.getCookTime(), 0);
1135  return UseUpAttrib(result);
1136  }
1137  UT_Vector3D getUpvector() const { return myUpvector; }
1138  void setUpvector(UT_Vector3D val) { myUpvector = val; }
1140  {
1141  SOP_Node *thissop = cookparms.getNode();
1142  if (!thissop) return getUpvector();
1144  OP_Utils::evalOpParm(result, thissop, "upvector", cookparms.getCookTime(), 0);
1145  return result;
1146  }
1147  const UT_StringHolder & getUpAttrib() const { return myUpAttrib; }
1148  void setUpAttrib(const UT_StringHolder & val) { myUpAttrib = val; }
1150  {
1151  SOP_Node *thissop = cookparms.getNode();
1152  if (!thissop) return getUpAttrib();
1154  OP_Utils::evalOpParm(result, thissop, "upattrib", cookparms.getCookTime(), 0);
1155  return result;
1156  }
1157 
1158 private:
1159  UT_StringHolder myGroup;
1160  fpreal64 myRadius;
1161  int64 myUseScaleAttrib;
1162  UT_StringHolder myScaleAttrib;
1163  bool myJointcorrect;
1164  fpreal64 myMaxscale;
1165  int64 mySmooth;
1166  int64 myUseSmoothAttrib;
1167  UT_StringHolder mySmoothAttrib;
1168  int64 myMaxValence;
1169  int64 myDiv;
1170  int64 myUseDivAttrib;
1171  UT_StringHolder myDivAttrib;
1172  int64 mySegs;
1173  int64 myUseSegsAttrib;
1174  UT_StringHolder mySegsAttrib;
1175  bool myUseSegScale;
1176  UT_Vector2D mySegScale;
1177  bool myDotexture;
1178  fpreal64 myUoff;
1179  UT_Vector2D myTextu;
1180  int64 myUseTextVAttrib;
1181  UT_StringHolder myTextVAttrib;
1182  UT_Vector2D myTextv;
1183  int64 myUseUpAttrib;
1184  UT_Vector3D myUpvector;
1185  UT_StringHolder myUpAttrib;
1186 
1187 };
void setGroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setSegScale(UT_Vector2D val)
static void saveData(std::ostream &os, UT_Vector4D v)
bool opUseSegScale(const SOP_NodeVerb::CookParms &cookparms) const
void setJointcorrect(bool val)
static void saveData(std::ostream &os, UT_Vector3D v)
bool getJointcorrect() const
SYS_FORCE_INLINE UT_StringHolder getToken(UseScaleAttrib enum_value)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void saveData(std::ostream &os, fpreal64 v)
bool isParmColorRamp(exint idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, bool v)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder opScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UseUpAttrib getUseUpAttrib() const
UT_Vector2T< fpreal64 > UT_Vector2D
int64 opDiv(const SOP_NodeVerb::CookParms &cookparms) const
UseSegsAttrib getUseSegsAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setUseDivAttrib(UseDivAttrib val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, UT_Matrix2D &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
const UT_StringHolder & getUpAttrib() const
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
UseSmoothAttrib opUseSmoothAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
An output stream object that owns its own string buffer storage.
UseSmoothAttrib getUseSmoothAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setUpvector(UT_Vector3D val)
fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
int64 getSmooth() const
**But if you need a result
Definition: thread.h:613
void copyFrom(const OP_NodeParms *src) override
const UT_StringHolder & getDivAttrib() const
UT_StringHolder opSegsAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, int64 v)
static void saveData(std::ostream &os, UT_Vector2D v)
UT_StringHolder opDivAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
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.
void setSmooth(int64 val)
bool operator==(const SOP_PolyWireParms &src) const
UseTextVAttrib getUseTextVAttrib() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
fpreal64 opUoff(const SOP_NodeVerb::CookParms &cookparms) const
int64 getMaxValence() const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const UT_StringHolder & getTextVAttrib() const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
int64 opMaxValence(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 getSegs() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
UT_Vector2D getTextv() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool getUseSegScale() const
const UT_StringHolder & getSmoothAttrib() const
void setTextu(UT_Vector2D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setUseSegsAttrib(UseSegsAttrib val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setDotexture(bool val)
exint length() const
int64 opSegs(const SOP_NodeVerb::CookParms &cookparms) const
void setDiv(int64 val)
bool load(UT_IStream &is)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void setUseScaleAttrib(UseScaleAttrib val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void loadData(UT_IStream &is, UT_StringHolder &v)
UseTextVAttrib opUseTextVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opSegScale(const SOP_NodeVerb::CookParms &cookparms) const
void setRadius(fpreal64 val)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
const UT_StringHolder & getSegsAttrib() const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
fpreal64 getRadius() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_Vector2D opTextv(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxscale(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opSmoothAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
fpreal64 getMaxscale() const
int64 getDiv() const
static void saveData(std::ostream &os, UT_StringHolder s)
const char * getNestParmName(TempIndex fieldnum) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, fpreal64 &v)
bool opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
UT_Vector3D opUpvector(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_Vector2D getSegScale() const
GT_API const UT_StringHolder version
const UT_StringHolder & getScaleAttrib() const
int64 opSmooth(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
exint getNestNumParms(TempIndex idx) const override
void setUpAttrib(const UT_StringHolder &val)
void setUseTextVAttrib(UseTextVAttrib val)
void setSegsAttrib(const UT_StringHolder &val)
void setSmoothAttrib(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:277
ParmType getNestParmType(TempIndex fieldnum) const override
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void saveData(std::ostream &os, UT_Matrix4D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void setUseSmoothAttrib(UseSmoothAttrib val)
void setUseUpAttrib(UseUpAttrib val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setSegs(int64 val)
void setDivAttrib(const UT_StringHolder &val)
#define SOP_API
Definition: SOP_API.h:10
void setTextv(UT_Vector2D val)
UT_StringHolder opTextVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void setScaleAttrib(const UT_StringHolder &val)
UT_StringHolder opUpAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUoff() const
UseSegsAttrib opUseSegsAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
UseDivAttrib opUseDivAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UseScaleAttrib getUseScaleAttrib() const
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void setUoff(fpreal64 val)
Definition: core.h:1131
UseScaleAttrib opUseScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
UT_Vector2D opTextu(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
bool opJointcorrect(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getTextu() const
const UT_StringHolder & getGroup() const
static void loadData(UT_IStream &is, bool &v)
void setUseSegScale(bool val)
void setMaxValence(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
bool operator!=(const SOP_PolyWireParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setMaxscale(fpreal64 val)
bool getDotexture() const
type
Definition: core.h:1059
void setTextVAttrib(const UT_StringHolder &val)
UT_Vector3D getUpvector() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
UseUpAttrib opUseUpAttrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix3D v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
UseDivAttrib getUseDivAttrib() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override