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 <OP/OP_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 
202  if (baseGetSignature() != src.baseGetSignature()) return false;
203 
204  return true;
205  }
207  {
208  return !operator==(src);
209  }
215 
216 
217 
218  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
219  {
220  myGroup = ""_UTsh;
221  if (true)
222  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
223  myGroupType = 0;
224  if (true)
225  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
226  myMirrorOp = 1;
227  if (true)
228  graph->evalOpParm(myMirrorOp, nodeidx, "usegroupas", time, graph->isDirect()?nullptr:depnode);
229  myAttrib = 0;
230  if (true)
231  graph->evalOpParm(myAttrib, nodeidx, "attrib", time, graph->isDirect()?nullptr:depnode);
232  myAttribName = ""_UTsh;
233  if (true && ( (true&&!(((int64(getAttrib())!=2)))) ) )
234  graph->evalOpParm(myAttribName, nodeidx, "attribname", time, graph->isDirect()?nullptr:depnode);
235  myMirroringmethod = 0;
236  if (true)
237  graph->evalOpParm(myMirroringmethod, nodeidx, "mirroringmethod", time, graph->isDirect()?nullptr:depnode);
238  myUseTolerance = false;
239  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
240  graph->evalOpParm(myUseTolerance, nodeidx, "usetolerance", time, graph->isDirect()?nullptr:depnode);
241  myTolerance = 0.1;
242  if (true && ( (true&&!(((getUseTolerance()==0))||((int64(getMirroringmethod())!=0)))) ) )
243  graph->evalOpParm(myTolerance, nodeidx, "tolerance", time, graph->isDirect()?nullptr:depnode);
244  myOrigin = UT_Vector3D(0,0,0);
245  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
246  graph->evalOpParm(myOrigin, nodeidx, "origin", time, graph->isDirect()?nullptr:depnode);
247  myDist = 0;
248  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
249  graph->evalOpParm(myDist, nodeidx, "dist", time, graph->isDirect()?nullptr:depnode);
250  myDir = UT_Vector3D(1,0,0);
251  if (true && ( (true&&!(((int64(getMirroringmethod())!=0)))) ) )
252  graph->evalOpParm(myDir, nodeidx, "dir", time, graph->isDirect()?nullptr:depnode);
253  myMirroringedge = ""_UTsh;
254  if (true && ( (true&&!(((int64(getMirroringmethod())!=1)))) ) )
255  graph->evalOpParm(myMirroringedge, nodeidx, "mirroringedge", time, graph->isDirect()?nullptr:depnode);
256  mySourcehint = ""_UTsh;
257  if (true && ( (true&&!(((int64(getMirroringmethod())!=1)))) ) )
258  graph->evalOpParm(mySourcehint, nodeidx, "sourcehint", time, graph->isDirect()?nullptr:depnode);
259  myUseconnectivityattrib = false;
260  if (true && ( (true&&!(((int64(getMirroringmethod())!=1)))) ) )
261  graph->evalOpParm(myUseconnectivityattrib, nodeidx, "useconnectivityattrib", time, graph->isDirect()?nullptr:depnode);
262  myConnectivityattrib = ""_UTsh;
263  if (true && ( (true&&!(((getUseconnectivityattrib()==0))||((int64(getMirroringmethod())!=1)))) ) )
264  graph->evalOpParm(myConnectivityattrib, nodeidx, "connectivityattrib", time, graph->isDirect()?nullptr:depnode);
265  myElementmapname = "mirrorelem"_UTsh;
266  if (true && ( (true&&!(((int64(getMirroringmethod())!=2)))) ) )
267  graph->evalOpParm(myElementmapname, nodeidx, "elementmapname", time, graph->isDirect()?nullptr:depnode);
268  myDestgroupname = "mirrordest"_UTsh;
269  if (true && ( (true&&!(((int64(getMirroringmethod())!=2)))) ) )
270  graph->evalOpParm(myDestgroupname, nodeidx, "destgroupname", time, graph->isDirect()?nullptr:depnode);
271  myOutputelemmap = false;
272  if (true)
273  graph->evalOpParm(myOutputelemmap, nodeidx, "outputelemmap", time, graph->isDirect()?nullptr:depnode);
274  myMirrorelemattrib = "mirrorelem"_UTsh;
275  if (true && ( (true&&!(((getOutputelemmap()==0)))) ) )
276  graph->evalOpParm(myMirrorelemattrib, nodeidx, "mirrorelemattrib", time, graph->isDirect()?nullptr:depnode);
277  myOutputsrcgroup = false;
278  if (true)
279  graph->evalOpParm(myOutputsrcgroup, nodeidx, "outputsrcgroup", time, graph->isDirect()?nullptr:depnode);
280  myMirrorsrcgroup = "mirrorsrc"_UTsh;
281  if (true && ( (true&&!(((getOutputsrcgroup()==0)))) ) )
282  graph->evalOpParm(myMirrorsrcgroup, nodeidx, "mirrorsrcgroup", time, graph->isDirect()?nullptr:depnode);
283  myOutputdestgroup = false;
284  if (true)
285  graph->evalOpParm(myOutputdestgroup, nodeidx, "outputdestgroup", time, graph->isDirect()?nullptr:depnode);
286  myMirrordestgroup = "mirrordest"_UTsh;
287  if (true && ( (true&&!(((getOutputdestgroup()==0)))) ) )
288  graph->evalOpParm(myMirrordestgroup, nodeidx, "mirrordestgroup", time, graph->isDirect()?nullptr:depnode);
289  myAttribMirrorOp = 0;
290  if (true && ( (true&&!(((int64(getMirroringmethod())==2)))) ) )
291  graph->evalOpParm(myAttribMirrorOp, nodeidx, "attribmirror", time, graph->isDirect()?nullptr:depnode);
292  myUVOrigin = UT_Vector2D(0.5,0.5);
293  if (true && ( (true&&!(((int64(getMirroringmethod())==2))||((int64(getAttribMirrorOp())!=1)))) ) )
294  graph->evalOpParm(myUVOrigin, nodeidx, "uvorig", time, graph->isDirect()?nullptr:depnode);
295  myUVAngle = 90;
296  if (true && ( (true&&!(((int64(getMirroringmethod())==2))||((int64(getAttribMirrorOp())!=1)))) ) )
297  graph->evalOpParm(myUVAngle, nodeidx, "uvangle", time, graph->isDirect()?nullptr:depnode);
298  myStringReplace = false;
299  if (true)
300  graph->evalOpParm(myStringReplace, nodeidx, "stringreplace", time, graph->isDirect()?nullptr:depnode);
301  mySearch = "L_*"_UTsh;
302  if (true && ( (true&&!(((getStringReplace()==0)))) ) )
303  graph->evalOpParm(mySearch, nodeidx, "search", time, graph->isDirect()?nullptr:depnode);
304  myReplace = "R_*"_UTsh;
305  if (true && ( (true&&!(((getStringReplace()==0)))) ) )
306  graph->evalOpParm(myReplace, nodeidx, "replace", time, graph->isDirect()?nullptr:depnode);
307 
308  }
309 
310 
311  void loadFromOpSubclass(const LoadParms &loadparms) override
312  {
313  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
314  }
315 
316 
317  void copyFrom(const OP_NodeParms *src) override
318  {
319  *this = *((const SOP_AttribMirrorParms *)src);
320  }
321 
322  template <typename T>
323  void
324  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
325  {
326  if (idx.size() < 1)
327  return;
328  UT_ASSERT(idx.size() == instance.size()+1);
329  if (idx.size() != instance.size()+1)
330  return;
331  switch (idx[0])
332  {
333  case 0:
334  coerceValue(value, myGroup);
335  break;
336  case 1:
337  coerceValue(value, myGroupType);
338  break;
339  case 2:
340  coerceValue(value, myMirrorOp);
341  break;
342  case 3:
343  coerceValue(value, myAttrib);
344  break;
345  case 4:
346  coerceValue(value, myAttribName);
347  break;
348  case 5:
349  coerceValue(value, myMirroringmethod);
350  break;
351  case 6:
352  coerceValue(value, myUseTolerance);
353  break;
354  case 7:
355  coerceValue(value, myTolerance);
356  break;
357  case 8:
358  coerceValue(value, myOrigin);
359  break;
360  case 9:
361  coerceValue(value, myDist);
362  break;
363  case 10:
364  coerceValue(value, myDir);
365  break;
366  case 11:
367  coerceValue(value, myMirroringedge);
368  break;
369  case 12:
370  coerceValue(value, mySourcehint);
371  break;
372  case 13:
373  coerceValue(value, myUseconnectivityattrib);
374  break;
375  case 14:
376  coerceValue(value, myConnectivityattrib);
377  break;
378  case 15:
379  coerceValue(value, myElementmapname);
380  break;
381  case 16:
382  coerceValue(value, myDestgroupname);
383  break;
384  case 17:
385  coerceValue(value, myOutputelemmap);
386  break;
387  case 18:
388  coerceValue(value, myMirrorelemattrib);
389  break;
390  case 19:
391  coerceValue(value, myOutputsrcgroup);
392  break;
393  case 20:
394  coerceValue(value, myMirrorsrcgroup);
395  break;
396  case 21:
397  coerceValue(value, myOutputdestgroup);
398  break;
399  case 22:
400  coerceValue(value, myMirrordestgroup);
401  break;
402  case 23:
403  coerceValue(value, myAttribMirrorOp);
404  break;
405  case 24:
406  coerceValue(value, myUVOrigin);
407  break;
408  case 25:
409  coerceValue(value, myUVAngle);
410  break;
411  case 26:
412  coerceValue(value, myStringReplace);
413  break;
414  case 27:
415  coerceValue(value, mySearch);
416  break;
417  case 28:
418  coerceValue(value, myReplace);
419  break;
420 
421  }
422  }
423 
424  bool isParmColorRamp(exint idx) const override
425  {
426  switch (idx)
427  {
428 
429  }
430  return false;
431  }
432 
433  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
434  { doGetParmValue(idx, instance, value); }
435  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
436  { doGetParmValue(idx, instance, value); }
437  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
438  { doGetParmValue(idx, instance, value); }
439  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
440  { doGetParmValue(idx, instance, value); }
441  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
442  { doGetParmValue(idx, instance, value); }
443  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
444  { doGetParmValue(idx, instance, value); }
445  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
446  { doGetParmValue(idx, instance, value); }
447  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
448  { doGetParmValue(idx, instance, value); }
449  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
450  { doGetParmValue(idx, instance, value); }
451  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
452  { doGetParmValue(idx, instance, value); }
453  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
454  { doGetParmValue(idx, instance, value); }
455 
456  template <typename T>
457  void
458  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
459  {
460  if (idx.size() < 1)
461  return;
462  UT_ASSERT(idx.size() == instance.size()+1);
463  if (idx.size() != instance.size()+1)
464  return;
465  switch (idx[0])
466  {
467  case 0:
468  coerceValue(myGroup, ( ( value ) ));
469  break;
470  case 1:
471  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(2, value ) ));
472  break;
473  case 2:
474  coerceValue(myMirrorOp, clampMinValue(0, clampMaxValue(1, value ) ));
475  break;
476  case 3:
477  coerceValue(myAttrib, clampMinValue(0, clampMaxValue(2, value ) ));
478  break;
479  case 4:
480  coerceValue(myAttribName, ( ( value ) ));
481  break;
482  case 5:
483  coerceValue(myMirroringmethod, clampMinValue(0, clampMaxValue(2, value ) ));
484  break;
485  case 6:
486  coerceValue(myUseTolerance, ( ( value ) ));
487  break;
488  case 7:
489  coerceValue(myTolerance, ( ( value ) ));
490  break;
491  case 8:
492  coerceValue(myOrigin, ( ( value ) ));
493  break;
494  case 9:
495  coerceValue(myDist, ( ( value ) ));
496  break;
497  case 10:
498  coerceValue(myDir, ( ( value ) ));
499  break;
500  case 11:
501  coerceValue(myMirroringedge, ( ( value ) ));
502  break;
503  case 12:
504  coerceValue(mySourcehint, ( ( value ) ));
505  break;
506  case 13:
507  coerceValue(myUseconnectivityattrib, ( ( value ) ));
508  break;
509  case 14:
510  coerceValue(myConnectivityattrib, ( ( value ) ));
511  break;
512  case 15:
513  coerceValue(myElementmapname, ( ( value ) ));
514  break;
515  case 16:
516  coerceValue(myDestgroupname, ( ( value ) ));
517  break;
518  case 17:
519  coerceValue(myOutputelemmap, ( ( value ) ));
520  break;
521  case 18:
522  coerceValue(myMirrorelemattrib, ( ( value ) ));
523  break;
524  case 19:
525  coerceValue(myOutputsrcgroup, ( ( value ) ));
526  break;
527  case 20:
528  coerceValue(myMirrorsrcgroup, ( ( value ) ));
529  break;
530  case 21:
531  coerceValue(myOutputdestgroup, ( ( value ) ));
532  break;
533  case 22:
534  coerceValue(myMirrordestgroup, ( ( value ) ));
535  break;
536  case 23:
537  coerceValue(myAttribMirrorOp, clampMinValue(0, clampMaxValue(3, value ) ));
538  break;
539  case 24:
540  coerceValue(myUVOrigin, ( ( value ) ));
541  break;
542  case 25:
543  coerceValue(myUVAngle, ( ( value ) ));
544  break;
545  case 26:
546  coerceValue(myStringReplace, ( ( value ) ));
547  break;
548  case 27:
549  coerceValue(mySearch, ( ( value ) ));
550  break;
551  case 28:
552  coerceValue(myReplace, ( ( value ) ));
553  break;
554 
555  }
556  }
557 
558  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
559  { doSetParmValue(idx, instance, value); }
560  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
561  { doSetParmValue(idx, instance, value); }
562  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
563  { doSetParmValue(idx, instance, value); }
564  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
565  { doSetParmValue(idx, instance, value); }
566  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
567  { doSetParmValue(idx, instance, value); }
568  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
569  { doSetParmValue(idx, instance, value); }
570  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
571  { doSetParmValue(idx, instance, value); }
572  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
573  { doSetParmValue(idx, instance, value); }
574  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
575  { doSetParmValue(idx, instance, value); }
576  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
577  { doSetParmValue(idx, instance, value); }
578  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
579  { doSetParmValue(idx, instance, value); }
580 
581  exint getNestNumParms(TempIndex idx) const override
582  {
583  if (idx.size() == 0)
584  return 29;
585  switch (idx[0])
586  {
587 
588  }
589  // Invalid
590  return 0;
591  }
592 
593  const char *getNestParmName(TempIndex fieldnum) const override
594  {
595  if (fieldnum.size() < 1)
596  return 0;
597  switch (fieldnum[0])
598  {
599  case 0:
600  return "group";
601  case 1:
602  return "grouptype";
603  case 2:
604  return "usegroupas";
605  case 3:
606  return "attrib";
607  case 4:
608  return "attribname";
609  case 5:
610  return "mirroringmethod";
611  case 6:
612  return "usetolerance";
613  case 7:
614  return "tolerance";
615  case 8:
616  return "origin";
617  case 9:
618  return "dist";
619  case 10:
620  return "dir";
621  case 11:
622  return "mirroringedge";
623  case 12:
624  return "sourcehint";
625  case 13:
626  return "useconnectivityattrib";
627  case 14:
628  return "connectivityattrib";
629  case 15:
630  return "elementmapname";
631  case 16:
632  return "destgroupname";
633  case 17:
634  return "outputelemmap";
635  case 18:
636  return "mirrorelemattrib";
637  case 19:
638  return "outputsrcgroup";
639  case 20:
640  return "mirrorsrcgroup";
641  case 21:
642  return "outputdestgroup";
643  case 22:
644  return "mirrordestgroup";
645  case 23:
646  return "attribmirror";
647  case 24:
648  return "uvorig";
649  case 25:
650  return "uvangle";
651  case 26:
652  return "stringreplace";
653  case 27:
654  return "search";
655  case 28:
656  return "replace";
657 
658  }
659  return 0;
660  }
661 
662  ParmType getNestParmType(TempIndex fieldnum) const override
663  {
664  if (fieldnum.size() < 1)
665  return PARM_UNSUPPORTED;
666  switch (fieldnum[0])
667  {
668  case 0:
669  return PARM_STRING;
670  case 1:
671  return PARM_INTEGER;
672  case 2:
673  return PARM_INTEGER;
674  case 3:
675  return PARM_INTEGER;
676  case 4:
677  return PARM_STRING;
678  case 5:
679  return PARM_INTEGER;
680  case 6:
681  return PARM_INTEGER;
682  case 7:
683  return PARM_FLOAT;
684  case 8:
685  return PARM_VECTOR3;
686  case 9:
687  return PARM_FLOAT;
688  case 10:
689  return PARM_VECTOR3;
690  case 11:
691  return PARM_STRING;
692  case 12:
693  return PARM_STRING;
694  case 13:
695  return PARM_INTEGER;
696  case 14:
697  return PARM_STRING;
698  case 15:
699  return PARM_STRING;
700  case 16:
701  return PARM_STRING;
702  case 17:
703  return PARM_INTEGER;
704  case 18:
705  return PARM_STRING;
706  case 19:
707  return PARM_INTEGER;
708  case 20:
709  return PARM_STRING;
710  case 21:
711  return PARM_INTEGER;
712  case 22:
713  return PARM_STRING;
714  case 23:
715  return PARM_INTEGER;
716  case 24:
717  return PARM_VECTOR2;
718  case 25:
719  return PARM_FLOAT;
720  case 26:
721  return PARM_INTEGER;
722  case 27:
723  return PARM_STRING;
724  case 28:
725  return PARM_STRING;
726 
727  }
728  return PARM_UNSUPPORTED;
729  }
730 
731  // Boiler plate to load individual types.
732  static void loadData(UT_IStream &is, int64 &v)
733  { is.bread(&v, 1); }
734  static void loadData(UT_IStream &is, bool &v)
735  { int64 iv; is.bread(&iv, 1); v = iv; }
736  static void loadData(UT_IStream &is, fpreal64 &v)
737  { is.bread<fpreal64>(&v, 1); }
738  static void loadData(UT_IStream &is, UT_Vector2D &v)
739  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
740  static void loadData(UT_IStream &is, UT_Vector3D &v)
741  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
742  is.bread<fpreal64>(&v.z(), 1); }
743  static void loadData(UT_IStream &is, UT_Vector4D &v)
744  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
745  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
746  static void loadData(UT_IStream &is, UT_Matrix2D &v)
747  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
748  static void loadData(UT_IStream &is, UT_Matrix3D &v)
749  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
750  static void loadData(UT_IStream &is, UT_Matrix4D &v)
751  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
752  static void loadData(UT_IStream &is, UT_Vector2I &v)
753  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
754  static void loadData(UT_IStream &is, UT_Vector3I &v)
755  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
756  is.bread<int64>(&v.z(), 1); }
757  static void loadData(UT_IStream &is, UT_Vector4I &v)
758  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
759  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
761  { is.bread(v); }
763  { UT_StringHolder rampdata;
764  loadData(is, rampdata);
765  if (rampdata.isstring())
766  {
767  v.reset(new UT_Ramp());
768  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
769  v->load(istr);
770  }
771  else v.reset();
772  }
775  loadData(is, data);
776  if (data.isstring())
777  {
778  // Find the data type.
779  const char *colon = UT_StringWrap(data).findChar(':');
780  if (colon)
781  {
782  int typelen = colon - data.buffer();
784  type.strncpy(data.buffer(), typelen);
785  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
786 
787  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
788  }
789  }
790  else v.reset();
791  }
792 
793  static void saveData(std::ostream &os, int64 v)
794  { UTwrite(os, &v); }
795  static void saveData(std::ostream &os, bool v)
796  { int64 iv = v; UTwrite(os, &iv); }
797  static void saveData(std::ostream &os, fpreal64 v)
798  { UTwrite<fpreal64>(os, &v); }
799  static void saveData(std::ostream &os, UT_Vector2D v)
800  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
801  static void saveData(std::ostream &os, UT_Vector3D v)
802  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
803  UTwrite<fpreal64>(os, &v.z()); }
804  static void saveData(std::ostream &os, UT_Vector4D v)
805  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
806  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
807  static void saveData(std::ostream &os, UT_Matrix2D v)
809  static void saveData(std::ostream &os, UT_Matrix3D v)
811  static void saveData(std::ostream &os, UT_Matrix4D v)
813  static void saveData(std::ostream &os, UT_StringHolder s)
814  { UT_StringWrap(s).saveBinary(os); }
815  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
817  UT_OStringStream ostr;
818  if (s) s->save(ostr);
819  result = ostr.str();
820  saveData(os, result);
821  }
822  static void saveData(std::ostream &os, PRM_DataItemHandle s)
824  UT_OStringStream ostr;
825  if (s)
826  {
827  ostr << s->getDataTypeToken();
828  ostr << ":";
829  s->saveBinary(ostr);
830  }
831  result = ostr.str();
832  saveData(os, result);
833  }
834 
835 
836  void save(std::ostream &os) const
837  {
838  int32 v = version();
839  UTwrite(os, &v);
840  saveData(os, myGroup);
841  saveData(os, myGroupType);
842  saveData(os, myMirrorOp);
843  saveData(os, myAttrib);
844  saveData(os, myAttribName);
845  saveData(os, myMirroringmethod);
846  saveData(os, myUseTolerance);
847  saveData(os, myTolerance);
848  saveData(os, myOrigin);
849  saveData(os, myDist);
850  saveData(os, myDir);
851  saveData(os, myMirroringedge);
852  saveData(os, mySourcehint);
853  saveData(os, myUseconnectivityattrib);
854  saveData(os, myConnectivityattrib);
855  saveData(os, myElementmapname);
856  saveData(os, myDestgroupname);
857  saveData(os, myOutputelemmap);
858  saveData(os, myMirrorelemattrib);
859  saveData(os, myOutputsrcgroup);
860  saveData(os, myMirrorsrcgroup);
861  saveData(os, myOutputdestgroup);
862  saveData(os, myMirrordestgroup);
863  saveData(os, myAttribMirrorOp);
864  saveData(os, myUVOrigin);
865  saveData(os, myUVAngle);
866  saveData(os, myStringReplace);
867  saveData(os, mySearch);
868  saveData(os, myReplace);
869 
870  }
871 
872  bool load(UT_IStream &is)
873  {
874  int32 v;
875  is.bread(&v, 1);
876  if (version() != v)
877  {
878  // Fail incompatible versions
879  return false;
880  }
881  loadData(is, myGroup);
882  loadData(is, myGroupType);
883  loadData(is, myMirrorOp);
884  loadData(is, myAttrib);
885  loadData(is, myAttribName);
886  loadData(is, myMirroringmethod);
887  loadData(is, myUseTolerance);
888  loadData(is, myTolerance);
889  loadData(is, myOrigin);
890  loadData(is, myDist);
891  loadData(is, myDir);
892  loadData(is, myMirroringedge);
893  loadData(is, mySourcehint);
894  loadData(is, myUseconnectivityattrib);
895  loadData(is, myConnectivityattrib);
896  loadData(is, myElementmapname);
897  loadData(is, myDestgroupname);
898  loadData(is, myOutputelemmap);
899  loadData(is, myMirrorelemattrib);
900  loadData(is, myOutputsrcgroup);
901  loadData(is, myMirrorsrcgroup);
902  loadData(is, myOutputdestgroup);
903  loadData(is, myMirrordestgroup);
904  loadData(is, myAttribMirrorOp);
905  loadData(is, myUVOrigin);
906  loadData(is, myUVAngle);
907  loadData(is, myStringReplace);
908  loadData(is, mySearch);
909  loadData(is, myReplace);
910 
911  return true;
912  }
913 
914  const UT_StringHolder & getGroup() const { return myGroup; }
915  void setGroup(const UT_StringHolder & val) { myGroup = val; }
917  {
918  SOP_Node *thissop = cookparms.getNode();
919  if (!thissop) return getGroup();
921  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
922  return result;
923  }
924  GroupType getGroupType() const { return GroupType(myGroupType); }
925  void setGroupType(GroupType val) { myGroupType = int64(val); }
927  {
928  SOP_Node *thissop = cookparms.getNode();
929  if (!thissop) return getGroupType();
930  int64 result;
931  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
932  return GroupType(result);
933  }
934  MirrorOp getMirrorOp() const { return MirrorOp(myMirrorOp); }
935  void setMirrorOp(MirrorOp val) { myMirrorOp = int64(val); }
937  {
938  SOP_Node *thissop = cookparms.getNode();
939  if (!thissop) return getMirrorOp();
940  int64 result;
941  OP_Utils::evalOpParm(result, thissop, "usegroupas", cookparms.getCookTime(), 0);
942  return MirrorOp(result);
943  }
944  Attrib getAttrib() const { return Attrib(myAttrib); }
945  void setAttrib(Attrib val) { myAttrib = int64(val); }
946  Attrib opAttrib(const SOP_NodeVerb::CookParms &cookparms) const
947  {
948  SOP_Node *thissop = cookparms.getNode();
949  if (!thissop) return getAttrib();
950  int64 result;
951  OP_Utils::evalOpParm(result, thissop, "attrib", cookparms.getCookTime(), 0);
952  return Attrib(result);
953  }
954  const UT_StringHolder & getAttribName() const { return myAttribName; }
955  void setAttribName(const UT_StringHolder & val) { myAttribName = val; }
957  {
958  SOP_Node *thissop = cookparms.getNode();
959  if (!thissop) return getAttribName();
961  OP_Utils::evalOpParm(result, thissop, "attribname", cookparms.getCookTime(), 0);
962  return result;
963  }
964  Mirroringmethod getMirroringmethod() const { return Mirroringmethod(myMirroringmethod); }
965  void setMirroringmethod(Mirroringmethod val) { myMirroringmethod = int64(val); }
967  {
968  SOP_Node *thissop = cookparms.getNode();
969  if (!thissop) return getMirroringmethod();
970  int64 result;
971  OP_Utils::evalOpParm(result, thissop, "mirroringmethod", cookparms.getCookTime(), 0);
972  return Mirroringmethod(result);
973  }
974  bool getUseTolerance() const { return myUseTolerance; }
975  void setUseTolerance(bool val) { myUseTolerance = val; }
976  bool opUseTolerance(const SOP_NodeVerb::CookParms &cookparms) const
977  {
978  SOP_Node *thissop = cookparms.getNode();
979  if (!thissop) return getUseTolerance();
980  bool result;
981  OP_Utils::evalOpParm(result, thissop, "usetolerance", cookparms.getCookTime(), 0);
982  return result;
983  }
984  fpreal64 getTolerance() const { return myTolerance; }
985  void setTolerance(fpreal64 val) { myTolerance = val; }
987  {
988  SOP_Node *thissop = cookparms.getNode();
989  if (!thissop) return getTolerance();
991  OP_Utils::evalOpParm(result, thissop, "tolerance", cookparms.getCookTime(), 0);
992  return result;
993  }
994  UT_Vector3D getOrigin() const { return myOrigin; }
995  void setOrigin(UT_Vector3D val) { myOrigin = val; }
997  {
998  SOP_Node *thissop = cookparms.getNode();
999  if (!thissop) return getOrigin();
1001  OP_Utils::evalOpParm(result, thissop, "origin", cookparms.getCookTime(), 0);
1002  return result;
1003  }
1004  fpreal64 getDist() const { return myDist; }
1005  void setDist(fpreal64 val) { myDist = val; }
1006  fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
1007  {
1008  SOP_Node *thissop = cookparms.getNode();
1009  if (!thissop) return getDist();
1010  fpreal64 result;
1011  OP_Utils::evalOpParm(result, thissop, "dist", cookparms.getCookTime(), 0);
1012  return result;
1013  }
1014  UT_Vector3D getDir() const { return myDir; }
1015  void setDir(UT_Vector3D val) { myDir = val; }
1017  {
1018  SOP_Node *thissop = cookparms.getNode();
1019  if (!thissop) return getDir();
1021  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
1022  return result;
1023  }
1024  const UT_StringHolder & getMirroringedge() const { return myMirroringedge; }
1025  void setMirroringedge(const UT_StringHolder & val) { myMirroringedge = val; }
1027  {
1028  SOP_Node *thissop = cookparms.getNode();
1029  if (!thissop) return getMirroringedge();
1031  OP_Utils::evalOpParm(result, thissop, "mirroringedge", cookparms.getCookTime(), 0);
1032  return result;
1033  }
1034  const UT_StringHolder & getSourcehint() const { return mySourcehint; }
1035  void setSourcehint(const UT_StringHolder & val) { mySourcehint = val; }
1037  {
1038  SOP_Node *thissop = cookparms.getNode();
1039  if (!thissop) return getSourcehint();
1041  OP_Utils::evalOpParm(result, thissop, "sourcehint", cookparms.getCookTime(), 0);
1042  return result;
1043  }
1044  bool getUseconnectivityattrib() const { return myUseconnectivityattrib; }
1045  void setUseconnectivityattrib(bool val) { myUseconnectivityattrib = val; }
1047  {
1048  SOP_Node *thissop = cookparms.getNode();
1049  if (!thissop) return getUseconnectivityattrib();
1050  bool result;
1051  OP_Utils::evalOpParm(result, thissop, "useconnectivityattrib", cookparms.getCookTime(), 0);
1052  return result;
1053  }
1054  const UT_StringHolder & getConnectivityattrib() const { return myConnectivityattrib; }
1055  void setConnectivityattrib(const UT_StringHolder & val) { myConnectivityattrib = val; }
1057  {
1058  SOP_Node *thissop = cookparms.getNode();
1059  if (!thissop) return getConnectivityattrib();
1061  OP_Utils::evalOpParm(result, thissop, "connectivityattrib", cookparms.getCookTime(), 0);
1062  return result;
1063  }
1064  const UT_StringHolder & getElementmapname() const { return myElementmapname; }
1065  void setElementmapname(const UT_StringHolder & val) { myElementmapname = val; }
1067  {
1068  SOP_Node *thissop = cookparms.getNode();
1069  if (!thissop) return getElementmapname();
1071  OP_Utils::evalOpParm(result, thissop, "elementmapname", cookparms.getCookTime(), 0);
1072  return result;
1073  }
1074  const UT_StringHolder & getDestgroupname() const { return myDestgroupname; }
1075  void setDestgroupname(const UT_StringHolder & val) { myDestgroupname = val; }
1077  {
1078  SOP_Node *thissop = cookparms.getNode();
1079  if (!thissop) return getDestgroupname();
1081  OP_Utils::evalOpParm(result, thissop, "destgroupname", cookparms.getCookTime(), 0);
1082  return result;
1083  }
1084  bool getOutputelemmap() const { return myOutputelemmap; }
1085  void setOutputelemmap(bool val) { myOutputelemmap = val; }
1086  bool opOutputelemmap(const SOP_NodeVerb::CookParms &cookparms) const
1087  {
1088  SOP_Node *thissop = cookparms.getNode();
1089  if (!thissop) return getOutputelemmap();
1090  bool result;
1091  OP_Utils::evalOpParm(result, thissop, "outputelemmap", cookparms.getCookTime(), 0);
1092  return result;
1093  }
1094  const UT_StringHolder & getMirrorelemattrib() const { return myMirrorelemattrib; }
1095  void setMirrorelemattrib(const UT_StringHolder & val) { myMirrorelemattrib = val; }
1097  {
1098  SOP_Node *thissop = cookparms.getNode();
1099  if (!thissop) return getMirrorelemattrib();
1101  OP_Utils::evalOpParm(result, thissop, "mirrorelemattrib", cookparms.getCookTime(), 0);
1102  return result;
1103  }
1104  bool getOutputsrcgroup() const { return myOutputsrcgroup; }
1105  void setOutputsrcgroup(bool val) { myOutputsrcgroup = val; }
1106  bool opOutputsrcgroup(const SOP_NodeVerb::CookParms &cookparms) const
1107  {
1108  SOP_Node *thissop = cookparms.getNode();
1109  if (!thissop) return getOutputsrcgroup();
1110  bool result;
1111  OP_Utils::evalOpParm(result, thissop, "outputsrcgroup", cookparms.getCookTime(), 0);
1112  return result;
1113  }
1114  const UT_StringHolder & getMirrorsrcgroup() const { return myMirrorsrcgroup; }
1115  void setMirrorsrcgroup(const UT_StringHolder & val) { myMirrorsrcgroup = val; }
1117  {
1118  SOP_Node *thissop = cookparms.getNode();
1119  if (!thissop) return getMirrorsrcgroup();
1121  OP_Utils::evalOpParm(result, thissop, "mirrorsrcgroup", cookparms.getCookTime(), 0);
1122  return result;
1123  }
1124  bool getOutputdestgroup() const { return myOutputdestgroup; }
1125  void setOutputdestgroup(bool val) { myOutputdestgroup = val; }
1126  bool opOutputdestgroup(const SOP_NodeVerb::CookParms &cookparms) const
1127  {
1128  SOP_Node *thissop = cookparms.getNode();
1129  if (!thissop) return getOutputdestgroup();
1130  bool result;
1131  OP_Utils::evalOpParm(result, thissop, "outputdestgroup", cookparms.getCookTime(), 0);
1132  return result;
1133  }
1134  const UT_StringHolder & getMirrordestgroup() const { return myMirrordestgroup; }
1135  void setMirrordestgroup(const UT_StringHolder & val) { myMirrordestgroup = val; }
1137  {
1138  SOP_Node *thissop = cookparms.getNode();
1139  if (!thissop) return getMirrordestgroup();
1141  OP_Utils::evalOpParm(result, thissop, "mirrordestgroup", cookparms.getCookTime(), 0);
1142  return result;
1143  }
1144  AttribMirrorOp getAttribMirrorOp() const { return AttribMirrorOp(myAttribMirrorOp); }
1145  void setAttribMirrorOp(AttribMirrorOp val) { myAttribMirrorOp = int64(val); }
1147  {
1148  SOP_Node *thissop = cookparms.getNode();
1149  if (!thissop) return getAttribMirrorOp();
1150  int64 result;
1151  OP_Utils::evalOpParm(result, thissop, "attribmirror", cookparms.getCookTime(), 0);
1152  return AttribMirrorOp(result);
1153  }
1154  UT_Vector2D getUVOrigin() const { return myUVOrigin; }
1155  void setUVOrigin(UT_Vector2D val) { myUVOrigin = val; }
1157  {
1158  SOP_Node *thissop = cookparms.getNode();
1159  if (!thissop) return getUVOrigin();
1161  OP_Utils::evalOpParm(result, thissop, "uvorig", cookparms.getCookTime(), 0);
1162  return result;
1163  }
1164  fpreal64 getUVAngle() const { return myUVAngle; }
1165  void setUVAngle(fpreal64 val) { myUVAngle = val; }
1167  {
1168  SOP_Node *thissop = cookparms.getNode();
1169  if (!thissop) return getUVAngle();
1170  fpreal64 result;
1171  OP_Utils::evalOpParm(result, thissop, "uvangle", cookparms.getCookTime(), 0);
1172  return result;
1173  }
1174  bool getStringReplace() const { return myStringReplace; }
1175  void setStringReplace(bool val) { myStringReplace = val; }
1176  bool opStringReplace(const SOP_NodeVerb::CookParms &cookparms) const
1177  {
1178  SOP_Node *thissop = cookparms.getNode();
1179  if (!thissop) return getStringReplace();
1180  bool result;
1181  OP_Utils::evalOpParm(result, thissop, "stringreplace", cookparms.getCookTime(), 0);
1182  return result;
1183  }
1184  const UT_StringHolder & getSearch() const { return mySearch; }
1185  void setSearch(const UT_StringHolder & val) { mySearch = val; }
1187  {
1188  SOP_Node *thissop = cookparms.getNode();
1189  if (!thissop) return getSearch();
1191  OP_Utils::evalOpParm(result, thissop, "search", cookparms.getCookTime(), 0);
1192  return result;
1193  }
1194  const UT_StringHolder & getReplace() const { return myReplace; }
1195  void setReplace(const UT_StringHolder & val) { myReplace = val; }
1197  {
1198  SOP_Node *thissop = cookparms.getNode();
1199  if (!thissop) return getReplace();
1201  OP_Utils::evalOpParm(result, thissop, "replace", cookparms.getCookTime(), 0);
1202  return result;
1203  }
1204 
1205 private:
1206  UT_StringHolder myGroup;
1207  int64 myGroupType;
1208  int64 myMirrorOp;
1209  int64 myAttrib;
1210  UT_StringHolder myAttribName;
1211  int64 myMirroringmethod;
1212  bool myUseTolerance;
1213  fpreal64 myTolerance;
1214  UT_Vector3D myOrigin;
1215  fpreal64 myDist;
1216  UT_Vector3D myDir;
1217  UT_StringHolder myMirroringedge;
1218  UT_StringHolder mySourcehint;
1219  bool myUseconnectivityattrib;
1220  UT_StringHolder myConnectivityattrib;
1221  UT_StringHolder myElementmapname;
1222  UT_StringHolder myDestgroupname;
1223  bool myOutputelemmap;
1224  UT_StringHolder myMirrorelemattrib;
1225  bool myOutputsrcgroup;
1226  UT_StringHolder myMirrorsrcgroup;
1227  bool myOutputdestgroup;
1228  UT_StringHolder myMirrordestgroup;
1229  int64 myAttribMirrorOp;
1230  UT_Vector2D myUVOrigin;
1231  fpreal64 myUVAngle;
1232  bool myStringReplace;
1233  UT_StringHolder mySearch;
1234  UT_StringHolder myReplace;
1235 
1236 };
fpreal64 opTolerance(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:556
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:63
static void loadData(UT_IStream &is, UT_Vector3I &v)
UT_Vector2T< fpreal64 > UT_Vector2D
const UT_StringHolder & getMirroringedge() const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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:303
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:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
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:372
ParmType getNestParmType(TempIndex fieldnum) const override
UT_Vector3D getOrigin() const
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
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
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
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
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