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