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