HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_AttribFromParm.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_AttribFromParmEnums
24 {
25  enum class Method
26  {
27  SINGLE = 0,
28  SUBNET,
29  COMPILE,
31  };
32 
34  getToken(Method enum_value)
35  {
36  using namespace UT::Literal;
37  switch (enum_value) {
38  case Method::SINGLE: return "single"_sh;
39  case Method::SUBNET: return "subnet"_sh;
40  case Method::COMPILE: return "compile"_sh;
41  case Method::SINGLEPOINT: return "singlepoint"_sh;
42  default: UT_ASSERT(false); return ""_sh;
43  }
44  }
45 
46 }
47 
48 
50 {
51 public:
52  static int version() { return 1; }
53 
55  {
56  myMethod = 0;
57  myNodepath = ""_UTsh;
58  myCategory = "*"_UTsh;
59  myName = "parms"_UTsh;
60  myParmfilter = "*"_UTsh;
61  myFlattenmultiparm = false;
62  myFlattenramp = false;
63  myEvaluateparms = true;
64  myChannelPrims = false;
65  myChannelMappings = false;
66  myPackLockGeometry = true;
67  myExplicitWires = false;
68  myExplicitPorts = false;
69  myUpdateOnMove = false;
70  myUpdateOnRename = false;
71 
72  }
73 
74  explicit SOP_AttribFromParmParms(const SOP_AttribFromParmParms &) = default;
76  SOP_AttribFromParmParms(SOP_AttribFromParmParms &&) noexcept = default;
77  SOP_AttribFromParmParms &operator=(SOP_AttribFromParmParms &&) noexcept = default;
78 
79  ~SOP_AttribFromParmParms() override {}
80 
82  {
83  if (myMethod != src.myMethod) return false;
84  if (myNodepath != src.myNodepath) return false;
85  if (myCategory != src.myCategory) return false;
86  if (myName != src.myName) return false;
87  if (myParmfilter != src.myParmfilter) return false;
88  if (myFlattenmultiparm != src.myFlattenmultiparm) return false;
89  if (myFlattenramp != src.myFlattenramp) return false;
90  if (myEvaluateparms != src.myEvaluateparms) return false;
91  if (myChannelPrims != src.myChannelPrims) return false;
92  if (myChannelMappings != src.myChannelMappings) return false;
93  if (myPackLockGeometry != src.myPackLockGeometry) return false;
94  if (myExplicitWires != src.myExplicitWires) return false;
95  if (myExplicitPorts != src.myExplicitPorts) return false;
96  if (myUpdateOnMove != src.myUpdateOnMove) return false;
97  if (myUpdateOnRename != src.myUpdateOnRename) return false;
98 
99 
100  if (baseGetSignature() != src.baseGetSignature()) return false;
101 
102  return true;
103  }
105  {
106  return !operator==(src);
107  }
109 
110 
111 
112  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
113  {
114  myMethod = 0;
115  if (true)
116  graph->evalOpParm(myMethod, nodeidx, "method", time, graph->isDirect()?nullptr:depnode);
117  myNodepath = ""_UTsh;
118  if (true)
119  graph->evalOpParm(myNodepath, nodeidx, "nodepath", time, graph->isDirect()?nullptr:depnode);
120  myCategory = "*"_UTsh;
121  if (true)
122  graph->evalOpParm(myCategory, nodeidx, "category", time, graph->isDirect()?nullptr:depnode);
123  myName = "parms"_UTsh;
124  if (true)
125  graph->evalOpParm(myName, nodeidx, "name", time, graph->isDirect()?nullptr:depnode);
126  myParmfilter = "*"_UTsh;
127  if (true)
128  graph->evalOpParm(myParmfilter, nodeidx, "parmfilter", time, graph->isDirect()?nullptr:depnode);
129  myFlattenmultiparm = false;
130  if (true)
131  graph->evalOpParm(myFlattenmultiparm, nodeidx, "flattenmultiparm", time, graph->isDirect()?nullptr:depnode);
132  myFlattenramp = false;
133  if (true && ( (true&&!(((getFlattenmultiparm()==1)))) ) )
134  graph->evalOpParm(myFlattenramp, nodeidx, "flattenramp", time, graph->isDirect()?nullptr:depnode);
135  myEvaluateparms = true;
136  if (true)
137  graph->evalOpParm(myEvaluateparms, nodeidx, "evaluateparms", time, graph->isDirect()?nullptr:depnode);
138  myChannelPrims = false;
139  if (true && ( (true&&!(((int64(getMethod())==0))||((getEvaluateparms()==1)))) ) )
140  graph->evalOpParm(myChannelPrims, nodeidx, "channelprims", time, graph->isDirect()?nullptr:depnode);
141  myChannelMappings = false;
142  if (true && ( (true&&!(((int64(getMethod())==0))||((getEvaluateparms()==1))||((getEvaluateparms()==1))||((getEvaluateparms()==0)))) ) )
143  graph->evalOpParm(myChannelMappings, nodeidx, "channelmappings", time, graph->isDirect()?nullptr:depnode);
144  myPackLockGeometry = true;
145  if (true)
146  graph->evalOpParm(myPackLockGeometry, nodeidx, "packlockgeometry", time, graph->isDirect()?nullptr:depnode);
147  myExplicitWires = false;
148  if (true)
149  graph->evalOpParm(myExplicitWires, nodeidx, "explicitwires", time, graph->isDirect()?nullptr:depnode);
150  myExplicitPorts = false;
151  if (true)
152  graph->evalOpParm(myExplicitPorts, nodeidx, "explicitports", time, graph->isDirect()?nullptr:depnode);
153  myUpdateOnMove = false;
154  if (true)
155  graph->evalOpParm(myUpdateOnMove, nodeidx, "updateonmove", time, graph->isDirect()?nullptr:depnode);
156  myUpdateOnRename = false;
157  if (true)
158  graph->evalOpParm(myUpdateOnRename, nodeidx, "updateonrename", time, graph->isDirect()?nullptr:depnode);
159 
160  }
161 
162 
163  void loadFromOpSubclass(const LoadParms &loadparms) override
164  {
165  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
166  }
167 
168 
169  void copyFrom(const OP_NodeParms *src) override
170  {
171  *this = *((const SOP_AttribFromParmParms *)src);
172  }
173 
174  template <typename T>
175  void
176  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
177  {
178  if (idx.size() < 1)
179  return;
180  UT_ASSERT(idx.size() == instance.size()+1);
181  if (idx.size() != instance.size()+1)
182  return;
183  switch (idx[0])
184  {
185  case 0:
186  coerceValue(value, myMethod);
187  break;
188  case 1:
189  coerceValue(value, myNodepath);
190  break;
191  case 2:
192  coerceValue(value, myCategory);
193  break;
194  case 3:
195  coerceValue(value, myName);
196  break;
197  case 4:
198  coerceValue(value, myParmfilter);
199  break;
200  case 5:
201  coerceValue(value, myFlattenmultiparm);
202  break;
203  case 6:
204  coerceValue(value, myFlattenramp);
205  break;
206  case 7:
207  coerceValue(value, myEvaluateparms);
208  break;
209  case 8:
210  coerceValue(value, myChannelPrims);
211  break;
212  case 9:
213  coerceValue(value, myChannelMappings);
214  break;
215  case 10:
216  coerceValue(value, myPackLockGeometry);
217  break;
218  case 11:
219  coerceValue(value, myExplicitWires);
220  break;
221  case 12:
222  coerceValue(value, myExplicitPorts);
223  break;
224  case 13:
225  coerceValue(value, myUpdateOnMove);
226  break;
227  case 14:
228  coerceValue(value, myUpdateOnRename);
229  break;
230 
231  }
232  }
233 
234  bool isParmColorRamp(exint idx) const override
235  {
236  switch (idx)
237  {
238 
239  }
240  return false;
241  }
242 
243  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
244  { doGetParmValue(idx, instance, value); }
245  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
246  { doGetParmValue(idx, instance, value); }
247  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
248  { doGetParmValue(idx, instance, value); }
249  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
250  { doGetParmValue(idx, instance, value); }
251  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
252  { doGetParmValue(idx, instance, value); }
253  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
254  { doGetParmValue(idx, instance, value); }
255  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
256  { doGetParmValue(idx, instance, value); }
257  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
258  { doGetParmValue(idx, instance, value); }
259  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
260  { doGetParmValue(idx, instance, value); }
261  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
262  { doGetParmValue(idx, instance, value); }
263  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
264  { doGetParmValue(idx, instance, value); }
265 
266  template <typename T>
267  void
268  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
269  {
270  if (idx.size() < 1)
271  return;
272  UT_ASSERT(idx.size() == instance.size()+1);
273  if (idx.size() != instance.size()+1)
274  return;
275  switch (idx[0])
276  {
277  case 0:
278  coerceValue(myMethod, clampMinValue(0, clampMaxValue(3, value ) ));
279  break;
280  case 1:
281  coerceValue(myNodepath, ( ( value ) ));
282  break;
283  case 2:
284  coerceValue(myCategory, ( ( value ) ));
285  break;
286  case 3:
287  coerceValue(myName, ( ( value ) ));
288  break;
289  case 4:
290  coerceValue(myParmfilter, ( ( value ) ));
291  break;
292  case 5:
293  coerceValue(myFlattenmultiparm, ( ( value ) ));
294  break;
295  case 6:
296  coerceValue(myFlattenramp, ( ( value ) ));
297  break;
298  case 7:
299  coerceValue(myEvaluateparms, ( ( value ) ));
300  break;
301  case 8:
302  coerceValue(myChannelPrims, ( ( value ) ));
303  break;
304  case 9:
305  coerceValue(myChannelMappings, ( ( value ) ));
306  break;
307  case 10:
308  coerceValue(myPackLockGeometry, ( ( value ) ));
309  break;
310  case 11:
311  coerceValue(myExplicitWires, ( ( value ) ));
312  break;
313  case 12:
314  coerceValue(myExplicitPorts, ( ( value ) ));
315  break;
316  case 13:
317  coerceValue(myUpdateOnMove, ( ( value ) ));
318  break;
319  case 14:
320  coerceValue(myUpdateOnRename, ( ( value ) ));
321  break;
322 
323  }
324  }
325 
326  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
327  { doSetParmValue(idx, instance, value); }
328  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
329  { doSetParmValue(idx, instance, value); }
330  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
331  { doSetParmValue(idx, instance, value); }
332  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
333  { doSetParmValue(idx, instance, value); }
334  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
335  { doSetParmValue(idx, instance, value); }
336  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
337  { doSetParmValue(idx, instance, value); }
338  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
339  { doSetParmValue(idx, instance, value); }
340  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
341  { doSetParmValue(idx, instance, value); }
342  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
343  { doSetParmValue(idx, instance, value); }
344  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
345  { doSetParmValue(idx, instance, value); }
346  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
347  { doSetParmValue(idx, instance, value); }
348 
349  exint getNestNumParms(TempIndex idx) const override
350  {
351  if (idx.size() == 0)
352  return 15;
353  switch (idx[0])
354  {
355 
356  }
357  // Invalid
358  return 0;
359  }
360 
361  const char *getNestParmName(TempIndex fieldnum) const override
362  {
363  if (fieldnum.size() < 1)
364  return 0;
365  switch (fieldnum[0])
366  {
367  case 0:
368  return "method";
369  case 1:
370  return "nodepath";
371  case 2:
372  return "category";
373  case 3:
374  return "name";
375  case 4:
376  return "parmfilter";
377  case 5:
378  return "flattenmultiparm";
379  case 6:
380  return "flattenramp";
381  case 7:
382  return "evaluateparms";
383  case 8:
384  return "channelprims";
385  case 9:
386  return "channelmappings";
387  case 10:
388  return "packlockgeometry";
389  case 11:
390  return "explicitwires";
391  case 12:
392  return "explicitports";
393  case 13:
394  return "updateonmove";
395  case 14:
396  return "updateonrename";
397 
398  }
399  return 0;
400  }
401 
402  ParmType getNestParmType(TempIndex fieldnum) const override
403  {
404  if (fieldnum.size() < 1)
405  return PARM_UNSUPPORTED;
406  switch (fieldnum[0])
407  {
408  case 0:
409  return PARM_INTEGER;
410  case 1:
411  return PARM_STRING;
412  case 2:
413  return PARM_STRING;
414  case 3:
415  return PARM_STRING;
416  case 4:
417  return PARM_STRING;
418  case 5:
419  return PARM_INTEGER;
420  case 6:
421  return PARM_INTEGER;
422  case 7:
423  return PARM_INTEGER;
424  case 8:
425  return PARM_INTEGER;
426  case 9:
427  return PARM_INTEGER;
428  case 10:
429  return PARM_INTEGER;
430  case 11:
431  return PARM_INTEGER;
432  case 12:
433  return PARM_INTEGER;
434  case 13:
435  return PARM_INTEGER;
436  case 14:
437  return PARM_INTEGER;
438 
439  }
440  return PARM_UNSUPPORTED;
441  }
442 
443  // Boiler plate to load individual types.
444  static void loadData(UT_IStream &is, int64 &v)
445  { is.bread(&v, 1); }
446  static void loadData(UT_IStream &is, bool &v)
447  { int64 iv; is.bread(&iv, 1); v = iv; }
448  static void loadData(UT_IStream &is, fpreal64 &v)
449  { is.bread<fpreal64>(&v, 1); }
450  static void loadData(UT_IStream &is, UT_Vector2D &v)
451  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
452  static void loadData(UT_IStream &is, UT_Vector3D &v)
453  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
454  is.bread<fpreal64>(&v.z(), 1); }
455  static void loadData(UT_IStream &is, UT_Vector4D &v)
456  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
457  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
458  static void loadData(UT_IStream &is, UT_Matrix2D &v)
459  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
460  static void loadData(UT_IStream &is, UT_Matrix3D &v)
461  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
462  static void loadData(UT_IStream &is, UT_Matrix4D &v)
463  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
464  static void loadData(UT_IStream &is, UT_Vector2I &v)
465  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
466  static void loadData(UT_IStream &is, UT_Vector3I &v)
467  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
468  is.bread<int64>(&v.z(), 1); }
469  static void loadData(UT_IStream &is, UT_Vector4I &v)
470  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
471  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
473  { is.bread(v); }
475  { UT_StringHolder rampdata;
476  loadData(is, rampdata);
477  if (rampdata.isstring())
478  {
479  v.reset(new UT_Ramp());
480  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
481  v->load(istr);
482  }
483  else v.reset();
484  }
487  loadData(is, data);
488  if (data.isstring())
489  {
490  // Find the data type.
491  const char *colon = UT_StringWrap(data).findChar(':');
492  if (colon)
493  {
494  int typelen = colon - data.buffer();
496  type.strncpy(data.buffer(), typelen);
497  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
498 
499  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
500  }
501  }
502  else v.reset();
503  }
504 
505  static void saveData(std::ostream &os, int64 v)
506  { UTwrite(os, &v); }
507  static void saveData(std::ostream &os, bool v)
508  { int64 iv = v; UTwrite(os, &iv); }
509  static void saveData(std::ostream &os, fpreal64 v)
510  { UTwrite<fpreal64>(os, &v); }
511  static void saveData(std::ostream &os, UT_Vector2D v)
512  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
513  static void saveData(std::ostream &os, UT_Vector3D v)
514  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
515  UTwrite<fpreal64>(os, &v.z()); }
516  static void saveData(std::ostream &os, UT_Vector4D v)
517  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
518  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
519  static void saveData(std::ostream &os, UT_Matrix2D v)
521  static void saveData(std::ostream &os, UT_Matrix3D v)
523  static void saveData(std::ostream &os, UT_Matrix4D v)
525  static void saveData(std::ostream &os, UT_StringHolder s)
526  { UT_StringWrap(s).saveBinary(os); }
527  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
529  UT_OStringStream ostr;
530  if (s) s->save(ostr);
531  result = ostr.str();
532  saveData(os, result);
533  }
534  static void saveData(std::ostream &os, PRM_DataItemHandle s)
536  UT_OStringStream ostr;
537  if (s)
538  {
539  ostr << s->getDataTypeToken();
540  ostr << ":";
541  s->saveBinary(ostr);
542  }
543  result = ostr.str();
544  saveData(os, result);
545  }
546 
547 
548  void save(std::ostream &os) const
549  {
550  int32 v = version();
551  UTwrite(os, &v);
552  saveData(os, myMethod);
553  saveData(os, myNodepath);
554  saveData(os, myCategory);
555  saveData(os, myName);
556  saveData(os, myParmfilter);
557  saveData(os, myFlattenmultiparm);
558  saveData(os, myFlattenramp);
559  saveData(os, myEvaluateparms);
560  saveData(os, myChannelPrims);
561  saveData(os, myChannelMappings);
562  saveData(os, myPackLockGeometry);
563  saveData(os, myExplicitWires);
564  saveData(os, myExplicitPorts);
565  saveData(os, myUpdateOnMove);
566  saveData(os, myUpdateOnRename);
567 
568  }
569 
570  bool load(UT_IStream &is)
571  {
572  int32 v;
573  is.bread(&v, 1);
574  if (version() != v)
575  {
576  // Fail incompatible versions
577  return false;
578  }
579  loadData(is, myMethod);
580  loadData(is, myNodepath);
581  loadData(is, myCategory);
582  loadData(is, myName);
583  loadData(is, myParmfilter);
584  loadData(is, myFlattenmultiparm);
585  loadData(is, myFlattenramp);
586  loadData(is, myEvaluateparms);
587  loadData(is, myChannelPrims);
588  loadData(is, myChannelMappings);
589  loadData(is, myPackLockGeometry);
590  loadData(is, myExplicitWires);
591  loadData(is, myExplicitPorts);
592  loadData(is, myUpdateOnMove);
593  loadData(is, myUpdateOnRename);
594 
595  return true;
596  }
597 
598  Method getMethod() const { return Method(myMethod); }
599  void setMethod(Method val) { myMethod = int64(val); }
600  Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
601  {
602  SOP_Node *thissop = cookparms.getNode();
603  if (!thissop) return getMethod();
604  int64 result;
605  OP_Utils::evalOpParm(result, thissop, "method", cookparms.getCookTime(), 0);
606  return Method(result);
607  }
608  const UT_StringHolder & getNodepath() const { return myNodepath; }
609  void setNodepath(const UT_StringHolder & val) { myNodepath = val; }
611  {
612  SOP_Node *thissop = cookparms.getNode();
613  if (!thissop) return getNodepath();
615  OP_Utils::evalOpParm(result, thissop, "nodepath", cookparms.getCookTime(), 0);
616  return result;
617  }
618  const UT_StringHolder & getCategory() const { return myCategory; }
619  void setCategory(const UT_StringHolder & val) { myCategory = val; }
621  {
622  SOP_Node *thissop = cookparms.getNode();
623  if (!thissop) return getCategory();
625  OP_Utils::evalOpParm(result, thissop, "category", cookparms.getCookTime(), 0);
626  return result;
627  }
628  const UT_StringHolder & getName() const { return myName; }
629  void setName(const UT_StringHolder & val) { myName = val; }
631  {
632  SOP_Node *thissop = cookparms.getNode();
633  if (!thissop) return getName();
635  OP_Utils::evalOpParm(result, thissop, "name", cookparms.getCookTime(), 0);
636  return result;
637  }
638  const UT_StringHolder & getParmfilter() const { return myParmfilter; }
639  void setParmfilter(const UT_StringHolder & val) { myParmfilter = val; }
641  {
642  SOP_Node *thissop = cookparms.getNode();
643  if (!thissop) return getParmfilter();
645  OP_Utils::evalOpParm(result, thissop, "parmfilter", cookparms.getCookTime(), 0);
646  return result;
647  }
648  bool getFlattenmultiparm() const { return myFlattenmultiparm; }
649  void setFlattenmultiparm(bool val) { myFlattenmultiparm = val; }
650  bool opFlattenmultiparm(const SOP_NodeVerb::CookParms &cookparms) const
651  {
652  SOP_Node *thissop = cookparms.getNode();
653  if (!thissop) return getFlattenmultiparm();
654  bool result;
655  OP_Utils::evalOpParm(result, thissop, "flattenmultiparm", cookparms.getCookTime(), 0);
656  return result;
657  }
658  bool getFlattenramp() const { return myFlattenramp; }
659  void setFlattenramp(bool val) { myFlattenramp = val; }
660  bool opFlattenramp(const SOP_NodeVerb::CookParms &cookparms) const
661  {
662  SOP_Node *thissop = cookparms.getNode();
663  if (!thissop) return getFlattenramp();
664  bool result;
665  OP_Utils::evalOpParm(result, thissop, "flattenramp", cookparms.getCookTime(), 0);
666  return result;
667  }
668  bool getEvaluateparms() const { return myEvaluateparms; }
669  void setEvaluateparms(bool val) { myEvaluateparms = val; }
670  bool opEvaluateparms(const SOP_NodeVerb::CookParms &cookparms) const
671  {
672  SOP_Node *thissop = cookparms.getNode();
673  if (!thissop) return getEvaluateparms();
674  bool result;
675  OP_Utils::evalOpParm(result, thissop, "evaluateparms", cookparms.getCookTime(), 0);
676  return result;
677  }
678  bool getChannelPrims() const { return myChannelPrims; }
679  void setChannelPrims(bool val) { myChannelPrims = val; }
680  bool opChannelPrims(const SOP_NodeVerb::CookParms &cookparms) const
681  {
682  SOP_Node *thissop = cookparms.getNode();
683  if (!thissop) return getChannelPrims();
684  bool result;
685  OP_Utils::evalOpParm(result, thissop, "channelprims", cookparms.getCookTime(), 0);
686  return result;
687  }
688  bool getChannelMappings() const { return myChannelMappings; }
689  void setChannelMappings(bool val) { myChannelMappings = val; }
690  bool opChannelMappings(const SOP_NodeVerb::CookParms &cookparms) const
691  {
692  SOP_Node *thissop = cookparms.getNode();
693  if (!thissop) return getChannelMappings();
694  bool result;
695  OP_Utils::evalOpParm(result, thissop, "channelmappings", cookparms.getCookTime(), 0);
696  return result;
697  }
698  bool getPackLockGeometry() const { return myPackLockGeometry; }
699  void setPackLockGeometry(bool val) { myPackLockGeometry = val; }
700  bool opPackLockGeometry(const SOP_NodeVerb::CookParms &cookparms) const
701  {
702  SOP_Node *thissop = cookparms.getNode();
703  if (!thissop) return getPackLockGeometry();
704  bool result;
705  OP_Utils::evalOpParm(result, thissop, "packlockgeometry", cookparms.getCookTime(), 0);
706  return result;
707  }
708  bool getExplicitWires() const { return myExplicitWires; }
709  void setExplicitWires(bool val) { myExplicitWires = val; }
710  bool opExplicitWires(const SOP_NodeVerb::CookParms &cookparms) const
711  {
712  SOP_Node *thissop = cookparms.getNode();
713  if (!thissop) return getExplicitWires();
714  bool result;
715  OP_Utils::evalOpParm(result, thissop, "explicitwires", cookparms.getCookTime(), 0);
716  return result;
717  }
718  bool getExplicitPorts() const { return myExplicitPorts; }
719  void setExplicitPorts(bool val) { myExplicitPorts = val; }
720  bool opExplicitPorts(const SOP_NodeVerb::CookParms &cookparms) const
721  {
722  SOP_Node *thissop = cookparms.getNode();
723  if (!thissop) return getExplicitPorts();
724  bool result;
725  OP_Utils::evalOpParm(result, thissop, "explicitports", cookparms.getCookTime(), 0);
726  return result;
727  }
728  bool getUpdateOnMove() const { return myUpdateOnMove; }
729  void setUpdateOnMove(bool val) { myUpdateOnMove = val; }
730  bool opUpdateOnMove(const SOP_NodeVerb::CookParms &cookparms) const
731  {
732  SOP_Node *thissop = cookparms.getNode();
733  if (!thissop) return getUpdateOnMove();
734  bool result;
735  OP_Utils::evalOpParm(result, thissop, "updateonmove", cookparms.getCookTime(), 0);
736  return result;
737  }
738  bool getUpdateOnRename() const { return myUpdateOnRename; }
739  void setUpdateOnRename(bool val) { myUpdateOnRename = val; }
740  bool opUpdateOnRename(const SOP_NodeVerb::CookParms &cookparms) const
741  {
742  SOP_Node *thissop = cookparms.getNode();
743  if (!thissop) return getUpdateOnRename();
744  bool result;
745  OP_Utils::evalOpParm(result, thissop, "updateonrename", cookparms.getCookTime(), 0);
746  return result;
747  }
748 
749 private:
750  int64 myMethod;
751  UT_StringHolder myNodepath;
752  UT_StringHolder myCategory;
753  UT_StringHolder myName;
754  UT_StringHolder myParmfilter;
755  bool myFlattenmultiparm;
756  bool myFlattenramp;
757  bool myEvaluateparms;
758  bool myChannelPrims;
759  bool myChannelMappings;
760  bool myPackLockGeometry;
761  bool myExplicitWires;
762  bool myExplicitPorts;
763  bool myUpdateOnMove;
764  bool myUpdateOnRename;
765 
766 };
type
Definition: core.h:556
static void loadData(UT_IStream &is, bool &v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:403
bool opUpdateOnRename(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
GLboolean * data
Definition: glcorearb.h:131
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setName(const UT_StringHolder &val)
SYS_FORCE_INLINE UT_StringHolder getToken(Method enum_value)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
GLsizei const GLfloat * value
Definition: glcorearb.h:824
static void loadData(UT_IStream &is, UT_Vector2I &v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, int64 &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
void copyFrom(const OP_NodeParms *src) override
GLdouble s
Definition: glad.h:3009
const UT_StringHolder & getCategory() const
UT_StringHolder opName(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, fpreal64 &v)
void setCategory(const UT_StringHolder &val)
**But if you need a result
Definition: thread.h:622
bool opExplicitPorts(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector2D v)
static void saveData(std::ostream &os, int64 v)
static void saveData(std::ostream &os, fpreal64 v)
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.
bool isParmColorRamp(exint idx) const override
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
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:426
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
const UT_StringHolder & getName() const
bool opEvaluateparms(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &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:497
PXL_API const char * getName(const ColorSpace *space)
Return the name of the color space.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
static void saveData(std::ostream &os, UT_Vector3D v)
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
bool opExplicitWires(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
long long int64
Definition: SYS_Types.h:116
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool operator==(const SOP_AttribFromParmParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
const UT_StringHolder & getNodepath() const
static void saveData(std::ostream &os, bool v)
const char * getNestParmName(TempIndex fieldnum) const override
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:306
GT_API const UT_StringHolder version
static void saveData(std::ostream &os, UT_Vector4D v)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
exint getNestNumParms(TempIndex idx) const override
UT_StringHolder opNodepath(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
const UT_StringHolder & getParmfilter() const
bool operator!=(const SOP_AttribFromParmParms &src) const
bool opUpdateOnMove(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCategory(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
fpreal64 fpreal
Definition: SYS_Types.h:283
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void setNodepath(const UT_StringHolder &val)
bool opPackLockGeometry(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
static void loadData(UT_IStream &is, UT_Matrix4D &v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
bool opChannelPrims(const SOP_NodeVerb::CookParms &cookparms) const
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
static void loadData(UT_IStream &is, UT_Matrix2D &v)
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool opFlattenmultiparm(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:432
UT_StringHolder opParmfilter(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setParmfilter(const UT_StringHolder &val)
const char * findChar(int c) const
Definition: UT_String.h:1421
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:165
bool opFlattenramp(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, UT_Vector2D &v)
GLboolean r
Definition: glcorearb.h:1222
exint bread(uint8 *buffer, exint asize=1)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:667
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
static void saveData(std::ostream &os, UT_Matrix4D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void save(std::ostream &os) const
bool opChannelMappings(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:428
SYS_FORCE_INLINE bool isstring() const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, UT_StringHolder s)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665