HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GAS_OpenCLParms.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 <GAS/GAS_API.h>
7 #include <SIM/SIM_Query.h>
8 #include <OP/OP_Utils.h>
9 #include <PRM/PRM_Parm.h>
10 #include <UT/UT_IStream.h>
11 #include <UT/UT_NTStreamUtil.h>
12 #include <UT/UT_Ramp.h>
13 #include <UT/UT_SharedPtr.h>
14 #include <UT/UT_StringHolder.h>
15 #include <UT/UT_StringStream.h>
16 #include <UT/UT_VectorTypes.h>
17 #include <UT/UT_EnvControl.h>
18 #include <SYS/SYS_Types.h>
19 
20 class DEP_MicroNode;
21 
23 {
24 public:
25  static int version() { return 13; }
26  struct Bindings
27  {
47  bool resolution;
48  bool voxelsize;
52  bool readable;
53  bool writeable;
54  bool optional;
55  bool defval;
56  bool attribbvh;
63 
64 
66  {
67  name = ""_UTsh;
68  type = 0;
69  intval = 0;
70  fval = 0;
71  v2val = 0;
72  v3val = 0;
73  v4val = 0;
74  timescale = 0;
75  fieldname = ""_UTsh;
76  fieldoffsets = false;
77  ramp = UT_SharedPtr<UT_Ramp>(0);
78  rampsize = 1024;
79  geometry = "Geometry"_UTsh;
80  attribute = ""_UTsh;
81  attribclass = 2;
82  attribtype = 0;
83  attribsize = 1;
84  volume = ""_UTsh;
85  vdbtype = 0;
86  resolution = false;
87  voxelsize = false;
88  xformtoworld = false;
89  xformtovoxel = false;
90  precision = 2;
91  readable = true;
92  writeable = false;
93  optional = false;
94  defval = false;
95  attribbvh = false;
96  attribpointbvh = false;
97  attribpointbvhmask = ""_UTsh;
98  dataname = ""_UTsh;
99  optionname = ""_UTsh;
100  optiontype = 0;
101  optionsize = 1;
102 
103  }
104 
105  bool operator==(const Bindings &src) const
106  {
107  if (name != src.name) return false;
108  if (type != src.type) return false;
109  if (intval != src.intval) return false;
110  if (fval != src.fval) return false;
111  if (v2val != src.v2val) return false;
112  if (v3val != src.v3val) return false;
113  if (v4val != src.v4val) return false;
114  if (timescale != src.timescale) return false;
115  if (fieldname != src.fieldname) return false;
116  if (fieldoffsets != src.fieldoffsets) return false;
117  if (ramp != src.ramp)
118  { if (!ramp || !src.ramp || !(*ramp == *src.ramp)) return false; }
119  if (rampsize != src.rampsize) return false;
120  if (geometry != src.geometry) return false;
121  if (attribute != src.attribute) return false;
122  if (attribclass != src.attribclass) return false;
123  if (attribtype != src.attribtype) return false;
124  if (attribsize != src.attribsize) return false;
125  if (volume != src.volume) return false;
126  if (vdbtype != src.vdbtype) return false;
127  if (resolution != src.resolution) return false;
128  if (voxelsize != src.voxelsize) return false;
129  if (xformtoworld != src.xformtoworld) return false;
130  if (xformtovoxel != src.xformtovoxel) return false;
131  if (precision != src.precision) return false;
132  if (readable != src.readable) return false;
133  if (writeable != src.writeable) return false;
134  if (optional != src.optional) return false;
135  if (defval != src.defval) return false;
136  if (attribbvh != src.attribbvh) return false;
137  if (attribpointbvh != src.attribpointbvh) return false;
138  if (attribpointbvhmask != src.attribpointbvhmask) return false;
139  if (dataname != src.dataname) return false;
140  if (optionname != src.optionname) return false;
141  if (optiontype != src.optiontype) return false;
142  if (optionsize != src.optionsize) return false;
143 
144  return true;
145  }
146  bool operator!=(const Bindings &src) const
147  {
148  return !operator==(src);
149  }
150 
151  };
152 
154  {
156 
157  buf.strcat("[ ");
158  for (int i = 0; i < list.entries(); i++)
159  {
160  if (i)
161  buf.strcat(", ");
162  buf.strcat("( ");
163  buf.append("");
164  { UT_String tmp; tmp = UT_StringWrap(list(i).name).makeQuotedString('"'); buf.strcat(tmp); }
165  buf.append(", ");
166  buf.appendSprintf("%d", (int) list(i).type);
167  buf.append(", ");
168  buf.appendSprintf("%d", (int) list(i).intval);
169  buf.append(", ");
170  buf.appendSprintf("%f", (list(i).fval));
171  buf.append(", ");
172  buf.appendSprintf("(%f, %f)", list(i).v2val.x(), list(i).v2val.y());
173  buf.append(", ");
174  buf.appendSprintf("(%f, %f, %f)", list(i).v3val.x(), list(i).v3val.y(), list(i).v3val.z());
175  buf.append(", ");
176  buf.appendSprintf("(%f, %f, %f, %f)", list(i).v4val.x(), list(i).v4val.y(), list(i).v4val.z(), list(i).v4val.w());
177  buf.append(", ");
178  buf.appendSprintf("%d", (int) list(i).timescale);
179  buf.append(", ");
180  { UT_String tmp; tmp = UT_StringWrap(list(i).fieldname).makeQuotedString('"'); buf.strcat(tmp); }
181  buf.append(", ");
182  buf.appendSprintf("%s", (list(i).fieldoffsets) ? "true" : "false");
183  buf.append(", ");
184  if (list(i).ramp)
185  {
186  UT_OStringStream os;
187  UT_String tmp;
188  list(i).ramp->save(os);
189  tmp = UT_StringWrap(os.str().buffer()).makeQuotedString('"');
190  buf.strcat(tmp);
191  }
192  else buf.strcat("""");
193  buf.append(", ");
194  buf.appendSprintf("%d", (int) list(i).rampsize);
195  buf.append(", ");
196  { UT_String tmp; tmp = UT_StringWrap(list(i).geometry).makeQuotedString('"'); buf.strcat(tmp); }
197  buf.append(", ");
198  { UT_String tmp; tmp = UT_StringWrap(list(i).attribute).makeQuotedString('"'); buf.strcat(tmp); }
199  buf.append(", ");
200  buf.appendSprintf("%d", (int) list(i).attribclass);
201  buf.append(", ");
202  buf.appendSprintf("%d", (int) list(i).attribtype);
203  buf.append(", ");
204  buf.appendSprintf("%d", (int) list(i).attribsize);
205  buf.append(", ");
206  { UT_String tmp; tmp = UT_StringWrap(list(i).volume).makeQuotedString('"'); buf.strcat(tmp); }
207  buf.append(", ");
208  buf.appendSprintf("%d", (int) list(i).vdbtype);
209  buf.append(", ");
210  buf.appendSprintf("%s", (list(i).resolution) ? "true" : "false");
211  buf.append(", ");
212  buf.appendSprintf("%s", (list(i).voxelsize) ? "true" : "false");
213  buf.append(", ");
214  buf.appendSprintf("%s", (list(i).xformtoworld) ? "true" : "false");
215  buf.append(", ");
216  buf.appendSprintf("%s", (list(i).xformtovoxel) ? "true" : "false");
217  buf.append(", ");
218  buf.appendSprintf("%d", (int) list(i).precision);
219  buf.append(", ");
220  buf.appendSprintf("%s", (list(i).readable) ? "true" : "false");
221  buf.append(", ");
222  buf.appendSprintf("%s", (list(i).writeable) ? "true" : "false");
223  buf.append(", ");
224  buf.appendSprintf("%s", (list(i).optional) ? "true" : "false");
225  buf.append(", ");
226  buf.appendSprintf("%s", (list(i).defval) ? "true" : "false");
227  buf.append(", ");
228  buf.appendSprintf("%s", (list(i).attribbvh) ? "true" : "false");
229  buf.append(", ");
230  buf.appendSprintf("%s", (list(i).attribpointbvh) ? "true" : "false");
231  buf.append(", ");
232  { UT_String tmp; tmp = UT_StringWrap(list(i).attribpointbvhmask).makeQuotedString('"'); buf.strcat(tmp); }
233  buf.append(", ");
234  { UT_String tmp; tmp = UT_StringWrap(list(i).dataname).makeQuotedString('"'); buf.strcat(tmp); }
235  buf.append(", ");
236  { UT_String tmp; tmp = UT_StringWrap(list(i).optionname).makeQuotedString('"'); buf.strcat(tmp); }
237  buf.append(", ");
238  buf.appendSprintf("%d", (int) list(i).optiontype);
239  buf.append(", ");
240  buf.appendSprintf("%d", (int) list(i).optionsize);
241 
242  buf.strcat(" )");
243  }
244  buf.strcat(" ]");
245 
247  return result;
248  }
249 
251  {
252  myRunOver = 0;
253  myAlign = true;
254  myUseCode = false;
255  myKernelName = "kernelName"_UTsh;
256  myKernelFile = ""_UTsh;
257  myKernelCode = ""_UTsh;
258  myAtBinding = false;
259  myKernelOptions = ""_UTsh;
260  myOptionAttribute = ""_UTsh;
261  myRecompile = false;
262  myOrigin = false;
263  mySize = false;
264  myVoxelSize = false;
265  myTime = false;
266  myFrame = false;
267  myTimeInc = false;
268  myFlushAttributes = false;
269  myFinish = 1;
270  myTimeScale = 1;
271  myTimeMethod = 0;
272  myXNoise = false;
273  myWorksetsGeometry = ""_UTsh;
274  myWorksetsBeginAttr = ""_UTsh;
275  myWorksetsLengthAttr = ""_UTsh;
276  myWarnMissing = 1;
277  myErrorMismatchedPoint = false;
278  myErrorMismatchedPrim = false;
279  mySingleWorkgroup = 0;
280  myPrecision = 2;
281  myImportPrequel = true;
282 
283  }
284 
285  explicit GAS_OpenCLParms(const GAS_OpenCLParms &) = default;
286  GAS_OpenCLParms &operator=(const GAS_OpenCLParms &) = default;
287  GAS_OpenCLParms(GAS_OpenCLParms &&) noexcept = default;
288  GAS_OpenCLParms &operator=(GAS_OpenCLParms &&) noexcept = default;
289 
291 
292  bool operator==(const GAS_OpenCLParms &src) const
293  {
294  if (myRunOver != src.myRunOver) return false;
295  if (myAlign != src.myAlign) return false;
296  if (myUseCode != src.myUseCode) return false;
297  if (myKernelName != src.myKernelName) return false;
298  if (myKernelFile != src.myKernelFile) return false;
299  if (myKernelCode != src.myKernelCode) return false;
300  if (myAtBinding != src.myAtBinding) return false;
301  if (myKernelOptions != src.myKernelOptions) return false;
302  if (myOptionAttribute != src.myOptionAttribute) return false;
303  if (myRecompile != src.myRecompile) return false;
304  if (myOrigin != src.myOrigin) return false;
305  if (mySize != src.mySize) return false;
306  if (myVoxelSize != src.myVoxelSize) return false;
307  if (myTime != src.myTime) return false;
308  if (myFrame != src.myFrame) return false;
309  if (myTimeInc != src.myTimeInc) return false;
310  if (myFlushAttributes != src.myFlushAttributes) return false;
311  if (myFinish != src.myFinish) return false;
312  if (myTimeScale != src.myTimeScale) return false;
313  if (myTimeMethod != src.myTimeMethod) return false;
314  if (myXNoise != src.myXNoise) return false;
315  if (myWorksetsGeometry != src.myWorksetsGeometry) return false;
316  if (myWorksetsBeginAttr != src.myWorksetsBeginAttr) return false;
317  if (myWorksetsLengthAttr != src.myWorksetsLengthAttr) return false;
318  if (myWarnMissing != src.myWarnMissing) return false;
319  if (myErrorMismatchedPoint != src.myErrorMismatchedPoint) return false;
320  if (myErrorMismatchedPrim != src.myErrorMismatchedPrim) return false;
321  if (mySingleWorkgroup != src.mySingleWorkgroup) return false;
322  if (myPrecision != src.myPrecision) return false;
323  if (myImportPrequel != src.myImportPrequel) return false;
324  if (myBindings != src.myBindings) return false;
325 
326 
327  return true;
328  }
329  bool operator!=(const GAS_OpenCLParms &src) const
330  {
331  return !operator==(src);
332  }
333 
334 
335  class Query : public SIM_Query
336  {
337  public:
338  explicit Query(const SIM_Data *owner, const GAS_OpenCLParms &parms)
339  : SIM_Query(owner)
340  , myParms(parms)
341  { }
342  ~Query() override {}
343 
344  protected:
345  bool isMyRecord(const char *recordtype) const
346  { return !strcmp(recordtype, "Params"); }
347 
348  int getNumRecordTypesSubclass() const override { return 1; }
349  const char *getRecordTypeNameSubclass(int recordtypenum) const override
350  {
351  if (recordtypenum == 0) return "Params";
352  return 0;
353  }
354  int getNumRecordsSubclass(const char *recordtype) const override
355  {
356  if (isMyRecord(recordtype)) return 1;
357  return 0;
358  }
359  int getNumFieldsSubclass(const char *recordtype) const override
360  {
361  if (isMyRecord(recordtype))
362  return 31;
363  return 0;
364  }
365 
366  const char *getFieldNameSubclass(const char *recordtype,
367  int fieldnum) const override
368  {
369  if (!isMyRecord(recordtype))
370  return 0;
371 
372  switch (fieldnum)
373  {
374  case 0:
375  return "runover";
376  case 1:
377  return "align";
378  case 2:
379  return "usecode";
380  case 3:
381  return "kernelname";
382  case 4:
383  return "kernelfile";
384  case 5:
385  return "kernelcode";
386  case 6:
387  return "atbinding";
388  case 7:
389  return "kerneloptions";
390  case 8:
391  return "kerneloptionattrib";
392  case 9:
393  return "recompile";
394  case 10:
395  return "origin";
396  case 11:
397  return "size";
398  case 12:
399  return "voxelsize";
400  case 13:
401  return "time";
402  case 14:
403  return "frame";
404  case 15:
405  return "timeinc";
406  case 16:
407  return "flushattrib";
408  case 17:
409  return "finish";
410  case 18:
411  return "timescale";
412  case 19:
413  return "timemethod";
414  case 20:
415  return "xnoise";
416  case 21:
417  return "worksets_geo";
418  case 22:
419  return "worksets_begin";
420  case 23:
421  return "worksets_length";
422  case 24:
423  return "warnmissing";
424  case 25:
425  return "errormismatchedpoint";
426  case 26:
427  return "errormismatchedprim";
428  case 27:
429  return "singleworkgroup";
430  case 28:
431  return "precision";
432  case 29:
433  return "importprequel";
434  case 30:
435  return "bindings";
436 
437  }
438  return 0;
439  }
440  UT_OptionType getFieldTypeSubclass(const char *recordtype,
441  int fieldnum) const override
442  {
443  if (!isMyRecord(recordtype))
444  return UT_OPTION_INVALID;
445 
446  switch (fieldnum)
447  {
448  case 0:
449  return UT_OPTION_INT;
450  case 1:
451  return UT_OPTION_BOOL;
452  case 2:
453  return UT_OPTION_BOOL;
454  case 3:
455  return UT_OPTION_STRING;
456  case 4:
457  return UT_OPTION_STRING;
458  case 5:
459  return UT_OPTION_STRING;
460  case 6:
461  return UT_OPTION_BOOL;
462  case 7:
463  return UT_OPTION_STRING;
464  case 8:
465  return UT_OPTION_STRING;
466  case 9:
467  return UT_OPTION_BOOL;
468  case 10:
469  return UT_OPTION_BOOL;
470  case 11:
471  return UT_OPTION_BOOL;
472  case 12:
473  return UT_OPTION_BOOL;
474  case 13:
475  return UT_OPTION_BOOL;
476  case 14:
477  return UT_OPTION_BOOL;
478  case 15:
479  return UT_OPTION_BOOL;
480  case 16:
481  return UT_OPTION_BOOL;
482  case 17:
483  return UT_OPTION_BOOL;
484  case 18:
485  return UT_OPTION_FPREAL;
486  case 19:
487  return UT_OPTION_INT;
488  case 20:
489  return UT_OPTION_BOOL;
490  case 21:
491  return UT_OPTION_STRING;
492  case 22:
493  return UT_OPTION_STRING;
494  case 23:
495  return UT_OPTION_STRING;
496  case 24:
497  return UT_OPTION_BOOL;
498  case 25:
499  return UT_OPTION_BOOL;
500  case 26:
501  return UT_OPTION_BOOL;
502  case 27:
503  return UT_OPTION_INT;
504  case 28:
505  return UT_OPTION_INT;
506  case 29:
507  return UT_OPTION_BOOL;
508  case 30:
509  return UT_OPTION_STRING;
510 
511  }
512  return UT_OPTION_INVALID;
513  }
514 
515  bool getFieldRawSubclass(const char *recordtype,
516  int recordnum,
517  const char *fieldname,
518  UT_OptionEntryPtr &result) const override
519  {
520  if (!isMyRecord(recordtype))
521  return false;
522  if (recordnum != 0)
523  return false;
524  // This is less optimal, but if we are in SIM_Query
525  // land we have already given up on performance.
526  if (!strcmp(fieldname, "runover"))
527  {
528  result = UTmakeUnique<UT_OptionInt>(myParms.myRunOver);
529  return true;
530  }
531  if (!strcmp(fieldname, "align"))
532  {
533  result = UTmakeUnique<UT_OptionBool>(myParms.myAlign);
534  return true;
535  }
536  if (!strcmp(fieldname, "usecode"))
537  {
538  result = UTmakeUnique<UT_OptionBool>(myParms.myUseCode);
539  return true;
540  }
541  if (!strcmp(fieldname, "kernelname"))
542  {
543  result = UTmakeUnique<UT_OptionString>(myParms.myKernelName);
544  return true;
545  }
546  if (!strcmp(fieldname, "kernelfile"))
547  {
548  result = UTmakeUnique<UT_OptionString>(myParms.myKernelFile);
549  return true;
550  }
551  if (!strcmp(fieldname, "kernelcode"))
552  {
553  result = UTmakeUnique<UT_OptionString>(myParms.myKernelCode);
554  return true;
555  }
556  if (!strcmp(fieldname, "atbinding"))
557  {
558  result = UTmakeUnique<UT_OptionBool>(myParms.myAtBinding);
559  return true;
560  }
561  if (!strcmp(fieldname, "kerneloptions"))
562  {
563  result = UTmakeUnique<UT_OptionString>(myParms.myKernelOptions);
564  return true;
565  }
566  if (!strcmp(fieldname, "kerneloptionattrib"))
567  {
568  result = UTmakeUnique<UT_OptionString>(myParms.myOptionAttribute);
569  return true;
570  }
571  if (!strcmp(fieldname, "recompile"))
572  {
573  result = UTmakeUnique<UT_OptionBool>(myParms.myRecompile);
574  return true;
575  }
576  if (!strcmp(fieldname, "origin"))
577  {
578  result = UTmakeUnique<UT_OptionBool>(myParms.myOrigin);
579  return true;
580  }
581  if (!strcmp(fieldname, "size"))
582  {
583  result = UTmakeUnique<UT_OptionBool>(myParms.mySize);
584  return true;
585  }
586  if (!strcmp(fieldname, "voxelsize"))
587  {
588  result = UTmakeUnique<UT_OptionBool>(myParms.myVoxelSize);
589  return true;
590  }
591  if (!strcmp(fieldname, "time"))
592  {
593  result = UTmakeUnique<UT_OptionBool>(myParms.myTime);
594  return true;
595  }
596  if (!strcmp(fieldname, "frame"))
597  {
598  result = UTmakeUnique<UT_OptionBool>(myParms.myFrame);
599  return true;
600  }
601  if (!strcmp(fieldname, "timeinc"))
602  {
603  result = UTmakeUnique<UT_OptionBool>(myParms.myTimeInc);
604  return true;
605  }
606  if (!strcmp(fieldname, "flushattrib"))
607  {
608  result = UTmakeUnique<UT_OptionBool>(myParms.myFlushAttributes);
609  return true;
610  }
611  if (!strcmp(fieldname, "finish"))
612  {
613  result = UTmakeUnique<UT_OptionBool>(myParms.myFinish);
614  return true;
615  }
616  if (!strcmp(fieldname, "timescale"))
617  {
618  result = UTmakeUnique<UT_OptionFpreal>(myParms.myTimeScale);
619  return true;
620  }
621  if (!strcmp(fieldname, "timemethod"))
622  {
623  result = UTmakeUnique<UT_OptionInt>(myParms.myTimeMethod);
624  return true;
625  }
626  if (!strcmp(fieldname, "xnoise"))
627  {
628  result = UTmakeUnique<UT_OptionBool>(myParms.myXNoise);
629  return true;
630  }
631  if (!strcmp(fieldname, "worksets_geo"))
632  {
633  result = UTmakeUnique<UT_OptionString>(myParms.myWorksetsGeometry);
634  return true;
635  }
636  if (!strcmp(fieldname, "worksets_begin"))
637  {
638  result = UTmakeUnique<UT_OptionString>(myParms.myWorksetsBeginAttr);
639  return true;
640  }
641  if (!strcmp(fieldname, "worksets_length"))
642  {
643  result = UTmakeUnique<UT_OptionString>(myParms.myWorksetsLengthAttr);
644  return true;
645  }
646  if (!strcmp(fieldname, "warnmissing"))
647  {
648  result = UTmakeUnique<UT_OptionBool>(myParms.myWarnMissing);
649  return true;
650  }
651  if (!strcmp(fieldname, "errormismatchedpoint"))
652  {
653  result = UTmakeUnique<UT_OptionBool>(myParms.myErrorMismatchedPoint);
654  return true;
655  }
656  if (!strcmp(fieldname, "errormismatchedprim"))
657  {
658  result = UTmakeUnique<UT_OptionBool>(myParms.myErrorMismatchedPrim);
659  return true;
660  }
661  if (!strcmp(fieldname, "singleworkgroup"))
662  {
663  result = UTmakeUnique<UT_OptionInt>(myParms.mySingleWorkgroup);
664  return true;
665  }
666  if (!strcmp(fieldname, "precision"))
667  {
668  result = UTmakeUnique<UT_OptionInt>(myParms.myPrecision);
669  return true;
670  }
671  if (!strcmp(fieldname, "importprequel"))
672  {
673  result = UTmakeUnique<UT_OptionBool>(myParms.myImportPrequel);
674  return true;
675  }
676  if (!strcmp(fieldname, "bindings"))
677  {
678  result = UTmakeUnique<UT_OptionString>(myParms.createString(myParms.myBindings));
679  return true;
680  }
681 
682  // Failed to find
683  return false;
684  }
685 
687  };
688 
689  SIM_Query *createQueryObject(const SIM_Data *owner) const
690  { return new Query(owner, *this); }
691 
692 
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, myRunOver);
805  saveData(os, myAlign);
806  saveData(os, myUseCode);
807  saveData(os, myKernelName);
808  saveData(os, myKernelFile);
809  saveData(os, myKernelCode);
810  saveData(os, myAtBinding);
811  saveData(os, myKernelOptions);
812  saveData(os, myOptionAttribute);
813  saveData(os, myRecompile);
814  saveData(os, myOrigin);
815  saveData(os, mySize);
816  saveData(os, myVoxelSize);
817  saveData(os, myTime);
818  saveData(os, myFrame);
819  saveData(os, myTimeInc);
820  saveData(os, myFlushAttributes);
821  saveData(os, myFinish);
822  saveData(os, myTimeScale);
823  saveData(os, myTimeMethod);
824  saveData(os, myXNoise);
825  saveData(os, myWorksetsGeometry);
826  saveData(os, myWorksetsBeginAttr);
827  saveData(os, myWorksetsLengthAttr);
828  saveData(os, myWarnMissing);
829  saveData(os, myErrorMismatchedPoint);
830  saveData(os, myErrorMismatchedPrim);
831  saveData(os, mySingleWorkgroup);
832  saveData(os, myPrecision);
833  saveData(os, myImportPrequel);
834  {
835  int64 length = myBindings.entries();
836  UTwrite(os, &length);
837  for (exint i = 0; i < length; i++)
838  {
839  auto && _curentry = myBindings(i);
840  (void) _curentry;
841  saveData(os, _curentry.name);
842  saveData(os, _curentry.type);
843  saveData(os, _curentry.intval);
844  saveData(os, _curentry.fval);
845  saveData(os, _curentry.v2val);
846  saveData(os, _curentry.v3val);
847  saveData(os, _curentry.v4val);
848  saveData(os, _curentry.timescale);
849  saveData(os, _curentry.fieldname);
850  saveData(os, _curentry.fieldoffsets);
851  saveData(os, _curentry.ramp);
852  saveData(os, _curentry.rampsize);
853  saveData(os, _curentry.geometry);
854  saveData(os, _curentry.attribute);
855  saveData(os, _curentry.attribclass);
856  saveData(os, _curentry.attribtype);
857  saveData(os, _curentry.attribsize);
858  saveData(os, _curentry.volume);
859  saveData(os, _curentry.vdbtype);
860  saveData(os, _curentry.resolution);
861  saveData(os, _curentry.voxelsize);
862  saveData(os, _curentry.xformtoworld);
863  saveData(os, _curentry.xformtovoxel);
864  saveData(os, _curentry.precision);
865  saveData(os, _curentry.readable);
866  saveData(os, _curentry.writeable);
867  saveData(os, _curentry.optional);
868  saveData(os, _curentry.defval);
869  saveData(os, _curentry.attribbvh);
870  saveData(os, _curentry.attribpointbvh);
871  saveData(os, _curentry.attribpointbvhmask);
872  saveData(os, _curentry.dataname);
873  saveData(os, _curentry.optionname);
874  saveData(os, _curentry.optiontype);
875  saveData(os, _curentry.optionsize);
876 
877  }
878  }
879 
880  }
881 
882  bool load(UT_IStream &is)
883  {
884  int32 v;
885  is.bread(&v, 1);
886  if (version() != v)
887  {
888  // Fail incompatible versions
889  return false;
890  }
891  loadData(is, myRunOver);
892  loadData(is, myAlign);
893  loadData(is, myUseCode);
894  loadData(is, myKernelName);
895  loadData(is, myKernelFile);
896  loadData(is, myKernelCode);
897  loadData(is, myAtBinding);
898  loadData(is, myKernelOptions);
899  loadData(is, myOptionAttribute);
900  loadData(is, myRecompile);
901  loadData(is, myOrigin);
902  loadData(is, mySize);
903  loadData(is, myVoxelSize);
904  loadData(is, myTime);
905  loadData(is, myFrame);
906  loadData(is, myTimeInc);
907  loadData(is, myFlushAttributes);
908  loadData(is, myFinish);
909  loadData(is, myTimeScale);
910  loadData(is, myTimeMethod);
911  loadData(is, myXNoise);
912  loadData(is, myWorksetsGeometry);
913  loadData(is, myWorksetsBeginAttr);
914  loadData(is, myWorksetsLengthAttr);
915  loadData(is, myWarnMissing);
916  loadData(is, myErrorMismatchedPoint);
917  loadData(is, myErrorMismatchedPrim);
918  loadData(is, mySingleWorkgroup);
919  loadData(is, myPrecision);
920  loadData(is, myImportPrequel);
921  {
922  int64 length;
923  is.read(&length, 1);
924  myBindings.setSize(length);
925  for (exint i = 0; i < length; i++)
926  {
927  auto && _curentry = myBindings(i);
928  (void) _curentry;
929  loadData(is, _curentry.name);
930  loadData(is, _curentry.type);
931  loadData(is, _curentry.intval);
932  loadData(is, _curentry.fval);
933  loadData(is, _curentry.v2val);
934  loadData(is, _curentry.v3val);
935  loadData(is, _curentry.v4val);
936  loadData(is, _curentry.timescale);
937  loadData(is, _curentry.fieldname);
938  loadData(is, _curentry.fieldoffsets);
939  loadData(is, _curentry.ramp);
940  loadData(is, _curentry.rampsize);
941  loadData(is, _curentry.geometry);
942  loadData(is, _curentry.attribute);
943  loadData(is, _curentry.attribclass);
944  loadData(is, _curentry.attribtype);
945  loadData(is, _curentry.attribsize);
946  loadData(is, _curentry.volume);
947  loadData(is, _curentry.vdbtype);
948  loadData(is, _curentry.resolution);
949  loadData(is, _curentry.voxelsize);
950  loadData(is, _curentry.xformtoworld);
951  loadData(is, _curentry.xformtovoxel);
952  loadData(is, _curentry.precision);
953  loadData(is, _curentry.readable);
954  loadData(is, _curentry.writeable);
955  loadData(is, _curentry.optional);
956  loadData(is, _curentry.defval);
957  loadData(is, _curentry.attribbvh);
958  loadData(is, _curentry.attribpointbvh);
959  loadData(is, _curentry.attribpointbvhmask);
960  loadData(is, _curentry.dataname);
961  loadData(is, _curentry.optionname);
962  loadData(is, _curentry.optiontype);
963  loadData(is, _curentry.optionsize);
964 
965  }
966  }
967 
968  return true;
969  }
970 
971  int64 getRunOver() const { return myRunOver; }
972  void setRunOver(int64 val) { myRunOver = val; }
973  bool getAlign() const { return myAlign; }
974  void setAlign(bool val) { myAlign = val; }
975  bool getUseCode() const { return myUseCode; }
976  void setUseCode(bool val) { myUseCode = val; }
977  const UT_StringHolder & getKernelName() const { return myKernelName; }
978  void setKernelName(const UT_StringHolder & val) { myKernelName = val; }
979  const UT_StringHolder & getKernelFile() const { return myKernelFile; }
980  void setKernelFile(const UT_StringHolder & val) { myKernelFile = val; }
981  const UT_StringHolder & getKernelCode() const { return myKernelCode; }
982  void setKernelCode(const UT_StringHolder & val) { myKernelCode = val; }
983  bool getAtBinding() const { return myAtBinding; }
984  void setAtBinding(bool val) { myAtBinding = val; }
985  const UT_StringHolder & getKernelOptions() const { return myKernelOptions; }
986  void setKernelOptions(const UT_StringHolder & val) { myKernelOptions = val; }
987  const UT_StringHolder & getOptionAttribute() const { return myOptionAttribute; }
988  void setOptionAttribute(const UT_StringHolder & val) { myOptionAttribute = val; }
989  bool getRecompile() const { return myRecompile; }
990  void setRecompile(bool val) { myRecompile = val; }
991  bool getOrigin() const { return myOrigin; }
992  void setOrigin(bool val) { myOrigin = val; }
993  bool getSize() const { return mySize; }
994  void setSize(bool val) { mySize = val; }
995  bool getVoxelSize() const { return myVoxelSize; }
996  void setVoxelSize(bool val) { myVoxelSize = val; }
997  bool getTime() const { return myTime; }
998  void setTime(bool val) { myTime = val; }
999  bool getFrame() const { return myFrame; }
1000  void setFrame(bool val) { myFrame = val; }
1001  bool getTimeInc() const { return myTimeInc; }
1002  void setTimeInc(bool val) { myTimeInc = val; }
1003  bool getFlushAttributes() const { return myFlushAttributes; }
1004  void setFlushAttributes(bool val) { myFlushAttributes = val; }
1005  bool getFinish() const { return myFinish; }
1006  void setFinish(bool val) { myFinish = val; }
1007  fpreal64 getTimeScale() const { return myTimeScale; }
1008  void setTimeScale(fpreal64 val) { myTimeScale = val; }
1009  int64 getTimeMethod() const { return myTimeMethod; }
1010  void setTimeMethod(int64 val) { myTimeMethod = val; }
1011  bool getXNoise() const { return myXNoise; }
1012  void setXNoise(bool val) { myXNoise = val; }
1013  const UT_StringHolder & getWorksetsGeometry() const { return myWorksetsGeometry; }
1014  void setWorksetsGeometry(const UT_StringHolder & val) { myWorksetsGeometry = val; }
1015  const UT_StringHolder & getWorksetsBeginAttr() const { return myWorksetsBeginAttr; }
1016  void setWorksetsBeginAttr(const UT_StringHolder & val) { myWorksetsBeginAttr = val; }
1017  const UT_StringHolder & getWorksetsLengthAttr() const { return myWorksetsLengthAttr; }
1018  void setWorksetsLengthAttr(const UT_StringHolder & val) { myWorksetsLengthAttr = val; }
1019  bool getWarnMissing() const { return myWarnMissing; }
1020  void setWarnMissing(bool val) { myWarnMissing = val; }
1021  bool getErrorMismatchedPoint() const { return myErrorMismatchedPoint; }
1022  void setErrorMismatchedPoint(bool val) { myErrorMismatchedPoint = val; }
1023  bool getErrorMismatchedPrim() const { return myErrorMismatchedPrim; }
1024  void setErrorMismatchedPrim(bool val) { myErrorMismatchedPrim = val; }
1025  int64 getSingleWorkgroup() const { return mySingleWorkgroup; }
1026  void setSingleWorkgroup(int64 val) { mySingleWorkgroup = val; }
1027  int64 getPrecision() const { return myPrecision; }
1028  void setPrecision(int64 val) { myPrecision = val; }
1029  bool getImportPrequel() const { return myImportPrequel; }
1030  void setImportPrequel(bool val) { myImportPrequel = val; }
1031  const UT_Array<Bindings> &getBindings() const { return myBindings; }
1032 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
1033 
1034 private:
1035  int64 myRunOver;
1036  bool myAlign;
1037  bool myUseCode;
1038  UT_StringHolder myKernelName;
1039  UT_StringHolder myKernelFile;
1040  UT_StringHolder myKernelCode;
1041  bool myAtBinding;
1042  UT_StringHolder myKernelOptions;
1043  UT_StringHolder myOptionAttribute;
1044  bool myRecompile;
1045  bool myOrigin;
1046  bool mySize;
1047  bool myVoxelSize;
1048  bool myTime;
1049  bool myFrame;
1050  bool myTimeInc;
1051  bool myFlushAttributes;
1052  bool myFinish;
1053  fpreal64 myTimeScale;
1054  int64 myTimeMethod;
1055  bool myXNoise;
1056  UT_StringHolder myWorksetsGeometry;
1057  UT_StringHolder myWorksetsBeginAttr;
1058  UT_StringHolder myWorksetsLengthAttr;
1059  bool myWarnMissing;
1060  bool myErrorMismatchedPoint;
1061  bool myErrorMismatchedPrim;
1062  int64 mySingleWorkgroup;
1063  int64 myPrecision;
1064  bool myImportPrequel;
1065  UT_Array<Bindings> myBindings;
1066 
1067 };
bool getImportPrequel() const
type
Definition: core.h:556
bool operator!=(const Bindings &src) const
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
static void saveData(std::ostream &os, UT_Vector3D v)
const UT_StringHolder & getKernelName() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
bool operator==(const GAS_OpenCLParms &src) const
void setOptionAttribute(const UT_StringHolder &val)
static void loadData(UT_IStream &is, fpreal64 &v)
int int32
Definition: SYS_Types.h:39
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, UT_Matrix4D v)
void setTimeMethod(int64 val)
void setRunOver(int64 val)
bool getFlushAttributes() const
void setSize(bool val)
bool getErrorMismatchedPrim() const
const char * getFieldNameSubclass(const char *recordtype, int fieldnum) const override
void
Definition: png.h:1083
GLboolean * data
Definition: glcorearb.h:131
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
const GLdouble * v
Definition: glcorearb.h:837
#define GAS_API
Definition: GAS_API.h:10
bool getErrorMismatchedPoint() const
UT_StringHolder createString(const UT_Array< Bindings > &list) const
void setFinish(bool val)
bool isMyRecord(const char *recordtype) const
bool getWarnMissing() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
UT_OptionType
Definition: UT_Options.h:44
void setWorksetsGeometry(const UT_StringHolder &val)
UT_OptionType getFieldTypeSubclass(const char *recordtype, int fieldnum) const override
void setOrigin(bool val)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
int64 exint
Definition: SYS_Types.h:125
const UT_StringHolder & getWorksetsGeometry() const
static void saveData(std::ostream &os, fpreal64 v)
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
An output stream object that owns its own string buffer storage.
Query(const SIM_Data *owner, const GAS_OpenCLParms &parms)
const GAS_OpenCLParms & myParms
void setXNoise(bool val)
**But if you need a result
Definition: thread.h:622
bool getRecompile() const
void setAtBinding(bool val)
static void saveData(std::ostream &os, UT_Vector4D v)
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void setUseCode(bool val)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void setTimeInc(bool val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
bool getUseCode() const
void setImportPrequel(bool val)
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:426
bool getFieldRawSubclass(const char *recordtype, int recordnum, const char *fieldname, UT_OptionEntryPtr &result) const override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void saveData(std::ostream &os, int64 v)
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
void setBindings(const UT_Array< Bindings > &val)
exint length() const
bool load(UT_IStream &is)
SIM_Query * createQueryObject(const SIM_Data *owner) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void save(std::ostream &os) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:497
int64 getTimeMethod() const
UT_SharedPtr< UT_Ramp > ramp
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:271
int64 getPrecision() const
static void loadData(UT_IStream &is, bool &v)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setErrorMismatchedPoint(bool val)
void setVoxelSize(bool val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
long long int64
Definition: SYS_Types.h:116
bool getAtBinding() const
HUSD_API const char * resolution()
static void saveData(std::ostream &os, UT_Vector2D v)
GLuint const GLchar * name
Definition: glcorearb.h:786
void setErrorMismatchedPrim(bool val)
const UT_Array< Bindings > & getBindings() const
static void saveData(std::ostream &os, UT_Matrix2D v)
const char * getRecordTypeNameSubclass(int recordtypenum) const override
int getNumRecordsSubclass(const char *recordtype) const override
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:306
void setRecompile(bool val)
const UT_StringHolder & getOptionAttribute() const
GT_API const UT_StringHolder version
GLenum GLint GLint * precision
Definition: glcorearb.h:1925
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:669
const UT_StringHolder & getKernelFile() const
void setPrecision(int64 val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setWorksetsLengthAttr(const UT_StringHolder &val)
GA_API const UT_StringHolder parms
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
void setTimeScale(fpreal64 val)
const UT_StringHolder & getKernelCode() const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void setWorksetsBeginAttr(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
SYS_FORCE_INLINE void append(char character)
void setAlign(bool val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
static void loadData(UT_IStream &is, UT_Vector3D &v)
int getNumFieldsSubclass(const char *recordtype) const override
static void saveData(std::ostream &os, UT_StringHolder s)
OIIO_API bool attribute(string_view name, TypeDesc type, const void *val)
bool operator!=(const GAS_OpenCLParms &src) const
bool operator==(const Bindings &src) const
void setWarnMissing(bool val)
const UT_StringHolder & getKernelOptions() const
void setSingleWorkgroup(int64 val)
static void loadData(UT_IStream &is, UT_StringHolder &v)
const char * findChar(int c) const
Definition: UT_String.h:1421
void setKernelName(const UT_StringHolder &val)
void setKernelCode(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector4I &v)
GLboolean r
Definition: glcorearb.h:1222
fpreal64 getTimeScale() const
int64 getRunOver() const
exint bread(uint8 *buffer, exint asize=1)
static void loadData(UT_IStream &is, int64 &v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
bool getVoxelSize() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:667
void setKernelOptions(const UT_StringHolder &val)
int64 getSingleWorkgroup() const
const UT_StringHolder & getWorksetsLengthAttr() const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setKernelFile(const UT_StringHolder &val)
void setFlushAttributes(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:428
UT_UniquePtr< UT_OptionEntry > UT_OptionEntryPtr
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, bool v)
int getNumRecordTypesSubclass() const override
void setTime(bool val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
const UT_StringHolder & getWorksetsBeginAttr() const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665