HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_MLExampleDeserializePacked.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_MLExampleDeserializePackedEnums
24 {
25  enum class InputType
26  {
27  POINT = 0,
28  VOLUME
29  };
30 
32  getToken(InputType enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case InputType::POINT: return "point"_sh;
37  case InputType::VOLUME: return "volume"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class TargetType
43  {
44  POINT = 0,
45  VOLUME
46  };
47 
49  getToken(TargetType enum_value)
50  {
51  using namespace UT::Literal;
52  switch (enum_value) {
53  case TargetType::POINT: return "point"_sh;
54  case TargetType::VOLUME: return "volume"_sh;
55  default: UT_ASSERT(false); return ""_sh;
56  }
57  }
58 
59 }
60 
61 
63 {
64 public:
65  static int version() { return 1; }
66  struct Inputs
67  {
73 
74 
76  {
77  inputtype = 0;
78  inputpointattribute = "value"_UTsh;
79  inputvolumename = "density"_UTsh;
80  inputvolumeresolution = UT_Vector3I(10,10,10);
81  inputtuplesize = 1;
82 
83  }
84 
85  bool operator==(const Inputs &src) const
86  {
87  if (inputtype != src.inputtype) return false;
88  if (inputpointattribute != src.inputpointattribute) return false;
89  if (inputvolumename != src.inputvolumename) return false;
90  if (inputvolumeresolution != src.inputvolumeresolution) return false;
91  if (inputtuplesize != src.inputtuplesize) return false;
92 
93  return true;
94  }
95  bool operator!=(const Inputs &src) const
96  {
97  return !operator==(src);
98  }
99 
100  };
101 
103  {
105 
106  buf.strcat("[ ");
107  for (int i = 0; i < list.entries(); i++)
108  {
109  if (i)
110  buf.strcat(", ");
111  buf.strcat("( ");
112  buf.append("");
113  buf.appendSprintf("%d", (int) list(i).inputtype);
114  buf.append(", ");
115  { UT_String tmp; tmp = UT_StringWrap(list(i).inputpointattribute).makeQuotedString('"'); buf.strcat(tmp); }
116  buf.append(", ");
117  { UT_String tmp; tmp = UT_StringWrap(list(i).inputvolumename).makeQuotedString('"'); buf.strcat(tmp); }
118  buf.append(", ");
119  buf.appendSprintf("(%" SYS_PRId64 ", %" SYS_PRId64 ", %" SYS_PRId64 ")", list(i).inputvolumeresolution.x(), list(i).inputvolumeresolution.y(), list(i).inputvolumeresolution.z());
120  buf.append(", ");
121  buf.appendSprintf("%d", (int) list(i).inputtuplesize);
122 
123  buf.strcat(" )");
124  }
125  buf.strcat(" ]");
126 
128  return result;
129  }
130  struct Targets
131  {
137 
138 
140  {
141  targettype = 0;
142  targetpointattribute = "value"_UTsh;
143  targetvolumename = "density"_UTsh;
144  targetvolumeresolution = UT_Vector3I(10,10,10);
145  targettuplesize = 1;
146 
147  }
148 
149  bool operator==(const Targets &src) const
150  {
151  if (targettype != src.targettype) return false;
152  if (targetpointattribute != src.targetpointattribute) return false;
153  if (targetvolumename != src.targetvolumename) return false;
154  if (targetvolumeresolution != src.targetvolumeresolution) return false;
155  if (targettuplesize != src.targettuplesize) return false;
156 
157  return true;
158  }
159  bool operator!=(const Targets &src) const
160  {
161  return !operator==(src);
162  }
163 
164  };
165 
167  {
169 
170  buf.strcat("[ ");
171  for (int i = 0; i < list.entries(); i++)
172  {
173  if (i)
174  buf.strcat(", ");
175  buf.strcat("( ");
176  buf.append("");
177  buf.appendSprintf("%d", (int) list(i).targettype);
178  buf.append(", ");
179  { UT_String tmp; tmp = UT_StringWrap(list(i).targetpointattribute).makeQuotedString('"'); buf.strcat(tmp); }
180  buf.append(", ");
181  { UT_String tmp; tmp = UT_StringWrap(list(i).targetvolumename).makeQuotedString('"'); buf.strcat(tmp); }
182  buf.append(", ");
183  buf.appendSprintf("(%" SYS_PRId64 ", %" SYS_PRId64 ", %" SYS_PRId64 ")", list(i).targetvolumeresolution.x(), list(i).targetvolumeresolution.y(), list(i).targetvolumeresolution.z());
184  buf.append(", ");
185  buf.appendSprintf("%d", (int) list(i).targettuplesize);
186 
187  buf.strcat(" )");
188  }
189  buf.strcat(" ]");
190 
192  return result;
193  }
194 
196  {
197  myInputDimensionAttribute = "inputdimension"_UTsh;
198  myTargetDimensionAttribute = "targetdimension"_UTsh;
199  mySerialAttribute = "value"_UTsh;
200  myInputs.setSize(1);
201  myTargets.setSize(1);
202 
203  }
204 
209 
211 
213  {
214  if (myInputDimensionAttribute != src.myInputDimensionAttribute) return false;
215  if (myTargetDimensionAttribute != src.myTargetDimensionAttribute) return false;
216  if (mySerialAttribute != src.mySerialAttribute) return false;
217  if (myInputs != src.myInputs) return false;
218  if (myTargets != src.myTargets) return false;
219 
220  return true;
221  }
223  {
224  return !operator==(src);
225  }
228 
229 
230 
231  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
232  {
233  myInputDimensionAttribute = "inputdimension"_UTsh;
234  if (true)
235  graph->evalOpParm(myInputDimensionAttribute, nodeidx, "inputdimensionattribute", time, 0);
236  myTargetDimensionAttribute = "targetdimension"_UTsh;
237  if (true)
238  graph->evalOpParm(myTargetDimensionAttribute, nodeidx, "targetdimensionattribute", time, 0);
239  mySerialAttribute = "value"_UTsh;
240  if (true)
241  graph->evalOpParm(mySerialAttribute, nodeidx, "serialattribute", time, 0);
242  if (true)
243  {
244  int64 length = 0;
245  graph->evalOpParm(length, nodeidx, "inputs", time, 0);
246  if (length < 0) length = 0;
247  myInputs.setSize(length);
248  for (exint i = 0; i < length; i++)
249  {
250  int parmidx[1];
251  int offsets[1];
252  parmidx[0] = i+1;
253  offsets[0] = 1;
254  auto && _curentry = myInputs(i);
255  (void) _curentry;
256  _curentry.inputtype = 0;
257  if (true)
258  graph->evalOpParmInst(_curentry.inputtype, nodeidx, "inputtype#", parmidx, offsets, time, 0, 2-1);
259  _curentry.inputpointattribute = "value"_UTsh;
260  if (true && ( (true&&!(((_curentry.inputtype!=0)))) ) )
261  graph->evalOpParmInst(_curentry.inputpointattribute, nodeidx, "inputpointattribute#", parmidx, offsets, time, 0, 2-1);
262  _curentry.inputvolumename = "density"_UTsh;
263  if (true && ( (true&&!(((_curentry.inputtype!=1)))) ) )
264  graph->evalOpParmInst(_curentry.inputvolumename, nodeidx, "inputvolumename#", parmidx, offsets, time, 0, 2-1);
265  _curentry.inputvolumeresolution = UT_Vector3I(10,10,10);
266  if (true && ( (true&&!(((_curentry.inputtype!=1)))) ) )
267  graph->evalOpParmInst(_curentry.inputvolumeresolution, nodeidx, "inputvolumeresolution#", parmidx, offsets, time, 0, 2-1);
268  _curentry.inputtuplesize = 1;
269  if (true)
270  graph->evalOpParmInst(_curentry.inputtuplesize, nodeidx, "inputtuplesize#", parmidx, offsets, time, 0, 2-1);
271 
272  }
273  }
274  else
275  myInputs.clear();
276  if (true)
277  {
278  int64 length = 0;
279  graph->evalOpParm(length, nodeidx, "targets", time, 0);
280  if (length < 0) length = 0;
281  myTargets.setSize(length);
282  for (exint i = 0; i < length; i++)
283  {
284  int parmidx[1];
285  int offsets[1];
286  parmidx[0] = i+1;
287  offsets[0] = 1;
288  auto && _curentry = myTargets(i);
289  (void) _curentry;
290  _curentry.targettype = 0;
291  if (true)
292  graph->evalOpParmInst(_curentry.targettype, nodeidx, "targettype#", parmidx, offsets, time, 0, 2-1);
293  _curentry.targetpointattribute = "value"_UTsh;
294  if (true && ( (true&&!(((_curentry.targettype!=0)))) ) )
295  graph->evalOpParmInst(_curentry.targetpointattribute, nodeidx, "targetpointattribute#", parmidx, offsets, time, 0, 2-1);
296  _curentry.targetvolumename = "density"_UTsh;
297  if (true && ( (true&&!(((_curentry.targettype!=1)))) ) )
298  graph->evalOpParmInst(_curentry.targetvolumename, nodeidx, "targetvolumename#", parmidx, offsets, time, 0, 2-1);
299  _curentry.targetvolumeresolution = UT_Vector3I(10,10,10);
300  if (true && ( (true&&!(((_curentry.targettype!=1)))) ) )
301  graph->evalOpParmInst(_curentry.targetvolumeresolution, nodeidx, "targetvolumeresolution#", parmidx, offsets, time, 0, 2-1);
302  _curentry.targettuplesize = 1;
303  if (true)
304  graph->evalOpParmInst(_curentry.targettuplesize, nodeidx, "targettuplesize#", parmidx, offsets, time, 0, 2-1);
305 
306  }
307  }
308  else
309  myTargets.clear();
310 
311  }
312 
313 
314  void loadFromOpSubclass(const LoadParms &loadparms) override
315  {
316  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
317  }
318 
319 
320  void copyFrom(const OP_NodeParms *src) override
321  {
322  *this = *((const SOP_MLExampleDeserializePackedParms *)src);
323  }
324 
325  template <typename T>
326  void
327  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
328  {
329  if (idx.size() < 1)
330  return;
331  UT_ASSERT(idx.size() == instance.size()+1);
332  if (idx.size() != instance.size()+1)
333  return;
334  switch (idx[0])
335  {
336  case 0:
337  coerceValue(value, myInputDimensionAttribute);
338  break;
339  case 1:
340  coerceValue(value, myTargetDimensionAttribute);
341  break;
342  case 2:
343  coerceValue(value, mySerialAttribute);
344  break;
345  case 3:
346  if (idx.size() == 1)
347  coerceValue(value, myInputs.entries());
348  else if (instance[0] < myInputs.entries())
349  {
350  auto && _data = myInputs(instance[0]);
351  switch (idx[1])
352  {
353  case 0:
354  coerceValue(value, _data.inputtype);
355  break;
356  case 1:
357  coerceValue(value, _data.inputpointattribute);
358  break;
359  case 2:
360  coerceValue(value, _data.inputvolumename);
361  break;
362  case 3:
363  coerceValue(value, _data.inputvolumeresolution);
364  break;
365  case 4:
366  coerceValue(value, _data.inputtuplesize);
367  break;
368 
369  }
370  }
371  break;
372  case 4:
373  if (idx.size() == 1)
374  coerceValue(value, myTargets.entries());
375  else if (instance[0] < myTargets.entries())
376  {
377  auto && _data = myTargets(instance[0]);
378  switch (idx[1])
379  {
380  case 0:
381  coerceValue(value, _data.targettype);
382  break;
383  case 1:
384  coerceValue(value, _data.targetpointattribute);
385  break;
386  case 2:
387  coerceValue(value, _data.targetvolumename);
388  break;
389  case 3:
390  coerceValue(value, _data.targetvolumeresolution);
391  break;
392  case 4:
393  coerceValue(value, _data.targettuplesize);
394  break;
395 
396  }
397  }
398  break;
399 
400  }
401  }
402 
403  bool isParmColorRamp(exint idx) const override
404  {
405  switch (idx)
406  {
407 
408  }
409  return false;
410  }
411 
412  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
413  { doGetParmValue(idx, instance, value); }
414  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
415  { doGetParmValue(idx, instance, value); }
416  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
417  { doGetParmValue(idx, instance, value); }
418  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
419  { doGetParmValue(idx, instance, value); }
420  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
421  { doGetParmValue(idx, instance, value); }
422  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
423  { doGetParmValue(idx, instance, value); }
424  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
425  { doGetParmValue(idx, instance, value); }
426  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
427  { doGetParmValue(idx, instance, value); }
428  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
429  { doGetParmValue(idx, instance, value); }
430  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
431  { doGetParmValue(idx, instance, value); }
432  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
433  { doGetParmValue(idx, instance, value); }
434 
435  template <typename T>
436  void
437  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
438  {
439  if (idx.size() < 1)
440  return;
441  UT_ASSERT(idx.size() == instance.size()+1);
442  if (idx.size() != instance.size()+1)
443  return;
444  switch (idx[0])
445  {
446  case 0:
447  coerceValue(myInputDimensionAttribute, ( ( value ) ));
448  break;
449  case 1:
450  coerceValue(myTargetDimensionAttribute, ( ( value ) ));
451  break;
452  case 2:
453  coerceValue(mySerialAttribute, ( ( value ) ));
454  break;
455  case 3:
456  if (idx.size() == 1)
457  {
458  exint newsize;
459  coerceValue(newsize, value);
460  if (newsize < 0) newsize = 0;
461  myInputs.setSize(newsize);
462  }
463  else
464  {
465  if (instance[0] < 0)
466  return;
467  myInputs.setSizeIfNeeded(instance[0]+1);
468  auto && _data = myInputs(instance[0]);
469  switch (idx[1])
470  {
471  case 0:
472  coerceValue(_data.inputtype, value);
473  break;
474  case 1:
475  coerceValue(_data.inputpointattribute, value);
476  break;
477  case 2:
478  coerceValue(_data.inputvolumename, value);
479  break;
480  case 3:
481  coerceValue(_data.inputvolumeresolution, value);
482  break;
483  case 4:
484  coerceValue(_data.inputtuplesize, value);
485  break;
486 
487  }
488  }
489  break;
490  case 4:
491  if (idx.size() == 1)
492  {
493  exint newsize;
494  coerceValue(newsize, value);
495  if (newsize < 0) newsize = 0;
496  myTargets.setSize(newsize);
497  }
498  else
499  {
500  if (instance[0] < 0)
501  return;
502  myTargets.setSizeIfNeeded(instance[0]+1);
503  auto && _data = myTargets(instance[0]);
504  switch (idx[1])
505  {
506  case 0:
507  coerceValue(_data.targettype, value);
508  break;
509  case 1:
510  coerceValue(_data.targetpointattribute, value);
511  break;
512  case 2:
513  coerceValue(_data.targetvolumename, value);
514  break;
515  case 3:
516  coerceValue(_data.targetvolumeresolution, value);
517  break;
518  case 4:
519  coerceValue(_data.targettuplesize, value);
520  break;
521 
522  }
523  }
524  break;
525 
526  }
527  }
528 
529  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
530  { doSetParmValue(idx, instance, value); }
531  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
532  { doSetParmValue(idx, instance, value); }
533  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
534  { doSetParmValue(idx, instance, value); }
535  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
536  { doSetParmValue(idx, instance, value); }
537  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
538  { doSetParmValue(idx, instance, value); }
539  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
540  { doSetParmValue(idx, instance, value); }
541  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
542  { doSetParmValue(idx, instance, value); }
543  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
544  { doSetParmValue(idx, instance, value); }
545  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
546  { doSetParmValue(idx, instance, value); }
547  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
548  { doSetParmValue(idx, instance, value); }
549  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
550  { doSetParmValue(idx, instance, value); }
551 
552  exint getNestNumParms(TempIndex idx) const override
553  {
554  if (idx.size() == 0)
555  return 5;
556  switch (idx[0])
557  {
558  case 3:
559  return 5;
560  case 4:
561  return 5;
562 
563  }
564  // Invalid
565  return 0;
566  }
567 
568  const char *getNestParmName(TempIndex fieldnum) const override
569  {
570  if (fieldnum.size() < 1)
571  return 0;
572  switch (fieldnum[0])
573  {
574  case 0:
575  return "inputdimensionattribute";
576  case 1:
577  return "targetdimensionattribute";
578  case 2:
579  return "serialattribute";
580  case 3:
581  if (fieldnum.size() == 1)
582  return "inputs";
583  switch (fieldnum[1])
584  {
585  case 0:
586  return "inputtype#";
587  case 1:
588  return "inputpointattribute#";
589  case 2:
590  return "inputvolumename#";
591  case 3:
592  return "inputvolumeresolution#";
593  case 4:
594  return "inputtuplesize#";
595 
596  }
597  return 0;
598  case 4:
599  if (fieldnum.size() == 1)
600  return "targets";
601  switch (fieldnum[1])
602  {
603  case 0:
604  return "targettype#";
605  case 1:
606  return "targetpointattribute#";
607  case 2:
608  return "targetvolumename#";
609  case 3:
610  return "targetvolumeresolution#";
611  case 4:
612  return "targettuplesize#";
613 
614  }
615  return 0;
616 
617  }
618  return 0;
619  }
620 
621  ParmType getNestParmType(TempIndex fieldnum) const override
622  {
623  if (fieldnum.size() < 1)
624  return PARM_UNSUPPORTED;
625  switch (fieldnum[0])
626  {
627  case 0:
628  return PARM_STRING;
629  case 1:
630  return PARM_STRING;
631  case 2:
632  return PARM_STRING;
633  case 3:
634  if (fieldnum.size() == 1)
635  return PARM_MULTIPARM;
636  switch (fieldnum[1])
637  {
638  case 0:
639  return PARM_INTEGER;
640  case 1:
641  return PARM_STRING;
642  case 2:
643  return PARM_STRING;
644  case 3:
645  return PARM_VECTOR3;
646  case 4:
647  return PARM_INTEGER;
648 
649  }
650  return PARM_UNSUPPORTED;
651  case 4:
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_STRING;
662  case 3:
663  return PARM_VECTOR3;
664  case 4:
665  return PARM_INTEGER;
666 
667  }
668  return PARM_UNSUPPORTED;
669 
670  }
671  return PARM_UNSUPPORTED;
672  }
673 
674  // Boiler plate to load individual types.
675  static void loadData(UT_IStream &is, int64 &v)
676  { is.bread(&v, 1); }
677  static void loadData(UT_IStream &is, bool &v)
678  { int64 iv; is.bread(&iv, 1); v = iv; }
679  static void loadData(UT_IStream &is, fpreal64 &v)
680  { is.bread<fpreal64>(&v, 1); }
681  static void loadData(UT_IStream &is, UT_Vector2D &v)
682  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
683  static void loadData(UT_IStream &is, UT_Vector3D &v)
684  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
685  is.bread<fpreal64>(&v.z(), 1); }
686  static void loadData(UT_IStream &is, UT_Vector4D &v)
687  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
688  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
689  static void loadData(UT_IStream &is, UT_Matrix2D &v)
690  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
691  static void loadData(UT_IStream &is, UT_Matrix3D &v)
692  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
693  static void loadData(UT_IStream &is, UT_Matrix4D &v)
694  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
695  static void loadData(UT_IStream &is, UT_Vector2I &v)
696  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
697  static void loadData(UT_IStream &is, UT_Vector3I &v)
698  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
699  is.bread<int64>(&v.z(), 1); }
700  static void loadData(UT_IStream &is, UT_Vector4I &v)
701  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
702  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
704  { is.bread(v); }
706  { UT_StringHolder rampdata;
707  loadData(is, rampdata);
708  if (rampdata.isstring())
709  {
710  v.reset(new UT_Ramp());
711  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
712  v->load(istr);
713  }
714  else v.reset();
715  }
718  loadData(is, data);
719  if (data.isstring())
720  {
721  // Find the data type.
722  const char *colon = UT_StringWrap(data).findChar(':');
723  if (colon)
724  {
725  int typelen = colon - data.buffer();
727  type.strncpy(data.buffer(), typelen);
728  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
729 
730  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
731  }
732  }
733  else v.reset();
734  }
735 
736  static void saveData(std::ostream &os, int64 v)
737  { UTwrite(os, &v); }
738  static void saveData(std::ostream &os, bool v)
739  { int64 iv = v; UTwrite(os, &iv); }
740  static void saveData(std::ostream &os, fpreal64 v)
741  { UTwrite<fpreal64>(os, &v); }
742  static void saveData(std::ostream &os, UT_Vector2D v)
743  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
744  static void saveData(std::ostream &os, UT_Vector3D v)
745  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
746  UTwrite<fpreal64>(os, &v.z()); }
747  static void saveData(std::ostream &os, UT_Vector4D v)
748  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
749  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
750  static void saveData(std::ostream &os, UT_Matrix2D v)
752  static void saveData(std::ostream &os, UT_Matrix3D v)
754  static void saveData(std::ostream &os, UT_Matrix4D v)
756  static void saveData(std::ostream &os, UT_StringHolder s)
757  { UT_StringWrap(s).saveBinary(os); }
758  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
760  UT_OStringStream ostr;
761  if (s) s->save(ostr);
762  result = ostr.str();
763  saveData(os, result);
764  }
765  static void saveData(std::ostream &os, PRM_DataItemHandle s)
767  UT_OStringStream ostr;
768  if (s)
769  {
770  ostr << s->getDataTypeToken();
771  ostr << ":";
772  s->saveBinary(ostr);
773  }
774  result = ostr.str();
775  saveData(os, result);
776  }
777 
778 
779  void save(std::ostream &os) const
780  {
781  int32 v = version();
782  UTwrite(os, &v);
783  saveData(os, myInputDimensionAttribute);
784  saveData(os, myTargetDimensionAttribute);
785  saveData(os, mySerialAttribute);
786  {
787  int64 length = myInputs.entries();
788  UTwrite(os, &length);
789  for (exint i = 0; i < length; i++)
790  {
791  auto && _curentry = myInputs(i);
792  (void) _curentry;
793  saveData(os, _curentry.inputtype);
794  saveData(os, _curentry.inputpointattribute);
795  saveData(os, _curentry.inputvolumename);
796  saveData(os, _curentry.inputvolumeresolution);
797  saveData(os, _curentry.inputtuplesize);
798 
799  }
800  }
801  {
802  int64 length = myTargets.entries();
803  UTwrite(os, &length);
804  for (exint i = 0; i < length; i++)
805  {
806  auto && _curentry = myTargets(i);
807  (void) _curentry;
808  saveData(os, _curentry.targettype);
809  saveData(os, _curentry.targetpointattribute);
810  saveData(os, _curentry.targetvolumename);
811  saveData(os, _curentry.targetvolumeresolution);
812  saveData(os, _curentry.targettuplesize);
813 
814  }
815  }
816 
817  }
818 
819  bool load(UT_IStream &is)
820  {
821  int32 v;
822  is.bread(&v, 1);
823  if (version() != v)
824  {
825  // Fail incompatible versions
826  return false;
827  }
828  loadData(is, myInputDimensionAttribute);
829  loadData(is, myTargetDimensionAttribute);
830  loadData(is, mySerialAttribute);
831  {
832  int64 length;
833  is.read(&length, 1);
834  myInputs.setSize(length);
835  for (exint i = 0; i < length; i++)
836  {
837  auto && _curentry = myInputs(i);
838  (void) _curentry;
839  loadData(is, _curentry.inputtype);
840  loadData(is, _curentry.inputpointattribute);
841  loadData(is, _curentry.inputvolumename);
842  loadData(is, _curentry.inputvolumeresolution);
843  loadData(is, _curentry.inputtuplesize);
844 
845  }
846  }
847  {
848  int64 length;
849  is.read(&length, 1);
850  myTargets.setSize(length);
851  for (exint i = 0; i < length; i++)
852  {
853  auto && _curentry = myTargets(i);
854  (void) _curentry;
855  loadData(is, _curentry.targettype);
856  loadData(is, _curentry.targetpointattribute);
857  loadData(is, _curentry.targetvolumename);
858  loadData(is, _curentry.targetvolumeresolution);
859  loadData(is, _curentry.targettuplesize);
860 
861  }
862  }
863 
864  return true;
865  }
866 
867  const UT_StringHolder & getInputDimensionAttribute() const { return myInputDimensionAttribute; }
868  void setInputDimensionAttribute(const UT_StringHolder & val) { myInputDimensionAttribute = val; }
870  {
871  SOP_Node *thissop = cookparms.getNode();
872  if (!thissop) return getInputDimensionAttribute();
874  OP_Utils::evalOpParm(result, thissop, "inputdimensionattribute", cookparms.getCookTime(), 0);
875  return result;
876  }
877  const UT_StringHolder & getTargetDimensionAttribute() const { return myTargetDimensionAttribute; }
878  void setTargetDimensionAttribute(const UT_StringHolder & val) { myTargetDimensionAttribute = val; }
880  {
881  SOP_Node *thissop = cookparms.getNode();
882  if (!thissop) return getTargetDimensionAttribute();
884  OP_Utils::evalOpParm(result, thissop, "targetdimensionattribute", cookparms.getCookTime(), 0);
885  return result;
886  }
887  const UT_StringHolder & getSerialAttribute() const { return mySerialAttribute; }
888  void setSerialAttribute(const UT_StringHolder & val) { mySerialAttribute = val; }
890  {
891  SOP_Node *thissop = cookparms.getNode();
892  if (!thissop) return getSerialAttribute();
894  OP_Utils::evalOpParm(result, thissop, "serialattribute", cookparms.getCookTime(), 0);
895  return result;
896  }
897  const UT_Array<Inputs> &getInputs() const { return myInputs; }
898 void setInputs(const UT_Array<Inputs> &val) { myInputs = val; }
899  exint opInputs(const SOP_NodeVerb::CookParms &cookparms) const
900  {
901  SOP_Node *thissop = cookparms.getNode();
902  if (!thissop) return getInputs().entries();
903  exint result;
904  OP_Utils::evalOpParm(result, thissop, "inputs", cookparms.getCookTime(), 0);
905  return result;
906  }
907  int64 opInputs_inputtype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
908  { return opinstInputs_inputtype(cookparms, &_idx); }
909  int64 opinstInputs_inputtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
910  {
911  SOP_Node *thissop = cookparms.getNode();
912  if (!thissop) return (myInputs(_idx[0]).inputtype);
913  int _parmidx[2-1];
914  _parmidx[1-1] = _idx[1-1] + 1;
915 
916  int64 result;
917  OP_Utils::evalOpParmInst(result, thissop, "inputtype#", _parmidx, cookparms.getCookTime(), 0, 2-1);
918  return (result);
919  }
921  { return opinstInputs_inputpointattribute(cookparms, &_idx); }
923  {
924  SOP_Node *thissop = cookparms.getNode();
925  if (!thissop) return (myInputs(_idx[0]).inputpointattribute);
926  int _parmidx[2-1];
927  _parmidx[1-1] = _idx[1-1] + 1;
928 
930  OP_Utils::evalOpParmInst(result, thissop, "inputpointattribute#", _parmidx, cookparms.getCookTime(), 0, 2-1);
931  return (result);
932  }
934  { return opinstInputs_inputvolumename(cookparms, &_idx); }
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return (myInputs(_idx[0]).inputvolumename);
939  int _parmidx[2-1];
940  _parmidx[1-1] = _idx[1-1] + 1;
941 
943  OP_Utils::evalOpParmInst(result, thissop, "inputvolumename#", _parmidx, cookparms.getCookTime(), 0, 2-1);
944  return (result);
945  }
947  { return opinstInputs_inputvolumeresolution(cookparms, &_idx); }
949  {
950  SOP_Node *thissop = cookparms.getNode();
951  if (!thissop) return (myInputs(_idx[0]).inputvolumeresolution);
952  int _parmidx[2-1];
953  _parmidx[1-1] = _idx[1-1] + 1;
954 
956  OP_Utils::evalOpParmInst(result, thissop, "inputvolumeresolution#", _parmidx, cookparms.getCookTime(), 0, 2-1);
957  return (result);
958  }
959  int64 opInputs_inputtuplesize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
960  { return opinstInputs_inputtuplesize(cookparms, &_idx); }
961  int64 opinstInputs_inputtuplesize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
962  {
963  SOP_Node *thissop = cookparms.getNode();
964  if (!thissop) return (myInputs(_idx[0]).inputtuplesize);
965  int _parmidx[2-1];
966  _parmidx[1-1] = _idx[1-1] + 1;
967 
968  int64 result;
969  OP_Utils::evalOpParmInst(result, thissop, "inputtuplesize#", _parmidx, cookparms.getCookTime(), 0, 2-1);
970  return (result);
971  }
972 
973  const UT_Array<Targets> &getTargets() const { return myTargets; }
974 void setTargets(const UT_Array<Targets> &val) { myTargets = val; }
975  exint opTargets(const SOP_NodeVerb::CookParms &cookparms) const
976  {
977  SOP_Node *thissop = cookparms.getNode();
978  if (!thissop) return getTargets().entries();
979  exint result;
980  OP_Utils::evalOpParm(result, thissop, "targets", cookparms.getCookTime(), 0);
981  return result;
982  }
983  int64 opTargets_targettype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
984  { return opinstTargets_targettype(cookparms, &_idx); }
985  int64 opinstTargets_targettype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
986  {
987  SOP_Node *thissop = cookparms.getNode();
988  if (!thissop) return (myTargets(_idx[0]).targettype);
989  int _parmidx[2-1];
990  _parmidx[1-1] = _idx[1-1] + 1;
991 
992  int64 result;
993  OP_Utils::evalOpParmInst(result, thissop, "targettype#", _parmidx, cookparms.getCookTime(), 0, 2-1);
994  return (result);
995  }
997  { return opinstTargets_targetpointattribute(cookparms, &_idx); }
999  {
1000  SOP_Node *thissop = cookparms.getNode();
1001  if (!thissop) return (myTargets(_idx[0]).targetpointattribute);
1002  int _parmidx[2-1];
1003  _parmidx[1-1] = _idx[1-1] + 1;
1004 
1006  OP_Utils::evalOpParmInst(result, thissop, "targetpointattribute#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1007  return (result);
1008  }
1010  { return opinstTargets_targetvolumename(cookparms, &_idx); }
1012  {
1013  SOP_Node *thissop = cookparms.getNode();
1014  if (!thissop) return (myTargets(_idx[0]).targetvolumename);
1015  int _parmidx[2-1];
1016  _parmidx[1-1] = _idx[1-1] + 1;
1017 
1019  OP_Utils::evalOpParmInst(result, thissop, "targetvolumename#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1020  return (result);
1021  }
1023  { return opinstTargets_targetvolumeresolution(cookparms, &_idx); }
1025  {
1026  SOP_Node *thissop = cookparms.getNode();
1027  if (!thissop) return (myTargets(_idx[0]).targetvolumeresolution);
1028  int _parmidx[2-1];
1029  _parmidx[1-1] = _idx[1-1] + 1;
1030 
1032  OP_Utils::evalOpParmInst(result, thissop, "targetvolumeresolution#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1033  return (result);
1034  }
1035  int64 opTargets_targettuplesize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1036  { return opinstTargets_targettuplesize(cookparms, &_idx); }
1037  int64 opinstTargets_targettuplesize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1038  {
1039  SOP_Node *thissop = cookparms.getNode();
1040  if (!thissop) return (myTargets(_idx[0]).targettuplesize);
1041  int _parmidx[2-1];
1042  _parmidx[1-1] = _idx[1-1] + 1;
1043 
1044  int64 result;
1045  OP_Utils::evalOpParmInst(result, thissop, "targettuplesize#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1046  return (result);
1047  }
1048 
1049 
1050 private:
1051  UT_StringHolder myInputDimensionAttribute;
1052  UT_StringHolder myTargetDimensionAttribute;
1053  UT_StringHolder mySerialAttribute;
1054  UT_Array<Inputs> myInputs;
1055  UT_Array<Targets> myTargets;
1056 
1057 };
UT_Vector3I opinstInputs_inputvolumeresolution(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstTargets_targetvolumename(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
static void saveData(std::ostream &os, UT_Matrix4D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
int64 opinstTargets_targettype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
int64 opInputs_inputtuplesize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
UT_StringHolder opSerialAttribute(const SOP_NodeVerb::CookParms &cookparms) const
void
Definition: png.h:1083
int64 opinstTargets_targettuplesize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint bread(int32 *buffer, exint asize=1)
exint opInputs(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:131
bool operator==(const SOP_MLExampleDeserializePackedParms &src) const
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
fpreal getTime() const
Definition: OP_Context.h:62
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void loadFromOpSubclass(const LoadParms &loadparms) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setTargetDimensionAttribute(const UT_StringHolder &val)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
UT_Vector3I opTargets_targetvolumeresolution(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
SYS_FORCE_INLINE const char * buffer() const
exint opTargets(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
An output stream object that owns its own string buffer storage.
static void saveData(std::ostream &os, UT_Matrix3D v)
UT_StringHolder opTargets_targetpointattribute(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opTargets_targettuplesize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
**But if you need a result
Definition: thread.h:613
UT_Vector3T< int64 > UT_Vector3I
UT_StringHolder opTargetDimensionAttribute(const SOP_NodeVerb::CookParms &cookparms) const
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.
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
int64 opinstInputs_inputtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
double fpreal64
Definition: SYS_Types.h:201
int64 opInputs_inputtype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
UT_StringHolder opinstTargets_targetpointattribute(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
UT_StringHolder opInputs_inputpointattribute(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setInputDimensionAttribute(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector4I &v)
UT_StringHolder opinstInputs_inputvolumename(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, UT_Vector4D v)
ParmType getNestParmType(TempIndex fieldnum) const override
exint getNestNumParms(TempIndex idx) const override
int64 opinstInputs_inputtuplesize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint length() const
static void saveData(std::ostream &os, fpreal64 v)
UT_StringHolder createString(const UT_Array< Targets > &list) 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
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static void loadData(UT_IStream &is, int64 &v)
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
static void loadData(UT_IStream &is, UT_Matrix4D &v)
bool operator!=(const SOP_MLExampleDeserializePackedParms &src) 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
const UT_StringHolder & getTargetDimensionAttribute() const
UT_StringHolder createString(const UT_Array< Inputs > &list) const
SYS_FORCE_INLINE UT_StringHolder getToken(InputType enum_value)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void saveData(std::ostream &os, PRM_DataItemHandle s)
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
GT_API const UT_StringHolder version
int64 opTargets_targettype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
#define SYS_PRId64
Definition: SYS_Types.h:76
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
static void loadData(UT_IStream &is, fpreal64 &v)
UT_Vector3I opinstTargets_targetvolumeresolution(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_StringHolder opInputs_inputvolumename(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_StringHolder opInputDimensionAttribute(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opTargets_targetvolumename(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
static void saveData(std::ostream &os, UT_Vector3D v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
UT_StringHolder opinstInputs_inputpointattribute(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, UT_StringHolder s)
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
#define SOP_API
Definition: SOP_API.h:10
UT_Vector3I opInputs_inputvolumeresolution(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void saveData(std::ostream &os, bool v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
static void loadData(UT_IStream &is, UT_Vector2D &v)
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void saveData(std::ostream &os, int64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
GLboolean r
Definition: glcorearb.h:1222
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void copyFrom(const OP_NodeParms *src) override
static void loadData(UT_IStream &is, UT_Matrix3D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
type
Definition: core.h:1059
const UT_StringHolder & getInputDimensionAttribute() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
const char * getNestParmName(TempIndex fieldnum) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void loadData(UT_IStream &is, UT_Vector4D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Vector2D v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void loadData(UT_IStream &is, UT_StringHolder &v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663