HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Clip-2.0.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_Clip_2_0Enums
24 {
25  enum class ClipOp
26  {
27  ABOVE = 0,
28  BELOW,
29  BOTH
30  };
31 
33  getToken(ClipOp enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case ClipOp::ABOVE: return "above"_sh;
38  case ClipOp::BELOW: return "below"_sh;
39  case ClipOp::BOTH: return "both"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class DirType
45  {
46  DIRECTION = 0,
47  XFORM
48  };
49 
51  getToken(DirType enum_value)
52  {
53  using namespace UT::Literal;
54  switch (enum_value) {
55  case DirType::DIRECTION: return "direction"_sh;
56  case DirType::XFORM: return "xform"_sh;
57  default: UT_ASSERT(false); return ""_sh;
58  }
59  }
60 
61 }
62 
63 
65 {
66 public:
67  static int version() { return 1; }
68 
70  {
71  myGroup = ""_UTsh;
72  myAttrib = "P"_UTsh;
73  myClipOp = 0;
74  myDirType = 0;
75  myT = UT_Vector3D(0,0,0);
76  myR = UT_Vector3D(0,0,0);
77  myOrigin = UT_Vector3D(0,0,0);
78  myDir = UT_Vector3D(1,0,0);
79  myDist = 0;
80  mySnapTol = 1e-5;
81  myDoFill = false;
82  myDoSplit = false;
83  myReplace = true;
84  myUseClipEdges = false;
85  myClipEdges = "clippededges"_UTsh;
86  myUseClipPrims = false;
87  myClipPrims = "clipped"_UTsh;
88  myUseAbovePrims = false;
89  myAbovePrims = "above"_UTsh;
90  myUseBelowPrims = false;
91  myBelowPrims = "below"_UTsh;
92  myUseFillPolygons = true;
93  myFillPolygons = "filled"_UTsh;
94 
95  }
96 
97  explicit SOP_Clip_2_0Parms(const SOP_Clip_2_0Parms &) = default;
98  SOP_Clip_2_0Parms &operator=(const SOP_Clip_2_0Parms &) = default;
99  SOP_Clip_2_0Parms(SOP_Clip_2_0Parms &&) noexcept = default;
100  SOP_Clip_2_0Parms &operator=(SOP_Clip_2_0Parms &&) noexcept = default;
101 
102  ~SOP_Clip_2_0Parms() override {}
103 
104  bool operator==(const SOP_Clip_2_0Parms &src) const
105  {
106  if (myGroup != src.myGroup) return false;
107  if (myAttrib != src.myAttrib) return false;
108  if (myClipOp != src.myClipOp) return false;
109  if (myDirType != src.myDirType) return false;
110  if (myT != src.myT) return false;
111  if (myR != src.myR) return false;
112  if (myOrigin != src.myOrigin) return false;
113  if (myDir != src.myDir) return false;
114  if (myDist != src.myDist) return false;
115  if (mySnapTol != src.mySnapTol) return false;
116  if (myDoFill != src.myDoFill) return false;
117  if (myDoSplit != src.myDoSplit) return false;
118  if (myReplace != src.myReplace) return false;
119  if (myUseClipEdges != src.myUseClipEdges) return false;
120  if (myClipEdges != src.myClipEdges) return false;
121  if (myUseClipPrims != src.myUseClipPrims) return false;
122  if (myClipPrims != src.myClipPrims) return false;
123  if (myUseAbovePrims != src.myUseAbovePrims) return false;
124  if (myAbovePrims != src.myAbovePrims) return false;
125  if (myUseBelowPrims != src.myUseBelowPrims) return false;
126  if (myBelowPrims != src.myBelowPrims) return false;
127  if (myUseFillPolygons != src.myUseFillPolygons) return false;
128  if (myFillPolygons != src.myFillPolygons) return false;
129 
130  return true;
131  }
132  bool operator!=(const SOP_Clip_2_0Parms &src) const
133  {
134  return !operator==(src);
135  }
138 
139 
140 
141  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
142  {
143  myGroup = ""_UTsh;
144  if (true)
145  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
146  myAttrib = "P"_UTsh;
147  if (true)
148  graph->evalOpParm(myAttrib, nodeidx, "attrib", time, 0);
149  myClipOp = 0;
150  if (true)
151  graph->evalOpParm(myClipOp, nodeidx, "clipop", time, 0);
152  myDirType = 0;
153  if (true)
154  graph->evalOpParm(myDirType, nodeidx, "dirtype", time, 0);
155  myT = UT_Vector3D(0,0,0);
156  if (true && ( (true&&!(((int64(getDirType())!=1))||((int64(getDirType())!=1)))) ) )
157  graph->evalOpParm(myT, nodeidx, "t", time, 0);
158  myR = UT_Vector3D(0,0,0);
159  if (true && ( (true&&!(((int64(getDirType())!=1))||((int64(getDirType())!=1)))) ) )
160  graph->evalOpParm(myR, nodeidx, "r", time, 0);
161  myOrigin = UT_Vector3D(0,0,0);
162  if (true && ( (true&&!(((int64(getDirType())!=0))||((int64(getDirType())!=0)))) ) )
163  graph->evalOpParm(myOrigin, nodeidx, "origin", time, 0);
164  myDir = UT_Vector3D(1,0,0);
165  if (true && ( (true&&!(((int64(getDirType())!=0))||((int64(getDirType())!=0)))) ) )
166  graph->evalOpParm(myDir, nodeidx, "dir", time, 0);
167  myDist = 0;
168  if (true)
169  graph->evalOpParm(myDist, nodeidx, "dist", time, 0);
170  mySnapTol = 1e-5;
171  if (true)
172  graph->evalOpParm(mySnapTol, nodeidx, "snaptol", time, 0);
173  myDoFill = false;
174  if (true)
175  graph->evalOpParm(myDoFill, nodeidx, "dofill", time, 0);
176  myDoSplit = false;
177  if (true && ( (true&&!(((int64(getClipOp())!=2))||((int64(getClipOp())!=2))||((int64(getClipOp())==2)&&(getDoFill()==1)))) ) )
178  graph->evalOpParm(myDoSplit, nodeidx, "dosplit", time, 0);
179  myReplace = true;
180  if (true)
181  graph->evalOpParm(myReplace, nodeidx, "replace", time, 0);
182  myUseClipEdges = false;
183  if (true)
184  graph->evalOpParm(myUseClipEdges, nodeidx, "useclipedges", time, 0);
185  myClipEdges = "clippededges"_UTsh;
186  if (true && ( (true&&!(((getUseClipEdges()==0)))) ) )
187  graph->evalOpParm(myClipEdges, nodeidx, "clipedges", time, 0);
188  myUseClipPrims = false;
189  if (true)
190  graph->evalOpParm(myUseClipPrims, nodeidx, "useclipprims", time, 0);
191  myClipPrims = "clipped"_UTsh;
192  if (true && ( (true&&!(((getUseClipPrims()==0)))) ) )
193  graph->evalOpParm(myClipPrims, nodeidx, "clipprims", time, 0);
194  myUseAbovePrims = false;
195  if (true && ( (true&&!(((int64(getClipOp())!=2)))) ) )
196  graph->evalOpParm(myUseAbovePrims, nodeidx, "useaboveprims", time, 0);
197  myAbovePrims = "above"_UTsh;
198  if (true && ( (true&&!(((int64(getClipOp())!=2))||((int64(getClipOp())!=2))||((getUseAbovePrims()==0)))) ) )
199  graph->evalOpParm(myAbovePrims, nodeidx, "aboveprims", time, 0);
200  myUseBelowPrims = false;
201  if (true && ( (true&&!(((int64(getClipOp())!=2)))) ) )
202  graph->evalOpParm(myUseBelowPrims, nodeidx, "usebelowprims", time, 0);
203  myBelowPrims = "below"_UTsh;
204  if (true && ( (true&&!(((int64(getClipOp())!=2))||((int64(getClipOp())!=2))||((getUseBelowPrims()==0)))) ) )
205  graph->evalOpParm(myBelowPrims, nodeidx, "belowprims", time, 0);
206  myUseFillPolygons = true;
207  if (true && ( (true&&!(((getDoFill()==0))||((getDoFill()==0)))) ) )
208  graph->evalOpParm(myUseFillPolygons, nodeidx, "usefillpolygons", time, 0);
209  myFillPolygons = "filled"_UTsh;
210  if (true && ( (true&&!(((getDoFill()==0))||((getUseFillPolygons()==0))||((getDoFill()==0)))) ) )
211  graph->evalOpParm(myFillPolygons, nodeidx, "fillpolygons", time, 0);
212 
213  }
214 
215 
216  void loadFromOpSubclass(const LoadParms &loadparms) override
217  {
218  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
219  }
220 
221 
222  void copyFrom(const OP_NodeParms *src) override
223  {
224  *this = *((const SOP_Clip_2_0Parms *)src);
225  }
226 
227  template <typename T>
228  void
229  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
230  {
231  if (idx.size() < 1)
232  return;
233  UT_ASSERT(idx.size() == instance.size()+1);
234  if (idx.size() != instance.size()+1)
235  return;
236  switch (idx[0])
237  {
238  case 0:
239  coerceValue(value, myGroup);
240  break;
241  case 1:
242  coerceValue(value, myAttrib);
243  break;
244  case 2:
245  coerceValue(value, myClipOp);
246  break;
247  case 3:
248  coerceValue(value, myDirType);
249  break;
250  case 4:
251  coerceValue(value, myT);
252  break;
253  case 5:
254  coerceValue(value, myR);
255  break;
256  case 6:
257  coerceValue(value, myOrigin);
258  break;
259  case 7:
260  coerceValue(value, myDir);
261  break;
262  case 8:
263  coerceValue(value, myDist);
264  break;
265  case 9:
266  coerceValue(value, mySnapTol);
267  break;
268  case 10:
269  coerceValue(value, myDoFill);
270  break;
271  case 11:
272  coerceValue(value, myDoSplit);
273  break;
274  case 12:
275  coerceValue(value, myReplace);
276  break;
277  case 13:
278  coerceValue(value, myUseClipEdges);
279  break;
280  case 14:
281  coerceValue(value, myClipEdges);
282  break;
283  case 15:
284  coerceValue(value, myUseClipPrims);
285  break;
286  case 16:
287  coerceValue(value, myClipPrims);
288  break;
289  case 17:
290  coerceValue(value, myUseAbovePrims);
291  break;
292  case 18:
293  coerceValue(value, myAbovePrims);
294  break;
295  case 19:
296  coerceValue(value, myUseBelowPrims);
297  break;
298  case 20:
299  coerceValue(value, myBelowPrims);
300  break;
301  case 21:
302  coerceValue(value, myUseFillPolygons);
303  break;
304  case 22:
305  coerceValue(value, myFillPolygons);
306  break;
307 
308  }
309  }
310 
311  bool isParmColorRamp(exint idx) const override
312  {
313  switch (idx)
314  {
315 
316  }
317  return false;
318  }
319 
320  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
321  { doGetParmValue(idx, instance, value); }
322  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
323  { doGetParmValue(idx, instance, value); }
324  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
325  { doGetParmValue(idx, instance, value); }
326  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
327  { doGetParmValue(idx, instance, value); }
328  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
329  { doGetParmValue(idx, instance, value); }
330  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
331  { doGetParmValue(idx, instance, value); }
332  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
333  { doGetParmValue(idx, instance, value); }
334  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
335  { doGetParmValue(idx, instance, value); }
336  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
337  { doGetParmValue(idx, instance, value); }
338  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
339  { doGetParmValue(idx, instance, value); }
340  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
341  { doGetParmValue(idx, instance, value); }
342 
343  template <typename T>
344  void
345  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
346  {
347  if (idx.size() < 1)
348  return;
349  UT_ASSERT(idx.size() == instance.size()+1);
350  if (idx.size() != instance.size()+1)
351  return;
352  switch (idx[0])
353  {
354  case 0:
355  coerceValue(myGroup, ( ( value ) ));
356  break;
357  case 1:
358  coerceValue(myAttrib, ( ( value ) ));
359  break;
360  case 2:
361  coerceValue(myClipOp, clampMinValue(0, clampMaxValue(2, value ) ));
362  break;
363  case 3:
364  coerceValue(myDirType, clampMinValue(0, clampMaxValue(1, value ) ));
365  break;
366  case 4:
367  coerceValue(myT, ( ( value ) ));
368  break;
369  case 5:
370  coerceValue(myR, ( ( value ) ));
371  break;
372  case 6:
373  coerceValue(myOrigin, ( ( value ) ));
374  break;
375  case 7:
376  coerceValue(myDir, ( ( value ) ));
377  break;
378  case 8:
379  coerceValue(myDist, ( ( value ) ));
380  break;
381  case 9:
382  coerceValue(mySnapTol, clampMinValue(0, ( value ) ));
383  break;
384  case 10:
385  coerceValue(myDoFill, ( ( value ) ));
386  break;
387  case 11:
388  coerceValue(myDoSplit, ( ( value ) ));
389  break;
390  case 12:
391  coerceValue(myReplace, ( ( value ) ));
392  break;
393  case 13:
394  coerceValue(myUseClipEdges, ( ( value ) ));
395  break;
396  case 14:
397  coerceValue(myClipEdges, ( ( value ) ));
398  break;
399  case 15:
400  coerceValue(myUseClipPrims, ( ( value ) ));
401  break;
402  case 16:
403  coerceValue(myClipPrims, ( ( value ) ));
404  break;
405  case 17:
406  coerceValue(myUseAbovePrims, ( ( value ) ));
407  break;
408  case 18:
409  coerceValue(myAbovePrims, ( ( value ) ));
410  break;
411  case 19:
412  coerceValue(myUseBelowPrims, ( ( value ) ));
413  break;
414  case 20:
415  coerceValue(myBelowPrims, ( ( value ) ));
416  break;
417  case 21:
418  coerceValue(myUseFillPolygons, ( ( value ) ));
419  break;
420  case 22:
421  coerceValue(myFillPolygons, ( ( value ) ));
422  break;
423 
424  }
425  }
426 
427  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
428  { doSetParmValue(idx, instance, value); }
429  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
430  { doSetParmValue(idx, instance, value); }
431  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
432  { doSetParmValue(idx, instance, value); }
433  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
434  { doSetParmValue(idx, instance, value); }
435  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
436  { doSetParmValue(idx, instance, value); }
437  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
438  { doSetParmValue(idx, instance, value); }
439  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
440  { doSetParmValue(idx, instance, value); }
441  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
442  { doSetParmValue(idx, instance, value); }
443  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
444  { doSetParmValue(idx, instance, value); }
445  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
446  { doSetParmValue(idx, instance, value); }
447  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
448  { doSetParmValue(idx, instance, value); }
449 
450  exint getNestNumParms(TempIndex idx) const override
451  {
452  if (idx.size() == 0)
453  return 23;
454  switch (idx[0])
455  {
456 
457  }
458  // Invalid
459  return 0;
460  }
461 
462  const char *getNestParmName(TempIndex fieldnum) const override
463  {
464  if (fieldnum.size() < 1)
465  return 0;
466  switch (fieldnum[0])
467  {
468  case 0:
469  return "group";
470  case 1:
471  return "attrib";
472  case 2:
473  return "clipop";
474  case 3:
475  return "dirtype";
476  case 4:
477  return "t";
478  case 5:
479  return "r";
480  case 6:
481  return "origin";
482  case 7:
483  return "dir";
484  case 8:
485  return "dist";
486  case 9:
487  return "snaptol";
488  case 10:
489  return "dofill";
490  case 11:
491  return "dosplit";
492  case 12:
493  return "replace";
494  case 13:
495  return "useclipedges";
496  case 14:
497  return "clipedges";
498  case 15:
499  return "useclipprims";
500  case 16:
501  return "clipprims";
502  case 17:
503  return "useaboveprims";
504  case 18:
505  return "aboveprims";
506  case 19:
507  return "usebelowprims";
508  case 20:
509  return "belowprims";
510  case 21:
511  return "usefillpolygons";
512  case 22:
513  return "fillpolygons";
514 
515  }
516  return 0;
517  }
518 
519  ParmType getNestParmType(TempIndex fieldnum) const override
520  {
521  if (fieldnum.size() < 1)
522  return PARM_UNSUPPORTED;
523  switch (fieldnum[0])
524  {
525  case 0:
526  return PARM_STRING;
527  case 1:
528  return PARM_STRING;
529  case 2:
530  return PARM_INTEGER;
531  case 3:
532  return PARM_INTEGER;
533  case 4:
534  return PARM_VECTOR3;
535  case 5:
536  return PARM_VECTOR3;
537  case 6:
538  return PARM_VECTOR3;
539  case 7:
540  return PARM_VECTOR3;
541  case 8:
542  return PARM_FLOAT;
543  case 9:
544  return PARM_FLOAT;
545  case 10:
546  return PARM_INTEGER;
547  case 11:
548  return PARM_INTEGER;
549  case 12:
550  return PARM_INTEGER;
551  case 13:
552  return PARM_INTEGER;
553  case 14:
554  return PARM_STRING;
555  case 15:
556  return PARM_INTEGER;
557  case 16:
558  return PARM_STRING;
559  case 17:
560  return PARM_INTEGER;
561  case 18:
562  return PARM_STRING;
563  case 19:
564  return PARM_INTEGER;
565  case 20:
566  return PARM_STRING;
567  case 21:
568  return PARM_INTEGER;
569  case 22:
570  return PARM_STRING;
571 
572  }
573  return PARM_UNSUPPORTED;
574  }
575 
576  // Boiler plate to load individual types.
577  static void loadData(UT_IStream &is, int64 &v)
578  { is.bread(&v, 1); }
579  static void loadData(UT_IStream &is, bool &v)
580  { int64 iv; is.bread(&iv, 1); v = iv; }
581  static void loadData(UT_IStream &is, fpreal64 &v)
582  { is.bread<fpreal64>(&v, 1); }
583  static void loadData(UT_IStream &is, UT_Vector2D &v)
584  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
585  static void loadData(UT_IStream &is, UT_Vector3D &v)
586  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
587  is.bread<fpreal64>(&v.z(), 1); }
588  static void loadData(UT_IStream &is, UT_Vector4D &v)
589  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
590  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
591  static void loadData(UT_IStream &is, UT_Matrix2D &v)
592  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
593  static void loadData(UT_IStream &is, UT_Matrix3D &v)
594  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
595  static void loadData(UT_IStream &is, UT_Matrix4D &v)
596  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
597  static void loadData(UT_IStream &is, UT_Vector2I &v)
598  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
599  static void loadData(UT_IStream &is, UT_Vector3I &v)
600  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
601  is.bread<int64>(&v.z(), 1); }
602  static void loadData(UT_IStream &is, UT_Vector4I &v)
603  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
604  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
606  { is.bread(v); }
608  { UT_StringHolder rampdata;
609  loadData(is, rampdata);
610  if (rampdata.isstring())
611  {
612  v.reset(new UT_Ramp());
613  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
614  v->load(istr);
615  }
616  else v.reset();
617  }
620  loadData(is, data);
621  if (data.isstring())
622  {
623  // Find the data type.
624  const char *colon = UT_StringWrap(data).findChar(':');
625  if (colon)
626  {
627  int typelen = colon - data.buffer();
629  type.strncpy(data.buffer(), typelen);
630  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
631 
632  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
633  }
634  }
635  else v.reset();
636  }
637 
638  static void saveData(std::ostream &os, int64 v)
639  { UTwrite(os, &v); }
640  static void saveData(std::ostream &os, bool v)
641  { int64 iv = v; UTwrite(os, &iv); }
642  static void saveData(std::ostream &os, fpreal64 v)
643  { UTwrite<fpreal64>(os, &v); }
644  static void saveData(std::ostream &os, UT_Vector2D v)
645  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
646  static void saveData(std::ostream &os, UT_Vector3D v)
647  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
648  UTwrite<fpreal64>(os, &v.z()); }
649  static void saveData(std::ostream &os, UT_Vector4D v)
650  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
651  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
652  static void saveData(std::ostream &os, UT_Matrix2D v)
654  static void saveData(std::ostream &os, UT_Matrix3D v)
656  static void saveData(std::ostream &os, UT_Matrix4D v)
658  static void saveData(std::ostream &os, UT_StringHolder s)
659  { UT_StringWrap(s).saveBinary(os); }
660  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
662  UT_OStringStream ostr;
663  if (s) s->save(ostr);
664  result = ostr.str();
665  saveData(os, result);
666  }
667  static void saveData(std::ostream &os, PRM_DataItemHandle s)
669  UT_OStringStream ostr;
670  if (s)
671  {
672  ostr << s->getDataTypeToken();
673  ostr << ":";
674  s->saveBinary(ostr);
675  }
676  result = ostr.str();
677  saveData(os, result);
678  }
679 
680 
681  void save(std::ostream &os) const
682  {
683  int32 v = version();
684  UTwrite(os, &v);
685  saveData(os, myGroup);
686  saveData(os, myAttrib);
687  saveData(os, myClipOp);
688  saveData(os, myDirType);
689  saveData(os, myT);
690  saveData(os, myR);
691  saveData(os, myOrigin);
692  saveData(os, myDir);
693  saveData(os, myDist);
694  saveData(os, mySnapTol);
695  saveData(os, myDoFill);
696  saveData(os, myDoSplit);
697  saveData(os, myReplace);
698  saveData(os, myUseClipEdges);
699  saveData(os, myClipEdges);
700  saveData(os, myUseClipPrims);
701  saveData(os, myClipPrims);
702  saveData(os, myUseAbovePrims);
703  saveData(os, myAbovePrims);
704  saveData(os, myUseBelowPrims);
705  saveData(os, myBelowPrims);
706  saveData(os, myUseFillPolygons);
707  saveData(os, myFillPolygons);
708 
709  }
710 
711  bool load(UT_IStream &is)
712  {
713  int32 v;
714  is.bread(&v, 1);
715  if (version() != v)
716  {
717  // Fail incompatible versions
718  return false;
719  }
720  loadData(is, myGroup);
721  loadData(is, myAttrib);
722  loadData(is, myClipOp);
723  loadData(is, myDirType);
724  loadData(is, myT);
725  loadData(is, myR);
726  loadData(is, myOrigin);
727  loadData(is, myDir);
728  loadData(is, myDist);
729  loadData(is, mySnapTol);
730  loadData(is, myDoFill);
731  loadData(is, myDoSplit);
732  loadData(is, myReplace);
733  loadData(is, myUseClipEdges);
734  loadData(is, myClipEdges);
735  loadData(is, myUseClipPrims);
736  loadData(is, myClipPrims);
737  loadData(is, myUseAbovePrims);
738  loadData(is, myAbovePrims);
739  loadData(is, myUseBelowPrims);
740  loadData(is, myBelowPrims);
741  loadData(is, myUseFillPolygons);
742  loadData(is, myFillPolygons);
743 
744  return true;
745  }
746 
747  const UT_StringHolder & getGroup() const { return myGroup; }
748  void setGroup(const UT_StringHolder & val) { myGroup = val; }
750  {
751  SOP_Node *thissop = cookparms.getNode();
752  if (!thissop) return getGroup();
754  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
755  return result;
756  }
757  const UT_StringHolder & getAttrib() const { return myAttrib; }
758  void setAttrib(const UT_StringHolder & val) { myAttrib = val; }
760  {
761  SOP_Node *thissop = cookparms.getNode();
762  if (!thissop) return getAttrib();
764  OP_Utils::evalOpParm(result, thissop, "attrib", cookparms.getCookTime(), 0);
765  return result;
766  }
767  ClipOp getClipOp() const { return ClipOp(myClipOp); }
768  void setClipOp(ClipOp val) { myClipOp = int64(val); }
769  ClipOp opClipOp(const SOP_NodeVerb::CookParms &cookparms) const
770  {
771  SOP_Node *thissop = cookparms.getNode();
772  if (!thissop) return getClipOp();
773  int64 result;
774  OP_Utils::evalOpParm(result, thissop, "clipop", cookparms.getCookTime(), 0);
775  return ClipOp(result);
776  }
777  DirType getDirType() const { return DirType(myDirType); }
778  void setDirType(DirType val) { myDirType = int64(val); }
779  DirType opDirType(const SOP_NodeVerb::CookParms &cookparms) const
780  {
781  SOP_Node *thissop = cookparms.getNode();
782  if (!thissop) return getDirType();
783  int64 result;
784  OP_Utils::evalOpParm(result, thissop, "dirtype", cookparms.getCookTime(), 0);
785  return DirType(result);
786  }
787  UT_Vector3D getT() const { return myT; }
788  void setT(UT_Vector3D val) { myT = val; }
789  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
790  {
791  SOP_Node *thissop = cookparms.getNode();
792  if (!thissop) return getT();
794  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
795  return result;
796  }
797  UT_Vector3D getR() const { return myR; }
798  void setR(UT_Vector3D val) { myR = val; }
799  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
800  {
801  SOP_Node *thissop = cookparms.getNode();
802  if (!thissop) return getR();
804  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
805  return result;
806  }
807  UT_Vector3D getOrigin() const { return myOrigin; }
808  void setOrigin(UT_Vector3D val) { myOrigin = val; }
810  {
811  SOP_Node *thissop = cookparms.getNode();
812  if (!thissop) return getOrigin();
814  OP_Utils::evalOpParm(result, thissop, "origin", cookparms.getCookTime(), 0);
815  return result;
816  }
817  UT_Vector3D getDir() const { return myDir; }
818  void setDir(UT_Vector3D val) { myDir = val; }
819  UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
820  {
821  SOP_Node *thissop = cookparms.getNode();
822  if (!thissop) return getDir();
824  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
825  return result;
826  }
827  fpreal64 getDist() const { return myDist; }
828  void setDist(fpreal64 val) { myDist = val; }
829  fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
830  {
831  SOP_Node *thissop = cookparms.getNode();
832  if (!thissop) return getDist();
834  OP_Utils::evalOpParm(result, thissop, "dist", cookparms.getCookTime(), 0);
835  return result;
836  }
837  fpreal64 getSnapTol() const { return mySnapTol; }
838  void setSnapTol(fpreal64 val) { mySnapTol = val; }
840  {
841  SOP_Node *thissop = cookparms.getNode();
842  if (!thissop) return getSnapTol();
844  OP_Utils::evalOpParm(result, thissop, "snaptol", cookparms.getCookTime(), 0);
845  return result;
846  }
847  bool getDoFill() const { return myDoFill; }
848  void setDoFill(bool val) { myDoFill = val; }
849  bool opDoFill(const SOP_NodeVerb::CookParms &cookparms) const
850  {
851  SOP_Node *thissop = cookparms.getNode();
852  if (!thissop) return getDoFill();
853  bool result;
854  OP_Utils::evalOpParm(result, thissop, "dofill", cookparms.getCookTime(), 0);
855  return result;
856  }
857  bool getDoSplit() const { return myDoSplit; }
858  void setDoSplit(bool val) { myDoSplit = val; }
859  bool opDoSplit(const SOP_NodeVerb::CookParms &cookparms) const
860  {
861  SOP_Node *thissop = cookparms.getNode();
862  if (!thissop) return getDoSplit();
863  bool result;
864  OP_Utils::evalOpParm(result, thissop, "dosplit", cookparms.getCookTime(), 0);
865  return result;
866  }
867  bool getReplace() const { return myReplace; }
868  void setReplace(bool val) { myReplace = val; }
869  bool opReplace(const SOP_NodeVerb::CookParms &cookparms) const
870  {
871  SOP_Node *thissop = cookparms.getNode();
872  if (!thissop) return getReplace();
873  bool result;
874  OP_Utils::evalOpParm(result, thissop, "replace", cookparms.getCookTime(), 0);
875  return result;
876  }
877  bool getUseClipEdges() const { return myUseClipEdges; }
878  void setUseClipEdges(bool val) { myUseClipEdges = val; }
879  bool opUseClipEdges(const SOP_NodeVerb::CookParms &cookparms) const
880  {
881  SOP_Node *thissop = cookparms.getNode();
882  if (!thissop) return getUseClipEdges();
883  bool result;
884  OP_Utils::evalOpParm(result, thissop, "useclipedges", cookparms.getCookTime(), 0);
885  return result;
886  }
887  const UT_StringHolder & getClipEdges() const { return myClipEdges; }
888  void setClipEdges(const UT_StringHolder & val) { myClipEdges = val; }
890  {
891  SOP_Node *thissop = cookparms.getNode();
892  if (!thissop) return getClipEdges();
894  OP_Utils::evalOpParm(result, thissop, "clipedges", cookparms.getCookTime(), 0);
895  return result;
896  }
897  bool getUseClipPrims() const { return myUseClipPrims; }
898  void setUseClipPrims(bool val) { myUseClipPrims = val; }
899  bool opUseClipPrims(const SOP_NodeVerb::CookParms &cookparms) const
900  {
901  SOP_Node *thissop = cookparms.getNode();
902  if (!thissop) return getUseClipPrims();
903  bool result;
904  OP_Utils::evalOpParm(result, thissop, "useclipprims", cookparms.getCookTime(), 0);
905  return result;
906  }
907  const UT_StringHolder & getClipPrims() const { return myClipPrims; }
908  void setClipPrims(const UT_StringHolder & val) { myClipPrims = val; }
910  {
911  SOP_Node *thissop = cookparms.getNode();
912  if (!thissop) return getClipPrims();
914  OP_Utils::evalOpParm(result, thissop, "clipprims", cookparms.getCookTime(), 0);
915  return result;
916  }
917  bool getUseAbovePrims() const { return myUseAbovePrims; }
918  void setUseAbovePrims(bool val) { myUseAbovePrims = val; }
919  bool opUseAbovePrims(const SOP_NodeVerb::CookParms &cookparms) const
920  {
921  SOP_Node *thissop = cookparms.getNode();
922  if (!thissop) return getUseAbovePrims();
923  bool result;
924  OP_Utils::evalOpParm(result, thissop, "useaboveprims", cookparms.getCookTime(), 0);
925  return result;
926  }
927  const UT_StringHolder & getAbovePrims() const { return myAbovePrims; }
928  void setAbovePrims(const UT_StringHolder & val) { myAbovePrims = val; }
930  {
931  SOP_Node *thissop = cookparms.getNode();
932  if (!thissop) return getAbovePrims();
934  OP_Utils::evalOpParm(result, thissop, "aboveprims", cookparms.getCookTime(), 0);
935  return result;
936  }
937  bool getUseBelowPrims() const { return myUseBelowPrims; }
938  void setUseBelowPrims(bool val) { myUseBelowPrims = val; }
939  bool opUseBelowPrims(const SOP_NodeVerb::CookParms &cookparms) const
940  {
941  SOP_Node *thissop = cookparms.getNode();
942  if (!thissop) return getUseBelowPrims();
943  bool result;
944  OP_Utils::evalOpParm(result, thissop, "usebelowprims", cookparms.getCookTime(), 0);
945  return result;
946  }
947  const UT_StringHolder & getBelowPrims() const { return myBelowPrims; }
948  void setBelowPrims(const UT_StringHolder & val) { myBelowPrims = val; }
950  {
951  SOP_Node *thissop = cookparms.getNode();
952  if (!thissop) return getBelowPrims();
954  OP_Utils::evalOpParm(result, thissop, "belowprims", cookparms.getCookTime(), 0);
955  return result;
956  }
957  bool getUseFillPolygons() const { return myUseFillPolygons; }
958  void setUseFillPolygons(bool val) { myUseFillPolygons = val; }
959  bool opUseFillPolygons(const SOP_NodeVerb::CookParms &cookparms) const
960  {
961  SOP_Node *thissop = cookparms.getNode();
962  if (!thissop) return getUseFillPolygons();
963  bool result;
964  OP_Utils::evalOpParm(result, thissop, "usefillpolygons", cookparms.getCookTime(), 0);
965  return result;
966  }
967  const UT_StringHolder & getFillPolygons() const { return myFillPolygons; }
968  void setFillPolygons(const UT_StringHolder & val) { myFillPolygons = val; }
970  {
971  SOP_Node *thissop = cookparms.getNode();
972  if (!thissop) return getFillPolygons();
974  OP_Utils::evalOpParm(result, thissop, "fillpolygons", cookparms.getCookTime(), 0);
975  return result;
976  }
977 
978 private:
979  UT_StringHolder myGroup;
980  UT_StringHolder myAttrib;
981  int64 myClipOp;
982  int64 myDirType;
983  UT_Vector3D myT;
984  UT_Vector3D myR;
985  UT_Vector3D myOrigin;
986  UT_Vector3D myDir;
987  fpreal64 myDist;
988  fpreal64 mySnapTol;
989  bool myDoFill;
990  bool myDoSplit;
991  bool myReplace;
992  bool myUseClipEdges;
993  UT_StringHolder myClipEdges;
994  bool myUseClipPrims;
995  UT_StringHolder myClipPrims;
996  bool myUseAbovePrims;
997  UT_StringHolder myAbovePrims;
998  bool myUseBelowPrims;
999  UT_StringHolder myBelowPrims;
1000  bool myUseFillPolygons;
1001  UT_StringHolder myFillPolygons;
1002 
1003 };
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void saveData(std::ostream &os, UT_Vector3D v)
bool getDoSplit() const
static void loadData(UT_IStream &is, bool &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setUseAbovePrims(bool val)
void setDir(UT_Vector3D val)
bool opReplace(const SOP_NodeVerb::CookParms &cookparms) const
void setSnapTol(fpreal64 val)
exint getNestNumParms(TempIndex idx) const override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setUseBelowPrims(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
exint bread(int32 *buffer, exint asize=1)
bool opUseFillPolygons(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opClipPrims(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:131
UT_StringHolder opClipEdges(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
ClipOp opClipOp(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
bool opDoSplit(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getDir() const
static void saveData(std::ostream &os, fpreal64 v)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setUseFillPolygons(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool getReplace() const
DirType getDirType() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, UT_StringHolder &v)
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
SYS_FORCE_INLINE const char * buffer() const
UT_Vector3D getOrigin() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
GLdouble s
Definition: glad.h:3009
void setUseClipEdges(bool val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
An output stream object that owns its own string buffer storage.
bool opUseAbovePrims(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
**But if you need a result
Definition: thread.h:613
void copyFrom(const OP_NodeParms *src) override
void setAttrib(const UT_StringHolder &val)
void setDoFill(bool val)
UT_Vector3D getR() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
bool opDoFill(const SOP_NodeVerb::CookParms &cookparms) 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.
void setReplace(bool val)
void setDist(fpreal64 val)
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setT(UT_Vector3D val)
static void saveData(std::ostream &os, UT_StringHolder s)
const UT_StringHolder & getClipPrims() const
ParmType getNestParmType(TempIndex fieldnum) const override
void setClipOp(ClipOp val)
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
UT_Vector3D getT() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool opUseClipEdges(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_Matrix3D v)
bool getDoFill() const
exint length() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setDoSplit(bool val)
static void saveData(std::ostream &os, bool v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
UT_StringHolder opAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
long long int64
Definition: SYS_Types.h:116
bool isParmColorRamp(exint idx) const override
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getFillPolygons() const
bool getUseBelowPrims() const
UT_Vector3T< fpreal64 > UT_Vector3D
const UT_StringHolder & getAttrib() const
const char * getNestParmName(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
const UT_StringHolder & getClipEdges() const
static void saveData(std::ostream &os, UT_Vector2D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool load(UT_IStream &is)
void setFillPolygons(const UT_StringHolder &val)
fpreal64 getSnapTol() const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
bool getUseFillPolygons() const
GT_API const UT_StringHolder version
void setClipEdges(const UT_StringHolder &val)
bool getUseClipPrims() const
void setAbovePrims(const UT_StringHolder &val)
void setR(UT_Vector3D val)
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setBelowPrims(const UT_StringHolder &val)
void setDirType(DirType val)
void setClipPrims(const UT_StringHolder &val)
ClipOp getClipOp() const
void setOrigin(UT_Vector3D val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool getUseAbovePrims() const
void setGroup(const UT_StringHolder &val)
void save(std::ostream &os) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool opUseBelowPrims(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
void setUseClipPrims(bool val)
UT_Vector3D opOrigin(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getBelowPrims() const
fpreal64 fpreal
Definition: SYS_Types.h:277
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool getUseClipEdges() const
LeafData & operator=(const LeafData &)=delete
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
bool operator!=(const SOP_Clip_2_0Parms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
DirType opDirType(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, UT_Vector3D &v)
static void loadData(UT_IStream &is, fpreal64 &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
bool opUseClipPrims(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
UT_StringHolder opAbovePrims(const SOP_NodeVerb::CookParms &cookparms) const
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
const UT_StringHolder & getGroup() const
GLboolean r
Definition: glcorearb.h:1222
void loadFromOpSubclass(const LoadParms &loadparms) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
fpreal64 opSnapTol(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:1059
UT_StringHolder opBelowPrims(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE UT_StringHolder getToken(ClipOp enum_value)
static void saveData(std::ostream &os, int64 v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
const UT_StringHolder & getAbovePrims() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
static void loadData(UT_IStream &is, int64 &v)
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
fpreal64 getDist() const
static void saveData(std::ostream &os, UT_Matrix4D v)
static void saveData(std::ostream &os, UT_Matrix2D v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
UT_StringHolder opFillPolygons(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_Clip_2_0Parms &src) const