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 <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_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 
261  if (baseGetSignature() != src.baseGetSignature()) return false;
262 
263  return true;
264  }
265  bool operator!=(const SOP_RawImportParms &src) const
266  {
267  return !operator==(src);
268  }
275 
276 
277 
278  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
279  {
280  myFile = "default.raw"_UTsh;
281  if (true)
282  graph->evalOpParm(myFile, nodeidx, "file", time, graph->isDirect()?nullptr:depnode);
283  raw_myFile = "default.raw"_UTsh;
284  if (true)
285  graph->evalOpParmRaw(raw_myFile, nodeidx, "file", time, graph->isDirect()?nullptr:depnode);
286  myEndian = 0;
287  if (true)
288  graph->evalOpParm(myEndian, nodeidx, "endian", time, graph->isDirect()?nullptr:depnode);
289  myPointCountType = 0;
290  if (true)
291  graph->evalOpParm(myPointCountType, nodeidx, "pointcounttype", time, graph->isDirect()?nullptr:depnode);
292  myPointCount = 100;
293  if (true && ( (true&&!(((int64(getPointCountType())!=1)))) ) )
294  graph->evalOpParm(myPointCount, nodeidx, "pointcount", time, graph->isDirect()?nullptr:depnode);
295  myPointCountAttrib = "pointcount"_UTsh;
296  if (true && ( (true&&!(((int64(getPointCountType())!=2)))) ) )
297  graph->evalOpParm(myPointCountAttrib, nodeidx, "pointcountattrib", time, graph->isDirect()?nullptr:depnode);
298  if (true)
299  {
300  int64 length = 0;
301  graph->evalOpParm(length, nodeidx, "blocks", time, graph->isDirect()?nullptr:depnode);
302  if (length < 0) length = 0;
303  myBlocks.setSize(length);
304  for (exint i = 0; i < length; i++)
305  {
306  int parmidx[1];
307  int offsets[1];
308  parmidx[0] = i+1;
309  offsets[0] = 1;
310  auto && _curentry = myBlocks(i);
311  (void) _curentry;
312  _curentry.name = ""_UTsh;
313  if (true)
314  graph->evalOpParmInst(_curentry.name, nodeidx, "name#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
315  _curentry.target = 1;
316  if (true)
317  graph->evalOpParmInst(_curentry.target, nodeidx, "target#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
318  _curentry.tuplesize = 1;
319  if (true)
320  graph->evalOpParmInst(_curentry.tuplesize, nodeidx, "tuplesize#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
321  _curentry.type = 0;
322  if (true)
323  graph->evalOpParmInst(_curentry.type, nodeidx, "type#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
324  _curentry.precision = 2;
325  if (true)
326  graph->evalOpParmInst(_curentry.precision, nodeidx, "precision#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
327  _curentry.bfloat = false;
328  if (true && ( (true&&!(((_curentry.type!=0))||((_curentry.precision!=1)))) ) )
329  graph->evalOpParmInst(_curentry.bfloat, nodeidx, "bfloat#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
330  _curentry.collate = false;
331  if (true)
332  graph->evalOpParmInst(_curentry.collate, nodeidx, "collate#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
333  _curentry.volres = UT_Vector3I(10,10,10);
334  if (true && ( (true&&!(((_curentry.target!=3))||((_curentry.collate==1)))) ) )
335  graph->evalOpParmInst(_curentry.volres, nodeidx, "volres#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
336  _curentry.volorder = 0;
337  if (true && ( (true&&!(((_curentry.target!=3))||((_curentry.collate==1)))) ) )
338  graph->evalOpParmInst(_curentry.volorder, nodeidx, "volorder#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
339 
340  }
341  }
342  else
343  myBlocks.clear();
344 
345  }
346 
347 
348  void loadFromOpSubclass(const LoadParms &loadparms) override
349  {
350  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
351  }
352 
353 
354  void copyFrom(const OP_NodeParms *src) override
355  {
356  *this = *((const SOP_RawImportParms *)src);
357  }
358 
359  template <typename T>
360  void
361  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
362  {
363  if (idx.size() < 1)
364  return;
365  UT_ASSERT(idx.size() == instance.size()+1);
366  if (idx.size() != instance.size()+1)
367  return;
368  switch (idx[0])
369  {
370  case 0:
371  coerceValue(value, myFile);
372  break;
373  case 1:
374  coerceValue(value, myEndian);
375  break;
376  case 2:
377  coerceValue(value, myPointCountType);
378  break;
379  case 3:
380  coerceValue(value, myPointCount);
381  break;
382  case 4:
383  coerceValue(value, myPointCountAttrib);
384  break;
385  case 5:
386  if (idx.size() == 1)
387  coerceValue(value, myBlocks.entries());
388  else if (instance[0] < myBlocks.entries())
389  {
390  auto && _data = myBlocks(instance[0]);
391  switch (idx[1])
392  {
393  case 0:
394  coerceValue(value, _data.name);
395  break;
396  case 1:
397  coerceValue(value, _data.target);
398  break;
399  case 2:
400  coerceValue(value, _data.tuplesize);
401  break;
402  case 3:
403  coerceValue(value, _data.type);
404  break;
405  case 4:
406  coerceValue(value, _data.precision);
407  break;
408  case 5:
409  coerceValue(value, _data.bfloat);
410  break;
411  case 6:
412  coerceValue(value, _data.collate);
413  break;
414  case 7:
415  coerceValue(value, _data.volres);
416  break;
417  case 8:
418  coerceValue(value, _data.volorder);
419  break;
420 
421  }
422  }
423  break;
424 
425  }
426  }
427 
428  bool isParmColorRamp(exint idx) const override
429  {
430  switch (idx)
431  {
432 
433  }
434  return false;
435  }
436 
437  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
438  { doGetParmValue(idx, instance, value); }
439  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
440  { doGetParmValue(idx, instance, value); }
441  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
442  { doGetParmValue(idx, instance, value); }
443  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
444  { doGetParmValue(idx, instance, value); }
445  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
446  { doGetParmValue(idx, instance, value); }
447  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
448  { doGetParmValue(idx, instance, value); }
449  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
450  { doGetParmValue(idx, instance, value); }
451  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
452  { doGetParmValue(idx, instance, value); }
453  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
454  { doGetParmValue(idx, instance, value); }
455  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
456  { doGetParmValue(idx, instance, value); }
457  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
458  { doGetParmValue(idx, instance, value); }
459 
460  template <typename T>
461  void
462  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
463  {
464  if (idx.size() < 1)
465  return;
466  UT_ASSERT(idx.size() == instance.size()+1);
467  if (idx.size() != instance.size()+1)
468  return;
469  switch (idx[0])
470  {
471  case 0:
472  coerceValue(myFile, ( ( value ) ));
473  break;
474  case 1:
475  coerceValue(myEndian, clampMinValue(0, clampMaxValue(1, value ) ));
476  break;
477  case 2:
478  coerceValue(myPointCountType, clampMinValue(0, clampMaxValue(3, value ) ));
479  break;
480  case 3:
481  coerceValue(myPointCount, clampMinValue(0, ( value ) ));
482  break;
483  case 4:
484  coerceValue(myPointCountAttrib, ( ( value ) ));
485  break;
486  case 5:
487  if (idx.size() == 1)
488  {
489  exint newsize;
490  coerceValue(newsize, value);
491  if (newsize < 0) newsize = 0;
492  myBlocks.setSize(newsize);
493  }
494  else
495  {
496  if (instance[0] < 0)
497  return;
498  myBlocks.setSizeIfNeeded(instance[0]+1);
499  auto && _data = myBlocks(instance[0]);
500  switch (idx[1])
501  {
502  case 0:
503  coerceValue(_data.name, value);
504  break;
505  case 1:
506  coerceValue(_data.target, value);
507  break;
508  case 2:
509  coerceValue(_data.tuplesize, value);
510  break;
511  case 3:
512  coerceValue(_data.type, value);
513  break;
514  case 4:
515  coerceValue(_data.precision, value);
516  break;
517  case 5:
518  coerceValue(_data.bfloat, value);
519  break;
520  case 6:
521  coerceValue(_data.collate, value);
522  break;
523  case 7:
524  coerceValue(_data.volres, value);
525  break;
526  case 8:
527  coerceValue(_data.volorder, value);
528  break;
529 
530  }
531  }
532  break;
533 
534  }
535  }
536 
537  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
538  { doSetParmValue(idx, instance, value); }
539  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
540  { doSetParmValue(idx, instance, value); }
541  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
542  { doSetParmValue(idx, instance, value); }
543  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
544  { doSetParmValue(idx, instance, value); }
545  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
546  { doSetParmValue(idx, instance, value); }
547  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
548  { doSetParmValue(idx, instance, value); }
549  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
550  { doSetParmValue(idx, instance, value); }
551  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
552  { doSetParmValue(idx, instance, value); }
553  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
554  { doSetParmValue(idx, instance, value); }
555  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
556  { doSetParmValue(idx, instance, value); }
557  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
558  { doSetParmValue(idx, instance, value); }
559 
560  exint getNestNumParms(TempIndex idx) const override
561  {
562  if (idx.size() == 0)
563  return 6;
564  switch (idx[0])
565  {
566  case 5:
567  return 9;
568 
569  }
570  // Invalid
571  return 0;
572  }
573 
574  const char *getNestParmName(TempIndex fieldnum) const override
575  {
576  if (fieldnum.size() < 1)
577  return 0;
578  switch (fieldnum[0])
579  {
580  case 0:
581  return "file";
582  case 1:
583  return "endian";
584  case 2:
585  return "pointcounttype";
586  case 3:
587  return "pointcount";
588  case 4:
589  return "pointcountattrib";
590  case 5:
591  if (fieldnum.size() == 1)
592  return "blocks";
593  switch (fieldnum[1])
594  {
595  case 0:
596  return "name#";
597  case 1:
598  return "target#";
599  case 2:
600  return "tuplesize#";
601  case 3:
602  return "type#";
603  case 4:
604  return "precision#";
605  case 5:
606  return "bfloat#";
607  case 6:
608  return "collate#";
609  case 7:
610  return "volres#";
611  case 8:
612  return "volorder#";
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_INTEGER;
631  case 2:
632  return PARM_INTEGER;
633  case 3:
634  return PARM_INTEGER;
635  case 4:
636  return PARM_STRING;
637  case 5:
638  if (fieldnum.size() == 1)
639  return PARM_MULTIPARM;
640  switch (fieldnum[1])
641  {
642  case 0:
643  return PARM_STRING;
644  case 1:
645  return PARM_INTEGER;
646  case 2:
647  return PARM_INTEGER;
648  case 3:
649  return PARM_INTEGER;
650  case 4:
651  return PARM_INTEGER;
652  case 5:
653  return PARM_INTEGER;
654  case 6:
655  return PARM_INTEGER;
656  case 7:
657  return PARM_VECTOR3;
658  case 8:
659  return PARM_INTEGER;
660 
661  }
662  return PARM_UNSUPPORTED;
663 
664  }
665  return PARM_UNSUPPORTED;
666  }
667 
668  // Boiler plate to load individual types.
669  static void loadData(UT_IStream &is, int64 &v)
670  { is.bread(&v, 1); }
671  static void loadData(UT_IStream &is, bool &v)
672  { int64 iv; is.bread(&iv, 1); v = iv; }
673  static void loadData(UT_IStream &is, fpreal64 &v)
674  { is.bread<fpreal64>(&v, 1); }
675  static void loadData(UT_IStream &is, UT_Vector2D &v)
676  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
677  static void loadData(UT_IStream &is, UT_Vector3D &v)
678  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
679  is.bread<fpreal64>(&v.z(), 1); }
680  static void loadData(UT_IStream &is, UT_Vector4D &v)
681  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
682  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
683  static void loadData(UT_IStream &is, UT_Matrix2D &v)
684  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
685  static void loadData(UT_IStream &is, UT_Matrix3D &v)
686  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
687  static void loadData(UT_IStream &is, UT_Matrix4D &v)
688  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
689  static void loadData(UT_IStream &is, UT_Vector2I &v)
690  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
691  static void loadData(UT_IStream &is, UT_Vector3I &v)
692  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
693  is.bread<int64>(&v.z(), 1); }
694  static void loadData(UT_IStream &is, UT_Vector4I &v)
695  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
696  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
698  { is.bread(v); }
700  { UT_StringHolder rampdata;
701  loadData(is, rampdata);
702  if (rampdata.isstring())
703  {
704  v.reset(new UT_Ramp());
705  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
706  v->load(istr);
707  }
708  else v.reset();
709  }
712  loadData(is, data);
713  if (data.isstring())
714  {
715  // Find the data type.
716  const char *colon = UT_StringWrap(data).findChar(':');
717  if (colon)
718  {
719  int typelen = colon - data.buffer();
721  type.strncpy(data.buffer(), typelen);
722  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
723 
724  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
725  }
726  }
727  else v.reset();
728  }
729 
730  static void saveData(std::ostream &os, int64 v)
731  { UTwrite(os, &v); }
732  static void saveData(std::ostream &os, bool v)
733  { int64 iv = v; UTwrite(os, &iv); }
734  static void saveData(std::ostream &os, fpreal64 v)
735  { UTwrite<fpreal64>(os, &v); }
736  static void saveData(std::ostream &os, UT_Vector2D v)
737  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
738  static void saveData(std::ostream &os, UT_Vector3D v)
739  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
740  UTwrite<fpreal64>(os, &v.z()); }
741  static void saveData(std::ostream &os, UT_Vector4D v)
742  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
743  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
744  static void saveData(std::ostream &os, UT_Matrix2D v)
746  static void saveData(std::ostream &os, UT_Matrix3D v)
748  static void saveData(std::ostream &os, UT_Matrix4D v)
750  static void saveData(std::ostream &os, UT_StringHolder s)
751  { UT_StringWrap(s).saveBinary(os); }
752  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
754  UT_OStringStream ostr;
755  if (s) s->save(ostr);
756  result = ostr.str();
757  saveData(os, result);
758  }
759  static void saveData(std::ostream &os, PRM_DataItemHandle s)
761  UT_OStringStream ostr;
762  if (s)
763  {
764  ostr << s->getDataTypeToken();
765  ostr << ":";
766  s->saveBinary(ostr);
767  }
768  result = ostr.str();
769  saveData(os, result);
770  }
771 
772 
773  void save(std::ostream &os) const
774  {
775  int32 v = version();
776  UTwrite(os, &v);
777  saveData(os, myFile);
778  saveData(os, raw_myFile);
779  saveData(os, myEndian);
780  saveData(os, myPointCountType);
781  saveData(os, myPointCount);
782  saveData(os, myPointCountAttrib);
783  {
784  int64 length = myBlocks.entries();
785  UTwrite(os, &length);
786  for (exint i = 0; i < length; i++)
787  {
788  auto && _curentry = myBlocks(i);
789  (void) _curentry;
790  saveData(os, _curentry.name);
791  saveData(os, _curentry.target);
792  saveData(os, _curentry.tuplesize);
793  saveData(os, _curentry.type);
794  saveData(os, _curentry.precision);
795  saveData(os, _curentry.bfloat);
796  saveData(os, _curentry.collate);
797  saveData(os, _curentry.volres);
798  saveData(os, _curentry.volorder);
799 
800  }
801  }
802 
803  }
804 
805  bool load(UT_IStream &is)
806  {
807  int32 v;
808  is.bread(&v, 1);
809  if (version() != v)
810  {
811  // Fail incompatible versions
812  return false;
813  }
814  loadData(is, myFile);
815  loadData(is, raw_myFile);
816  loadData(is, myEndian);
817  loadData(is, myPointCountType);
818  loadData(is, myPointCount);
819  loadData(is, myPointCountAttrib);
820  {
821  int64 length;
822  is.read(&length, 1);
823  myBlocks.setSize(length);
824  for (exint i = 0; i < length; i++)
825  {
826  auto && _curentry = myBlocks(i);
827  (void) _curentry;
828  loadData(is, _curentry.name);
829  loadData(is, _curentry.target);
830  loadData(is, _curentry.tuplesize);
831  loadData(is, _curentry.type);
832  loadData(is, _curentry.precision);
833  loadData(is, _curentry.bfloat);
834  loadData(is, _curentry.collate);
835  loadData(is, _curentry.volres);
836  loadData(is, _curentry.volorder);
837 
838  }
839  }
840 
841  return true;
842  }
843 
844  const UT_StringHolder & getFile() const { return myFile; }
845  void setFile(const UT_StringHolder & val) { myFile = val; }
847  {
848  SOP_Node *thissop = cookparms.getNode();
849  if (!thissop) return getFile();
851  OP_Utils::evalOpParm(result, thissop, "file", cookparms.getCookTime(), 0);
852  return result;
853  }
854  const UT_StringHolder & raw_getFile() const { return raw_myFile; }
855  void raw_setFile(const UT_StringHolder & val) { raw_myFile = val; }
857  {
858  SOP_Node *thissop = cookparms.getNode();
859  if (!thissop) return raw_getFile();
861  OP_Utils::evalOpParmRaw(result, thissop, "file", cookparms.getCookTime(), 0);
862  return result;
863  }
864  Endian getEndian() const { return Endian(myEndian); }
865  void setEndian(Endian val) { myEndian = int64(val); }
866  Endian opEndian(const SOP_NodeVerb::CookParms &cookparms) const
867  {
868  SOP_Node *thissop = cookparms.getNode();
869  if (!thissop) return getEndian();
870  int64 result;
871  OP_Utils::evalOpParm(result, thissop, "endian", cookparms.getCookTime(), 0);
872  return Endian(result);
873  }
874  PointCountType getPointCountType() const { return PointCountType(myPointCountType); }
875  void setPointCountType(PointCountType val) { myPointCountType = int64(val); }
877  {
878  SOP_Node *thissop = cookparms.getNode();
879  if (!thissop) return getPointCountType();
880  int64 result;
881  OP_Utils::evalOpParm(result, thissop, "pointcounttype", cookparms.getCookTime(), 0);
882  return PointCountType(result);
883  }
884  int64 getPointCount() const { return myPointCount; }
885  void setPointCount(int64 val) { myPointCount = val; }
887  {
888  SOP_Node *thissop = cookparms.getNode();
889  if (!thissop) return getPointCount();
890  int64 result;
891  OP_Utils::evalOpParm(result, thissop, "pointcount", cookparms.getCookTime(), 0);
892  return result;
893  }
894  const UT_StringHolder & getPointCountAttrib() const { return myPointCountAttrib; }
895  void setPointCountAttrib(const UT_StringHolder & val) { myPointCountAttrib = val; }
897  {
898  SOP_Node *thissop = cookparms.getNode();
899  if (!thissop) return getPointCountAttrib();
901  OP_Utils::evalOpParm(result, thissop, "pointcountattrib", cookparms.getCookTime(), 0);
902  return result;
903  }
904  const UT_Array<Blocks> &getBlocks() const { return myBlocks; }
905 void setBlocks(const UT_Array<Blocks> &val) { myBlocks = val; }
906  exint opBlocks(const SOP_NodeVerb::CookParms &cookparms) const
907  {
908  SOP_Node *thissop = cookparms.getNode();
909  if (!thissop) return getBlocks().entries();
910  exint result;
911  OP_Utils::evalOpParm(result, thissop, "blocks", cookparms.getCookTime(), 0);
912  return result;
913  }
914  UT_StringHolder opBlocks_name(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
915  { return opinstBlocks_name(cookparms, &_idx); }
916  UT_StringHolder opinstBlocks_name(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
917  {
918  SOP_Node *thissop = cookparms.getNode();
919  if (!thissop) return (myBlocks(_idx[0]).name);
920  int _parmidx[2-1];
921  _parmidx[1-1] = _idx[1-1] + 1;
922 
924  OP_Utils::evalOpParmInst(result, thissop, "name#", _parmidx, cookparms.getCookTime(), 0, 2-1);
925  return (result);
926  }
927  int64 opBlocks_target(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
928  { return opinstBlocks_target(cookparms, &_idx); }
929  int64 opinstBlocks_target(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
930  {
931  SOP_Node *thissop = cookparms.getNode();
932  if (!thissop) return (myBlocks(_idx[0]).target);
933  int _parmidx[2-1];
934  _parmidx[1-1] = _idx[1-1] + 1;
935 
936  int64 result;
937  OP_Utils::evalOpParmInst(result, thissop, "target#", _parmidx, cookparms.getCookTime(), 0, 2-1);
938  return (result);
939  }
940  int64 opBlocks_tuplesize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
941  { return opinstBlocks_tuplesize(cookparms, &_idx); }
942  int64 opinstBlocks_tuplesize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
943  {
944  SOP_Node *thissop = cookparms.getNode();
945  if (!thissop) return (myBlocks(_idx[0]).tuplesize);
946  int _parmidx[2-1];
947  _parmidx[1-1] = _idx[1-1] + 1;
948 
949  int64 result;
950  OP_Utils::evalOpParmInst(result, thissop, "tuplesize#", _parmidx, cookparms.getCookTime(), 0, 2-1);
951  return (result);
952  }
953  int64 opBlocks_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
954  { return opinstBlocks_type(cookparms, &_idx); }
955  int64 opinstBlocks_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return (myBlocks(_idx[0]).type);
959  int _parmidx[2-1];
960  _parmidx[1-1] = _idx[1-1] + 1;
961 
962  int64 result;
963  OP_Utils::evalOpParmInst(result, thissop, "type#", _parmidx, cookparms.getCookTime(), 0, 2-1);
964  return (result);
965  }
966  int64 opBlocks_precision(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
967  { return opinstBlocks_precision(cookparms, &_idx); }
968  int64 opinstBlocks_precision(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
969  {
970  SOP_Node *thissop = cookparms.getNode();
971  if (!thissop) return (myBlocks(_idx[0]).precision);
972  int _parmidx[2-1];
973  _parmidx[1-1] = _idx[1-1] + 1;
974 
975  int64 result;
976  OP_Utils::evalOpParmInst(result, thissop, "precision#", _parmidx, cookparms.getCookTime(), 0, 2-1);
977  return (result);
978  }
979  bool opBlocks_bfloat(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
980  { return opinstBlocks_bfloat(cookparms, &_idx); }
981  bool opinstBlocks_bfloat(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
982  {
983  SOP_Node *thissop = cookparms.getNode();
984  if (!thissop) return (myBlocks(_idx[0]).bfloat);
985  int _parmidx[2-1];
986  _parmidx[1-1] = _idx[1-1] + 1;
987 
988  bool result;
989  OP_Utils::evalOpParmInst(result, thissop, "bfloat#", _parmidx, cookparms.getCookTime(), 0, 2-1);
990  return (result);
991  }
992  bool opBlocks_collate(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
993  { return opinstBlocks_collate(cookparms, &_idx); }
994  bool opinstBlocks_collate(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
995  {
996  SOP_Node *thissop = cookparms.getNode();
997  if (!thissop) return (myBlocks(_idx[0]).collate);
998  int _parmidx[2-1];
999  _parmidx[1-1] = _idx[1-1] + 1;
1000 
1001  bool result;
1002  OP_Utils::evalOpParmInst(result, thissop, "collate#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1003  return (result);
1004  }
1005  UT_Vector3I opBlocks_volres(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1006  { return opinstBlocks_volres(cookparms, &_idx); }
1007  UT_Vector3I opinstBlocks_volres(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1008  {
1009  SOP_Node *thissop = cookparms.getNode();
1010  if (!thissop) return (myBlocks(_idx[0]).volres);
1011  int _parmidx[2-1];
1012  _parmidx[1-1] = _idx[1-1] + 1;
1013 
1015  OP_Utils::evalOpParmInst(result, thissop, "volres#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1016  return (result);
1017  }
1018  int64 opBlocks_volorder(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1019  { return opinstBlocks_volorder(cookparms, &_idx); }
1020  int64 opinstBlocks_volorder(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1021  {
1022  SOP_Node *thissop = cookparms.getNode();
1023  if (!thissop) return (myBlocks(_idx[0]).volorder);
1024  int _parmidx[2-1];
1025  _parmidx[1-1] = _idx[1-1] + 1;
1026 
1027  int64 result;
1028  OP_Utils::evalOpParmInst(result, thissop, "volorder#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1029  return (result);
1030  }
1031 
1032 
1033 private:
1034  UT_StringHolder myFile;
1035  UT_StringHolder raw_myFile;
1036  int64 myEndian;
1037  int64 myPointCountType;
1038  int64 myPointCount;
1039  UT_StringHolder myPointCountAttrib;
1040  UT_Array<Blocks> myBlocks;
1041 
1042 };
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
type
Definition: core.h:556
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:63
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setPointCount(int64 val)
UT_StringHolder opPointCountAttrib(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
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:303
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:655
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:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
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:372
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:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
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)
Endian getEndian() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
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
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