HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Fuse-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_NodeVerb.h>
7 #include <SOP/SOP_GraphProxy.h>
8 
9 #include <OP/OP_Utils.h>
10 #include <PRM/PRM_Parm.h>
11 #include <UT/UT_IStream.h>
12 #include <UT/UT_NTStreamUtil.h>
13 #include <UT/UT_Ramp.h>
14 #include <UT/UT_SharedPtr.h>
15 #include <UT/UT_StringHolder.h>
16 #include <UT/UT_StringStream.h>
17 #include <UT/UT_VectorTypes.h>
18 #include <SYS/SYS_Types.h>
19 
20 using namespace UT::Literal;
21 
22 class DEP_MicroNode;
23 namespace SOP_Fuse_2_0Enums
24 {
25  enum class Snaptype
26  {
27  DISTANCESNAP = 0,
28  GRIDSNAP,
29  SPECIFIED
30  };
31  enum class Algorithm
32  {
33  LOWEST = 0,
34  CLOSEST
35  };
36  enum class TargetClass
37  {
38  POINT = 0,
39  VERTEX,
40  PRIM,
41  DETAIL
42  };
43  enum class PositionSnapMethod
44  {
45  AVERAGE = 0,
46  LOWEST,
47  HIGHEST,
48  MAX,
49  MIN,
50  MODE,
51  MEDIAN,
52  SUM,
53  SUMSQUARE,
54  RMS
55  };
56  enum class Matchtype
57  {
58  MATCH = 0,
59  MISMATCH
60  };
61  enum class Gridtype
62  {
63  SPACING = 0,
64  LINES,
65  POW2
66  };
67  enum class Gridround
68  {
69  NEAREST = 0,
70  DOWN,
71  UP
72  };
73  enum class Attribsnapmethod
74  {
75  MAX = 0,
76  MIN,
77  MEAN,
78  MODE,
79  MEDIAN,
80  SUM,
81  SUMSQUARE,
82  RMS,
83  FIRST,
84  LAST
85  };
86  enum class Grouppropagation
87  {
88  LEASTPOINTNUMBER = 0,
90  UNION,
91  INTERSECT,
92  MODE
93  };
94 }
95 
96 
98 {
99 public:
100  static int version() { return 1; }
102  {
105 
106 
108  {
109  attribsnapmethod = 8;
110  pointattribnames = ""_sh;
111 
112  }
113 
114  bool operator==(const Numpointattribs &src) const
115  {
116  if (attribsnapmethod != src.attribsnapmethod) return false;
117  if (pointattribnames != src.pointattribnames) return false;
118 
119  return true;
120  }
121  bool operator!=(const Numpointattribs &src) const
122  {
123  return !operator==(src);
124  }
125 
126  };
127 
129  {
131 
132  buf.strcat("[ ");
133  for (int i = 0; i < list.entries(); i++)
134  {
135  if (i)
136  buf.strcat(", ");
137  buf.strcat("( ");
138  buf.append("");
139  buf.appendSprintf("%d", (int) list(i).attribsnapmethod);
140  buf.append(", ");
141  { UT_String tmp; tmp = UT_StringWrap(list(i).pointattribnames).makeQuotedString('"'); buf.strcat(tmp); }
142 
143  buf.strcat(" )");
144  }
145  buf.strcat(" ]");
146 
148  return result;
149  }
150  struct Numgroups
151  {
154 
155 
157  {
158  grouppropagation = 0;
159  pointgroupnames = ""_sh;
160 
161  }
162 
163  bool operator==(const Numgroups &src) const
164  {
165  if (grouppropagation != src.grouppropagation) return false;
166  if (pointgroupnames != src.pointgroupnames) return false;
167 
168  return true;
169  }
170  bool operator!=(const Numgroups &src) const
171  {
172  return !operator==(src);
173  }
174 
175  };
176 
178  {
180 
181  buf.strcat("[ ");
182  for (int i = 0; i < list.entries(); i++)
183  {
184  if (i)
185  buf.strcat(", ");
186  buf.strcat("( ");
187  buf.append("");
188  buf.appendSprintf("%d", (int) list(i).grouppropagation);
189  buf.append(", ");
190  { UT_String tmp; tmp = UT_StringWrap(list(i).pointgroupnames).makeQuotedString('"'); buf.strcat(tmp); }
191 
192  buf.strcat(" )");
193  }
194  buf.strcat(" ]");
195 
197  return result;
198  }
199 
201  {
202  myQuerygroup = ""_sh;
203  myPosAttrib = "P"_sh;
204  mySnaptype = 0;
205  myAlgorithm = 0;
206  myUseTol3D = true;
207  myTol3d = 0.001;
208  myTargetPtAttrib = "snap_to"_sh;
209  myTargetClass = 0;
210  myUsePositionSnapMethod = true;
211  myPositionSnapMethod = 0;
212  myUseradiusattrib = false;
213  myRadiusattrib = "pscale"_sh;
214  myUsematchattrib = false;
215  myMatchattrib = "name"_sh;
216  myMatchtype = 0;
217  myMatchTol = 0;
218  myGridtype = 0;
219  myGridspacing = UT_Vector3D(0.1,0.1,0.1);
220  myGridlines = UT_Vector3D(10,10,10);
221  myGridpow2 = UT_Vector3I(3,3,3);
222  myGridoffset = UT_Vector3D(0,0,0);
223  myGridround = 0;
224  myUseGridTol = true;
225  myGridtol = 10;
226  myConsolidateSnappedPoints = true;
227  myKeepConsolidatedPoints = false;
228  myDelDegen = true;
229  myDelDegenPoints = true;
230  myDelUnusedPoints = false;
231  myRecomputenml = true;
232  myCreatesnappedgroup = false;
233  mySnappedgroupname = "snapped_points"_sh;
234  myCreatesnappedattrib = false;
235  mySnappedattribname = "snapped_to"_sh;
236  myUsetargetgroup = false;
237  myTargetgroup = ""_sh;
238  myModifyboth = false;
239 
240  }
241 
242  explicit SOP_Fuse_2_0Parms(const SOP_Fuse_2_0Parms &) = default;
243 
244  ~SOP_Fuse_2_0Parms() override {}
245 
246  bool operator==(const SOP_Fuse_2_0Parms &src) const
247  {
248  if (myQuerygroup != src.myQuerygroup) return false;
249  if (myPosAttrib != src.myPosAttrib) return false;
250  if (mySnaptype != src.mySnaptype) return false;
251  if (myAlgorithm != src.myAlgorithm) return false;
252  if (myUseTol3D != src.myUseTol3D) return false;
253  if (myTol3d != src.myTol3d) return false;
254  if (myTargetPtAttrib != src.myTargetPtAttrib) return false;
255  if (myTargetClass != src.myTargetClass) return false;
256  if (myUsePositionSnapMethod != src.myUsePositionSnapMethod) return false;
257  if (myPositionSnapMethod != src.myPositionSnapMethod) return false;
258  if (myUseradiusattrib != src.myUseradiusattrib) return false;
259  if (myRadiusattrib != src.myRadiusattrib) return false;
260  if (myUsematchattrib != src.myUsematchattrib) return false;
261  if (myMatchattrib != src.myMatchattrib) return false;
262  if (myMatchtype != src.myMatchtype) return false;
263  if (myMatchTol != src.myMatchTol) return false;
264  if (myGridtype != src.myGridtype) return false;
265  if (myGridspacing != src.myGridspacing) return false;
266  if (myGridlines != src.myGridlines) return false;
267  if (myGridpow2 != src.myGridpow2) return false;
268  if (myGridoffset != src.myGridoffset) return false;
269  if (myGridround != src.myGridround) return false;
270  if (myUseGridTol != src.myUseGridTol) return false;
271  if (myGridtol != src.myGridtol) return false;
272  if (myConsolidateSnappedPoints != src.myConsolidateSnappedPoints) return false;
273  if (myKeepConsolidatedPoints != src.myKeepConsolidatedPoints) return false;
274  if (myDelDegen != src.myDelDegen) return false;
275  if (myDelDegenPoints != src.myDelDegenPoints) return false;
276  if (myDelUnusedPoints != src.myDelUnusedPoints) return false;
277  if (myRecomputenml != src.myRecomputenml) return false;
278  if (myCreatesnappedgroup != src.myCreatesnappedgroup) return false;
279  if (mySnappedgroupname != src.mySnappedgroupname) return false;
280  if (myCreatesnappedattrib != src.myCreatesnappedattrib) return false;
281  if (mySnappedattribname != src.mySnappedattribname) return false;
282  if (myNumpointattribs != src.myNumpointattribs) return false;
283  if (myNumgroups != src.myNumgroups) return false;
284  if (myUsetargetgroup != src.myUsetargetgroup) return false;
285  if (myTargetgroup != src.myTargetgroup) return false;
286  if (myModifyboth != src.myModifyboth) return false;
287 
288  return true;
289  }
290  bool operator!=(const SOP_Fuse_2_0Parms &src) const
291  {
292  return !operator==(src);
293  }
303 
304 
305 
306  void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
307  {
308  myQuerygroup = ""_sh;
309  if (true)
310  graph->evalOpParm(myQuerygroup, nodeidx, "querygroup", time, 0);
311  myPosAttrib = "P"_sh;
312  if (true)
313  graph->evalOpParm(myPosAttrib, nodeidx, "posattrib", time, 0);
314  mySnaptype = 0;
315  if (true)
316  graph->evalOpParm(mySnaptype, nodeidx, "snaptype", time, 0);
317  myAlgorithm = 0;
318  if (true && ( (!(((int64(getSnaptype())!=0)))) ) )
319  graph->evalOpParm(myAlgorithm, nodeidx, "algorithm", time, 0);
320  myUseTol3D = true;
321  if (true && ( (!(((int64(getSnaptype())!=0)))) ) )
322  graph->evalOpParm(myUseTol3D, nodeidx, "usetol3d", time, 0);
323  myTol3d = 0.001;
324  if (true && ( (!(((int64(getSnaptype())!=0))||((getUseTol3D()==0))||((int64(getSnaptype())!=0)))) ) )
325  graph->evalOpParm(myTol3d, nodeidx, "tol3d", time, 0);
326  myTargetPtAttrib = "snap_to"_sh;
327  if (true && ( (!(((int64(getSnaptype())!=2)))) ) )
328  graph->evalOpParm(myTargetPtAttrib, nodeidx, "targetptattrib", time, 0);
329  myTargetClass = 0;
330  if (true && ( (!(((int64(getSnaptype())!=2)))) ) )
331  graph->evalOpParm(myTargetClass, nodeidx, "targetclass", time, 0);
332  myUsePositionSnapMethod = true;
333  if (true && ( (!(((int64(getSnaptype())==1)))) ) )
334  graph->evalOpParm(myUsePositionSnapMethod, nodeidx, "usepositionsnapmethod", time, 0);
335  myPositionSnapMethod = 0;
336  if (true && ( (!(((int64(getSnaptype())==1))||((getUsePositionSnapMethod()==0))||((int64(getSnaptype())==1)))) ) )
337  graph->evalOpParm(myPositionSnapMethod, nodeidx, "positionsnapmethod", time, 0);
338  myUseradiusattrib = false;
339  if (true && ( (!(((int64(getSnaptype())!=0)))) ) )
340  graph->evalOpParm(myUseradiusattrib, nodeidx, "useradiusattrib", time, 0);
341  myRadiusattrib = "pscale"_sh;
342  if (true && ( (!(((getUseradiusattrib()==0))||((int64(getSnaptype())!=0)))) ) )
343  graph->evalOpParm(myRadiusattrib, nodeidx, "radiusattrib", time, 0);
344  myUsematchattrib = false;
345  if (true && ( (!(((int64(getSnaptype())!=0)))) ) )
346  graph->evalOpParm(myUsematchattrib, nodeidx, "usematchattrib", time, 0);
347  myMatchattrib = "name"_sh;
348  if (true && ( (!(((getUsematchattrib()==0))||((int64(getSnaptype())!=0)))) ) )
349  graph->evalOpParm(myMatchattrib, nodeidx, "matchattrib", time, 0);
350  myMatchtype = 0;
351  if (true && ( (!(((getUsematchattrib()==0))||((int64(getSnaptype())!=0)))) ) )
352  graph->evalOpParm(myMatchtype, nodeidx, "matchtype", time, 0);
353  myMatchTol = 0;
354  if (true && ( (!(((getUsematchattrib()==0))||((int64(getSnaptype())!=0)))) ) )
355  graph->evalOpParm(myMatchTol, nodeidx, "matchtol", time, 0);
356  myGridtype = 0;
357  if (true && ( (!(((int64(getSnaptype())!=1)))) ) )
358  graph->evalOpParm(myGridtype, nodeidx, "gridtype", time, 0);
359  myGridspacing = UT_Vector3D(0.1,0.1,0.1);
360  if (true && ( (!(((int64(getGridtype())!=0))||((int64(getSnaptype())!=1)))) ) )
361  graph->evalOpParm(myGridspacing, nodeidx, "gridspacing", time, 0);
362  myGridlines = UT_Vector3D(10,10,10);
363  if (true && ( (!(((int64(getGridtype())!=1))||((int64(getSnaptype())!=1)))) ) )
364  graph->evalOpParm(myGridlines, nodeidx, "gridlines", time, 0);
365  myGridpow2 = UT_Vector3I(3,3,3);
366  if (true && ( (!(((int64(getGridtype())!=2))||((int64(getSnaptype())!=1)))) ) )
367  graph->evalOpParm(myGridpow2, nodeidx, "gridpow2", time, 0);
368  myGridoffset = UT_Vector3D(0,0,0);
369  if (true && ( (!(((int64(getSnaptype())!=1)))) ) )
370  graph->evalOpParm(myGridoffset, nodeidx, "gridoffset", time, 0);
371  myGridround = 0;
372  if (true && ( (!(((int64(getSnaptype())!=1)))) ) )
373  graph->evalOpParm(myGridround, nodeidx, "gridround", time, 0);
374  myUseGridTol = true;
375  if (true && ( (!(((int64(getSnaptype())!=1)))) ) )
376  graph->evalOpParm(myUseGridTol, nodeidx, "usegridtol", time, 0);
377  myGridtol = 10;
378  if (true && ( (!(((int64(getSnaptype())!=1))||((getUseGridTol()==0))||((int64(getSnaptype())!=1)))) ) )
379  graph->evalOpParm(myGridtol, nodeidx, "gridtol", time, 0);
380  myConsolidateSnappedPoints = true;
381  if (true)
382  graph->evalOpParm(myConsolidateSnappedPoints, nodeidx, "consolidatesnappedpoints", time, 0);
383  myKeepConsolidatedPoints = false;
384  if (true && ( (!(((getConsolidateSnappedPoints()==0)))) ) )
385  graph->evalOpParm(myKeepConsolidatedPoints, nodeidx, "keepconsolidatedpoints", time, 0);
386  myDelDegen = true;
387  if (true && ( (!(((getConsolidateSnappedPoints()==0)))) ) )
388  graph->evalOpParm(myDelDegen, nodeidx, "deldegen", time, 0);
389  myDelDegenPoints = true;
390  if (true && ( (!(((getConsolidateSnappedPoints()==0))||((getDelDegen()==0)))) ) )
391  graph->evalOpParm(myDelDegenPoints, nodeidx, "deldegenpoints", time, 0);
392  myDelUnusedPoints = false;
393  if (true && ( (!(((getConsolidateSnappedPoints()==0)))) ) )
394  graph->evalOpParm(myDelUnusedPoints, nodeidx, "delunusedpoints", time, 0);
395  myRecomputenml = true;
396  if (true)
397  graph->evalOpParm(myRecomputenml, nodeidx, "recomputenml", time, 0);
398  myCreatesnappedgroup = false;
399  if (true)
400  graph->evalOpParm(myCreatesnappedgroup, nodeidx, "createsnappedgroup", time, 0);
401  mySnappedgroupname = "snapped_points"_sh;
402  if (true && ( (!(((getCreatesnappedgroup()==0)))) ) )
403  graph->evalOpParm(mySnappedgroupname, nodeidx, "snappedgroupname", time, 0);
404  myCreatesnappedattrib = false;
405  if (true && ( (!(((int64(getSnaptype())==1)))) ) )
406  graph->evalOpParm(myCreatesnappedattrib, nodeidx, "createsnappedattrib", time, 0);
407  mySnappedattribname = "snapped_to"_sh;
408  if (true && ( (!(((getCreatesnappedattrib()==0))||((int64(getSnaptype())==1)))) ) )
409  graph->evalOpParm(mySnappedattribname, nodeidx, "snappedattribname", time, 0);
410  if (true)
411  {
412  int64 length = 0;
413  graph->evalOpParm(length, nodeidx, "numpointattribs", time, 0);
414  myNumpointattribs.entries(length);
415  for (exint i = 0; i < length; i++)
416  {
417  int parmidx = i+1;
418  auto && _curentry = myNumpointattribs(i);
419  (void) _curentry;
420  myNumpointattribs(i).attribsnapmethod = 8;
421  if (true)
422  graph->evalOpParmInst(myNumpointattribs(i).attribsnapmethod, nodeidx, "attribsnapmethod#", &parmidx, time, 0);
423  myNumpointattribs(i).pointattribnames = ""_sh;
424  if (true)
425  graph->evalOpParmInst(myNumpointattribs(i).pointattribnames, nodeidx, "pointattribnames#", &parmidx, time, 0);
426 
427  }
428  }
429  else
430  myNumpointattribs.clear();
431  if (true)
432  {
433  int64 length = 0;
434  graph->evalOpParm(length, nodeidx, "numgroups", time, 0);
435  myNumgroups.entries(length);
436  for (exint i = 0; i < length; i++)
437  {
438  int parmidx = i+1;
439  auto && _curentry = myNumgroups(i);
440  (void) _curentry;
441  myNumgroups(i).grouppropagation = 0;
442  if (true)
443  graph->evalOpParmInst(myNumgroups(i).grouppropagation, nodeidx, "grouppropagation#", &parmidx, time, 0);
444  myNumgroups(i).pointgroupnames = ""_sh;
445  if (true)
446  graph->evalOpParmInst(myNumgroups(i).pointgroupnames, nodeidx, "pointgroupnames#", &parmidx, time, 0);
447 
448  }
449  }
450  else
451  myNumgroups.clear();
452  myUsetargetgroup = false;
453  if (true && ( (!(((int64(getSnaptype())==1))||(((graph->getInput(nodeidx,1)>=0)==1)))) ) )
454  graph->evalOpParm(myUsetargetgroup, nodeidx, "usetargetgroup", time, 0);
455  myTargetgroup = ""_sh;
456  if (true && ( (!(((int64(getSnaptype())==1))||((getUsetargetgroup()==0)&&((graph->getInput(nodeidx,1)>=0)==0)))) ) )
457  graph->evalOpParm(myTargetgroup, nodeidx, "targetgroup", time, 0);
458  myModifyboth = false;
459  if (true && ( (!(((int64(getSnaptype())==1))||(((graph->getInput(nodeidx,1)>=0)==1))||((getUsetargetgroup()==0)&&(int64(getSnaptype())!=2)))) ) )
460  graph->evalOpParm(myModifyboth, nodeidx, "modifyboth", time, 0);
461 
462  }
463 
464 
465  void loadFromOpSubclass(const LoadParms &loadparms) override
466  {
467  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
468  }
469 
470 
471  void copyFrom(const SOP_NodeParms *src) override
472  {
473  *this = *((const SOP_Fuse_2_0Parms *)src);
474  }
475 
476  template <typename T>
477  void
478  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
479  {
480  if (idx.size() < 1)
481  return;
482  UT_ASSERT(idx.size() == instance.size()+1);
483  if (idx.size() != instance.size()+1)
484  return;
485  switch (idx[0])
486  {
487  case 0:
488  coerceValue(value, myQuerygroup);
489  break;
490  case 1:
491  coerceValue(value, myPosAttrib);
492  break;
493  case 2:
494  coerceValue(value, mySnaptype);
495  break;
496  case 3:
497  coerceValue(value, myAlgorithm);
498  break;
499  case 4:
500  coerceValue(value, myUseTol3D);
501  break;
502  case 5:
503  coerceValue(value, myTol3d);
504  break;
505  case 6:
506  coerceValue(value, myTargetPtAttrib);
507  break;
508  case 7:
509  coerceValue(value, myTargetClass);
510  break;
511  case 8:
512  coerceValue(value, myUsePositionSnapMethod);
513  break;
514  case 9:
515  coerceValue(value, myPositionSnapMethod);
516  break;
517  case 10:
518  coerceValue(value, myUseradiusattrib);
519  break;
520  case 11:
521  coerceValue(value, myRadiusattrib);
522  break;
523  case 12:
524  coerceValue(value, myUsematchattrib);
525  break;
526  case 13:
527  coerceValue(value, myMatchattrib);
528  break;
529  case 14:
530  coerceValue(value, myMatchtype);
531  break;
532  case 15:
533  coerceValue(value, myMatchTol);
534  break;
535  case 16:
536  coerceValue(value, myGridtype);
537  break;
538  case 17:
539  coerceValue(value, myGridspacing);
540  break;
541  case 18:
542  coerceValue(value, myGridlines);
543  break;
544  case 19:
545  coerceValue(value, myGridpow2);
546  break;
547  case 20:
548  coerceValue(value, myGridoffset);
549  break;
550  case 21:
551  coerceValue(value, myGridround);
552  break;
553  case 22:
554  coerceValue(value, myUseGridTol);
555  break;
556  case 23:
557  coerceValue(value, myGridtol);
558  break;
559  case 24:
560  coerceValue(value, myConsolidateSnappedPoints);
561  break;
562  case 25:
563  coerceValue(value, myKeepConsolidatedPoints);
564  break;
565  case 26:
566  coerceValue(value, myDelDegen);
567  break;
568  case 27:
569  coerceValue(value, myDelDegenPoints);
570  break;
571  case 28:
572  coerceValue(value, myDelUnusedPoints);
573  break;
574  case 29:
575  coerceValue(value, myRecomputenml);
576  break;
577  case 30:
578  coerceValue(value, myCreatesnappedgroup);
579  break;
580  case 31:
581  coerceValue(value, mySnappedgroupname);
582  break;
583  case 32:
584  coerceValue(value, myCreatesnappedattrib);
585  break;
586  case 33:
587  coerceValue(value, mySnappedattribname);
588  break;
589  case 34:
590  if (idx.size() == 1)
591  coerceValue(value, myNumpointattribs.entries());
592  else if (instance[0] < myNumpointattribs.entries())
593  {
594  auto && _data = myNumpointattribs(instance[0]);
595  switch (idx[1])
596  {
597  case 0:
598  coerceValue(value, _data.attribsnapmethod);
599  break;
600  case 1:
601  coerceValue(value, _data.pointattribnames);
602  break;
603 
604  }
605  }
606  break;
607  case 35:
608  if (idx.size() == 1)
609  coerceValue(value, myNumgroups.entries());
610  else if (instance[0] < myNumgroups.entries())
611  {
612  auto && _data = myNumgroups(instance[0]);
613  switch (idx[1])
614  {
615  case 0:
616  coerceValue(value, _data.grouppropagation);
617  break;
618  case 1:
619  coerceValue(value, _data.pointgroupnames);
620  break;
621 
622  }
623  }
624  break;
625  case 36:
626  coerceValue(value, myUsetargetgroup);
627  break;
628  case 37:
629  coerceValue(value, myTargetgroup);
630  break;
631  case 38:
632  coerceValue(value, myModifyboth);
633  break;
634 
635  }
636  }
637 
638  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
639  { doGetParmValue(idx, instance, value); }
640  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
641  { doGetParmValue(idx, instance, value); }
642  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
643  { doGetParmValue(idx, instance, value); }
644  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
645  { doGetParmValue(idx, instance, value); }
646  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
647  { doGetParmValue(idx, instance, value); }
648  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
649  { doGetParmValue(idx, instance, value); }
650  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
651  { doGetParmValue(idx, instance, value); }
652  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
653  { doGetParmValue(idx, instance, value); }
654  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
655  { doGetParmValue(idx, instance, value); }
656  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
657  { doGetParmValue(idx, instance, value); }
658  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
659  { doGetParmValue(idx, instance, value); }
660 
661  template <typename T>
662  void
663  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
664  {
665  if (idx.size() < 1)
666  return;
667  UT_ASSERT(idx.size() == instance.size()+1);
668  if (idx.size() != instance.size()+1)
669  return;
670  switch (idx[0])
671  {
672  case 0:
673  coerceValue(myQuerygroup, value);
674  break;
675  case 1:
676  coerceValue(myPosAttrib, value);
677  break;
678  case 2:
679  coerceValue(mySnaptype, value);
680  break;
681  case 3:
682  coerceValue(myAlgorithm, value);
683  break;
684  case 4:
685  coerceValue(myUseTol3D, value);
686  break;
687  case 5:
688  coerceValue(myTol3d, value);
689  break;
690  case 6:
691  coerceValue(myTargetPtAttrib, value);
692  break;
693  case 7:
694  coerceValue(myTargetClass, value);
695  break;
696  case 8:
697  coerceValue(myUsePositionSnapMethod, value);
698  break;
699  case 9:
700  coerceValue(myPositionSnapMethod, value);
701  break;
702  case 10:
703  coerceValue(myUseradiusattrib, value);
704  break;
705  case 11:
706  coerceValue(myRadiusattrib, value);
707  break;
708  case 12:
709  coerceValue(myUsematchattrib, value);
710  break;
711  case 13:
712  coerceValue(myMatchattrib, value);
713  break;
714  case 14:
715  coerceValue(myMatchtype, value);
716  break;
717  case 15:
718  coerceValue(myMatchTol, value);
719  break;
720  case 16:
721  coerceValue(myGridtype, value);
722  break;
723  case 17:
724  coerceValue(myGridspacing, value);
725  break;
726  case 18:
727  coerceValue(myGridlines, value);
728  break;
729  case 19:
730  coerceValue(myGridpow2, value);
731  break;
732  case 20:
733  coerceValue(myGridoffset, value);
734  break;
735  case 21:
736  coerceValue(myGridround, value);
737  break;
738  case 22:
739  coerceValue(myUseGridTol, value);
740  break;
741  case 23:
742  coerceValue(myGridtol, value);
743  break;
744  case 24:
745  coerceValue(myConsolidateSnappedPoints, value);
746  break;
747  case 25:
748  coerceValue(myKeepConsolidatedPoints, value);
749  break;
750  case 26:
751  coerceValue(myDelDegen, value);
752  break;
753  case 27:
754  coerceValue(myDelDegenPoints, value);
755  break;
756  case 28:
757  coerceValue(myDelUnusedPoints, value);
758  break;
759  case 29:
760  coerceValue(myRecomputenml, value);
761  break;
762  case 30:
763  coerceValue(myCreatesnappedgroup, value);
764  break;
765  case 31:
766  coerceValue(mySnappedgroupname, value);
767  break;
768  case 32:
769  coerceValue(myCreatesnappedattrib, value);
770  break;
771  case 33:
772  coerceValue(mySnappedattribname, value);
773  break;
774  case 34:
775  if (idx.size() == 1)
776  {
777  exint newsize;
778  coerceValue(newsize, value);
779  myNumpointattribs.setSize(newsize);
780  }
781  else
782  {
783  myNumpointattribs.setSizeIfNeeded(instance[0]+1);
784  auto && _data = myNumpointattribs(instance[0]);
785  switch (idx[1])
786  {
787  case 0:
788  coerceValue(_data.attribsnapmethod, value);
789  break;
790  case 1:
791  coerceValue(_data.pointattribnames, value);
792  break;
793 
794  }
795  }
796  break;
797  case 35:
798  if (idx.size() == 1)
799  {
800  exint newsize;
801  coerceValue(newsize, value);
802  myNumgroups.setSize(newsize);
803  }
804  else
805  {
806  myNumgroups.setSizeIfNeeded(instance[0]+1);
807  auto && _data = myNumgroups(instance[0]);
808  switch (idx[1])
809  {
810  case 0:
811  coerceValue(_data.grouppropagation, value);
812  break;
813  case 1:
814  coerceValue(_data.pointgroupnames, value);
815  break;
816 
817  }
818  }
819  break;
820  case 36:
821  coerceValue(myUsetargetgroup, value);
822  break;
823  case 37:
824  coerceValue(myTargetgroup, value);
825  break;
826  case 38:
827  coerceValue(myModifyboth, value);
828  break;
829 
830  }
831  }
832 
833  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
834  { doSetParmValue(idx, instance, value); }
835  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
836  { doSetParmValue(idx, instance, value); }
837  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
838  { doSetParmValue(idx, instance, value); }
839  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
840  { doSetParmValue(idx, instance, value); }
841  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
842  { doSetParmValue(idx, instance, value); }
843  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
844  { doSetParmValue(idx, instance, value); }
845  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
846  { doSetParmValue(idx, instance, value); }
847  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
848  { doSetParmValue(idx, instance, value); }
849  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
850  { doSetParmValue(idx, instance, value); }
851  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
852  { doSetParmValue(idx, instance, value); }
853  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
854  { doSetParmValue(idx, instance, value); }
855 
856  exint getNestNumParms(TempIndex idx) const override
857  {
858  if (idx.size() == 0)
859  return 39;
860  switch (idx[0])
861  {
862  case 34:
863  return 2;
864  case 35:
865  return 2;
866 
867  }
868  // Invalid
869  return 0;
870  }
871 
872  const char *getNestParmName(TempIndex fieldnum) const override
873  {
874  if (fieldnum.size() < 1)
875  return 0;
876  switch (fieldnum[0])
877  {
878  case 0:
879  return "querygroup";
880  case 1:
881  return "posattrib";
882  case 2:
883  return "snaptype";
884  case 3:
885  return "algorithm";
886  case 4:
887  return "usetol3d";
888  case 5:
889  return "tol3d";
890  case 6:
891  return "targetptattrib";
892  case 7:
893  return "targetclass";
894  case 8:
895  return "usepositionsnapmethod";
896  case 9:
897  return "positionsnapmethod";
898  case 10:
899  return "useradiusattrib";
900  case 11:
901  return "radiusattrib";
902  case 12:
903  return "usematchattrib";
904  case 13:
905  return "matchattrib";
906  case 14:
907  return "matchtype";
908  case 15:
909  return "matchtol";
910  case 16:
911  return "gridtype";
912  case 17:
913  return "gridspacing";
914  case 18:
915  return "gridlines";
916  case 19:
917  return "gridpow2";
918  case 20:
919  return "gridoffset";
920  case 21:
921  return "gridround";
922  case 22:
923  return "usegridtol";
924  case 23:
925  return "gridtol";
926  case 24:
927  return "consolidatesnappedpoints";
928  case 25:
929  return "keepconsolidatedpoints";
930  case 26:
931  return "deldegen";
932  case 27:
933  return "deldegenpoints";
934  case 28:
935  return "delunusedpoints";
936  case 29:
937  return "recomputenml";
938  case 30:
939  return "createsnappedgroup";
940  case 31:
941  return "snappedgroupname";
942  case 32:
943  return "createsnappedattrib";
944  case 33:
945  return "snappedattribname";
946  case 34:
947  if (fieldnum.size() == 1)
948  return "numpointattribs";
949  switch (fieldnum[1])
950  {
951  case 0:
952  return "attribsnapmethod#";
953  case 1:
954  return "pointattribnames#";
955 
956  }
957  return 0;
958  case 35:
959  if (fieldnum.size() == 1)
960  return "numgroups";
961  switch (fieldnum[1])
962  {
963  case 0:
964  return "grouppropagation#";
965  case 1:
966  return "pointgroupnames#";
967 
968  }
969  return 0;
970  case 36:
971  return "usetargetgroup";
972  case 37:
973  return "targetgroup";
974  case 38:
975  return "modifyboth";
976 
977  }
978  return 0;
979  }
980 
981  ParmType getNestParmType(TempIndex fieldnum) const override
982  {
983  if (fieldnum.size() < 1)
984  return PARM_UNSUPPORTED;
985  switch (fieldnum[0])
986  {
987  case 0:
988  return PARM_STRING;
989  case 1:
990  return PARM_STRING;
991  case 2:
992  return PARM_INTEGER;
993  case 3:
994  return PARM_INTEGER;
995  case 4:
996  return PARM_INTEGER;
997  case 5:
998  return PARM_FLOAT;
999  case 6:
1000  return PARM_STRING;
1001  case 7:
1002  return PARM_INTEGER;
1003  case 8:
1004  return PARM_INTEGER;
1005  case 9:
1006  return PARM_INTEGER;
1007  case 10:
1008  return PARM_INTEGER;
1009  case 11:
1010  return PARM_STRING;
1011  case 12:
1012  return PARM_INTEGER;
1013  case 13:
1014  return PARM_STRING;
1015  case 14:
1016  return PARM_INTEGER;
1017  case 15:
1018  return PARM_FLOAT;
1019  case 16:
1020  return PARM_INTEGER;
1021  case 17:
1022  return PARM_VECTOR3;
1023  case 18:
1024  return PARM_VECTOR3;
1025  case 19:
1026  return PARM_VECTOR3;
1027  case 20:
1028  return PARM_VECTOR3;
1029  case 21:
1030  return PARM_INTEGER;
1031  case 22:
1032  return PARM_INTEGER;
1033  case 23:
1034  return PARM_FLOAT;
1035  case 24:
1036  return PARM_INTEGER;
1037  case 25:
1038  return PARM_INTEGER;
1039  case 26:
1040  return PARM_INTEGER;
1041  case 27:
1042  return PARM_INTEGER;
1043  case 28:
1044  return PARM_INTEGER;
1045  case 29:
1046  return PARM_INTEGER;
1047  case 30:
1048  return PARM_INTEGER;
1049  case 31:
1050  return PARM_STRING;
1051  case 32:
1052  return PARM_INTEGER;
1053  case 33:
1054  return PARM_STRING;
1055  case 34:
1056  if (fieldnum.size() == 1)
1057  return PARM_MULTIPARM;
1058  switch (fieldnum[1])
1059  {
1060  case 0:
1061  return PARM_INTEGER;
1062  case 1:
1063  return PARM_STRING;
1064 
1065  }
1066  return PARM_UNSUPPORTED;
1067  case 35:
1068  if (fieldnum.size() == 1)
1069  return PARM_MULTIPARM;
1070  switch (fieldnum[1])
1071  {
1072  case 0:
1073  return PARM_INTEGER;
1074  case 1:
1075  return PARM_STRING;
1076 
1077  }
1078  return PARM_UNSUPPORTED;
1079  case 36:
1080  return PARM_INTEGER;
1081  case 37:
1082  return PARM_STRING;
1083  case 38:
1084  return PARM_INTEGER;
1085 
1086  }
1087  return PARM_UNSUPPORTED;
1088  }
1089 
1090  // Boiler plate to load individual types.
1091  static void loadData(UT_IStream &is, int64 &v)
1092  { is.bread(&v, 1); }
1093  static void loadData(UT_IStream &is, bool &v)
1094  { int64 iv; is.bread(&iv, 1); v = iv; }
1095  static void loadData(UT_IStream &is, fpreal64 &v)
1096  { is.bread<fpreal64>(&v, 1); }
1097  static void loadData(UT_IStream &is, UT_Vector2D &v)
1098  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1099  static void loadData(UT_IStream &is, UT_Vector3D &v)
1100  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1101  is.bread<fpreal64>(&v.z(), 1); }
1102  static void loadData(UT_IStream &is, UT_Vector4D &v)
1103  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1104  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1105  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1106  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1107  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1108  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1109  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1110  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1111  static void loadData(UT_IStream &is, UT_Vector2I &v)
1112  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1113  static void loadData(UT_IStream &is, UT_Vector3I &v)
1114  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1115  is.bread<int64>(&v.z(), 1); }
1116  static void loadData(UT_IStream &is, UT_Vector4I &v)
1117  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1118  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1120  { is.bread(v); }
1122  { UT_StringHolder rampdata;
1123  loadData(is, rampdata);
1124  if (rampdata.isstring())
1125  {
1126  v.reset(new UT_Ramp());
1127  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1128  v->load(istr);
1129  }
1130  else v.reset();
1131  }
1134  loadData(is, data);
1135  if (data.isstring())
1136  {
1137  // Find the data type.
1138  const char *colon = UT_StringWrap(data).findChar(':');
1139  if (colon)
1140  {
1141  int typelen = colon - data.buffer();
1143  type.strncpy(data.buffer(), typelen);
1144  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1145 
1146  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1147  }
1148  }
1149  else v.reset();
1150  }
1151 
1152  static void saveData(std::ostream &os, int64 v)
1153  { UTwrite(os, &v); }
1154  static void saveData(std::ostream &os, bool v)
1155  { int64 iv = v; UTwrite(os, &iv); }
1156  static void saveData(std::ostream &os, fpreal64 v)
1157  { UTwrite<fpreal64>(os, &v); }
1158  static void saveData(std::ostream &os, UT_Vector2D v)
1159  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1160  static void saveData(std::ostream &os, UT_Vector3D v)
1161  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1162  UTwrite<fpreal64>(os, &v.z()); }
1163  static void saveData(std::ostream &os, UT_Vector4D v)
1164  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1165  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1166  static void saveData(std::ostream &os, UT_Matrix2D v)
1168  static void saveData(std::ostream &os, UT_Matrix3D v)
1170  static void saveData(std::ostream &os, UT_Matrix4D v)
1172  static void saveData(std::ostream &os, UT_StringHolder s)
1173  { UT_StringWrap(s).saveBinary(os); }
1174  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1176  UT_OStringStream ostr;
1177  if (s) s->save(ostr);
1178  result = ostr.str();
1179  saveData(os, result);
1180  }
1181  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1183  UT_OStringStream ostr;
1184  if (s)
1185  {
1186  ostr << s->getDataTypeToken();
1187  ostr << ":";
1188  s->saveBinary(ostr);
1189  }
1190  result = ostr.str();
1191  saveData(os, result);
1192  }
1193 
1194 
1195  void save(std::ostream &os) const
1196  {
1197  int32 v = version();
1198  UTwrite(os, &v);
1199  saveData(os, myQuerygroup);
1200  saveData(os, myPosAttrib);
1201  saveData(os, mySnaptype);
1202  saveData(os, myAlgorithm);
1203  saveData(os, myUseTol3D);
1204  saveData(os, myTol3d);
1205  saveData(os, myTargetPtAttrib);
1206  saveData(os, myTargetClass);
1207  saveData(os, myUsePositionSnapMethod);
1208  saveData(os, myPositionSnapMethod);
1209  saveData(os, myUseradiusattrib);
1210  saveData(os, myRadiusattrib);
1211  saveData(os, myUsematchattrib);
1212  saveData(os, myMatchattrib);
1213  saveData(os, myMatchtype);
1214  saveData(os, myMatchTol);
1215  saveData(os, myGridtype);
1216  saveData(os, myGridspacing);
1217  saveData(os, myGridlines);
1218  saveData(os, myGridpow2);
1219  saveData(os, myGridoffset);
1220  saveData(os, myGridround);
1221  saveData(os, myUseGridTol);
1222  saveData(os, myGridtol);
1223  saveData(os, myConsolidateSnappedPoints);
1224  saveData(os, myKeepConsolidatedPoints);
1225  saveData(os, myDelDegen);
1226  saveData(os, myDelDegenPoints);
1227  saveData(os, myDelUnusedPoints);
1228  saveData(os, myRecomputenml);
1229  saveData(os, myCreatesnappedgroup);
1230  saveData(os, mySnappedgroupname);
1231  saveData(os, myCreatesnappedattrib);
1232  saveData(os, mySnappedattribname);
1233  {
1234  int64 length = myNumpointattribs.entries();
1235  UTwrite(os, &length);
1236  for (exint i = 0; i < length; i++)
1237  {
1238  saveData(os, myNumpointattribs(i).attribsnapmethod);
1239  saveData(os, myNumpointattribs(i).pointattribnames);
1240 
1241  }
1242  }
1243  {
1244  int64 length = myNumgroups.entries();
1245  UTwrite(os, &length);
1246  for (exint i = 0; i < length; i++)
1247  {
1248  saveData(os, myNumgroups(i).grouppropagation);
1249  saveData(os, myNumgroups(i).pointgroupnames);
1250 
1251  }
1252  }
1253  saveData(os, myUsetargetgroup);
1254  saveData(os, myTargetgroup);
1255  saveData(os, myModifyboth);
1256 
1257  }
1258 
1259  bool load(UT_IStream &is)
1260  {
1261  int32 v;
1262  is.bread(&v, 1);
1263  if (version() != v)
1264  {
1265  // Fail incompatible versions
1266  return false;
1267  }
1268  loadData(is, myQuerygroup);
1269  loadData(is, myPosAttrib);
1270  loadData(is, mySnaptype);
1271  loadData(is, myAlgorithm);
1272  loadData(is, myUseTol3D);
1273  loadData(is, myTol3d);
1274  loadData(is, myTargetPtAttrib);
1275  loadData(is, myTargetClass);
1276  loadData(is, myUsePositionSnapMethod);
1277  loadData(is, myPositionSnapMethod);
1278  loadData(is, myUseradiusattrib);
1279  loadData(is, myRadiusattrib);
1280  loadData(is, myUsematchattrib);
1281  loadData(is, myMatchattrib);
1282  loadData(is, myMatchtype);
1283  loadData(is, myMatchTol);
1284  loadData(is, myGridtype);
1285  loadData(is, myGridspacing);
1286  loadData(is, myGridlines);
1287  loadData(is, myGridpow2);
1288  loadData(is, myGridoffset);
1289  loadData(is, myGridround);
1290  loadData(is, myUseGridTol);
1291  loadData(is, myGridtol);
1292  loadData(is, myConsolidateSnappedPoints);
1293  loadData(is, myKeepConsolidatedPoints);
1294  loadData(is, myDelDegen);
1295  loadData(is, myDelDegenPoints);
1296  loadData(is, myDelUnusedPoints);
1297  loadData(is, myRecomputenml);
1298  loadData(is, myCreatesnappedgroup);
1299  loadData(is, mySnappedgroupname);
1300  loadData(is, myCreatesnappedattrib);
1301  loadData(is, mySnappedattribname);
1302  {
1303  int64 length;
1304  is.read(&length, 1);
1305  myNumpointattribs.entries(length);
1306  for (exint i = 0; i < length; i++)
1307  {
1308  loadData(is, myNumpointattribs(i).attribsnapmethod);
1309  loadData(is, myNumpointattribs(i).pointattribnames);
1310 
1311  }
1312  }
1313  {
1314  int64 length;
1315  is.read(&length, 1);
1316  myNumgroups.entries(length);
1317  for (exint i = 0; i < length; i++)
1318  {
1319  loadData(is, myNumgroups(i).grouppropagation);
1320  loadData(is, myNumgroups(i).pointgroupnames);
1321 
1322  }
1323  }
1324  loadData(is, myUsetargetgroup);
1325  loadData(is, myTargetgroup);
1326  loadData(is, myModifyboth);
1327 
1328  return true;
1329  }
1330 
1331  const UT_StringHolder & getQuerygroup() const { return myQuerygroup; }
1332  void setQuerygroup(const UT_StringHolder & val) { myQuerygroup = val; }
1334  {
1335  SOP_Node *thissop = cookparms.getNode();
1336  if (!thissop) return getQuerygroup();
1338  OP_Utils::evalOpParm(result, thissop, "querygroup", cookparms.getCookTime(), 0);
1339  return result;
1340  }
1341  const UT_StringHolder & getPosAttrib() const { return myPosAttrib; }
1342  void setPosAttrib(const UT_StringHolder & val) { myPosAttrib = val; }
1344  {
1345  SOP_Node *thissop = cookparms.getNode();
1346  if (!thissop) return getPosAttrib();
1348  OP_Utils::evalOpParm(result, thissop, "posattrib", cookparms.getCookTime(), 0);
1349  return result;
1350  }
1351  Snaptype getSnaptype() const { return Snaptype(mySnaptype); }
1352  void setSnaptype(Snaptype val) { mySnaptype = int64(val); }
1354  {
1355  SOP_Node *thissop = cookparms.getNode();
1356  if (!thissop) return getSnaptype();
1357  int64 result;
1358  OP_Utils::evalOpParm(result, thissop, "snaptype", cookparms.getCookTime(), 0);
1359  return Snaptype(result);
1360  }
1361  Algorithm getAlgorithm() const { return Algorithm(myAlgorithm); }
1362  void setAlgorithm(Algorithm val) { myAlgorithm = int64(val); }
1364  {
1365  SOP_Node *thissop = cookparms.getNode();
1366  if (!thissop) return getAlgorithm();
1367  int64 result;
1368  OP_Utils::evalOpParm(result, thissop, "algorithm", cookparms.getCookTime(), 0);
1369  return Algorithm(result);
1370  }
1371  bool getUseTol3D() const { return myUseTol3D; }
1372  void setUseTol3D(bool val) { myUseTol3D = val; }
1373  bool opUseTol3D(const SOP_NodeVerb::CookParms &cookparms) const
1374  {
1375  SOP_Node *thissop = cookparms.getNode();
1376  if (!thissop) return getUseTol3D();
1377  bool result;
1378  OP_Utils::evalOpParm(result, thissop, "usetol3d", cookparms.getCookTime(), 0);
1379  return result;
1380  }
1381  fpreal64 getTol3d() const { return myTol3d; }
1382  void setTol3d(fpreal64 val) { myTol3d = val; }
1383  fpreal64 opTol3d(const SOP_NodeVerb::CookParms &cookparms) const
1384  {
1385  SOP_Node *thissop = cookparms.getNode();
1386  if (!thissop) return getTol3d();
1387  fpreal64 result;
1388  OP_Utils::evalOpParm(result, thissop, "tol3d", cookparms.getCookTime(), 0);
1389  return result;
1390  }
1391  const UT_StringHolder & getTargetPtAttrib() const { return myTargetPtAttrib; }
1392  void setTargetPtAttrib(const UT_StringHolder & val) { myTargetPtAttrib = val; }
1394  {
1395  SOP_Node *thissop = cookparms.getNode();
1396  if (!thissop) return getTargetPtAttrib();
1398  OP_Utils::evalOpParm(result, thissop, "targetptattrib", cookparms.getCookTime(), 0);
1399  return result;
1400  }
1401  TargetClass getTargetClass() const { return TargetClass(myTargetClass); }
1402  void setTargetClass(TargetClass val) { myTargetClass = int64(val); }
1404  {
1405  SOP_Node *thissop = cookparms.getNode();
1406  if (!thissop) return getTargetClass();
1407  int64 result;
1408  OP_Utils::evalOpParm(result, thissop, "targetclass", cookparms.getCookTime(), 0);
1409  return TargetClass(result);
1410  }
1411  bool getUsePositionSnapMethod() const { return myUsePositionSnapMethod; }
1412  void setUsePositionSnapMethod(bool val) { myUsePositionSnapMethod = val; }
1414  {
1415  SOP_Node *thissop = cookparms.getNode();
1416  if (!thissop) return getUsePositionSnapMethod();
1417  bool result;
1418  OP_Utils::evalOpParm(result, thissop, "usepositionsnapmethod", cookparms.getCookTime(), 0);
1419  return result;
1420  }
1421  PositionSnapMethod getPositionSnapMethod() const { return PositionSnapMethod(myPositionSnapMethod); }
1422  void setPositionSnapMethod(PositionSnapMethod val) { myPositionSnapMethod = int64(val); }
1424  {
1425  SOP_Node *thissop = cookparms.getNode();
1426  if (!thissop) return getPositionSnapMethod();
1427  int64 result;
1428  OP_Utils::evalOpParm(result, thissop, "positionsnapmethod", cookparms.getCookTime(), 0);
1429  return PositionSnapMethod(result);
1430  }
1431  bool getUseradiusattrib() const { return myUseradiusattrib; }
1432  void setUseradiusattrib(bool val) { myUseradiusattrib = val; }
1433  bool opUseradiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
1434  {
1435  SOP_Node *thissop = cookparms.getNode();
1436  if (!thissop) return getUseradiusattrib();
1437  bool result;
1438  OP_Utils::evalOpParm(result, thissop, "useradiusattrib", cookparms.getCookTime(), 0);
1439  return result;
1440  }
1441  const UT_StringHolder & getRadiusattrib() const { return myRadiusattrib; }
1442  void setRadiusattrib(const UT_StringHolder & val) { myRadiusattrib = val; }
1444  {
1445  SOP_Node *thissop = cookparms.getNode();
1446  if (!thissop) return getRadiusattrib();
1448  OP_Utils::evalOpParm(result, thissop, "radiusattrib", cookparms.getCookTime(), 0);
1449  return result;
1450  }
1451  bool getUsematchattrib() const { return myUsematchattrib; }
1452  void setUsematchattrib(bool val) { myUsematchattrib = val; }
1453  bool opUsematchattrib(const SOP_NodeVerb::CookParms &cookparms) const
1454  {
1455  SOP_Node *thissop = cookparms.getNode();
1456  if (!thissop) return getUsematchattrib();
1457  bool result;
1458  OP_Utils::evalOpParm(result, thissop, "usematchattrib", cookparms.getCookTime(), 0);
1459  return result;
1460  }
1461  const UT_StringHolder & getMatchattrib() const { return myMatchattrib; }
1462  void setMatchattrib(const UT_StringHolder & val) { myMatchattrib = val; }
1464  {
1465  SOP_Node *thissop = cookparms.getNode();
1466  if (!thissop) return getMatchattrib();
1468  OP_Utils::evalOpParm(result, thissop, "matchattrib", cookparms.getCookTime(), 0);
1469  return result;
1470  }
1471  Matchtype getMatchtype() const { return Matchtype(myMatchtype); }
1472  void setMatchtype(Matchtype val) { myMatchtype = int64(val); }
1474  {
1475  SOP_Node *thissop = cookparms.getNode();
1476  if (!thissop) return getMatchtype();
1477  int64 result;
1478  OP_Utils::evalOpParm(result, thissop, "matchtype", cookparms.getCookTime(), 0);
1479  return Matchtype(result);
1480  }
1481  fpreal64 getMatchTol() const { return myMatchTol; }
1482  void setMatchTol(fpreal64 val) { myMatchTol = val; }
1484  {
1485  SOP_Node *thissop = cookparms.getNode();
1486  if (!thissop) return getMatchTol();
1487  fpreal64 result;
1488  OP_Utils::evalOpParm(result, thissop, "matchtol", cookparms.getCookTime(), 0);
1489  return result;
1490  }
1491  Gridtype getGridtype() const { return Gridtype(myGridtype); }
1492  void setGridtype(Gridtype val) { myGridtype = int64(val); }
1494  {
1495  SOP_Node *thissop = cookparms.getNode();
1496  if (!thissop) return getGridtype();
1497  int64 result;
1498  OP_Utils::evalOpParm(result, thissop, "gridtype", cookparms.getCookTime(), 0);
1499  return Gridtype(result);
1500  }
1501  UT_Vector3D getGridspacing() const { return myGridspacing; }
1502  void setGridspacing(UT_Vector3D val) { myGridspacing = val; }
1504  {
1505  SOP_Node *thissop = cookparms.getNode();
1506  if (!thissop) return getGridspacing();
1508  OP_Utils::evalOpParm(result, thissop, "gridspacing", cookparms.getCookTime(), 0);
1509  return result;
1510  }
1511  UT_Vector3D getGridlines() const { return myGridlines; }
1512  void setGridlines(UT_Vector3D val) { myGridlines = val; }
1514  {
1515  SOP_Node *thissop = cookparms.getNode();
1516  if (!thissop) return getGridlines();
1518  OP_Utils::evalOpParm(result, thissop, "gridlines", cookparms.getCookTime(), 0);
1519  return result;
1520  }
1521  UT_Vector3I getGridpow2() const { return myGridpow2; }
1522  void setGridpow2(UT_Vector3I val) { myGridpow2 = val; }
1524  {
1525  SOP_Node *thissop = cookparms.getNode();
1526  if (!thissop) return getGridpow2();
1528  OP_Utils::evalOpParm(result, thissop, "gridpow2", cookparms.getCookTime(), 0);
1529  return result;
1530  }
1531  UT_Vector3D getGridoffset() const { return myGridoffset; }
1532  void setGridoffset(UT_Vector3D val) { myGridoffset = val; }
1534  {
1535  SOP_Node *thissop = cookparms.getNode();
1536  if (!thissop) return getGridoffset();
1538  OP_Utils::evalOpParm(result, thissop, "gridoffset", cookparms.getCookTime(), 0);
1539  return result;
1540  }
1541  Gridround getGridround() const { return Gridround(myGridround); }
1542  void setGridround(Gridround val) { myGridround = int64(val); }
1544  {
1545  SOP_Node *thissop = cookparms.getNode();
1546  if (!thissop) return getGridround();
1547  int64 result;
1548  OP_Utils::evalOpParm(result, thissop, "gridround", cookparms.getCookTime(), 0);
1549  return Gridround(result);
1550  }
1551  bool getUseGridTol() const { return myUseGridTol; }
1552  void setUseGridTol(bool val) { myUseGridTol = val; }
1553  bool opUseGridTol(const SOP_NodeVerb::CookParms &cookparms) const
1554  {
1555  SOP_Node *thissop = cookparms.getNode();
1556  if (!thissop) return getUseGridTol();
1557  bool result;
1558  OP_Utils::evalOpParm(result, thissop, "usegridtol", cookparms.getCookTime(), 0);
1559  return result;
1560  }
1561  fpreal64 getGridtol() const { return myGridtol; }
1562  void setGridtol(fpreal64 val) { myGridtol = val; }
1564  {
1565  SOP_Node *thissop = cookparms.getNode();
1566  if (!thissop) return getGridtol();
1567  fpreal64 result;
1568  OP_Utils::evalOpParm(result, thissop, "gridtol", cookparms.getCookTime(), 0);
1569  return result;
1570  }
1571  bool getConsolidateSnappedPoints() const { return myConsolidateSnappedPoints; }
1572  void setConsolidateSnappedPoints(bool val) { myConsolidateSnappedPoints = val; }
1574  {
1575  SOP_Node *thissop = cookparms.getNode();
1576  if (!thissop) return getConsolidateSnappedPoints();
1577  bool result;
1578  OP_Utils::evalOpParm(result, thissop, "consolidatesnappedpoints", cookparms.getCookTime(), 0);
1579  return result;
1580  }
1581  bool getKeepConsolidatedPoints() const { return myKeepConsolidatedPoints; }
1582  void setKeepConsolidatedPoints(bool val) { myKeepConsolidatedPoints = val; }
1584  {
1585  SOP_Node *thissop = cookparms.getNode();
1586  if (!thissop) return getKeepConsolidatedPoints();
1587  bool result;
1588  OP_Utils::evalOpParm(result, thissop, "keepconsolidatedpoints", cookparms.getCookTime(), 0);
1589  return result;
1590  }
1591  bool getDelDegen() const { return myDelDegen; }
1592  void setDelDegen(bool val) { myDelDegen = val; }
1593  bool opDelDegen(const SOP_NodeVerb::CookParms &cookparms) const
1594  {
1595  SOP_Node *thissop = cookparms.getNode();
1596  if (!thissop) return getDelDegen();
1597  bool result;
1598  OP_Utils::evalOpParm(result, thissop, "deldegen", cookparms.getCookTime(), 0);
1599  return result;
1600  }
1601  bool getDelDegenPoints() const { return myDelDegenPoints; }
1602  void setDelDegenPoints(bool val) { myDelDegenPoints = val; }
1603  bool opDelDegenPoints(const SOP_NodeVerb::CookParms &cookparms) const
1604  {
1605  SOP_Node *thissop = cookparms.getNode();
1606  if (!thissop) return getDelDegenPoints();
1607  bool result;
1608  OP_Utils::evalOpParm(result, thissop, "deldegenpoints", cookparms.getCookTime(), 0);
1609  return result;
1610  }
1611  bool getDelUnusedPoints() const { return myDelUnusedPoints; }
1612  void setDelUnusedPoints(bool val) { myDelUnusedPoints = val; }
1613  bool opDelUnusedPoints(const SOP_NodeVerb::CookParms &cookparms) const
1614  {
1615  SOP_Node *thissop = cookparms.getNode();
1616  if (!thissop) return getDelUnusedPoints();
1617  bool result;
1618  OP_Utils::evalOpParm(result, thissop, "delunusedpoints", cookparms.getCookTime(), 0);
1619  return result;
1620  }
1621  bool getRecomputenml() const { return myRecomputenml; }
1622  void setRecomputenml(bool val) { myRecomputenml = val; }
1623  bool opRecomputenml(const SOP_NodeVerb::CookParms &cookparms) const
1624  {
1625  SOP_Node *thissop = cookparms.getNode();
1626  if (!thissop) return getRecomputenml();
1627  bool result;
1628  OP_Utils::evalOpParm(result, thissop, "recomputenml", cookparms.getCookTime(), 0);
1629  return result;
1630  }
1631  bool getCreatesnappedgroup() const { return myCreatesnappedgroup; }
1632  void setCreatesnappedgroup(bool val) { myCreatesnappedgroup = val; }
1633  bool opCreatesnappedgroup(const SOP_NodeVerb::CookParms &cookparms) const
1634  {
1635  SOP_Node *thissop = cookparms.getNode();
1636  if (!thissop) return getCreatesnappedgroup();
1637  bool result;
1638  OP_Utils::evalOpParm(result, thissop, "createsnappedgroup", cookparms.getCookTime(), 0);
1639  return result;
1640  }
1641  const UT_StringHolder & getSnappedgroupname() const { return mySnappedgroupname; }
1642  void setSnappedgroupname(const UT_StringHolder & val) { mySnappedgroupname = val; }
1644  {
1645  SOP_Node *thissop = cookparms.getNode();
1646  if (!thissop) return getSnappedgroupname();
1648  OP_Utils::evalOpParm(result, thissop, "snappedgroupname", cookparms.getCookTime(), 0);
1649  return result;
1650  }
1651  bool getCreatesnappedattrib() const { return myCreatesnappedattrib; }
1652  void setCreatesnappedattrib(bool val) { myCreatesnappedattrib = val; }
1653  bool opCreatesnappedattrib(const SOP_NodeVerb::CookParms &cookparms) const
1654  {
1655  SOP_Node *thissop = cookparms.getNode();
1656  if (!thissop) return getCreatesnappedattrib();
1657  bool result;
1658  OP_Utils::evalOpParm(result, thissop, "createsnappedattrib", cookparms.getCookTime(), 0);
1659  return result;
1660  }
1661  const UT_StringHolder & getSnappedattribname() const { return mySnappedattribname; }
1662  void setSnappedattribname(const UT_StringHolder & val) { mySnappedattribname = val; }
1664  {
1665  SOP_Node *thissop = cookparms.getNode();
1666  if (!thissop) return getSnappedattribname();
1668  OP_Utils::evalOpParm(result, thissop, "snappedattribname", cookparms.getCookTime(), 0);
1669  return result;
1670  }
1671  const UT_Array<Numpointattribs> &getNumpointattribs() const { return myNumpointattribs; }
1672  void setNumpointattribs(const UT_Array<Numpointattribs> &val) { myNumpointattribs = val; }
1674  {
1675  SOP_Node *thissop = cookparms.getNode();
1676  if (!thissop) return getNumpointattribs().entries();
1677  exint result;
1678  OP_Utils::evalOpParm(result, thissop, "numpointattribs", cookparms.getCookTime(), 0);
1679  return result;
1680  }
1682  {
1683  SOP_Node *thissop = cookparms.getNode();
1684  if (!thissop) return (myNumpointattribs(_idx).attribsnapmethod);
1685  int _parmidx = _idx + 1;
1686  int64 result;
1687  OP_Utils::evalOpParmInst(result, thissop, "attribsnapmethod#", &_parmidx, cookparms.getCookTime(), 0);
1688  return (result);
1689  }
1691  {
1692  SOP_Node *thissop = cookparms.getNode();
1693  if (!thissop) return (myNumpointattribs(_idx).pointattribnames);
1694  int _parmidx = _idx + 1;
1696  OP_Utils::evalOpParmInst(result, thissop, "pointattribnames#", &_parmidx, cookparms.getCookTime(), 0);
1697  return (result);
1698  }
1699 
1700  const UT_Array<Numgroups> &getNumgroups() const { return myNumgroups; }
1701  void setNumgroups(const UT_Array<Numgroups> &val) { myNumgroups = val; }
1703  {
1704  SOP_Node *thissop = cookparms.getNode();
1705  if (!thissop) return getNumgroups().entries();
1706  exint result;
1707  OP_Utils::evalOpParm(result, thissop, "numgroups", cookparms.getCookTime(), 0);
1708  return result;
1709  }
1711  {
1712  SOP_Node *thissop = cookparms.getNode();
1713  if (!thissop) return (myNumgroups(_idx).grouppropagation);
1714  int _parmidx = _idx + 1;
1715  int64 result;
1716  OP_Utils::evalOpParmInst(result, thissop, "grouppropagation#", &_parmidx, cookparms.getCookTime(), 0);
1717  return (result);
1718  }
1720  {
1721  SOP_Node *thissop = cookparms.getNode();
1722  if (!thissop) return (myNumgroups(_idx).pointgroupnames);
1723  int _parmidx = _idx + 1;
1725  OP_Utils::evalOpParmInst(result, thissop, "pointgroupnames#", &_parmidx, cookparms.getCookTime(), 0);
1726  return (result);
1727  }
1728 
1729  bool getUsetargetgroup() const { return myUsetargetgroup; }
1730  void setUsetargetgroup(bool val) { myUsetargetgroup = val; }
1731  bool opUsetargetgroup(const SOP_NodeVerb::CookParms &cookparms) const
1732  {
1733  SOP_Node *thissop = cookparms.getNode();
1734  if (!thissop) return getUsetargetgroup();
1735  bool result;
1736  OP_Utils::evalOpParm(result, thissop, "usetargetgroup", cookparms.getCookTime(), 0);
1737  return result;
1738  }
1739  const UT_StringHolder & getTargetgroup() const { return myTargetgroup; }
1740  void setTargetgroup(const UT_StringHolder & val) { myTargetgroup = val; }
1742  {
1743  SOP_Node *thissop = cookparms.getNode();
1744  if (!thissop) return getTargetgroup();
1746  OP_Utils::evalOpParm(result, thissop, "targetgroup", cookparms.getCookTime(), 0);
1747  return result;
1748  }
1749  bool getModifyboth() const { return myModifyboth; }
1750  void setModifyboth(bool val) { myModifyboth = val; }
1751  bool opModifyboth(const SOP_NodeVerb::CookParms &cookparms) const
1752  {
1753  SOP_Node *thissop = cookparms.getNode();
1754  if (!thissop) return getModifyboth();
1755  bool result;
1756  OP_Utils::evalOpParm(result, thissop, "modifyboth", cookparms.getCookTime(), 0);
1757  return result;
1758  }
1759 
1760 private:
1761  UT_StringHolder myQuerygroup;
1762  UT_StringHolder myPosAttrib;
1763  int64 mySnaptype;
1764  int64 myAlgorithm;
1765  bool myUseTol3D;
1766  fpreal64 myTol3d;
1767  UT_StringHolder myTargetPtAttrib;
1768  int64 myTargetClass;
1769  bool myUsePositionSnapMethod;
1770  int64 myPositionSnapMethod;
1771  bool myUseradiusattrib;
1772  UT_StringHolder myRadiusattrib;
1773  bool myUsematchattrib;
1774  UT_StringHolder myMatchattrib;
1775  int64 myMatchtype;
1776  fpreal64 myMatchTol;
1777  int64 myGridtype;
1778  UT_Vector3D myGridspacing;
1779  UT_Vector3D myGridlines;
1780  UT_Vector3I myGridpow2;
1781  UT_Vector3D myGridoffset;
1782  int64 myGridround;
1783  bool myUseGridTol;
1784  fpreal64 myGridtol;
1785  bool myConsolidateSnappedPoints;
1786  bool myKeepConsolidatedPoints;
1787  bool myDelDegen;
1788  bool myDelDegenPoints;
1789  bool myDelUnusedPoints;
1790  bool myRecomputenml;
1791  bool myCreatesnappedgroup;
1792  UT_StringHolder mySnappedgroupname;
1793  bool myCreatesnappedattrib;
1794  UT_StringHolder mySnappedattribname;
1795  UT_Array<Numpointattribs> myNumpointattribs;
1796  UT_Array<Numgroups> myNumgroups;
1797  bool myUsetargetgroup;
1798  UT_StringHolder myTargetgroup;
1799  bool myModifyboth;
1800 
1801 };
bool getUseTol3D() const
GLdouble s
Definition: glew.h:1390
void setCreatesnappedattrib(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool opRecomputenml(const SOP_NodeVerb::CookParms &cookparms) const
bool getDelDegenPoints() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setTol3d(fpreal64 val)
const UT_Array< Numpointattribs > & getNumpointattribs() const
bool opDelDegen(const SOP_NodeVerb::CookParms &cookparms) const
void setUsetargetgroup(bool val)
Algorithm opAlgorithm(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
exint nodeIdx() const
Definition: SOP_NodeVerb.h:114
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
UT_Vector3I opGridpow2(const SOP_NodeVerb::CookParms &cookparms) const
GLenum src
Definition: glew.h:2410
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:640
const UT_StringHolder & getQuerygroup() const
exint getNestNumParms(TempIndex idx) const override
UT_Vector3D opGridlines(const SOP_NodeVerb::CookParms &cookparms) const
bool opDelDegenPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector3D v)
bool operator==(const Numgroups &src) const
void setPosAttrib(const UT_StringHolder &val)
void setMatchtype(Matchtype val)
exint opNumpointattribs(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getGridtol() const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, int *inst, fpreal time, DEP_MicroNode *depnode) const =0
virtual NodeIdx getInput(NodeIdx idx, int input, bool markused=false) const =0
UT_StringHolder opSnappedattribname(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
PositionSnapMethod opPositionSnapMethod(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMatchattrib() const
fpreal getTime() const
Definition: OP_Context.h:60
void copyFrom(const SOP_NodeParms *src) override
GLuint const GLfloat * val
Definition: glew.h:2794
void setModifyboth(bool val)
Snaptype getSnaptype() const
void setGridtype(Gridtype val)
int64 opNumgroups_grouppropagation(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
Gridtype opGridtype(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getTargetgroup() const
void setTargetPtAttrib(const UT_StringHolder &val)
UT_StringHolder opNumpointattribs_pointattribnames(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
bool getConsolidateSnappedPoints() const
Matchtype opMatchtype(const SOP_NodeVerb::CookParms &cookparms) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
UT_StringHolder opPosAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseradiusattrib() const
int64 exint
Definition: SYS_Types.h:125
UT_StringHolder createString(const UT_Array< Numgroups > &list) const
bool operator!=(const Numpointattribs &src) const
void setGridspacing(UT_Vector3D val)
UT_StringHolder opTargetPtAttrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
const SOP_GraphProxy * graph() const
Definition: SOP_NodeVerb.h:113
static void saveData(std::ostream &os, UT_Matrix4D v)
An output stream object that owns its own string buffer storage.
void setGridlines(UT_Vector3D val)
bool opCreatesnappedgroup(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
UT_Vector3D getGridoffset() const
void setDelDegenPoints(bool val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const GLdouble * v
Definition: glew.h:1391
const UT_StringHolder & getTargetPtAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
Snaptype opSnaptype(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< int64 > UT_Vector3I
const UT_StringHolder & getSnappedgroupname() const
Algorithm getAlgorithm() const
void setUsematchattrib(bool val)
bool opUsePositionSnapMethod(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
UT_Vector3D getGridlines() const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
fpreal64 opTol3d(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSnappedattribname() const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
bool load(UT_IStream &is)
UT_Vector3D opGridoffset(const SOP_NodeVerb::CookParms &cookparms) const
bool getDelDegen() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
fpreal64 opGridtol(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
const UT_Array< Numgroups > & getNumgroups() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
Gridtype getGridtype() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setDelDegen(bool val)
bool opDelUnusedPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setSnaptype(Snaptype val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
bool getKeepConsolidatedPoints() const
void setNumpointattribs(const UT_Array< Numpointattribs > &val)
void setNumgroups(const UT_Array< Numgroups > &val)
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:513
static void saveData(std::ostream &os, UT_StringHolder s)
UT_StringHolder opSnappedgroupname(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
Gridround opGridround(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setSnappedgroupname(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
void setUseradiusattrib(bool val)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:28
static void saveData(std::ostream &os, UT_Matrix3D v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
GLint GLenum GLsizei GLint GLsizei const void * data
Definition: glew.h:1379
void setUseTol3D(bool val)
bool opModifyboth(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setUsePositionSnapMethod(bool val)
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:284
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:515
const UT_StringHolder & getPosAttrib() const
exint opNumgroups(const SOP_NodeVerb::CookParms &cookparms) const
void
Definition: png.h:1083
UT_Vector3D getGridspacing() const
UT_StringHolder opQuerygroup(const SOP_NodeVerb::CookParms &cookparms) const
void setGridoffset(UT_Vector3D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
static void saveData(std::ostream &os, bool v)
const GLfloat * c
Definition: glew.h:16296
GLuint GLsizei GLsizei * length
Definition: glew.h:1825
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setKeepConsolidatedPoints(bool val)
long long int64
Definition: SYS_Types.h:116
UT_Vector3I getGridpow2() const
UT_Vector3D opGridspacing(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setUseGridTol(bool val)
static void loadData(UT_IStream &is, bool &v)
UT_Vector3T< fpreal64 > UT_Vector3D
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void saveData(std::ostream &os, int64 v)
bool operator!=(const Numgroups &src) const
void setGridpow2(UT_Vector3I val)
Gridround getGridround() const
bool getUseGridTol() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool getModifyboth() const
SYS_FORCE_INLINE void strcat(const char *src)
UT_StringHolder opRadiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:294
static void saveData(std::ostream &os, UT_Vector4D v)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
Definition: SOP_NodeVerb.h:121
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setTargetgroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:460
fpreal64 getTol3d() const
bool getUsematchattrib() const
bool opUseradiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
bool operator!=(const SOP_Fuse_2_0Parms &src) const
void setSnappedattribname(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
TargetClass getTargetClass() const
static void saveData(std::ostream &os, UT_Matrix2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool getDelUnusedPoints() const
bool opKeepConsolidatedPoints(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getMatchTol() const
void setQuerygroup(const UT_StringHolder &val)
void setConsolidateSnappedPoints(bool val)
fpreal64 fpreal
Definition: SYS_Types.h:277
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
bool operator==(const SOP_Fuse_2_0Parms &src) const
bool getCreatesnappedgroup() const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
bool getCreatesnappedattrib() const
void setTargetClass(TargetClass val)
bool getUsePositionSnapMethod() const
UT_StringHolder opTargetgroup(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void append(char character)
~SOP_Fuse_2_0Parms() override
GLdouble GLdouble GLdouble r
Definition: glew.h:1406
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void saveData(std::ostream &os, fpreal64 v)
#define SOP_API
Definition: SOP_API.h:10
bool opUsetargetgroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
bool getRecomputenml() const
bool opUseTol3D(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
const UT_StringHolder & getRadiusattrib() const
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:511
void setGridtol(fpreal64 val)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:654
static void loadData(UT_IStream &is, int64 &v)
GLuint64EXT * result
Definition: glew.h:14007
void setCreatesnappedgroup(bool val)
bool opUseGridTol(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1367
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:135
int64 opNumpointattribs_attribsnapmethod(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
UT_StringHolder opNumgroups_pointgroupnames(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void setDelUnusedPoints(bool val)
void setRadiusattrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void saveData(std::ostream &os, UT_Vector2D v)
bool opConsolidateSnappedPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setGridround(Gridround val)
void setRecomputenml(bool val)
GLenum GLuint GLsizei const GLchar * buf
Definition: glew.h:2580
void setMatchattrib(const UT_StringHolder &val)
bool opCreatesnappedattrib(const SOP_NodeVerb::CookParms &cookparms) const
Matchtype getMatchtype() const
GLsizei const GLfloat * value
Definition: glew.h:1849
void loadFromOpSubclass(const LoadParms &loadparms) override
fpreal64 opMatchTol(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setAlgorithm(Algorithm val)
const OP_Context & context() const
Definition: SOP_NodeVerb.h:119
const char * getNestParmName(TempIndex fieldnum) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
static void loadData(UT_IStream &is, UT_Vector4I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setMatchTol(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
SYS_FORCE_INLINE bool isstring() const
UT_StringHolder opMatchattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
PositionSnapMethod getPositionSnapMethod() const
UT_StringHolder createString(const UT_Array< Numpointattribs > &list) const
bool opUsematchattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setPositionSnapMethod(PositionSnapMethod val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
type
Definition: core.h:528
bool getUsetargetgroup() const
TargetClass opTargetClass(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Numpointattribs &src) const
ParmType getNestParmType(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override