HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_AttribMirror.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_AttribMirrorEnums
24 {
25  enum class GroupType
26  {
27  VERTICES = 0,
28  POINTS,
29  PRIMS
30  };
31 
33  getToken(GroupType enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case GroupType::VERTICES: return "vertices"_sh;
38  case GroupType::POINTS: return "points"_sh;
39  case GroupType::PRIMS: return "prims"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class MirrorOp
45  {
46  SOURCE = 0,
48  };
49 
51  getToken(MirrorOp enum_value)
52  {
53  using namespace UT::Literal;
54  switch (enum_value) {
55  case MirrorOp::SOURCE: return "source"_sh;
56  case MirrorOp::DESTINATION: return "destination"_sh;
57  default: UT_ASSERT(false); return ""_sh;
58  }
59  }
60 
61  enum class Attrib
62  {
63  COLORATTRIB = 0,
64  UVATTRIB,
66  };
67 
69  getToken(Attrib enum_value)
70  {
71  using namespace UT::Literal;
72  switch (enum_value) {
73  case Attrib::COLORATTRIB: return "colorattrib"_sh;
74  case Attrib::UVATTRIB: return "uvattrib"_sh;
75  case Attrib::OTHERATTRIB: return "otherattrib"_sh;
76  default: UT_ASSERT(false); return ""_sh;
77  }
78  }
79 
80  enum class Mirroringmethod
81  {
82  PLANE = 0,
83  TOPOLOGY,
84  MAPPING
85  };
86 
89  {
90  using namespace UT::Literal;
91  switch (enum_value) {
92  case Mirroringmethod::PLANE: return "plane"_sh;
93  case Mirroringmethod::TOPOLOGY: return "topology"_sh;
94  case Mirroringmethod::MAPPING: return "mapping"_sh;
95  default: UT_ASSERT(false); return ""_sh;
96  }
97  }
98 
99  enum class AttribMirrorOp
100  {
101  NOMIRROR = 0,
102  UVMIRROR,
103  VECTORMIRROR,
105  };
106 
109  {
110  using namespace UT::Literal;
111  switch (enum_value) {
112  case AttribMirrorOp::NOMIRROR: return "nomirror"_sh;
113  case AttribMirrorOp::UVMIRROR: return "uvmirror"_sh;
114  case AttribMirrorOp::VECTORMIRROR: return "vectormirror"_sh;
115  case AttribMirrorOp::POINTMIRROR: return "pointmirror"_sh;
116  default: UT_ASSERT(false); return ""_sh;
117  }
118  }
119 
120 }
121 
122 
124 {
125 public:
126  static int version() { return 1; }
127 
129  {
130  myGroup = ""_UTsh;
131  myGroupType = 0;
132  myMirrorOp = 1;
133  myAttrib = 0;
134  myAttribName = ""_UTsh;
135  myMirroringmethod = 0;
136  myUseTolerance = false;
137  myTolerance = 0.1;
138  myOrigin = UT_Vector3D(0,0,0);
139  myDist = 0;
140  myDir = UT_Vector3D(1,0,0);
141  myMirroringedge = ""_UTsh;
142  mySourcehint = ""_UTsh;
143  myUseconnectivityattrib = false;
144  myConnectivityattrib = ""_UTsh;
145  myElementmapname = "mirrorelem"_UTsh;
146  myDestgroupname = "mirrordest"_UTsh;
147  myOutputelemmap = false;
148  myMirrorelemattrib = "mirrorelem"_UTsh;
149  myOutputsrcgroup = false;
150  myMirrorsrcgroup = "mirrorsrc"_UTsh;
151  myOutputdestgroup = false;
152  myMirrordestgroup = "mirrordest"_UTsh;
153  myAttribMirrorOp = 0;
154  myUVOrigin = UT_Vector2D(0.5,0.5);
155  myUVAngle = 90;
156  myStringReplace = false;
157  mySearch = "L_*"_UTsh;
158  myReplace = "R_*"_UTsh;
159 
160  }
161 
162  explicit SOP_AttribMirrorParms(const SOP_AttribMirrorParms &) = default;
164  SOP_AttribMirrorParms(SOP_AttribMirrorParms &&) noexcept = default;
165  SOP_AttribMirrorParms &operator=(SOP_AttribMirrorParms &&) noexcept = default;
166 
167  ~SOP_AttribMirrorParms() override {}
168 
170  {
171  if (myGroup != src.myGroup) return false;
172  if (myGroupType != src.myGroupType) return false;
173  if (myMirrorOp != src.myMirrorOp) return false;
174  if (myAttrib != src.myAttrib) return false;
175  if (myAttribName != src.myAttribName) return false;
176  if (myMirroringmethod != src.myMirroringmethod) return false;
177  if (myUseTolerance != src.myUseTolerance) return false;
178  if (myTolerance != src.myTolerance) return false;
179  if (myOrigin != src.myOrigin) return false;
180  if (myDist != src.myDist) return false;
181  if (myDir != src.myDir) return false;
182  if (myMirroringedge != src.myMirroringedge) return false;
183  if (mySourcehint != src.mySourcehint) return false;
184  if (myUseconnectivityattrib != src.myUseconnectivityattrib) return false;
185  if (myConnectivityattrib != src.myConnectivityattrib) return false;
186  if (myElementmapname != src.myElementmapname) return false;
187  if (myDestgroupname != src.myDestgroupname) return false;
188  if (myOutputelemmap != src.myOutputelemmap) return false;
189  if (myMirrorelemattrib != src.myMirrorelemattrib) return false;
190  if (myOutputsrcgroup != src.myOutputsrcgroup) return false;
191  if (myMirrorsrcgroup != src.myMirrorsrcgroup) return false;
192  if (myOutputdestgroup != src.myOutputdestgroup) return false;
193  if (myMirrordestgroup != src.myMirrordestgroup) return false;
194  if (myAttribMirrorOp != src.myAttribMirrorOp) return false;
195  if (myUVOrigin != src.myUVOrigin) return false;
196  if (myUVAngle != src.myUVAngle) return false;
197  if (myStringReplace != src.myStringReplace) return false;
198  if (mySearch != src.mySearch) return false;
199  if (myReplace != src.myReplace) return false;
200 
201  return true;
202  }
204  {
205  return !operator==(src);
206  }
212 
213 
214 
215  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
216  {
217  myGroup = ""_UTsh;
218  if (true)
219  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
220  myGroupType = 0;
221  if (true)
222  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, 0);
223  myMirrorOp = 1;
224  if (true)
225  graph->evalOpParm(myMirrorOp, nodeidx, "usegroupas", time, 0);
226  myAttrib = 0;
227  if (true)
228  graph->evalOpParm(myAttrib, nodeidx, "attrib", time, 0);
229  myAttribName = ""_UTsh;
230  if (true && ( (true&&!(((int64(getAttrib())!=2)))) ) )
231  graph->evalOpParm(myAttribName, nodeidx, "attribname", time, 0);
232  myMirroringmethod = 0;
233  if (true)
234  graph->evalOpParm(myMirroringmethod, nodeidx, "mirroringmethod", time, 0);
235  myUseTolerance = false;
236  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
237  graph->evalOpParm(myUseTolerance, nodeidx, "usetolerance", time, 0);
238  myTolerance = 0.1;
239  if (true && ( (true&&!(((getUseTolerance()==0))||((int64(getMirroringmethod())!=0)))) ) )
240  graph->evalOpParm(myTolerance, nodeidx, "tolerance", time, 0);
241  myOrigin = UT_Vector3D(0,0,0);
242  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
243  graph->evalOpParm(myOrigin, nodeidx, "origin", time, 0);
244  myDist = 0;
245  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
246  graph->evalOpParm(myDist, nodeidx, "dist", time, 0);
247  myDir = UT_Vector3D(1,0,0);
248  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
249  graph->evalOpParm(myDir, nodeidx, "dir", time, 0);
250  myMirroringedge = ""_UTsh;
251  if (true && ( (true&&!(((int64(getMirroringmethod())!=1)))) ) )
252  graph->evalOpParm(myMirroringedge, nodeidx, "mirroringedge", time, 0);
253  mySourcehint = ""_UTsh;
254  if (true && ( (true&&!(((int64(getMirroringmethod())!=1)))) ) )
255  graph->evalOpParm(mySourcehint, nodeidx, "sourcehint", time, 0);
256  myUseconnectivityattrib = false;
257  if (true && ( (true&&!(((int64(getMirroringmethod())!=1)))) ) )
258  graph->evalOpParm(myUseconnectivityattrib, nodeidx, "useconnectivityattrib", time, 0);
259  myConnectivityattrib = ""_UTsh;
260  if (true && ( (true&&!(((getUseconnectivityattrib()==0))||((int64(getMirroringmethod())!=1)))) ) )
261  graph->evalOpParm(myConnectivityattrib, nodeidx, "connectivityattrib", time, 0);
262  myElementmapname = "mirrorelem"_UTsh;
263  if (true && ( (true&&!(((int64(getMirroringmethod())!=2)))) ) )
264  graph->evalOpParm(myElementmapname, nodeidx, "elementmapname", time, 0);
265  myDestgroupname = "mirrordest"_UTsh;
266  if (true && ( (true&&!(((int64(getMirroringmethod())!=2)))) ) )
267  graph->evalOpParm(myDestgroupname, nodeidx, "destgroupname", time, 0);
268  myOutputelemmap = false;
269  if (true)
270  graph->evalOpParm(myOutputelemmap, nodeidx, "outputelemmap", time, 0);
271  myMirrorelemattrib = "mirrorelem"_UTsh;
272  if (true && ( (true&&!(((getOutputelemmap()==0)))) ) )
273  graph->evalOpParm(myMirrorelemattrib, nodeidx, "mirrorelemattrib", time, 0);
274  myOutputsrcgroup = false;
275  if (true)
276  graph->evalOpParm(myOutputsrcgroup, nodeidx, "outputsrcgroup", time, 0);
277  myMirrorsrcgroup = "mirrorsrc"_UTsh;
278  if (true && ( (true&&!(((getOutputsrcgroup()==0)))) ) )
279  graph->evalOpParm(myMirrorsrcgroup, nodeidx, "mirrorsrcgroup", time, 0);
280  myOutputdestgroup = false;
281  if (true)
282  graph->evalOpParm(myOutputdestgroup, nodeidx, "outputdestgroup", time, 0);
283  myMirrordestgroup = "mirrordest"_UTsh;
284  if (true && ( (true&&!(((getOutputdestgroup()==0)))) ) )
285  graph->evalOpParm(myMirrordestgroup, nodeidx, "mirrordestgroup", time, 0);
286  myAttribMirrorOp = 0;
287  if (true && ( (true&&!(((int64(getMirroringmethod())==2)))) ) )
288  graph->evalOpParm(myAttribMirrorOp, nodeidx, "attribmirror", time, 0);
289  myUVOrigin = UT_Vector2D(0.5,0.5);
290  if (true && ( (true&&!(((int64(getMirroringmethod())==2))||((int64(getAttribMirrorOp())!=1)))) ) )
291  graph->evalOpParm(myUVOrigin, nodeidx, "uvorig", time, 0);
292  myUVAngle = 90;
293  if (true && ( (true&&!(((int64(getMirroringmethod())==2))||((int64(getAttribMirrorOp())!=1)))) ) )
294  graph->evalOpParm(myUVAngle, nodeidx, "uvangle", time, 0);
295  myStringReplace = false;
296  if (true)
297  graph->evalOpParm(myStringReplace, nodeidx, "stringreplace", time, 0);
298  mySearch = "L_*"_UTsh;
299  if (true && ( (true&&!(((getStringReplace()==0)))) ) )
300  graph->evalOpParm(mySearch, nodeidx, "search", time, 0);
301  myReplace = "R_*"_UTsh;
302  if (true && ( (true&&!(((getStringReplace()==0)))) ) )
303  graph->evalOpParm(myReplace, nodeidx, "replace", time, 0);
304 
305  }
306 
307 
308  void loadFromOpSubclass(const LoadParms &loadparms) override
309  {
310  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
311  }
312 
313 
314  void copyFrom(const OP_NodeParms *src) override
315  {
316  *this = *((const SOP_AttribMirrorParms *)src);
317  }
318 
319  template <typename T>
320  void
321  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
322  {
323  if (idx.size() < 1)
324  return;
325  UT_ASSERT(idx.size() == instance.size()+1);
326  if (idx.size() != instance.size()+1)
327  return;
328  switch (idx[0])
329  {
330  case 0:
331  coerceValue(value, myGroup);
332  break;
333  case 1:
334  coerceValue(value, myGroupType);
335  break;
336  case 2:
337  coerceValue(value, myMirrorOp);
338  break;
339  case 3:
340  coerceValue(value, myAttrib);
341  break;
342  case 4:
343  coerceValue(value, myAttribName);
344  break;
345  case 5:
346  coerceValue(value, myMirroringmethod);
347  break;
348  case 6:
349  coerceValue(value, myUseTolerance);
350  break;
351  case 7:
352  coerceValue(value, myTolerance);
353  break;
354  case 8:
355  coerceValue(value, myOrigin);
356  break;
357  case 9:
358  coerceValue(value, myDist);
359  break;
360  case 10:
361  coerceValue(value, myDir);
362  break;
363  case 11:
364  coerceValue(value, myMirroringedge);
365  break;
366  case 12:
367  coerceValue(value, mySourcehint);
368  break;
369  case 13:
370  coerceValue(value, myUseconnectivityattrib);
371  break;
372  case 14:
373  coerceValue(value, myConnectivityattrib);
374  break;
375  case 15:
376  coerceValue(value, myElementmapname);
377  break;
378  case 16:
379  coerceValue(value, myDestgroupname);
380  break;
381  case 17:
382  coerceValue(value, myOutputelemmap);
383  break;
384  case 18:
385  coerceValue(value, myMirrorelemattrib);
386  break;
387  case 19:
388  coerceValue(value, myOutputsrcgroup);
389  break;
390  case 20:
391  coerceValue(value, myMirrorsrcgroup);
392  break;
393  case 21:
394  coerceValue(value, myOutputdestgroup);
395  break;
396  case 22:
397  coerceValue(value, myMirrordestgroup);
398  break;
399  case 23:
400  coerceValue(value, myAttribMirrorOp);
401  break;
402  case 24:
403  coerceValue(value, myUVOrigin);
404  break;
405  case 25:
406  coerceValue(value, myUVAngle);
407  break;
408  case 26:
409  coerceValue(value, myStringReplace);
410  break;
411  case 27:
412  coerceValue(value, mySearch);
413  break;
414  case 28:
415  coerceValue(value, myReplace);
416  break;
417 
418  }
419  }
420 
421  bool isParmColorRamp(exint idx) const override
422  {
423  switch (idx)
424  {
425 
426  }
427  return false;
428  }
429 
430  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
431  { doGetParmValue(idx, instance, value); }
432  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
433  { doGetParmValue(idx, instance, value); }
434  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
435  { doGetParmValue(idx, instance, value); }
436  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
437  { doGetParmValue(idx, instance, value); }
438  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
439  { doGetParmValue(idx, instance, value); }
440  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
441  { doGetParmValue(idx, instance, value); }
442  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
443  { doGetParmValue(idx, instance, value); }
444  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
445  { doGetParmValue(idx, instance, value); }
446  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
447  { doGetParmValue(idx, instance, value); }
448  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
449  { doGetParmValue(idx, instance, value); }
450  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
451  { doGetParmValue(idx, instance, value); }
452 
453  template <typename T>
454  void
455  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
456  {
457  if (idx.size() < 1)
458  return;
459  UT_ASSERT(idx.size() == instance.size()+1);
460  if (idx.size() != instance.size()+1)
461  return;
462  switch (idx[0])
463  {
464  case 0:
465  coerceValue(myGroup, ( ( value ) ));
466  break;
467  case 1:
468  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(2, value ) ));
469  break;
470  case 2:
471  coerceValue(myMirrorOp, clampMinValue(0, clampMaxValue(1, value ) ));
472  break;
473  case 3:
474  coerceValue(myAttrib, clampMinValue(0, clampMaxValue(2, value ) ));
475  break;
476  case 4:
477  coerceValue(myAttribName, ( ( value ) ));
478  break;
479  case 5:
480  coerceValue(myMirroringmethod, clampMinValue(0, clampMaxValue(2, value ) ));
481  break;
482  case 6:
483  coerceValue(myUseTolerance, ( ( value ) ));
484  break;
485  case 7:
486  coerceValue(myTolerance, ( ( value ) ));
487  break;
488  case 8:
489  coerceValue(myOrigin, ( ( value ) ));
490  break;
491  case 9:
492  coerceValue(myDist, ( ( value ) ));
493  break;
494  case 10:
495  coerceValue(myDir, ( ( value ) ));
496  break;
497  case 11:
498  coerceValue(myMirroringedge, ( ( value ) ));
499  break;
500  case 12:
501  coerceValue(mySourcehint, ( ( value ) ));
502  break;
503  case 13:
504  coerceValue(myUseconnectivityattrib, ( ( value ) ));
505  break;
506  case 14:
507  coerceValue(myConnectivityattrib, ( ( value ) ));
508  break;
509  case 15:
510  coerceValue(myElementmapname, ( ( value ) ));
511  break;
512  case 16:
513  coerceValue(myDestgroupname, ( ( value ) ));
514  break;
515  case 17:
516  coerceValue(myOutputelemmap, ( ( value ) ));
517  break;
518  case 18:
519  coerceValue(myMirrorelemattrib, ( ( value ) ));
520  break;
521  case 19:
522  coerceValue(myOutputsrcgroup, ( ( value ) ));
523  break;
524  case 20:
525  coerceValue(myMirrorsrcgroup, ( ( value ) ));
526  break;
527  case 21:
528  coerceValue(myOutputdestgroup, ( ( value ) ));
529  break;
530  case 22:
531  coerceValue(myMirrordestgroup, ( ( value ) ));
532  break;
533  case 23:
534  coerceValue(myAttribMirrorOp, clampMinValue(0, clampMaxValue(3, value ) ));
535  break;
536  case 24:
537  coerceValue(myUVOrigin, ( ( value ) ));
538  break;
539  case 25:
540  coerceValue(myUVAngle, ( ( value ) ));
541  break;
542  case 26:
543  coerceValue(myStringReplace, ( ( value ) ));
544  break;
545  case 27:
546  coerceValue(mySearch, ( ( value ) ));
547  break;
548  case 28:
549  coerceValue(myReplace, ( ( value ) ));
550  break;
551 
552  }
553  }
554 
555  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
556  { doSetParmValue(idx, instance, value); }
557  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
558  { doSetParmValue(idx, instance, value); }
559  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
560  { doSetParmValue(idx, instance, value); }
561  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
562  { doSetParmValue(idx, instance, value); }
563  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
564  { doSetParmValue(idx, instance, value); }
565  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
566  { doSetParmValue(idx, instance, value); }
567  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
568  { doSetParmValue(idx, instance, value); }
569  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
570  { doSetParmValue(idx, instance, value); }
571  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
572  { doSetParmValue(idx, instance, value); }
573  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
574  { doSetParmValue(idx, instance, value); }
575  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
576  { doSetParmValue(idx, instance, value); }
577 
578  exint getNestNumParms(TempIndex idx) const override
579  {
580  if (idx.size() == 0)
581  return 29;
582  switch (idx[0])
583  {
584 
585  }
586  // Invalid
587  return 0;
588  }
589 
590  const char *getNestParmName(TempIndex fieldnum) const override
591  {
592  if (fieldnum.size() < 1)
593  return 0;
594  switch (fieldnum[0])
595  {
596  case 0:
597  return "group";
598  case 1:
599  return "grouptype";
600  case 2:
601  return "usegroupas";
602  case 3:
603  return "attrib";
604  case 4:
605  return "attribname";
606  case 5:
607  return "mirroringmethod";
608  case 6:
609  return "usetolerance";
610  case 7:
611  return "tolerance";
612  case 8:
613  return "origin";
614  case 9:
615  return "dist";
616  case 10:
617  return "dir";
618  case 11:
619  return "mirroringedge";
620  case 12:
621  return "sourcehint";
622  case 13:
623  return "useconnectivityattrib";
624  case 14:
625  return "connectivityattrib";
626  case 15:
627  return "elementmapname";
628  case 16:
629  return "destgroupname";
630  case 17:
631  return "outputelemmap";
632  case 18:
633  return "mirrorelemattrib";
634  case 19:
635  return "outputsrcgroup";
636  case 20:
637  return "mirrorsrcgroup";
638  case 21:
639  return "outputdestgroup";
640  case 22:
641  return "mirrordestgroup";
642  case 23:
643  return "attribmirror";
644  case 24:
645  return "uvorig";
646  case 25:
647  return "uvangle";
648  case 26:
649  return "stringreplace";
650  case 27:
651  return "search";
652  case 28:
653  return "replace";
654 
655  }
656  return 0;
657  }
658 
659  ParmType getNestParmType(TempIndex fieldnum) const override
660  {
661  if (fieldnum.size() < 1)
662  return PARM_UNSUPPORTED;
663  switch (fieldnum[0])
664  {
665  case 0:
666  return PARM_STRING;
667  case 1:
668  return PARM_INTEGER;
669  case 2:
670  return PARM_INTEGER;
671  case 3:
672  return PARM_INTEGER;
673  case 4:
674  return PARM_STRING;
675  case 5:
676  return PARM_INTEGER;
677  case 6:
678  return PARM_INTEGER;
679  case 7:
680  return PARM_FLOAT;
681  case 8:
682  return PARM_VECTOR3;
683  case 9:
684  return PARM_FLOAT;
685  case 10:
686  return PARM_VECTOR3;
687  case 11:
688  return PARM_STRING;
689  case 12:
690  return PARM_STRING;
691  case 13:
692  return PARM_INTEGER;
693  case 14:
694  return PARM_STRING;
695  case 15:
696  return PARM_STRING;
697  case 16:
698  return PARM_STRING;
699  case 17:
700  return PARM_INTEGER;
701  case 18:
702  return PARM_STRING;
703  case 19:
704  return PARM_INTEGER;
705  case 20:
706  return PARM_STRING;
707  case 21:
708  return PARM_INTEGER;
709  case 22:
710  return PARM_STRING;
711  case 23:
712  return PARM_INTEGER;
713  case 24:
714  return PARM_VECTOR2;
715  case 25:
716  return PARM_FLOAT;
717  case 26:
718  return PARM_INTEGER;
719  case 27:
720  return PARM_STRING;
721  case 28:
722  return PARM_STRING;
723 
724  }
725  return PARM_UNSUPPORTED;
726  }
727 
728  // Boiler plate to load individual types.
729  static void loadData(UT_IStream &is, int64 &v)
730  { is.bread(&v, 1); }
731  static void loadData(UT_IStream &is, bool &v)
732  { int64 iv; is.bread(&iv, 1); v = iv; }
733  static void loadData(UT_IStream &is, fpreal64 &v)
734  { is.bread<fpreal64>(&v, 1); }
735  static void loadData(UT_IStream &is, UT_Vector2D &v)
736  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
737  static void loadData(UT_IStream &is, UT_Vector3D &v)
738  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
739  is.bread<fpreal64>(&v.z(), 1); }
740  static void loadData(UT_IStream &is, UT_Vector4D &v)
741  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
742  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
743  static void loadData(UT_IStream &is, UT_Matrix2D &v)
744  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
745  static void loadData(UT_IStream &is, UT_Matrix3D &v)
746  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
747  static void loadData(UT_IStream &is, UT_Matrix4D &v)
748  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
749  static void loadData(UT_IStream &is, UT_Vector2I &v)
750  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
751  static void loadData(UT_IStream &is, UT_Vector3I &v)
752  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
753  is.bread<int64>(&v.z(), 1); }
754  static void loadData(UT_IStream &is, UT_Vector4I &v)
755  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
756  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
758  { is.bread(v); }
760  { UT_StringHolder rampdata;
761  loadData(is, rampdata);
762  if (rampdata.isstring())
763  {
764  v.reset(new UT_Ramp());
765  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
766  v->load(istr);
767  }
768  else v.reset();
769  }
772  loadData(is, data);
773  if (data.isstring())
774  {
775  // Find the data type.
776  const char *colon = UT_StringWrap(data).findChar(':');
777  if (colon)
778  {
779  int typelen = colon - data.buffer();
781  type.strncpy(data.buffer(), typelen);
782  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
783 
784  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
785  }
786  }
787  else v.reset();
788  }
789 
790  static void saveData(std::ostream &os, int64 v)
791  { UTwrite(os, &v); }
792  static void saveData(std::ostream &os, bool v)
793  { int64 iv = v; UTwrite(os, &iv); }
794  static void saveData(std::ostream &os, fpreal64 v)
795  { UTwrite<fpreal64>(os, &v); }
796  static void saveData(std::ostream &os, UT_Vector2D v)
797  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
798  static void saveData(std::ostream &os, UT_Vector3D v)
799  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
800  UTwrite<fpreal64>(os, &v.z()); }
801  static void saveData(std::ostream &os, UT_Vector4D v)
802  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
803  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
804  static void saveData(std::ostream &os, UT_Matrix2D v)
806  static void saveData(std::ostream &os, UT_Matrix3D v)
808  static void saveData(std::ostream &os, UT_Matrix4D v)
810  static void saveData(std::ostream &os, UT_StringHolder s)
811  { UT_StringWrap(s).saveBinary(os); }
812  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
814  UT_OStringStream ostr;
815  if (s) s->save(ostr);
816  result = ostr.str();
817  saveData(os, result);
818  }
819  static void saveData(std::ostream &os, PRM_DataItemHandle s)
821  UT_OStringStream ostr;
822  if (s)
823  {
824  ostr << s->getDataTypeToken();
825  ostr << ":";
826  s->saveBinary(ostr);
827  }
828  result = ostr.str();
829  saveData(os, result);
830  }
831 
832 
833  void save(std::ostream &os) const
834  {
835  int32 v = version();
836  UTwrite(os, &v);
837  saveData(os, myGroup);
838  saveData(os, myGroupType);
839  saveData(os, myMirrorOp);
840  saveData(os, myAttrib);
841  saveData(os, myAttribName);
842  saveData(os, myMirroringmethod);
843  saveData(os, myUseTolerance);
844  saveData(os, myTolerance);
845  saveData(os, myOrigin);
846  saveData(os, myDist);
847  saveData(os, myDir);
848  saveData(os, myMirroringedge);
849  saveData(os, mySourcehint);
850  saveData(os, myUseconnectivityattrib);
851  saveData(os, myConnectivityattrib);
852  saveData(os, myElementmapname);
853  saveData(os, myDestgroupname);
854  saveData(os, myOutputelemmap);
855  saveData(os, myMirrorelemattrib);
856  saveData(os, myOutputsrcgroup);
857  saveData(os, myMirrorsrcgroup);
858  saveData(os, myOutputdestgroup);
859  saveData(os, myMirrordestgroup);
860  saveData(os, myAttribMirrorOp);
861  saveData(os, myUVOrigin);
862  saveData(os, myUVAngle);
863  saveData(os, myStringReplace);
864  saveData(os, mySearch);
865  saveData(os, myReplace);
866 
867  }
868 
869  bool load(UT_IStream &is)
870  {
871  int32 v;
872  is.bread(&v, 1);
873  if (version() != v)
874  {
875  // Fail incompatible versions
876  return false;
877  }
878  loadData(is, myGroup);
879  loadData(is, myGroupType);
880  loadData(is, myMirrorOp);
881  loadData(is, myAttrib);
882  loadData(is, myAttribName);
883  loadData(is, myMirroringmethod);
884  loadData(is, myUseTolerance);
885  loadData(is, myTolerance);
886  loadData(is, myOrigin);
887  loadData(is, myDist);
888  loadData(is, myDir);
889  loadData(is, myMirroringedge);
890  loadData(is, mySourcehint);
891  loadData(is, myUseconnectivityattrib);
892  loadData(is, myConnectivityattrib);
893  loadData(is, myElementmapname);
894  loadData(is, myDestgroupname);
895  loadData(is, myOutputelemmap);
896  loadData(is, myMirrorelemattrib);
897  loadData(is, myOutputsrcgroup);
898  loadData(is, myMirrorsrcgroup);
899  loadData(is, myOutputdestgroup);
900  loadData(is, myMirrordestgroup);
901  loadData(is, myAttribMirrorOp);
902  loadData(is, myUVOrigin);
903  loadData(is, myUVAngle);
904  loadData(is, myStringReplace);
905  loadData(is, mySearch);
906  loadData(is, myReplace);
907 
908  return true;
909  }
910 
911  const UT_StringHolder & getGroup() const { return myGroup; }
912  void setGroup(const UT_StringHolder & val) { myGroup = val; }
914  {
915  SOP_Node *thissop = cookparms.getNode();
916  if (!thissop) return getGroup();
918  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
919  return result;
920  }
921  GroupType getGroupType() const { return GroupType(myGroupType); }
922  void setGroupType(GroupType val) { myGroupType = int64(val); }
924  {
925  SOP_Node *thissop = cookparms.getNode();
926  if (!thissop) return getGroupType();
927  int64 result;
928  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
929  return GroupType(result);
930  }
931  MirrorOp getMirrorOp() const { return MirrorOp(myMirrorOp); }
932  void setMirrorOp(MirrorOp val) { myMirrorOp = int64(val); }
934  {
935  SOP_Node *thissop = cookparms.getNode();
936  if (!thissop) return getMirrorOp();
937  int64 result;
938  OP_Utils::evalOpParm(result, thissop, "usegroupas", cookparms.getCookTime(), 0);
939  return MirrorOp(result);
940  }
941  Attrib getAttrib() const { return Attrib(myAttrib); }
942  void setAttrib(Attrib val) { myAttrib = int64(val); }
943  Attrib opAttrib(const SOP_NodeVerb::CookParms &cookparms) const
944  {
945  SOP_Node *thissop = cookparms.getNode();
946  if (!thissop) return getAttrib();
947  int64 result;
948  OP_Utils::evalOpParm(result, thissop, "attrib", cookparms.getCookTime(), 0);
949  return Attrib(result);
950  }
951  const UT_StringHolder & getAttribName() const { return myAttribName; }
952  void setAttribName(const UT_StringHolder & val) { myAttribName = val; }
954  {
955  SOP_Node *thissop = cookparms.getNode();
956  if (!thissop) return getAttribName();
958  OP_Utils::evalOpParm(result, thissop, "attribname", cookparms.getCookTime(), 0);
959  return result;
960  }
961  Mirroringmethod getMirroringmethod() const { return Mirroringmethod(myMirroringmethod); }
962  void setMirroringmethod(Mirroringmethod val) { myMirroringmethod = int64(val); }
964  {
965  SOP_Node *thissop = cookparms.getNode();
966  if (!thissop) return getMirroringmethod();
967  int64 result;
968  OP_Utils::evalOpParm(result, thissop, "mirroringmethod", cookparms.getCookTime(), 0);
969  return Mirroringmethod(result);
970  }
971  bool getUseTolerance() const { return myUseTolerance; }
972  void setUseTolerance(bool val) { myUseTolerance = val; }
973  bool opUseTolerance(const SOP_NodeVerb::CookParms &cookparms) const
974  {
975  SOP_Node *thissop = cookparms.getNode();
976  if (!thissop) return getUseTolerance();
977  bool result;
978  OP_Utils::evalOpParm(result, thissop, "usetolerance", cookparms.getCookTime(), 0);
979  return result;
980  }
981  fpreal64 getTolerance() const { return myTolerance; }
982  void setTolerance(fpreal64 val) { myTolerance = val; }
984  {
985  SOP_Node *thissop = cookparms.getNode();
986  if (!thissop) return getTolerance();
988  OP_Utils::evalOpParm(result, thissop, "tolerance", cookparms.getCookTime(), 0);
989  return result;
990  }
991  UT_Vector3D getOrigin() const { return myOrigin; }
992  void setOrigin(UT_Vector3D val) { myOrigin = val; }
994  {
995  SOP_Node *thissop = cookparms.getNode();
996  if (!thissop) return getOrigin();
998  OP_Utils::evalOpParm(result, thissop, "origin", cookparms.getCookTime(), 0);
999  return result;
1000  }
1001  fpreal64 getDist() const { return myDist; }
1002  void setDist(fpreal64 val) { myDist = val; }
1003  fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
1004  {
1005  SOP_Node *thissop = cookparms.getNode();
1006  if (!thissop) return getDist();
1007  fpreal64 result;
1008  OP_Utils::evalOpParm(result, thissop, "dist", cookparms.getCookTime(), 0);
1009  return result;
1010  }
1011  UT_Vector3D getDir() const { return myDir; }
1012  void setDir(UT_Vector3D val) { myDir = val; }
1014  {
1015  SOP_Node *thissop = cookparms.getNode();
1016  if (!thissop) return getDir();
1018  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
1019  return result;
1020  }
1021  const UT_StringHolder & getMirroringedge() const { return myMirroringedge; }
1022  void setMirroringedge(const UT_StringHolder & val) { myMirroringedge = val; }
1024  {
1025  SOP_Node *thissop = cookparms.getNode();
1026  if (!thissop) return getMirroringedge();
1028  OP_Utils::evalOpParm(result, thissop, "mirroringedge", cookparms.getCookTime(), 0);
1029  return result;
1030  }
1031  const UT_StringHolder & getSourcehint() const { return mySourcehint; }
1032  void setSourcehint(const UT_StringHolder & val) { mySourcehint = val; }
1034  {
1035  SOP_Node *thissop = cookparms.getNode();
1036  if (!thissop) return getSourcehint();
1038  OP_Utils::evalOpParm(result, thissop, "sourcehint", cookparms.getCookTime(), 0);
1039  return result;
1040  }
1041  bool getUseconnectivityattrib() const { return myUseconnectivityattrib; }
1042  void setUseconnectivityattrib(bool val) { myUseconnectivityattrib = val; }
1044  {
1045  SOP_Node *thissop = cookparms.getNode();
1046  if (!thissop) return getUseconnectivityattrib();
1047  bool result;
1048  OP_Utils::evalOpParm(result, thissop, "useconnectivityattrib", cookparms.getCookTime(), 0);
1049  return result;
1050  }
1051  const UT_StringHolder & getConnectivityattrib() const { return myConnectivityattrib; }
1052  void setConnectivityattrib(const UT_StringHolder & val) { myConnectivityattrib = val; }
1054  {
1055  SOP_Node *thissop = cookparms.getNode();
1056  if (!thissop) return getConnectivityattrib();
1058  OP_Utils::evalOpParm(result, thissop, "connectivityattrib", cookparms.getCookTime(), 0);
1059  return result;
1060  }
1061  const UT_StringHolder & getElementmapname() const { return myElementmapname; }
1062  void setElementmapname(const UT_StringHolder & val) { myElementmapname = val; }
1064  {
1065  SOP_Node *thissop = cookparms.getNode();
1066  if (!thissop) return getElementmapname();
1068  OP_Utils::evalOpParm(result, thissop, "elementmapname", cookparms.getCookTime(), 0);
1069  return result;
1070  }
1071  const UT_StringHolder & getDestgroupname() const { return myDestgroupname; }
1072  void setDestgroupname(const UT_StringHolder & val) { myDestgroupname = val; }
1074  {
1075  SOP_Node *thissop = cookparms.getNode();
1076  if (!thissop) return getDestgroupname();
1078  OP_Utils::evalOpParm(result, thissop, "destgroupname", cookparms.getCookTime(), 0);
1079  return result;
1080  }
1081  bool getOutputelemmap() const { return myOutputelemmap; }
1082  void setOutputelemmap(bool val) { myOutputelemmap = val; }
1083  bool opOutputelemmap(const SOP_NodeVerb::CookParms &cookparms) const
1084  {
1085  SOP_Node *thissop = cookparms.getNode();
1086  if (!thissop) return getOutputelemmap();
1087  bool result;
1088  OP_Utils::evalOpParm(result, thissop, "outputelemmap", cookparms.getCookTime(), 0);
1089  return result;
1090  }
1091  const UT_StringHolder & getMirrorelemattrib() const { return myMirrorelemattrib; }
1092  void setMirrorelemattrib(const UT_StringHolder & val) { myMirrorelemattrib = val; }
1094  {
1095  SOP_Node *thissop = cookparms.getNode();
1096  if (!thissop) return getMirrorelemattrib();
1098  OP_Utils::evalOpParm(result, thissop, "mirrorelemattrib", cookparms.getCookTime(), 0);
1099  return result;
1100  }
1101  bool getOutputsrcgroup() const { return myOutputsrcgroup; }
1102  void setOutputsrcgroup(bool val) { myOutputsrcgroup = val; }
1103  bool opOutputsrcgroup(const SOP_NodeVerb::CookParms &cookparms) const
1104  {
1105  SOP_Node *thissop = cookparms.getNode();
1106  if (!thissop) return getOutputsrcgroup();
1107  bool result;
1108  OP_Utils::evalOpParm(result, thissop, "outputsrcgroup", cookparms.getCookTime(), 0);
1109  return result;
1110  }
1111  const UT_StringHolder & getMirrorsrcgroup() const { return myMirrorsrcgroup; }
1112  void setMirrorsrcgroup(const UT_StringHolder & val) { myMirrorsrcgroup = val; }
1114  {
1115  SOP_Node *thissop = cookparms.getNode();
1116  if (!thissop) return getMirrorsrcgroup();
1118  OP_Utils::evalOpParm(result, thissop, "mirrorsrcgroup", cookparms.getCookTime(), 0);
1119  return result;
1120  }
1121  bool getOutputdestgroup() const { return myOutputdestgroup; }
1122  void setOutputdestgroup(bool val) { myOutputdestgroup = val; }
1123  bool opOutputdestgroup(const SOP_NodeVerb::CookParms &cookparms) const
1124  {
1125  SOP_Node *thissop = cookparms.getNode();
1126  if (!thissop) return getOutputdestgroup();
1127  bool result;
1128  OP_Utils::evalOpParm(result, thissop, "outputdestgroup", cookparms.getCookTime(), 0);
1129  return result;
1130  }
1131  const UT_StringHolder & getMirrordestgroup() const { return myMirrordestgroup; }
1132  void setMirrordestgroup(const UT_StringHolder & val) { myMirrordestgroup = val; }
1134  {
1135  SOP_Node *thissop = cookparms.getNode();
1136  if (!thissop) return getMirrordestgroup();
1138  OP_Utils::evalOpParm(result, thissop, "mirrordestgroup", cookparms.getCookTime(), 0);
1139  return result;
1140  }
1141  AttribMirrorOp getAttribMirrorOp() const { return AttribMirrorOp(myAttribMirrorOp); }
1142  void setAttribMirrorOp(AttribMirrorOp val) { myAttribMirrorOp = int64(val); }
1144  {
1145  SOP_Node *thissop = cookparms.getNode();
1146  if (!thissop) return getAttribMirrorOp();
1147  int64 result;
1148  OP_Utils::evalOpParm(result, thissop, "attribmirror", cookparms.getCookTime(), 0);
1149  return AttribMirrorOp(result);
1150  }
1151  UT_Vector2D getUVOrigin() const { return myUVOrigin; }
1152  void setUVOrigin(UT_Vector2D val) { myUVOrigin = val; }
1154  {
1155  SOP_Node *thissop = cookparms.getNode();
1156  if (!thissop) return getUVOrigin();
1158  OP_Utils::evalOpParm(result, thissop, "uvorig", cookparms.getCookTime(), 0);
1159  return result;
1160  }
1161  fpreal64 getUVAngle() const { return myUVAngle; }
1162  void setUVAngle(fpreal64 val) { myUVAngle = val; }
1164  {
1165  SOP_Node *thissop = cookparms.getNode();
1166  if (!thissop) return getUVAngle();
1167  fpreal64 result;
1168  OP_Utils::evalOpParm(result, thissop, "uvangle", cookparms.getCookTime(), 0);
1169  return result;
1170  }
1171  bool getStringReplace() const { return myStringReplace; }
1172  void setStringReplace(bool val) { myStringReplace = val; }
1173  bool opStringReplace(const SOP_NodeVerb::CookParms &cookparms) const
1174  {
1175  SOP_Node *thissop = cookparms.getNode();
1176  if (!thissop) return getStringReplace();
1177  bool result;
1178  OP_Utils::evalOpParm(result, thissop, "stringreplace", cookparms.getCookTime(), 0);
1179  return result;
1180  }
1181  const UT_StringHolder & getSearch() const { return mySearch; }
1182  void setSearch(const UT_StringHolder & val) { mySearch = val; }
1184  {
1185  SOP_Node *thissop = cookparms.getNode();
1186  if (!thissop) return getSearch();
1188  OP_Utils::evalOpParm(result, thissop, "search", cookparms.getCookTime(), 0);
1189  return result;
1190  }
1191  const UT_StringHolder & getReplace() const { return myReplace; }
1192  void setReplace(const UT_StringHolder & val) { myReplace = val; }
1194  {
1195  SOP_Node *thissop = cookparms.getNode();
1196  if (!thissop) return getReplace();
1198  OP_Utils::evalOpParm(result, thissop, "replace", cookparms.getCookTime(), 0);
1199  return result;
1200  }
1201 
1202 private:
1203  UT_StringHolder myGroup;
1204  int64 myGroupType;
1205  int64 myMirrorOp;
1206  int64 myAttrib;
1207  UT_StringHolder myAttribName;
1208  int64 myMirroringmethod;
1209  bool myUseTolerance;
1210  fpreal64 myTolerance;
1211  UT_Vector3D myOrigin;
1212  fpreal64 myDist;
1213  UT_Vector3D myDir;
1214  UT_StringHolder myMirroringedge;
1215  UT_StringHolder mySourcehint;
1216  bool myUseconnectivityattrib;
1217  UT_StringHolder myConnectivityattrib;
1218  UT_StringHolder myElementmapname;
1219  UT_StringHolder myDestgroupname;
1220  bool myOutputelemmap;
1221  UT_StringHolder myMirrorelemattrib;
1222  bool myOutputsrcgroup;
1223  UT_StringHolder myMirrorsrcgroup;
1224  bool myOutputdestgroup;
1225  UT_StringHolder myMirrordestgroup;
1226  int64 myAttribMirrorOp;
1227  UT_Vector2D myUVOrigin;
1228  fpreal64 myUVAngle;
1229  bool myStringReplace;
1230  UT_StringHolder mySearch;
1231  UT_StringHolder myReplace;
1232 
1233 };
fpreal64 opTolerance(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_StringHolder opMirroringedge(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
UT_StringHolder opMirrorsrcgroup(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
fpreal64 opUVAngle(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool opOutputsrcgroup(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
bool load(UT_IStream &is)
UT_StringHolder opReplace(const SOP_NodeVerb::CookParms &cookparms) const
void setGroup(const UT_StringHolder &val)
void setMirrorelemattrib(const UT_StringHolder &val)
exint getNestNumParms(TempIndex idx) const override
void setMirrordestgroup(const UT_StringHolder &val)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
UT_Vector3D getDir() const
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
static void loadData(UT_IStream &is, UT_Vector3I &v)
UT_Vector2T< fpreal64 > UT_Vector2D
const UT_StringHolder & getMirroringedge() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setUVOrigin(UT_Vector2D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void loadFromOpSubclass(const LoadParms &loadparms) override
MirrorOp opMirrorOp(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
bool isParmColorRamp(exint idx) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
void setConnectivityattrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, int64 &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
An output stream object that owns its own string buffer storage.
bool opStringReplace(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:613
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, fpreal64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void save(std::ostream &os) const
void setAttribMirrorOp(AttribMirrorOp val)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void saveData(std::ostream &os, UT_Vector2D v)
void setAttribName(const UT_StringHolder &val)
Mirroringmethod opMirroringmethod(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
UT_Vector2D opUVOrigin(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, int64 v)
UT_Vector2D getUVOrigin() const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
static void saveData(std::ostream &os, UT_Vector4D v)
bool opUseTolerance(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
const UT_StringHolder & getReplace() const
void setSourcehint(const UT_StringHolder &val)
bool opOutputdestgroup(const SOP_NodeVerb::CookParms &cookparms) const
GroupType getGroupType() const
SYS_FORCE_INLINE UT_StringHolder getToken(GroupType enum_value)
bool opOutputelemmap(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMirrordestgroup() const
const UT_StringHolder & getConnectivityattrib() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
exint length() const
UT_StringHolder opMirrordestgroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
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
UT_StringHolder opAttribName(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opSearch(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSearch() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
fpreal64 getTolerance() const
void setGroupType(GroupType val)
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_Vector2D &v)
long long int64
Definition: SYS_Types.h:116
const UT_StringHolder & getDestgroupname() const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
UT_Vector3T< fpreal64 > UT_Vector3D
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const char * getNestParmName(TempIndex fieldnum) const override
void setOrigin(UT_Vector3D val)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setMirrorsrcgroup(const UT_StringHolder &val)
bool operator!=(const SOP_AttribMirrorParms &src) const
UT_StringHolder opElementmapname(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
static void loadData(UT_IStream &is, fpreal64 &v)
const UT_StringHolder & getAttribName() const
GT_API const UT_StringHolder version
void setTolerance(fpreal64 val)
Mirroringmethod getMirroringmethod() const
void setReplace(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
GroupType opGroupType(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opOrigin(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opConnectivityattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMirrorsrcgroup() const
bool operator==(const SOP_AttribMirrorParms &src) const
void setElementmapname(const UT_StringHolder &val)
void setSearch(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setDestgroupname(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
LeafData & operator=(const LeafData &)=delete
static void loadData(UT_IStream &is, UT_Matrix4D &v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
const UT_StringHolder & getMirrorelemattrib() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setUseconnectivityattrib(bool val)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setDir(UT_Vector3D val)
#define SOP_API
Definition: SOP_API.h:10
const UT_StringHolder & getElementmapname() const
void setMirroringmethod(Mirroringmethod val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
ParmType getNestParmType(TempIndex fieldnum) const override
UT_Vector3D getOrigin() const
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
const UT_StringHolder & getSourcehint() const
GLboolean r
Definition: glcorearb.h:1222
AttribMirrorOp getAttribMirrorOp() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
const UT_StringHolder & getGroup() const
Attrib opAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
bool opUseconnectivityattrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void saveData(std::ostream &os, bool v)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
type
Definition: core.h:1059
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
UT_StringHolder opMirrorelemattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setMirrorOp(MirrorOp val)
static void loadData(UT_IStream &is, bool &v)
AttribMirrorOp opAttribMirrorOp(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
static void saveData(std::ostream &os, UT_Vector3D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void copyFrom(const OP_NodeParms *src) override
void setMirroringedge(const UT_StringHolder &val)
UT_StringHolder opDestgroupname(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
UT_StringHolder opSourcehint(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663