HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Material.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_MaterialEnums
24 {
25  enum class Uselabels
26  {
27  USELABELS = 0,
28  USENAMES
29  };
30 }
31 
32 
34 {
35 public:
36  static int version() { return 1; }
37  struct Num_local
38  {
46 
47 
49  {
50  local_name = ""_UTsh;
51  local_type = "float"_UTsh;
52  local_ival = 0;
53  local_fval = 0;
54  local_sval = ""_UTsh;
55  local_cval = UT_Vector3D(1,1,1);
56  local_vval = UT_Vector4D(0,0,0,0);
57 
58  }
59 
60  bool operator==(const Num_local &src) const
61  {
62  if (local_name != src.local_name) return false;
63  if (local_type != src.local_type) return false;
64  if (local_ival != src.local_ival) return false;
65  if (local_fval != src.local_fval) return false;
66  if (local_sval != src.local_sval) return false;
67  if (local_cval != src.local_cval) return false;
68  if (local_vval != src.local_vval) return false;
69 
70  return true;
71  }
72  bool operator!=(const Num_local &src) const
73  {
74  return !operator==(src);
75  }
76 
77  };
78 
80  {
82 
83  buf.strcat("[ ");
84  for (int i = 0; i < list.entries(); i++)
85  {
86  if (i)
87  buf.strcat(", ");
88  buf.strcat("( ");
89  buf.append("");
90  { UT_String tmp; tmp = UT_StringWrap(list(i).local_name).makeQuotedString('"'); buf.strcat(tmp); }
91  buf.append(", ");
92  { UT_String tmp; tmp = UT_StringWrap(list(i).local_type).makeQuotedString('"'); buf.strcat(tmp); }
93  buf.append(", ");
94  buf.appendSprintf("%d", (int) list(i).local_ival);
95  buf.append(", ");
96  buf.appendSprintf("%f", (list(i).local_fval));
97  buf.append(", ");
98  { UT_String tmp; tmp = UT_StringWrap(list(i).local_sval).makeQuotedString('"'); buf.strcat(tmp); }
99  buf.append(", ");
100  buf.appendSprintf("(%f, %f, %f)", list(i).local_cval.x(), list(i).local_cval.y(), list(i).local_cval.z());
101  buf.append(", ");
102  buf.appendSprintf("(%f, %f, %f, %f)", list(i).local_vval.x(), list(i).local_vval.y(), list(i).local_vval.z(), list(i).local_vval.w());
103 
104  buf.strcat(" )");
105  }
106  buf.strcat(" ]");
107 
109  return result;
110  }
112  {
115  bool localvar;
118 
119 
121  {
122  group = ""_UTsh;
123  shop_materialpath = ""_UTsh;
124  localvar = false;
125  mergeoverride = false;
126  num_local.setSize(0);
127 
128  }
129 
130  bool operator==(const Num_materials &src) const
131  {
132  if (group != src.group) return false;
133  if (shop_materialpath != src.shop_materialpath) return false;
134  if (localvar != src.localvar) return false;
135  if (mergeoverride != src.mergeoverride) return false;
136  if (num_local != src.num_local) return false;
137 
138  return true;
139  }
140  bool operator!=(const Num_materials &src) const
141  {
142  return !operator==(src);
143  }
144 
145  };
146 
148  {
150 
151  buf.strcat("[ ");
152  for (int i = 0; i < list.entries(); i++)
153  {
154  if (i)
155  buf.strcat(", ");
156  buf.strcat("( ");
157  buf.append("");
158  { UT_String tmp; tmp = UT_StringWrap(list(i).group).makeQuotedString('"'); buf.strcat(tmp); }
159  buf.append(", ");
160  { UT_String tmp; tmp = UT_StringWrap(list(i).shop_materialpath).makeQuotedString('"'); buf.strcat(tmp); }
161  buf.append(", ");
162  buf.appendSprintf("%s", (list(i).localvar) ? "true" : "false");
163  buf.append(", ");
164  buf.appendSprintf("%s", (list(i).mergeoverride) ? "true" : "false");
165  buf.append(", ");
166  buf.strcat(createString(list(i).num_local));
167 
168  buf.strcat(" )");
169  }
170  buf.strcat(" ]");
171 
173  return result;
174  }
175 
177  {
178  myStyle = "primitive"_UTsh;
179  myUselabels = 0;
180  myCreatestylesheets = false;
181  myFullpath = true;
182  myNum_materials.setSize(1);
183 
184  }
185 
186  explicit SOP_MaterialParms(const SOP_MaterialParms &) = default;
187  SOP_MaterialParms &operator=(const SOP_MaterialParms &) = default;
188  SOP_MaterialParms(SOP_MaterialParms &&) noexcept = default;
189  SOP_MaterialParms &operator=(SOP_MaterialParms &&) noexcept = default;
190 
191  ~SOP_MaterialParms() override {}
192 
193  bool operator==(const SOP_MaterialParms &src) const
194  {
195  if (myStyle != src.myStyle) return false;
196  if (myUselabels != src.myUselabels) return false;
197  if (myCreatestylesheets != src.myCreatestylesheets) return false;
198  if (myFullpath != src.myFullpath) return false;
199  if (myNum_materials != src.myNum_materials) return false;
200 
201  return true;
202  }
203  bool operator!=(const SOP_MaterialParms &src) const
204  {
205  return !operator==(src);
206  }
208 
209 
210 
211  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
212  {
213  myStyle = "primitive"_UTsh;
214  if (true)
215  graph->evalOpParm(myStyle, nodeidx, "style", time, 0);
216  myUselabels = 0;
217  if (true)
218  graph->evalOpParm(myUselabels, nodeidx, "uselabels", time, 0);
219  myCreatestylesheets = false;
220  if (true)
221  graph->evalOpParm(myCreatestylesheets, nodeidx, "createstylesheets", time, 0);
222  myFullpath = true;
223  if (true)
224  graph->evalOpParm(myFullpath, nodeidx, "fullpath", time, 0);
225  if (true)
226  {
227  int64 length = 0;
228  graph->evalOpParm(length, nodeidx, "num_materials", time, 0);
229  if (length < 0) length = 0;
230  myNum_materials.setSize(length);
231  for (exint i = 0; i < length; i++)
232  {
233  int parmidx[1];
234  int offsets[1];
235  parmidx[0] = i+1;
236  offsets[0] = 1;
237  auto && _curentry = myNum_materials(i);
238  (void) _curentry;
239  _curentry.group = ""_UTsh;
240  if (true)
241  graph->evalOpParmInst(_curentry.group, nodeidx, "group#", parmidx, offsets, time, 0, 2-1);
242  _curentry.shop_materialpath = ""_UTsh;
243  if (true)
244  graph->evalOpParmInst(_curentry.shop_materialpath, nodeidx, "shop_materialpath#", parmidx, offsets, time, 0, 2-1);
245  _curentry.localvar = false;
246  if (true)
247  graph->evalOpParmInst(_curentry.localvar, nodeidx, "localvar#", parmidx, offsets, time, 0, 2-1);
248  _curentry.mergeoverride = false;
249  if (true)
250  graph->evalOpParmInst(_curentry.mergeoverride, nodeidx, "mergeoverride#", parmidx, offsets, time, 0, 2-1);
251  {
252  if (true)
253  {
254  int64 length = 0;
255  graph->evalOpParmInst(length, nodeidx, "num_local#", parmidx, offsets, time, 0, 2-1);
256  if (length < 0) length = 0;
257  _curentry.num_local.setSize(length);
258  for (exint i = 0; i < length; i++)
259  {
260  auto && _unshadow_entry = _curentry.num_local;
261  auto && _unshadow_parmidx = parmidx;
262  auto && _unshadow_offsets = offsets;
263  {
264  auto && _curentry = _unshadow_entry(i);
265  int parmidx[2];
266  int offsets[2];
267  for (int _i = 0; _i < 2 - 1; _i++)
268  parmidx[_i] = _unshadow_parmidx[_i];
269  for (int _i = 0; _i < 2 - 1; _i++)
270  offsets[_i] = _unshadow_offsets[_i];
271  parmidx[2-1] = i+1;
272  offsets[2-1] = 1;
273  (void) _curentry;
274  _curentry.local_name = ""_UTsh;
275  if (true)
276  graph->evalOpParmInst(_curentry.local_name, nodeidx, "local#_name#", parmidx, offsets, time, 0, 3-1);
277  _curentry.local_type = "float"_UTsh;
278  if (true)
279  graph->evalOpParmInst(_curentry.local_type, nodeidx, "local#_type#", parmidx, offsets, time, 0, 3-1);
280  _curentry.local_ival = 0;
281  if (true && ( (true&&!(((_curentry.local_type!="int")))) ) )
282  graph->evalOpParmInst(_curentry.local_ival, nodeidx, "local#_ival#", parmidx, offsets, time, 0, 3-1);
283  _curentry.local_fval = 0;
284  if (true && ( (true&&!(((_curentry.local_type!="float")))) ) )
285  graph->evalOpParmInst(_curentry.local_fval, nodeidx, "local#_fval#", parmidx, offsets, time, 0, 3-1);
286  _curentry.local_sval = ""_UTsh;
287  if (true && ( (true&&!(((_curentry.local_type!="string")))) ) )
288  graph->evalOpParmInst(_curentry.local_sval, nodeidx, "local#_sval#", parmidx, offsets, time, 0, 3-1);
289  _curentry.local_cval = UT_Vector3D(1,1,1);
290  if (true && ( (true&&!(((_curentry.local_type!="color")))) ) )
291  graph->evalOpParmInst(_curentry.local_cval, nodeidx, "local#_cval#", parmidx, offsets, time, 0, 3-1);
292  _curentry.local_vval = UT_Vector4D(0,0,0,0);
293  if (true && ( (true&&!(((_curentry.local_type!="vector2")&&(_curentry.local_type!="vector3")&&(_curentry.local_type!="vector4")))) ) )
294  graph->evalOpParmInst(_curentry.local_vval, nodeidx, "local#_vval#", parmidx, offsets, time, 0, 3-1);
295 
296  }
297  }
298  }
299  else
300  _curentry.num_local.clear();
301  }
302 
303  }
304  }
305  else
306  myNum_materials.clear();
307 
308  }
309 
310 
311  void loadFromOpSubclass(const LoadParms &loadparms) override
312  {
313  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
314  }
315 
316 
317  void copyFrom(const OP_NodeParms *src) override
318  {
319  *this = *((const SOP_MaterialParms *)src);
320  }
321 
322  template <typename T>
323  void
324  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
325  {
326  if (idx.size() < 1)
327  return;
328  UT_ASSERT(idx.size() == instance.size()+1);
329  if (idx.size() != instance.size()+1)
330  return;
331  switch (idx[0])
332  {
333  case 0:
334  coerceValue(value, myStyle);
335  break;
336  case 1:
337  coerceValue(value, myUselabels);
338  break;
339  case 2:
340  coerceValue(value, myCreatestylesheets);
341  break;
342  case 3:
343  coerceValue(value, myFullpath);
344  break;
345  case 4:
346  if (idx.size() == 1)
347  coerceValue(value, myNum_materials.entries());
348  else if (instance[0] < myNum_materials.entries())
349  {
350  auto && _data = myNum_materials(instance[0]);
351  switch (idx[1])
352  {
353  case 0:
354  coerceValue(value, _data.group);
355  break;
356  case 1:
357  coerceValue(value, _data.shop_materialpath);
358  break;
359  case 2:
360  coerceValue(value, _data.localvar);
361  break;
362  case 3:
363  coerceValue(value, _data.mergeoverride);
364  break;
365  case 4:
366  if (idx.size() == 2)
367  coerceValue(value, _data.num_local.entries());
368  else if (instance[2-1] < _data.num_local.entries())
369  {
370  auto && _unshadow = _data.num_local;
371  {
372  auto && _data = _unshadow(instance[2-1]);
373  switch (idx[2])
374  {
375  case 0:
376  coerceValue(value, _data.local_name);
377  break;
378  case 1:
379  coerceValue(value, _data.local_type);
380  break;
381  case 2:
382  coerceValue(value, _data.local_ival);
383  break;
384  case 3:
385  coerceValue(value, _data.local_fval);
386  break;
387  case 4:
388  coerceValue(value, _data.local_sval);
389  break;
390  case 5:
391  coerceValue(value, _data.local_cval);
392  break;
393  case 6:
394  coerceValue(value, _data.local_vval);
395  break;
396 
397  }
398  }
399  }
400  break;
401 
402  }
403  }
404  break;
405 
406  }
407  }
408 
409  bool isParmColorRamp(exint idx) const override
410  {
411  switch (idx)
412  {
413 
414  }
415  return false;
416  }
417 
418  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
419  { doGetParmValue(idx, instance, value); }
420  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
421  { doGetParmValue(idx, instance, value); }
422  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
423  { doGetParmValue(idx, instance, value); }
424  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
425  { doGetParmValue(idx, instance, value); }
426  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
427  { doGetParmValue(idx, instance, value); }
428  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
429  { doGetParmValue(idx, instance, value); }
430  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
431  { doGetParmValue(idx, instance, value); }
432  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
433  { doGetParmValue(idx, instance, value); }
434  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
435  { doGetParmValue(idx, instance, value); }
436  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
437  { doGetParmValue(idx, instance, value); }
438  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
439  { doGetParmValue(idx, instance, value); }
440 
441  template <typename T>
442  void
443  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
444  {
445  if (idx.size() < 1)
446  return;
447  UT_ASSERT(idx.size() == instance.size()+1);
448  if (idx.size() != instance.size()+1)
449  return;
450  switch (idx[0])
451  {
452  case 0:
453  coerceValue(myStyle, ( ( value ) ));
454  break;
455  case 1:
456  coerceValue(myUselabels, clampMinValue(0, clampMaxValue(1, value ) ));
457  break;
458  case 2:
459  coerceValue(myCreatestylesheets, ( ( value ) ));
460  break;
461  case 3:
462  coerceValue(myFullpath, ( ( value ) ));
463  break;
464  case 4:
465  if (idx.size() == 1)
466  {
467  exint newsize;
468  coerceValue(newsize, value);
469  if (newsize < 0) newsize = 0;
470  myNum_materials.setSize(newsize);
471  }
472  else
473  {
474  if (instance[0] < 0)
475  return;
476  myNum_materials.setSizeIfNeeded(instance[0]+1);
477  auto && _data = myNum_materials(instance[0]);
478  switch (idx[1])
479  {
480  case 0:
481  coerceValue(_data.group, value);
482  break;
483  case 1:
484  coerceValue(_data.shop_materialpath, value);
485  break;
486  case 2:
487  coerceValue(_data.localvar, value);
488  break;
489  case 3:
490  coerceValue(_data.mergeoverride, value);
491  break;
492  case 4:
493  if (idx.size() == 2)
494  {
495  exint newsize;
496  coerceValue(newsize, value);
497  if (newsize < 0) newsize = 0;
498  _data.num_local.setSize(newsize);
499  }
500  else
501  {
502  if (instance[2-1] < 0)
503  return;
504  _data.num_local.setSizeIfNeeded(instance[2-1]+1);
505  auto && _unshadow = _data.num_local;
506  {
507  auto && _data = _unshadow(instance[2-1]);
508  switch (idx[2])
509  {
510  case 0:
511  coerceValue(_data.local_name, value);
512  break;
513  case 1:
514  coerceValue(_data.local_type, value);
515  break;
516  case 2:
517  coerceValue(_data.local_ival, value);
518  break;
519  case 3:
520  coerceValue(_data.local_fval, value);
521  break;
522  case 4:
523  coerceValue(_data.local_sval, value);
524  break;
525  case 5:
526  coerceValue(_data.local_cval, value);
527  break;
528  case 6:
529  coerceValue(_data.local_vval, value);
530  break;
531 
532  }
533  }
534  }
535  break;
536 
537  }
538  }
539  break;
540 
541  }
542  }
543 
544  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
545  { doSetParmValue(idx, instance, value); }
546  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
547  { doSetParmValue(idx, instance, value); }
548  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
549  { doSetParmValue(idx, instance, value); }
550  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
551  { doSetParmValue(idx, instance, value); }
552  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
553  { doSetParmValue(idx, instance, value); }
554  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
555  { doSetParmValue(idx, instance, value); }
556  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
557  { doSetParmValue(idx, instance, value); }
558  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
559  { doSetParmValue(idx, instance, value); }
560  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
561  { doSetParmValue(idx, instance, value); }
562  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
563  { doSetParmValue(idx, instance, value); }
564  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
565  { doSetParmValue(idx, instance, value); }
566 
567  exint getNestNumParms(TempIndex idx) const override
568  {
569  if (idx.size() == 0)
570  return 5;
571  switch (idx[0])
572  {
573  case 4:
574  return 5;
575 
576  }
577  // Invalid
578  return 0;
579  }
580 
581  const char *getNestParmName(TempIndex fieldnum) const override
582  {
583  if (fieldnum.size() < 1)
584  return 0;
585  switch (fieldnum[0])
586  {
587  case 0:
588  return "style";
589  case 1:
590  return "uselabels";
591  case 2:
592  return "createstylesheets";
593  case 3:
594  return "fullpath";
595  case 4:
596  if (fieldnum.size() == 1)
597  return "num_materials";
598  switch (fieldnum[1])
599  {
600  case 0:
601  return "group#";
602  case 1:
603  return "shop_materialpath#";
604  case 2:
605  return "localvar#";
606  case 3:
607  return "mergeoverride#";
608  case 4:
609  if (fieldnum.size() == 2)
610  return "num_local#";
611  switch (fieldnum[2])
612  {
613  case 0:
614  return "local#_name#";
615  case 1:
616  return "local#_type#";
617  case 2:
618  return "local#_ival#";
619  case 3:
620  return "local#_fval#";
621  case 4:
622  return "local#_sval#";
623  case 5:
624  return "local#_cval#";
625  case 6:
626  return "local#_vval#";
627 
628  }
629  return 0;
630 
631  }
632  return 0;
633 
634  }
635  return 0;
636  }
637 
638  ParmType getNestParmType(TempIndex fieldnum) const override
639  {
640  if (fieldnum.size() < 1)
641  return PARM_UNSUPPORTED;
642  switch (fieldnum[0])
643  {
644  case 0:
645  return PARM_STRING;
646  case 1:
647  return PARM_INTEGER;
648  case 2:
649  return PARM_INTEGER;
650  case 3:
651  return PARM_INTEGER;
652  case 4:
653  if (fieldnum.size() == 1)
654  return PARM_MULTIPARM;
655  switch (fieldnum[1])
656  {
657  case 0:
658  return PARM_STRING;
659  case 1:
660  return PARM_STRING;
661  case 2:
662  return PARM_INTEGER;
663  case 3:
664  return PARM_INTEGER;
665  case 4:
666  if (fieldnum.size() == 2)
667  return PARM_MULTIPARM;
668  switch (fieldnum[2])
669  {
670  case 0:
671  return PARM_STRING;
672  case 1:
673  return PARM_STRING;
674  case 2:
675  return PARM_INTEGER;
676  case 3:
677  return PARM_FLOAT;
678  case 4:
679  return PARM_STRING;
680  case 5:
681  return PARM_VECTOR3;
682  case 6:
683  return PARM_VECTOR4;
684 
685  }
686  return PARM_UNSUPPORTED;
687 
688  }
689  return PARM_UNSUPPORTED;
690 
691  }
692  return PARM_UNSUPPORTED;
693  }
694 
695  // Boiler plate to load individual types.
696  static void loadData(UT_IStream &is, int64 &v)
697  { is.bread(&v, 1); }
698  static void loadData(UT_IStream &is, bool &v)
699  { int64 iv; is.bread(&iv, 1); v = iv; }
700  static void loadData(UT_IStream &is, fpreal64 &v)
701  { is.bread<fpreal64>(&v, 1); }
702  static void loadData(UT_IStream &is, UT_Vector2D &v)
703  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
704  static void loadData(UT_IStream &is, UT_Vector3D &v)
705  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
706  is.bread<fpreal64>(&v.z(), 1); }
707  static void loadData(UT_IStream &is, UT_Vector4D &v)
708  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
709  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
710  static void loadData(UT_IStream &is, UT_Matrix2D &v)
711  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
712  static void loadData(UT_IStream &is, UT_Matrix3D &v)
713  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
714  static void loadData(UT_IStream &is, UT_Matrix4D &v)
715  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
716  static void loadData(UT_IStream &is, UT_Vector2I &v)
717  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
718  static void loadData(UT_IStream &is, UT_Vector3I &v)
719  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
720  is.bread<int64>(&v.z(), 1); }
721  static void loadData(UT_IStream &is, UT_Vector4I &v)
722  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
723  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
725  { is.bread(v); }
727  { UT_StringHolder rampdata;
728  loadData(is, rampdata);
729  if (rampdata.isstring())
730  {
731  v.reset(new UT_Ramp());
732  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
733  v->load(istr);
734  }
735  else v.reset();
736  }
739  loadData(is, data);
740  if (data.isstring())
741  {
742  // Find the data type.
743  const char *colon = UT_StringWrap(data).findChar(':');
744  if (colon)
745  {
746  int typelen = colon - data.buffer();
748  type.strncpy(data.buffer(), typelen);
749  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
750 
751  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
752  }
753  }
754  else v.reset();
755  }
756 
757  static void saveData(std::ostream &os, int64 v)
758  { UTwrite(os, &v); }
759  static void saveData(std::ostream &os, bool v)
760  { int64 iv = v; UTwrite(os, &iv); }
761  static void saveData(std::ostream &os, fpreal64 v)
762  { UTwrite<fpreal64>(os, &v); }
763  static void saveData(std::ostream &os, UT_Vector2D v)
764  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
765  static void saveData(std::ostream &os, UT_Vector3D v)
766  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
767  UTwrite<fpreal64>(os, &v.z()); }
768  static void saveData(std::ostream &os, UT_Vector4D v)
769  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
770  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
771  static void saveData(std::ostream &os, UT_Matrix2D v)
773  static void saveData(std::ostream &os, UT_Matrix3D v)
775  static void saveData(std::ostream &os, UT_Matrix4D v)
777  static void saveData(std::ostream &os, UT_StringHolder s)
778  { UT_StringWrap(s).saveBinary(os); }
779  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
781  UT_OStringStream ostr;
782  if (s) s->save(ostr);
783  result = ostr.str();
784  saveData(os, result);
785  }
786  static void saveData(std::ostream &os, PRM_DataItemHandle s)
788  UT_OStringStream ostr;
789  if (s)
790  {
791  ostr << s->getDataTypeToken();
792  ostr << ":";
793  s->saveBinary(ostr);
794  }
795  result = ostr.str();
796  saveData(os, result);
797  }
798 
799 
800  void save(std::ostream &os) const
801  {
802  int32 v = version();
803  UTwrite(os, &v);
804  saveData(os, myStyle);
805  saveData(os, myUselabels);
806  saveData(os, myCreatestylesheets);
807  saveData(os, myFullpath);
808  {
809  int64 length = myNum_materials.entries();
810  UTwrite(os, &length);
811  for (exint i = 0; i < length; i++)
812  {
813  auto && _curentry = myNum_materials(i);
814  (void) _curentry;
815  saveData(os, _curentry.group);
816  saveData(os, _curentry.shop_materialpath);
817  saveData(os, _curentry.localvar);
818  saveData(os, _curentry.mergeoverride);
819  {
820  int64 length2 = _curentry.num_local.entries();
821  UTwrite(os, &length2);
822  for (exint i2 = 0; i2 < length2; i2++)
823  {
824  auto && _unshadow_entry = _curentry;
825  {
826  auto && _curentry = _unshadow_entry.num_local(i2);
827  (void) _curentry;
828  saveData(os, _curentry.local_name);
829  saveData(os, _curentry.local_type);
830  saveData(os, _curentry.local_ival);
831  saveData(os, _curentry.local_fval);
832  saveData(os, _curentry.local_sval);
833  saveData(os, _curentry.local_cval);
834  saveData(os, _curentry.local_vval);
835 
836  }
837  }
838  }
839 
840  }
841  }
842 
843  }
844 
845  bool load(UT_IStream &is)
846  {
847  int32 v;
848  is.bread(&v, 1);
849  if (version() != v)
850  {
851  // Fail incompatible versions
852  return false;
853  }
854  loadData(is, myStyle);
855  loadData(is, myUselabels);
856  loadData(is, myCreatestylesheets);
857  loadData(is, myFullpath);
858  {
859  int64 length;
860  is.read(&length, 1);
861  myNum_materials.setSize(length);
862  for (exint i = 0; i < length; i++)
863  {
864  auto && _curentry = myNum_materials(i);
865  (void) _curentry;
866  loadData(is, _curentry.group);
867  loadData(is, _curentry.shop_materialpath);
868  loadData(is, _curentry.localvar);
869  loadData(is, _curentry.mergeoverride);
870  {
871  int64 length2;
872  is.read(&length2, 1);
873  _curentry.num_local.setSize(length2);
874  for (exint i2 = 0; i2 < length2; i2++)
875  {
876  auto && _unshadow_entry = _curentry;
877  {
878  auto && _curentry = _unshadow_entry.num_local(i2);
879  (void) _curentry;
880  loadData(is, _curentry.local_name);
881  loadData(is, _curentry.local_type);
882  loadData(is, _curentry.local_ival);
883  loadData(is, _curentry.local_fval);
884  loadData(is, _curentry.local_sval);
885  loadData(is, _curentry.local_cval);
886  loadData(is, _curentry.local_vval);
887 
888  }
889  }
890  }
891 
892  }
893  }
894 
895  return true;
896  }
897 
898  const UT_StringHolder & getStyle() const { return myStyle; }
899  void setStyle(const UT_StringHolder & val) { myStyle = val; }
901  {
902  SOP_Node *thissop = cookparms.getNode();
903  if (!thissop) return getStyle();
905  OP_Utils::evalOpParm(result, thissop, "style", cookparms.getCookTime(), 0);
906  return result;
907  }
908  Uselabels getUselabels() const { return Uselabels(myUselabels); }
909  void setUselabels(Uselabels val) { myUselabels = int64(val); }
911  {
912  SOP_Node *thissop = cookparms.getNode();
913  if (!thissop) return getUselabels();
914  int64 result;
915  OP_Utils::evalOpParm(result, thissop, "uselabels", cookparms.getCookTime(), 0);
916  return Uselabels(result);
917  }
918  bool getCreatestylesheets() const { return myCreatestylesheets; }
919  void setCreatestylesheets(bool val) { myCreatestylesheets = val; }
920  bool opCreatestylesheets(const SOP_NodeVerb::CookParms &cookparms) const
921  {
922  SOP_Node *thissop = cookparms.getNode();
923  if (!thissop) return getCreatestylesheets();
924  bool result;
925  OP_Utils::evalOpParm(result, thissop, "createstylesheets", cookparms.getCookTime(), 0);
926  return result;
927  }
928  bool getFullpath() const { return myFullpath; }
929  void setFullpath(bool val) { myFullpath = val; }
930  bool opFullpath(const SOP_NodeVerb::CookParms &cookparms) const
931  {
932  SOP_Node *thissop = cookparms.getNode();
933  if (!thissop) return getFullpath();
934  bool result;
935  OP_Utils::evalOpParm(result, thissop, "fullpath", cookparms.getCookTime(), 0);
936  return result;
937  }
938  const UT_Array<Num_materials> &getNum_materials() const { return myNum_materials; }
939 void setNum_materials(const UT_Array<Num_materials> &val) { myNum_materials = val; }
941  {
942  SOP_Node *thissop = cookparms.getNode();
943  if (!thissop) return getNum_materials().entries();
944  exint result;
945  OP_Utils::evalOpParm(result, thissop, "num_materials", cookparms.getCookTime(), 0);
946  return result;
947  }
949  { return opinstNum_materials_group(cookparms, &_idx); }
950  UT_StringHolder opinstNum_materials_group(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
951  {
952  SOP_Node *thissop = cookparms.getNode();
953  if (!thissop) return (myNum_materials(_idx[0]).group);
954  int _parmidx[2-1];
955  _parmidx[1-1] = _idx[1-1] + 1;
956 
958  OP_Utils::evalOpParmInst(result, thissop, "group#", _parmidx, cookparms.getCookTime(), 0, 2-1);
959  return (result);
960  }
962  { return opinstNum_materials_shop_materialpath(cookparms, &_idx); }
964  {
965  SOP_Node *thissop = cookparms.getNode();
966  if (!thissop) return (myNum_materials(_idx[0]).shop_materialpath);
967  int _parmidx[2-1];
968  _parmidx[1-1] = _idx[1-1] + 1;
969 
971  OP_Utils::evalOpParmInst(result, thissop, "shop_materialpath#", _parmidx, cookparms.getCookTime(), 0, 2-1);
972  return (result);
973  }
974  bool opNum_materials_localvar(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
975  { return opinstNum_materials_localvar(cookparms, &_idx); }
976  bool opinstNum_materials_localvar(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
977  {
978  SOP_Node *thissop = cookparms.getNode();
979  if (!thissop) return (myNum_materials(_idx[0]).localvar);
980  int _parmidx[2-1];
981  _parmidx[1-1] = _idx[1-1] + 1;
982 
983  bool result;
984  OP_Utils::evalOpParmInst(result, thissop, "localvar#", _parmidx, cookparms.getCookTime(), 0, 2-1);
985  return (result);
986  }
987  bool opNum_materials_mergeoverride(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
988  { return opinstNum_materials_mergeoverride(cookparms, &_idx); }
989  bool opinstNum_materials_mergeoverride(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
990  {
991  SOP_Node *thissop = cookparms.getNode();
992  if (!thissop) return (myNum_materials(_idx[0]).mergeoverride);
993  int _parmidx[2-1];
994  _parmidx[1-1] = _idx[1-1] + 1;
995 
996  bool result;
997  OP_Utils::evalOpParmInst(result, thissop, "mergeoverride#", _parmidx, cookparms.getCookTime(), 0, 2-1);
998  return (result);
999  }
1000  exint opinstNum_materials_num_local(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1001  {
1002  SOP_Node *thissop = cookparms.getNode();
1003  if (!thissop) return myNum_materials(_idx[0]).num_local.entries();
1004  exint result;
1005  int _parmidx[2-1];
1006  _parmidx[1-1] = _idx[1-1] + 1;
1007 
1008  OP_Utils::evalOpParmInst(result, thissop, "num_local#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1009  return result;
1010  }
1012  {
1013  SOP_Node *thissop = cookparms.getNode();
1014  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_name);
1015  int _parmidx[3-1];
1016  _parmidx[1-1] = _idx[1-1] + 1;
1017  _parmidx[2-1] = _idx[2-1] + 1;
1018 
1020  OP_Utils::evalOpParmInst(result, thissop, "local#_name#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1021  return (result);
1022  }
1024  {
1025  SOP_Node *thissop = cookparms.getNode();
1026  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_type);
1027  int _parmidx[3-1];
1028  _parmidx[1-1] = _idx[1-1] + 1;
1029  _parmidx[2-1] = _idx[2-1] + 1;
1030 
1032  OP_Utils::evalOpParmInst(result, thissop, "local#_type#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1033  return (result);
1034  }
1036  {
1037  SOP_Node *thissop = cookparms.getNode();
1038  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_ival);
1039  int _parmidx[3-1];
1040  _parmidx[1-1] = _idx[1-1] + 1;
1041  _parmidx[2-1] = _idx[2-1] + 1;
1042 
1043  int64 result;
1044  OP_Utils::evalOpParmInst(result, thissop, "local#_ival#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1045  return (result);
1046  }
1048  {
1049  SOP_Node *thissop = cookparms.getNode();
1050  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_fval);
1051  int _parmidx[3-1];
1052  _parmidx[1-1] = _idx[1-1] + 1;
1053  _parmidx[2-1] = _idx[2-1] + 1;
1054 
1055  fpreal64 result;
1056  OP_Utils::evalOpParmInst(result, thissop, "local#_fval#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1057  return (result);
1058  }
1060  {
1061  SOP_Node *thissop = cookparms.getNode();
1062  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_sval);
1063  int _parmidx[3-1];
1064  _parmidx[1-1] = _idx[1-1] + 1;
1065  _parmidx[2-1] = _idx[2-1] + 1;
1066 
1068  OP_Utils::evalOpParmInst(result, thissop, "local#_sval#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1069  return (result);
1070  }
1072  {
1073  SOP_Node *thissop = cookparms.getNode();
1074  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_cval);
1075  int _parmidx[3-1];
1076  _parmidx[1-1] = _idx[1-1] + 1;
1077  _parmidx[2-1] = _idx[2-1] + 1;
1078 
1080  OP_Utils::evalOpParmInst(result, thissop, "local#_cval#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1081  return (result);
1082  }
1084  {
1085  SOP_Node *thissop = cookparms.getNode();
1086  if (!thissop) return (myNum_materials(_idx[0]).num_local(_idx[1]).local_vval);
1087  int _parmidx[3-1];
1088  _parmidx[1-1] = _idx[1-1] + 1;
1089  _parmidx[2-1] = _idx[2-1] + 1;
1090 
1092  OP_Utils::evalOpParmInst(result, thissop, "local#_vval#", _parmidx, cookparms.getCookTime(), 0, 3-1);
1093  return (result);
1094  }
1095 
1096 
1097 
1098 private:
1099  UT_StringHolder myStyle;
1100  int64 myUselabels;
1101  bool myCreatestylesheets;
1102  bool myFullpath;
1103  UT_Array<Num_materials> myNum_materials;
1104 
1105 };
UT_StringHolder opinstNum_materials_num_local_local_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
exint getNestNumParms(TempIndex idx) const override
static void saveData(std::ostream &os, fpreal64 v)
bool operator==(const Num_local &src) const
const char * getNestParmName(TempIndex fieldnum) const override
bool opNum_materials_localvar(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder createString(const UT_Array< Num_local > &list) const
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool operator!=(const Num_local &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void loadData(UT_IStream &is, UT_Vector3I &v)
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
static void loadData(UT_IStream &is, UT_Matrix4D &v)
PUGI__FN const char_t * local_name(const xpath_node &node)
Definition: pugixml.cpp:8249
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
ParmType getNestParmType(TempIndex fieldnum) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
static void saveData(std::ostream &os, bool v)
bool operator!=(const SOP_MaterialParms &src) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
exint opNum_materials(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 exint
Definition: SYS_Types.h:125
bool isParmColorRamp(exint idx) const override
GLint GLint i2
Definition: glad.h:2724
bool operator==(const Num_materials &src) const
SYS_FORCE_INLINE const char * buffer() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
GLdouble s
Definition: glad.h:3009
bool opCreatestylesheets(const SOP_NodeVerb::CookParms &cookparms) const
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
bool load(UT_IStream &is)
An output stream object that owns its own string buffer storage.
UT_StringHolder opStyle(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
**But if you need a result
Definition: thread.h:613
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
Uselabels getUselabels() const
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
static void saveData(std::ostream &os, UT_Matrix4D v)
void copyFrom(const OP_NodeParms *src) override
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
UT_Vector4D opinstNum_materials_num_local_local_vval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstNum_materials_num_local_local_sval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
bool operator==(const SOP_MaterialParms &src) const
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
UT_StringHolder opinstNum_materials_group(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
UT_StringHolder opNum_materials_group(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_Vector2D &v)
int64 opinstNum_materials_num_local_local_ival(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint length() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setStyle(const UT_StringHolder &val)
void setCreatestylesheets(bool val)
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
UT_StringHolder opinstNum_materials_num_local_local_name(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opNum_materials_shop_materialpath(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void save(std::ostream &os) const
static void loadData(UT_IStream &is, fpreal64 &v)
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
bool getCreatestylesheets() const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_Vector3T< fpreal64 > UT_Vector3D
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
fpreal64 opinstNum_materials_num_local_local_fval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
const UT_Array< Num_materials > & getNum_materials() const
bool opNum_materials_mergeoverride(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_Vector3D opinstNum_materials_num_local_local_cval(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, bool &v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setUselabels(Uselabels val)
SYS_FORCE_INLINE void strcat(const char *src)
exint opinstNum_materials_num_local(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
GT_API const UT_StringHolder version
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
bool opinstNum_materials_localvar(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
static void loadData(UT_IStream &is, int64 &v)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setNum_materials(const UT_Array< Num_materials > &val)
static void saveData(std::ostream &os, UT_Vector3D v)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool operator!=(const Num_materials &src) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
static void saveData(std::ostream &os, UT_Vector2D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
GLuint GLfloat * val
Definition: glcorearb.h:1608
const UT_StringHolder & getStyle() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool getFullpath() const
#define SOP_API
Definition: SOP_API.h:10
static void saveData(std::ostream &os, PRM_DataItemHandle s)
Uselabels opUselabels(const SOP_NodeVerb::CookParms &cookparms) const
void setFullpath(bool val)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void loadData(UT_IStream &is, UT_Vector2I &v)
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
static void saveData(std::ostream &os, UT_Matrix3D v)
Definition: core.h:1131
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_Vector4D v)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
GLboolean r
Definition: glcorearb.h:1222
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool opFullpath(const SOP_NodeVerb::CookParms &cookparms) const
bool opinstNum_materials_mergeoverride(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, int64 v)
UT_Vector4T< fpreal64 > UT_Vector4D
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
type
Definition: core.h:1059
static void saveData(std::ostream &os, UT_StringHolder s)
UT_StringHolder opinstNum_materials_shop_materialpath(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
UT_StringHolder createString(const UT_Array< Num_materials > &list) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
GA_API const UT_StringHolder shop_materialpath
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663