HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_AttribCreate-2.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_AttribCreate_2_0Enums
24 {
25  enum class Grouptype
26  {
27  GUESS = 0,
28  VERTICES,
29  EDGES,
30  POINTS,
31  PRIMS
32  };
33  enum class Existing
34  {
35  ERROR = 0,
36  WARN,
37  REPLACE,
38  BETTER
39  };
40  enum class Class
41  {
42  DETAIL = 0,
43  PRIMITIVE,
44  POINT,
45  VERTEX
46  };
47  enum class Type
48  {
49  FLOAT = 0,
50  INT,
51  VECTOR,
52  INDEX,
53  FLOATARRAY,
54  INTARRAY,
56  DICT,
57  DICTARRAY
58  };
59  enum class Typeinfo
60  {
61  GUESS = 0,
62  NONE,
63  POINT,
64  VECTOR,
65  NORMAL,
66  COLOR,
67  QUATERNION,
68  TRANFORM,
70  };
71  enum class Precision
72  {
73  _8 = 0,
74  _16,
75  _32,
76  _64,
77  AUTO
78  };
79 }
80 
81 
83 {
84 public:
85  static int version() { return 1; }
86  struct Numattr
87  {
88  bool enable;
94  bool savetoinfo;
101  bool uselocal;
104 
105 
107  {
108  enable = true;
109  name = "attribute#"_UTsh;
110  existing = 3;
111  createvarmap = false;
112  varname = ""_UTsh;
113  _class = 2;
114  savetoinfo = false;
115  type = 0;
116  typeinfo = 0;
117  precision = 4;
118  size = 1;
119  defaultv = UT_Vector4D(0,0,0,0);
120  writevalues = true;
121  uselocal = true;
122  valuev = UT_Vector4D(0,0,0,0);
123  string = ""_UTsh;
124 
125  }
126 
127  bool operator==(const Numattr &src) const
128  {
129  if (enable != src.enable) return false;
130  if (name != src.name) return false;
131  if (existing != src.existing) return false;
132  if (createvarmap != src.createvarmap) return false;
133  if (varname != src.varname) return false;
134  if (_class != src._class) return false;
135  if (savetoinfo != src.savetoinfo) return false;
136  if (type != src.type) return false;
137  if (typeinfo != src.typeinfo) return false;
138  if (precision != src.precision) return false;
139  if (size != src.size) return false;
140  if (defaultv != src.defaultv) return false;
141  if (writevalues != src.writevalues) return false;
142  if (uselocal != src.uselocal) return false;
143  if (valuev != src.valuev) return false;
144  if (string != src.string) return false;
145 
146  return true;
147  }
148  bool operator!=(const Numattr &src) const
149  {
150  return !operator==(src);
151  }
152 
153  };
154 
156  {
158 
159  buf.strcat("[ ");
160  for (int i = 0; i < list.entries(); i++)
161  {
162  if (i)
163  buf.strcat(", ");
164  buf.strcat("( ");
165  buf.append("");
166  buf.appendSprintf("%s", (list(i).enable) ? "true" : "false");
167  buf.append(", ");
168  { UT_String tmp; tmp = UT_StringWrap(list(i).name).makeQuotedString('"'); buf.strcat(tmp); }
169  buf.append(", ");
170  buf.appendSprintf("%d", (int) list(i).existing);
171  buf.append(", ");
172  buf.appendSprintf("%s", (list(i).createvarmap) ? "true" : "false");
173  buf.append(", ");
174  { UT_String tmp; tmp = UT_StringWrap(list(i).varname).makeQuotedString('"'); buf.strcat(tmp); }
175  buf.append(", ");
176  buf.appendSprintf("%d", (int) list(i)._class);
177  buf.append(", ");
178  buf.appendSprintf("%s", (list(i).savetoinfo) ? "true" : "false");
179  buf.append(", ");
180  buf.appendSprintf("%d", (int) list(i).type);
181  buf.append(", ");
182  buf.appendSprintf("%d", (int) list(i).typeinfo);
183  buf.append(", ");
184  buf.appendSprintf("%d", (int) list(i).precision);
185  buf.append(", ");
186  buf.appendSprintf("%d", (int) list(i).size);
187  buf.append(", ");
188  buf.appendSprintf("(%f, %f, %f, %f)", list(i).defaultv.x(), list(i).defaultv.y(), list(i).defaultv.z(), list(i).defaultv.w());
189  buf.append(", ");
190  buf.appendSprintf("%s", (list(i).writevalues) ? "true" : "false");
191  buf.append(", ");
192  buf.appendSprintf("%s", (list(i).uselocal) ? "true" : "false");
193  buf.append(", ");
194  buf.appendSprintf("(%f, %f, %f, %f)", list(i).valuev.x(), list(i).valuev.y(), list(i).valuev.z(), list(i).valuev.w());
195  buf.append(", ");
196  { UT_String tmp; tmp = UT_StringWrap(list(i).string).makeQuotedString('"'); buf.strcat(tmp); }
197 
198  buf.strcat(" )");
199  }
200  buf.strcat(" ]");
201 
203  return result;
204  }
205 
207  {
208  myGroup = ""_UTsh;
209  myGrouptype = 0;
210  myEncodenames = false;
211  myNumattr.setSize(1);
212 
213  }
214 
215  explicit SOP_AttribCreate_2_0Parms(const SOP_AttribCreate_2_0Parms &) = default;
218  SOP_AttribCreate_2_0Parms &operator=(SOP_AttribCreate_2_0Parms &&) noexcept = default;
219 
221 
223  {
224  if (myGroup != src.myGroup) return false;
225  if (myGrouptype != src.myGrouptype) return false;
226  if (myEncodenames != src.myEncodenames) return false;
227  if (myNumattr != src.myNumattr) return false;
228 
229  return true;
230  }
232  {
233  return !operator==(src);
234  }
241 
242 
243 
244  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
245  {
246  myGroup = ""_UTsh;
247  if (true)
248  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
249  myGrouptype = 0;
250  if (true)
251  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
252  myEncodenames = false;
253  if (true)
254  graph->evalOpParm(myEncodenames, nodeidx, "encodenames", time, 0);
255  if (true)
256  {
257  int64 length = 0;
258  graph->evalOpParm(length, nodeidx, "numattr", time, 0);
259  if (length < 0) length = 0;
260  myNumattr.setSize(length);
261  for (exint i = 0; i < length; i++)
262  {
263  int parmidx[1];
264  int offsets[1];
265  parmidx[0] = i+1;
266  offsets[0] = 1;
267  auto && _curentry = myNumattr(i);
268  (void) _curentry;
269  _curentry.enable = true;
270  if (true)
271  graph->evalOpParmInst(_curentry.enable, nodeidx, "enable#", parmidx, offsets, time, 0, 2-1);
272  _curentry.name = "attribute#"_UTsh;
273  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
274  graph->evalOpParmInst(_curentry.name, nodeidx, "name#", parmidx, offsets, time, 0, 2-1);
275  _curentry.existing = 3;
276  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
277  graph->evalOpParmInst(_curentry.existing, nodeidx, "existing#", parmidx, offsets, time, 0, 2-1);
278  _curentry.createvarmap = false;
279  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
280  graph->evalOpParmInst(_curentry.createvarmap, nodeidx, "createvarmap#", parmidx, offsets, time, 0, 2-1);
281  _curentry.varname = ""_UTsh;
282  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.createvarmap==0)))) ) )
283  graph->evalOpParmInst(_curentry.varname, nodeidx, "varname#", parmidx, offsets, time, 0, 2-1);
284  _curentry._class = 2;
285  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
286  graph->evalOpParmInst(_curentry._class, nodeidx, "class#", parmidx, offsets, time, 0, 2-1);
287  _curentry.savetoinfo = false;
288  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry._class!=0)))) ) )
289  graph->evalOpParmInst(_curentry.savetoinfo, nodeidx, "savetoinfo#", parmidx, offsets, time, 0, 2-1);
290  _curentry.type = 0;
291  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
292  graph->evalOpParmInst(_curentry.type, nodeidx, "type#", parmidx, offsets, time, 0, 2-1);
293  _curentry.typeinfo = 0;
294  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.type!=0)&&(_curentry.type!=4)))) ) )
295  graph->evalOpParmInst(_curentry.typeinfo, nodeidx, "typeinfo#", parmidx, offsets, time, 0, 2-1);
296  _curentry.precision = 4;
297  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.type==3))||((_curentry.type==6))||((_curentry.type==7))||((_curentry.type==8)))) ) )
298  graph->evalOpParmInst(_curentry.precision, nodeidx, "precision#", parmidx, offsets, time, 0, 2-1);
299  _curentry.size = 1;
300  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.type==2))||((_curentry.type==3)))) ) )
301  graph->evalOpParmInst(_curentry.size, nodeidx, "size#", parmidx, offsets, time, 0, 2-1);
302  _curentry.defaultv = UT_Vector4D(0,0,0,0);
303  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.type==3))||((_curentry.type==4))||((_curentry.type==5))||((_curentry.type==6))||((_curentry.type==7))||((_curentry.type==8)))) ) )
304  graph->evalOpParmInst(_curentry.defaultv, nodeidx, "default#v", parmidx, offsets, time, 0, 2-1);
305  _curentry.writevalues = true;
306  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.type==4))||((_curentry.type==5))||((_curentry.type==6))||((_curentry.type==7))||((_curentry.type==8)))) ) )
307  graph->evalOpParmInst(_curentry.writevalues, nodeidx, "writevalues#", parmidx, offsets, time, 0, 2-1);
308  _curentry.uselocal = true;
309  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.writevalues==0))||((_curentry.type==4))||((_curentry.type==5))||((_curentry.type==6))||((_curentry.type==7))||((_curentry.type==8)))) ) )
310  graph->evalOpParmInst(_curentry.uselocal, nodeidx, "uselocal#", parmidx, offsets, time, 0, 2-1);
311  _curentry.valuev = UT_Vector4D(0,0,0,0);
312  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.writevalues==0))||((_curentry.type!=0)&&(_curentry.type!=1)&&(_curentry.type!=2)))) ) )
313  graph->evalOpParmInst(_curentry.valuev, nodeidx, "value#v", parmidx, offsets, time, 0, 2-1);
314  _curentry.string = ""_UTsh;
315  if (true && ( (true&&!(((_curentry.enable==0))||((_curentry.writevalues==0))||((_curentry.type!=3)))) ) )
316  graph->evalOpParmInst(_curentry.string, nodeidx, "string#", parmidx, offsets, time, 0, 2-1);
317 
318  }
319  }
320  else
321  myNumattr.clear();
322 
323  }
324 
325 
326  void loadFromOpSubclass(const LoadParms &loadparms) override
327  {
328  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
329  }
330 
331 
332  void copyFrom(const OP_NodeParms *src) override
333  {
334  *this = *((const SOP_AttribCreate_2_0Parms *)src);
335  }
336 
337  template <typename T>
338  void
339  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
340  {
341  if (idx.size() < 1)
342  return;
343  UT_ASSERT(idx.size() == instance.size()+1);
344  if (idx.size() != instance.size()+1)
345  return;
346  switch (idx[0])
347  {
348  case 0:
349  coerceValue(value, myGroup);
350  break;
351  case 1:
352  coerceValue(value, myGrouptype);
353  break;
354  case 2:
355  coerceValue(value, myEncodenames);
356  break;
357  case 3:
358  if (idx.size() == 1)
359  coerceValue(value, myNumattr.entries());
360  else if (instance[0] < myNumattr.entries())
361  {
362  auto && _data = myNumattr(instance[0]);
363  switch (idx[1])
364  {
365  case 0:
366  coerceValue(value, _data.enable);
367  break;
368  case 1:
369  coerceValue(value, _data.name);
370  break;
371  case 2:
372  coerceValue(value, _data.existing);
373  break;
374  case 3:
375  coerceValue(value, _data.createvarmap);
376  break;
377  case 4:
378  coerceValue(value, _data.varname);
379  break;
380  case 5:
381  coerceValue(value, _data._class);
382  break;
383  case 6:
384  coerceValue(value, _data.savetoinfo);
385  break;
386  case 7:
387  coerceValue(value, _data.type);
388  break;
389  case 8:
390  coerceValue(value, _data.typeinfo);
391  break;
392  case 9:
393  coerceValue(value, _data.precision);
394  break;
395  case 10:
396  coerceValue(value, _data.size);
397  break;
398  case 11:
399  coerceValue(value, _data.defaultv);
400  break;
401  case 12:
402  coerceValue(value, _data.writevalues);
403  break;
404  case 13:
405  coerceValue(value, _data.uselocal);
406  break;
407  case 14:
408  coerceValue(value, _data.valuev);
409  break;
410  case 15:
411  coerceValue(value, _data.string);
412  break;
413 
414  }
415  }
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(4, value ) ));
469  break;
470  case 2:
471  coerceValue(myEncodenames, ( ( value ) ));
472  break;
473  case 3:
474  if (idx.size() == 1)
475  {
476  exint newsize;
477  coerceValue(newsize, value);
478  if (newsize < 0) newsize = 0;
479  myNumattr.setSize(newsize);
480  }
481  else
482  {
483  if (instance[0] < 0)
484  return;
485  myNumattr.setSizeIfNeeded(instance[0]+1);
486  auto && _data = myNumattr(instance[0]);
487  switch (idx[1])
488  {
489  case 0:
490  coerceValue(_data.enable, value);
491  break;
492  case 1:
493  coerceValue(_data.name, value);
494  break;
495  case 2:
496  coerceValue(_data.existing, value);
497  break;
498  case 3:
499  coerceValue(_data.createvarmap, value);
500  break;
501  case 4:
502  coerceValue(_data.varname, value);
503  break;
504  case 5:
505  coerceValue(_data._class, value);
506  break;
507  case 6:
508  coerceValue(_data.savetoinfo, value);
509  break;
510  case 7:
511  coerceValue(_data.type, value);
512  break;
513  case 8:
514  coerceValue(_data.typeinfo, value);
515  break;
516  case 9:
517  coerceValue(_data.precision, value);
518  break;
519  case 10:
520  coerceValue(_data.size, value);
521  break;
522  case 11:
523  coerceValue(_data.defaultv, value);
524  break;
525  case 12:
526  coerceValue(_data.writevalues, value);
527  break;
528  case 13:
529  coerceValue(_data.uselocal, value);
530  break;
531  case 14:
532  coerceValue(_data.valuev, value);
533  break;
534  case 15:
535  coerceValue(_data.string, value);
536  break;
537 
538  }
539  }
540  break;
541 
542  }
543  }
544 
545  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
546  { doSetParmValue(idx, instance, value); }
547  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
548  { doSetParmValue(idx, instance, value); }
549  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
550  { doSetParmValue(idx, instance, value); }
551  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
552  { doSetParmValue(idx, instance, value); }
553  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
554  { doSetParmValue(idx, instance, value); }
555  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
556  { doSetParmValue(idx, instance, value); }
557  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
558  { doSetParmValue(idx, instance, value); }
559  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
560  { doSetParmValue(idx, instance, value); }
561  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
562  { doSetParmValue(idx, instance, value); }
563  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
564  { doSetParmValue(idx, instance, value); }
565  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
566  { doSetParmValue(idx, instance, value); }
567 
568  exint getNestNumParms(TempIndex idx) const override
569  {
570  if (idx.size() == 0)
571  return 4;
572  switch (idx[0])
573  {
574  case 3:
575  return 16;
576 
577  }
578  // Invalid
579  return 0;
580  }
581 
582  const char *getNestParmName(TempIndex fieldnum) const override
583  {
584  if (fieldnum.size() < 1)
585  return 0;
586  switch (fieldnum[0])
587  {
588  case 0:
589  return "group";
590  case 1:
591  return "grouptype";
592  case 2:
593  return "encodenames";
594  case 3:
595  if (fieldnum.size() == 1)
596  return "numattr";
597  switch (fieldnum[1])
598  {
599  case 0:
600  return "enable#";
601  case 1:
602  return "name#";
603  case 2:
604  return "existing#";
605  case 3:
606  return "createvarmap#";
607  case 4:
608  return "varname#";
609  case 5:
610  return "class#";
611  case 6:
612  return "savetoinfo#";
613  case 7:
614  return "type#";
615  case 8:
616  return "typeinfo#";
617  case 9:
618  return "precision#";
619  case 10:
620  return "size#";
621  case 11:
622  return "default#v";
623  case 12:
624  return "writevalues#";
625  case 13:
626  return "uselocal#";
627  case 14:
628  return "value#v";
629  case 15:
630  return "string#";
631 
632  }
633  return 0;
634 
635  }
636  return 0;
637  }
638 
639  ParmType getNestParmType(TempIndex fieldnum) const override
640  {
641  if (fieldnum.size() < 1)
642  return PARM_UNSUPPORTED;
643  switch (fieldnum[0])
644  {
645  case 0:
646  return PARM_STRING;
647  case 1:
648  return PARM_INTEGER;
649  case 2:
650  return PARM_INTEGER;
651  case 3:
652  if (fieldnum.size() == 1)
653  return PARM_MULTIPARM;
654  switch (fieldnum[1])
655  {
656  case 0:
657  return PARM_INTEGER;
658  case 1:
659  return PARM_STRING;
660  case 2:
661  return PARM_INTEGER;
662  case 3:
663  return PARM_INTEGER;
664  case 4:
665  return PARM_STRING;
666  case 5:
667  return PARM_INTEGER;
668  case 6:
669  return PARM_INTEGER;
670  case 7:
671  return PARM_INTEGER;
672  case 8:
673  return PARM_INTEGER;
674  case 9:
675  return PARM_INTEGER;
676  case 10:
677  return PARM_INTEGER;
678  case 11:
679  return PARM_VECTOR4;
680  case 12:
681  return PARM_INTEGER;
682  case 13:
683  return PARM_INTEGER;
684  case 14:
685  return PARM_VECTOR4;
686  case 15:
687  return PARM_STRING;
688 
689  }
690  return PARM_UNSUPPORTED;
691 
692  }
693  return PARM_UNSUPPORTED;
694  }
695 
696  // Boiler plate to load individual types.
697  static void loadData(UT_IStream &is, int64 &v)
698  { is.bread(&v, 1); }
699  static void loadData(UT_IStream &is, bool &v)
700  { int64 iv; is.bread(&iv, 1); v = iv; }
701  static void loadData(UT_IStream &is, fpreal64 &v)
702  { is.bread<fpreal64>(&v, 1); }
703  static void loadData(UT_IStream &is, UT_Vector2D &v)
704  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
705  static void loadData(UT_IStream &is, UT_Vector3D &v)
706  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
707  is.bread<fpreal64>(&v.z(), 1); }
708  static void loadData(UT_IStream &is, UT_Vector4D &v)
709  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
710  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
711  static void loadData(UT_IStream &is, UT_Matrix2D &v)
712  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
713  static void loadData(UT_IStream &is, UT_Matrix3D &v)
714  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
715  static void loadData(UT_IStream &is, UT_Matrix4D &v)
716  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
717  static void loadData(UT_IStream &is, UT_Vector2I &v)
718  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
719  static void loadData(UT_IStream &is, UT_Vector3I &v)
720  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
721  is.bread<int64>(&v.z(), 1); }
722  static void loadData(UT_IStream &is, UT_Vector4I &v)
723  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
724  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
726  { is.bread(v); }
728  { UT_StringHolder rampdata;
729  loadData(is, rampdata);
730  if (rampdata.isstring())
731  {
732  v.reset(new UT_Ramp());
733  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
734  v->load(istr);
735  }
736  else v.reset();
737  }
740  loadData(is, data);
741  if (data.isstring())
742  {
743  // Find the data type.
744  const char *colon = UT_StringWrap(data).findChar(':');
745  if (colon)
746  {
747  int typelen = colon - data.buffer();
749  type.strncpy(data.buffer(), typelen);
750  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
751 
752  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
753  }
754  }
755  else v.reset();
756  }
757 
758  static void saveData(std::ostream &os, int64 v)
759  { UTwrite(os, &v); }
760  static void saveData(std::ostream &os, bool v)
761  { int64 iv = v; UTwrite(os, &iv); }
762  static void saveData(std::ostream &os, fpreal64 v)
763  { UTwrite<fpreal64>(os, &v); }
764  static void saveData(std::ostream &os, UT_Vector2D v)
765  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
766  static void saveData(std::ostream &os, UT_Vector3D v)
767  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
768  UTwrite<fpreal64>(os, &v.z()); }
769  static void saveData(std::ostream &os, UT_Vector4D v)
770  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
771  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
772  static void saveData(std::ostream &os, UT_Matrix2D v)
774  static void saveData(std::ostream &os, UT_Matrix3D v)
776  static void saveData(std::ostream &os, UT_Matrix4D v)
778  static void saveData(std::ostream &os, UT_StringHolder s)
779  { UT_StringWrap(s).saveBinary(os); }
780  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
782  UT_OStringStream ostr;
783  if (s) s->save(ostr);
784  result = ostr.str();
785  saveData(os, result);
786  }
787  static void saveData(std::ostream &os, PRM_DataItemHandle s)
789  UT_OStringStream ostr;
790  if (s)
791  {
792  ostr << s->getDataTypeToken();
793  ostr << ":";
794  s->saveBinary(ostr);
795  }
796  result = ostr.str();
797  saveData(os, result);
798  }
799 
800 
801  void save(std::ostream &os) const
802  {
803  int32 v = version();
804  UTwrite(os, &v);
805  saveData(os, myGroup);
806  saveData(os, myGrouptype);
807  saveData(os, myEncodenames);
808  {
809  int64 length = myNumattr.entries();
810  UTwrite(os, &length);
811  for (exint i = 0; i < length; i++)
812  {
813  auto && _curentry = myNumattr(i);
814  (void) _curentry;
815  saveData(os, _curentry.enable);
816  saveData(os, _curentry.name);
817  saveData(os, _curentry.existing);
818  saveData(os, _curentry.createvarmap);
819  saveData(os, _curentry.varname);
820  saveData(os, _curentry._class);
821  saveData(os, _curentry.savetoinfo);
822  saveData(os, _curentry.type);
823  saveData(os, _curentry.typeinfo);
824  saveData(os, _curentry.precision);
825  saveData(os, _curentry.size);
826  saveData(os, _curentry.defaultv);
827  saveData(os, _curentry.writevalues);
828  saveData(os, _curentry.uselocal);
829  saveData(os, _curentry.valuev);
830  saveData(os, _curentry.string);
831 
832  }
833  }
834 
835  }
836 
837  bool load(UT_IStream &is)
838  {
839  int32 v;
840  is.bread(&v, 1);
841  if (version() != v)
842  {
843  // Fail incompatible versions
844  return false;
845  }
846  loadData(is, myGroup);
847  loadData(is, myGrouptype);
848  loadData(is, myEncodenames);
849  {
850  int64 length;
851  is.read(&length, 1);
852  myNumattr.setSize(length);
853  for (exint i = 0; i < length; i++)
854  {
855  auto && _curentry = myNumattr(i);
856  (void) _curentry;
857  loadData(is, _curentry.enable);
858  loadData(is, _curentry.name);
859  loadData(is, _curentry.existing);
860  loadData(is, _curentry.createvarmap);
861  loadData(is, _curentry.varname);
862  loadData(is, _curentry._class);
863  loadData(is, _curentry.savetoinfo);
864  loadData(is, _curentry.type);
865  loadData(is, _curentry.typeinfo);
866  loadData(is, _curentry.precision);
867  loadData(is, _curentry.size);
868  loadData(is, _curentry.defaultv);
869  loadData(is, _curentry.writevalues);
870  loadData(is, _curentry.uselocal);
871  loadData(is, _curentry.valuev);
872  loadData(is, _curentry.string);
873 
874  }
875  }
876 
877  return true;
878  }
879 
880  const UT_StringHolder & getGroup() const { return myGroup; }
881  void setGroup(const UT_StringHolder & val) { myGroup = val; }
883  {
884  SOP_Node *thissop = cookparms.getNode();
885  if (!thissop) return getGroup();
887  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
888  return result;
889  }
890  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
891  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
893  {
894  SOP_Node *thissop = cookparms.getNode();
895  if (!thissop) return getGrouptype();
896  int64 result;
897  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
898  return Grouptype(result);
899  }
900  bool getEncodenames() const { return myEncodenames; }
901  void setEncodenames(bool val) { myEncodenames = val; }
902  bool opEncodenames(const SOP_NodeVerb::CookParms &cookparms) const
903  {
904  SOP_Node *thissop = cookparms.getNode();
905  if (!thissop) return getEncodenames();
906  bool result;
907  OP_Utils::evalOpParm(result, thissop, "encodenames", cookparms.getCookTime(), 0);
908  return result;
909  }
910  const UT_Array<Numattr> &getNumattr() const { return myNumattr; }
911 void setNumattr(const UT_Array<Numattr> &val) { myNumattr = val; }
912  exint opNumattr(const SOP_NodeVerb::CookParms &cookparms) const
913  {
914  SOP_Node *thissop = cookparms.getNode();
915  if (!thissop) return getNumattr().entries();
916  exint result;
917  OP_Utils::evalOpParm(result, thissop, "numattr", cookparms.getCookTime(), 0);
918  return result;
919  }
920  bool opNumattr_enable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
921  { return opinstNumattr_enable(cookparms, &_idx); }
922  bool opinstNumattr_enable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
923  {
924  SOP_Node *thissop = cookparms.getNode();
925  if (!thissop) return (myNumattr(_idx[0]).enable);
926  int _parmidx[2-1];
927  _parmidx[1-1] = _idx[1-1] + 1;
928 
929  bool result;
930  OP_Utils::evalOpParmInst(result, thissop, "enable#", _parmidx, cookparms.getCookTime(), 0, 2-1);
931  return (result);
932  }
933  UT_StringHolder opNumattr_name(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
934  { return opinstNumattr_name(cookparms, &_idx); }
935  UT_StringHolder opinstNumattr_name(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return (myNumattr(_idx[0]).name);
939  int _parmidx[2-1];
940  _parmidx[1-1] = _idx[1-1] + 1;
941 
943  OP_Utils::evalOpParmInst(result, thissop, "name#", _parmidx, cookparms.getCookTime(), 0, 2-1);
944  return (result);
945  }
946  int64 opNumattr_existing(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
947  { return opinstNumattr_existing(cookparms, &_idx); }
948  int64 opinstNumattr_existing(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
949  {
950  SOP_Node *thissop = cookparms.getNode();
951  if (!thissop) return (myNumattr(_idx[0]).existing);
952  int _parmidx[2-1];
953  _parmidx[1-1] = _idx[1-1] + 1;
954 
955  int64 result;
956  OP_Utils::evalOpParmInst(result, thissop, "existing#", _parmidx, cookparms.getCookTime(), 0, 2-1);
957  return (result);
958  }
959  bool opNumattr_createvarmap(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
960  { return opinstNumattr_createvarmap(cookparms, &_idx); }
961  bool opinstNumattr_createvarmap(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
962  {
963  SOP_Node *thissop = cookparms.getNode();
964  if (!thissop) return (myNumattr(_idx[0]).createvarmap);
965  int _parmidx[2-1];
966  _parmidx[1-1] = _idx[1-1] + 1;
967 
968  bool result;
969  OP_Utils::evalOpParmInst(result, thissop, "createvarmap#", _parmidx, cookparms.getCookTime(), 0, 2-1);
970  return (result);
971  }
973  { return opinstNumattr_varname(cookparms, &_idx); }
974  UT_StringHolder opinstNumattr_varname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
975  {
976  SOP_Node *thissop = cookparms.getNode();
977  if (!thissop) return (myNumattr(_idx[0]).varname);
978  int _parmidx[2-1];
979  _parmidx[1-1] = _idx[1-1] + 1;
980 
982  OP_Utils::evalOpParmInst(result, thissop, "varname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
983  return (result);
984  }
985  int64 opNumattr__class(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
986  { return opinstNumattr__class(cookparms, &_idx); }
987  int64 opinstNumattr__class(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
988  {
989  SOP_Node *thissop = cookparms.getNode();
990  if (!thissop) return (myNumattr(_idx[0])._class);
991  int _parmidx[2-1];
992  _parmidx[1-1] = _idx[1-1] + 1;
993 
994  int64 result;
995  OP_Utils::evalOpParmInst(result, thissop, "class#", _parmidx, cookparms.getCookTime(), 0, 2-1);
996  return (result);
997  }
998  bool opNumattr_savetoinfo(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
999  { return opinstNumattr_savetoinfo(cookparms, &_idx); }
1000  bool opinstNumattr_savetoinfo(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1001  {
1002  SOP_Node *thissop = cookparms.getNode();
1003  if (!thissop) return (myNumattr(_idx[0]).savetoinfo);
1004  int _parmidx[2-1];
1005  _parmidx[1-1] = _idx[1-1] + 1;
1006 
1007  bool result;
1008  OP_Utils::evalOpParmInst(result, thissop, "savetoinfo#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1009  return (result);
1010  }
1011  int64 opNumattr_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1012  { return opinstNumattr_type(cookparms, &_idx); }
1013  int64 opinstNumattr_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1014  {
1015  SOP_Node *thissop = cookparms.getNode();
1016  if (!thissop) return (myNumattr(_idx[0]).type);
1017  int _parmidx[2-1];
1018  _parmidx[1-1] = _idx[1-1] + 1;
1019 
1020  int64 result;
1021  OP_Utils::evalOpParmInst(result, thissop, "type#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1022  return (result);
1023  }
1024  int64 opNumattr_typeinfo(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1025  { return opinstNumattr_typeinfo(cookparms, &_idx); }
1026  int64 opinstNumattr_typeinfo(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1027  {
1028  SOP_Node *thissop = cookparms.getNode();
1029  if (!thissop) return (myNumattr(_idx[0]).typeinfo);
1030  int _parmidx[2-1];
1031  _parmidx[1-1] = _idx[1-1] + 1;
1032 
1033  int64 result;
1034  OP_Utils::evalOpParmInst(result, thissop, "typeinfo#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1035  return (result);
1036  }
1037  int64 opNumattr_precision(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1038  { return opinstNumattr_precision(cookparms, &_idx); }
1039  int64 opinstNumattr_precision(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1040  {
1041  SOP_Node *thissop = cookparms.getNode();
1042  if (!thissop) return (myNumattr(_idx[0]).precision);
1043  int _parmidx[2-1];
1044  _parmidx[1-1] = _idx[1-1] + 1;
1045 
1046  int64 result;
1047  OP_Utils::evalOpParmInst(result, thissop, "precision#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1048  return (result);
1049  }
1050  int64 opNumattr_size(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1051  { return opinstNumattr_size(cookparms, &_idx); }
1052  int64 opinstNumattr_size(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1053  {
1054  SOP_Node *thissop = cookparms.getNode();
1055  if (!thissop) return (myNumattr(_idx[0]).size);
1056  int _parmidx[2-1];
1057  _parmidx[1-1] = _idx[1-1] + 1;
1058 
1059  int64 result;
1060  OP_Utils::evalOpParmInst(result, thissop, "size#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1061  return (result);
1062  }
1063  UT_Vector4D opNumattr_defaultv(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1064  { return opinstNumattr_defaultv(cookparms, &_idx); }
1065  UT_Vector4D opinstNumattr_defaultv(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1066  {
1067  SOP_Node *thissop = cookparms.getNode();
1068  if (!thissop) return (myNumattr(_idx[0]).defaultv);
1069  int _parmidx[2-1];
1070  _parmidx[1-1] = _idx[1-1] + 1;
1071 
1073  OP_Utils::evalOpParmInst(result, thissop, "default#v", _parmidx, cookparms.getCookTime(), 0, 2-1);
1074  return (result);
1075  }
1076  bool opNumattr_writevalues(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1077  { return opinstNumattr_writevalues(cookparms, &_idx); }
1078  bool opinstNumattr_writevalues(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1079  {
1080  SOP_Node *thissop = cookparms.getNode();
1081  if (!thissop) return (myNumattr(_idx[0]).writevalues);
1082  int _parmidx[2-1];
1083  _parmidx[1-1] = _idx[1-1] + 1;
1084 
1085  bool result;
1086  OP_Utils::evalOpParmInst(result, thissop, "writevalues#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1087  return (result);
1088  }
1089  bool opNumattr_uselocal(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1090  { return opinstNumattr_uselocal(cookparms, &_idx); }
1091  bool opinstNumattr_uselocal(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1092  {
1093  SOP_Node *thissop = cookparms.getNode();
1094  if (!thissop) return (myNumattr(_idx[0]).uselocal);
1095  int _parmidx[2-1];
1096  _parmidx[1-1] = _idx[1-1] + 1;
1097 
1098  bool result;
1099  OP_Utils::evalOpParmInst(result, thissop, "uselocal#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1100  return (result);
1101  }
1102  UT_Vector4D opNumattr_valuev(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1103  { return opinstNumattr_valuev(cookparms, &_idx); }
1104  UT_Vector4D opinstNumattr_valuev(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1105  {
1106  SOP_Node *thissop = cookparms.getNode();
1107  if (!thissop) return (myNumattr(_idx[0]).valuev);
1108  int _parmidx[2-1];
1109  _parmidx[1-1] = _idx[1-1] + 1;
1110 
1112  OP_Utils::evalOpParmInst(result, thissop, "value#v", _parmidx, cookparms.getCookTime(), 0, 2-1);
1113  return (result);
1114  }
1116  { return opinstNumattr_string(cookparms, &_idx); }
1117  UT_StringHolder opinstNumattr_string(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1118  {
1119  SOP_Node *thissop = cookparms.getNode();
1120  if (!thissop) return (myNumattr(_idx[0]).string);
1121  int _parmidx[2-1];
1122  _parmidx[1-1] = _idx[1-1] + 1;
1123 
1125  OP_Utils::evalOpParmInst(result, thissop, "string#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1126  return (result);
1127  }
1128 
1129 
1130 private:
1131  UT_StringHolder myGroup;
1132  int64 myGrouptype;
1133  bool myEncodenames;
1134  UT_Array<Numattr> myNumattr;
1135 
1136 };
static void loadData(UT_IStream &is, UT_Vector4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void saveData(std::ostream &os, UT_StringHolder s)
bool opNumattr_savetoinfo(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setNumattr(const UT_Array< Numattr > &val)
void
Definition: png.h:1083
exint bread(int32 *buffer, exint asize=1)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
GLboolean * data
Definition: glcorearb.h:131
static void saveData(std::ostream &os, UT_Vector4D v)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
fpreal getTime() const
Definition: OP_Context.h:62
exint getNestNumParms(TempIndex idx) const override
int64 opinstNumattr_typeinfo(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opNumattr_varname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, fpreal64 &v)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
bool opNumattr_uselocal(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opNumattr_precision(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
UT_StringHolder opinstNumattr_name(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
SYS_FORCE_INLINE const char * buffer() const
const UT_StringHolder & getGroup() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
bool operator==(const Numattr &src) const
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
An output stream object that owns its own string buffer storage.
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
bool operator==(const SOP_AttribCreate_2_0Parms &src) const
bool operator!=(const SOP_AttribCreate_2_0Parms &src) const
bool opinstNumattr_writevalues(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opNumattr__class(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
**But if you need a result
Definition: thread.h:613
bool opNumattr_createvarmap(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
void loadFromOpSubclass(const LoadParms &loadparms) override
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 loadData(UT_IStream &is, UT_Matrix2D &v)
const char * getNestParmName(TempIndex fieldnum) const override
static void saveData(std::ostream &os, UT_Vector3D v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
bool opinstNumattr_savetoinfo(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool isParmColorRamp(exint idx) const override
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, bool v)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
int64 opNumattr_size(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder opNumattr_string(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
exint length() const
static void saveData(std::ostream &os, UT_Vector2D v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
int64 opinstNumattr_size(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
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
ParmType getNestParmType(TempIndex fieldnum) const override
void setGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
UT_StringHolder opinstNumattr_string(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
bool opinstNumattr_createvarmap(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
long long int64
Definition: SYS_Types.h:116
exint opNumattr(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
bool opinstNumattr_enable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
GLuint const GLchar * name
Definition: glcorearb.h:786
static void saveData(std::ostream &os, int64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void saveData(std::ostream &os, UT_Matrix2D v)
UT_Vector4D opNumattr_valuev(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool opinstNumattr_uselocal(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void save(std::ostream &os) const
SYS_FORCE_INLINE void strcat(const char *src)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
static void saveData(std::ostream &os, UT_Matrix4D v)
GT_API const UT_StringHolder version
GLenum GLint GLint * precision
Definition: glcorearb.h:1925
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
int64 opinstNumattr__class(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool opNumattr_writevalues(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder createString(const UT_Array< Numattr > &list) const
GLsizeiptr size
Definition: glcorearb.h:664
UT_StringHolder opNumattr_name(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
UT_Vector4D opinstNumattr_valuev(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opNumattr_typeinfo(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
static void loadData(UT_IStream &is, UT_Vector2I &v)
const UT_Array< Numattr > & getNumattr() const
int64 opinstNumattr_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void copyFrom(const OP_NodeParms *src) override
UT_StringHolder opinstNumattr_varname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opinstNumattr_precision(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool operator!=(const Numattr &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
GLuint GLfloat * val
Definition: glcorearb.h:1608
int64 opinstNumattr_existing(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opNumattr_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
#define SOP_API
Definition: SOP_API.h:10
static void saveData(std::ostream &os, fpreal64 v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
static void loadData(UT_IStream &is, UT_Vector2D &v)
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
GLboolean r
Definition: glcorearb.h:1222
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
UT_Vector4T< fpreal64 > UT_Vector4D
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void loadData(UT_IStream &is, int64 &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
type
Definition: core.h:1059
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
bool opNumattr_enable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_Vector4D opNumattr_defaultv(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, bool &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector4D opinstNumattr_defaultv(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
int64 opNumattr_existing(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool opEncodenames(const SOP_NodeVerb::CookParms &cookparms) const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663