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 11; }
26  struct Bindings
27  {
46  bool resolution;
47  bool voxelsize;
51  bool readable;
52  bool writeable;
53  bool optional;
54  bool defval;
59 
60 
62  {
63  name = ""_UTsh;
64  type = 0;
65  intval = 0;
66  fval = 0;
67  v3val = 0;
68  v4val = 0;
69  timescale = 0;
70  fieldname = ""_UTsh;
71  fieldoffsets = false;
72  ramp = UT_SharedPtr<UT_Ramp>(0);
73  rampsize = 1024;
74  geometry = "Geometry"_UTsh;
75  attribute = ""_UTsh;
76  attribclass = 2;
77  attribtype = 0;
78  attribsize = 1;
79  volume = ""_UTsh;
80  vdbtype = 0;
81  resolution = false;
82  voxelsize = false;
83  xformtoworld = false;
84  xformtovoxel = false;
85  precision = 2;
86  readable = true;
87  writeable = false;
88  optional = false;
89  defval = false;
90  dataname = ""_UTsh;
91  optionname = ""_UTsh;
92  optiontype = 0;
93  optionsize = 1;
94 
95  }
96 
97  bool operator==(const Bindings &src) const
98  {
99  if (name != src.name) return false;
100  if (type != src.type) return false;
101  if (intval != src.intval) return false;
102  if (fval != src.fval) return false;
103  if (v3val != src.v3val) return false;
104  if (v4val != src.v4val) return false;
105  if (timescale != src.timescale) return false;
106  if (fieldname != src.fieldname) return false;
107  if (fieldoffsets != src.fieldoffsets) return false;
108  if (ramp != src.ramp)
109  { if (!ramp || !src.ramp || !(*ramp == *src.ramp)) return false; }
110  if (rampsize != src.rampsize) return false;
111  if (geometry != src.geometry) return false;
112  if (attribute != src.attribute) return false;
113  if (attribclass != src.attribclass) return false;
114  if (attribtype != src.attribtype) return false;
115  if (attribsize != src.attribsize) return false;
116  if (volume != src.volume) return false;
117  if (vdbtype != src.vdbtype) return false;
118  if (resolution != src.resolution) return false;
119  if (voxelsize != src.voxelsize) return false;
120  if (xformtoworld != src.xformtoworld) return false;
121  if (xformtovoxel != src.xformtovoxel) return false;
122  if (precision != src.precision) return false;
123  if (readable != src.readable) return false;
124  if (writeable != src.writeable) return false;
125  if (optional != src.optional) return false;
126  if (defval != src.defval) return false;
127  if (dataname != src.dataname) return false;
128  if (optionname != src.optionname) return false;
129  if (optiontype != src.optiontype) return false;
130  if (optionsize != src.optionsize) return false;
131 
132  return true;
133  }
134  bool operator!=(const Bindings &src) const
135  {
136  return !operator==(src);
137  }
138 
139  };
140 
142  {
144 
145  buf.strcat("[ ");
146  for (int i = 0; i < list.entries(); i++)
147  {
148  if (i)
149  buf.strcat(", ");
150  buf.strcat("( ");
151  buf.append("");
152  { UT_String tmp; tmp = UT_StringWrap(list(i).name).makeQuotedString('"'); buf.strcat(tmp); }
153  buf.append(", ");
154  buf.appendSprintf("%d", (int) list(i).type);
155  buf.append(", ");
156  buf.appendSprintf("%d", (int) list(i).intval);
157  buf.append(", ");
158  buf.appendSprintf("%f", (list(i).fval));
159  buf.append(", ");
160  buf.appendSprintf("(%f, %f, %f)", list(i).v3val.x(), list(i).v3val.y(), list(i).v3val.z());
161  buf.append(", ");
162  buf.appendSprintf("(%f, %f, %f, %f)", list(i).v4val.x(), list(i).v4val.y(), list(i).v4val.z(), list(i).v4val.w());
163  buf.append(", ");
164  buf.appendSprintf("%d", (int) list(i).timescale);
165  buf.append(", ");
166  { UT_String tmp; tmp = UT_StringWrap(list(i).fieldname).makeQuotedString('"'); buf.strcat(tmp); }
167  buf.append(", ");
168  buf.appendSprintf("%s", (list(i).fieldoffsets) ? "true" : "false");
169  buf.append(", ");
170  if (list(i).ramp)
171  {
172  UT_OStringStream os;
173  UT_String tmp;
174  list(i).ramp->save(os);
175  tmp = UT_StringWrap(os.str().buffer()).makeQuotedString('"');
176  buf.strcat(tmp);
177  }
178  else buf.strcat("""");
179  buf.append(", ");
180  buf.appendSprintf("%d", (int) list(i).rampsize);
181  buf.append(", ");
182  { UT_String tmp; tmp = UT_StringWrap(list(i).geometry).makeQuotedString('"'); buf.strcat(tmp); }
183  buf.append(", ");
184  { UT_String tmp; tmp = UT_StringWrap(list(i).attribute).makeQuotedString('"'); buf.strcat(tmp); }
185  buf.append(", ");
186  buf.appendSprintf("%d", (int) list(i).attribclass);
187  buf.append(", ");
188  buf.appendSprintf("%d", (int) list(i).attribtype);
189  buf.append(", ");
190  buf.appendSprintf("%d", (int) list(i).attribsize);
191  buf.append(", ");
192  { UT_String tmp; tmp = UT_StringWrap(list(i).volume).makeQuotedString('"'); buf.strcat(tmp); }
193  buf.append(", ");
194  buf.appendSprintf("%d", (int) list(i).vdbtype);
195  buf.append(", ");
196  buf.appendSprintf("%s", (list(i).resolution) ? "true" : "false");
197  buf.append(", ");
198  buf.appendSprintf("%s", (list(i).voxelsize) ? "true" : "false");
199  buf.append(", ");
200  buf.appendSprintf("%s", (list(i).xformtoworld) ? "true" : "false");
201  buf.append(", ");
202  buf.appendSprintf("%s", (list(i).xformtovoxel) ? "true" : "false");
203  buf.append(", ");
204  buf.appendSprintf("%d", (int) list(i).precision);
205  buf.append(", ");
206  buf.appendSprintf("%s", (list(i).readable) ? "true" : "false");
207  buf.append(", ");
208  buf.appendSprintf("%s", (list(i).writeable) ? "true" : "false");
209  buf.append(", ");
210  buf.appendSprintf("%s", (list(i).optional) ? "true" : "false");
211  buf.append(", ");
212  buf.appendSprintf("%s", (list(i).defval) ? "true" : "false");
213  buf.append(", ");
214  { UT_String tmp; tmp = UT_StringWrap(list(i).dataname).makeQuotedString('"'); buf.strcat(tmp); }
215  buf.append(", ");
216  { UT_String tmp; tmp = UT_StringWrap(list(i).optionname).makeQuotedString('"'); buf.strcat(tmp); }
217  buf.append(", ");
218  buf.appendSprintf("%d", (int) list(i).optiontype);
219  buf.append(", ");
220  buf.appendSprintf("%d", (int) list(i).optionsize);
221 
222  buf.strcat(" )");
223  }
224  buf.strcat(" ]");
225 
227  return result;
228  }
229 
231  {
232  myRunOver = 0;
233  myAlign = true;
234  myUseCode = false;
235  myKernelName = "kernelName"_UTsh;
236  myKernelFile = ""_UTsh;
237  myKernelCode = ""_UTsh;
238  myAtBinding = false;
239  myKernelOptions = ""_UTsh;
240  myOptionAttribute = ""_UTsh;
241  myRecompile = false;
242  myOrigin = false;
243  mySize = false;
244  myVoxelSize = false;
245  myTime = false;
246  myFrame = false;
247  myTimeInc = false;
248  myFlushAttributes = false;
249  myFinish = 1;
250  myTimeScale = 1;
251  myTimeMethod = 0;
252  myXNoise = false;
253  myWorksetsGeometry = ""_UTsh;
254  myWorksetsBeginAttr = ""_UTsh;
255  myWorksetsLengthAttr = ""_UTsh;
256  myWarnMissing = 1;
257  myErrorMismatchedPoint = false;
258  myErrorMismatchedPrim = false;
259  mySingleWorkgroup = 0;
260  myPrecision = 2;
261 
262  }
263 
264  explicit GAS_OpenCLParms(const GAS_OpenCLParms &) = default;
265  GAS_OpenCLParms &operator=(const GAS_OpenCLParms &) = default;
266  GAS_OpenCLParms(GAS_OpenCLParms &&) noexcept = default;
267  GAS_OpenCLParms &operator=(GAS_OpenCLParms &&) noexcept = default;
268 
270 
271  bool operator==(const GAS_OpenCLParms &src) const
272  {
273  if (myRunOver != src.myRunOver) return false;
274  if (myAlign != src.myAlign) return false;
275  if (myUseCode != src.myUseCode) return false;
276  if (myKernelName != src.myKernelName) return false;
277  if (myKernelFile != src.myKernelFile) return false;
278  if (myKernelCode != src.myKernelCode) return false;
279  if (myAtBinding != src.myAtBinding) return false;
280  if (myKernelOptions != src.myKernelOptions) return false;
281  if (myOptionAttribute != src.myOptionAttribute) return false;
282  if (myRecompile != src.myRecompile) return false;
283  if (myOrigin != src.myOrigin) return false;
284  if (mySize != src.mySize) return false;
285  if (myVoxelSize != src.myVoxelSize) return false;
286  if (myTime != src.myTime) return false;
287  if (myFrame != src.myFrame) return false;
288  if (myTimeInc != src.myTimeInc) return false;
289  if (myFlushAttributes != src.myFlushAttributes) return false;
290  if (myFinish != src.myFinish) return false;
291  if (myTimeScale != src.myTimeScale) return false;
292  if (myTimeMethod != src.myTimeMethod) return false;
293  if (myXNoise != src.myXNoise) return false;
294  if (myWorksetsGeometry != src.myWorksetsGeometry) return false;
295  if (myWorksetsBeginAttr != src.myWorksetsBeginAttr) return false;
296  if (myWorksetsLengthAttr != src.myWorksetsLengthAttr) return false;
297  if (myWarnMissing != src.myWarnMissing) return false;
298  if (myErrorMismatchedPoint != src.myErrorMismatchedPoint) return false;
299  if (myErrorMismatchedPrim != src.myErrorMismatchedPrim) return false;
300  if (mySingleWorkgroup != src.mySingleWorkgroup) return false;
301  if (myPrecision != src.myPrecision) return false;
302  if (myBindings != src.myBindings) return false;
303 
304  return true;
305  }
306  bool operator!=(const GAS_OpenCLParms &src) const
307  {
308  return !operator==(src);
309  }
310 
311 
312  class Query : public SIM_Query
313  {
314  public:
315  explicit Query(const SIM_Data *owner, const GAS_OpenCLParms &parms)
316  : SIM_Query(owner)
317  , myParms(parms)
318  { }
319  ~Query() override {}
320 
321  protected:
322  bool isMyRecord(const char *recordtype) const
323  { return !strcmp(recordtype, "Params"); }
324 
325  int getNumRecordTypesSubclass() const override { return 1; }
326  const char *getRecordTypeNameSubclass(int recordtypenum) const override
327  {
328  if (recordtypenum == 0) return "Params";
329  return 0;
330  }
331  int getNumRecordsSubclass(const char *recordtype) const override
332  {
333  if (isMyRecord(recordtype)) return 1;
334  return 0;
335  }
336  int getNumFieldsSubclass(const char *recordtype) const override
337  {
338  if (isMyRecord(recordtype))
339  return 30;
340  return 0;
341  }
342 
343  const char *getFieldNameSubclass(const char *recordtype,
344  int fieldnum) const override
345  {
346  if (!isMyRecord(recordtype))
347  return 0;
348 
349  switch (fieldnum)
350  {
351  case 0:
352  return "runover";
353  case 1:
354  return "align";
355  case 2:
356  return "usecode";
357  case 3:
358  return "kernelname";
359  case 4:
360  return "kernelfile";
361  case 5:
362  return "kernelcode";
363  case 6:
364  return "atbinding";
365  case 7:
366  return "kerneloptions";
367  case 8:
368  return "kerneloptionattrib";
369  case 9:
370  return "recompile";
371  case 10:
372  return "origin";
373  case 11:
374  return "size";
375  case 12:
376  return "voxelsize";
377  case 13:
378  return "time";
379  case 14:
380  return "frame";
381  case 15:
382  return "timeinc";
383  case 16:
384  return "flushattrib";
385  case 17:
386  return "finish";
387  case 18:
388  return "timescale";
389  case 19:
390  return "timemethod";
391  case 20:
392  return "xnoise";
393  case 21:
394  return "worksets_geo";
395  case 22:
396  return "worksets_begin";
397  case 23:
398  return "worksets_length";
399  case 24:
400  return "warnmissing";
401  case 25:
402  return "errormismatchedpoint";
403  case 26:
404  return "errormismatchedprim";
405  case 27:
406  return "singleworkgroup";
407  case 28:
408  return "precision";
409  case 29:
410  return "bindings";
411 
412  }
413  return 0;
414  }
415  UT_OptionType getFieldTypeSubclass(const char *recordtype,
416  int fieldnum) const override
417  {
418  if (!isMyRecord(recordtype))
419  return UT_OPTION_INVALID;
420 
421  switch (fieldnum)
422  {
423  case 0:
424  return UT_OPTION_INT;
425  case 1:
426  return UT_OPTION_BOOL;
427  case 2:
428  return UT_OPTION_BOOL;
429  case 3:
430  return UT_OPTION_STRING;
431  case 4:
432  return UT_OPTION_STRING;
433  case 5:
434  return UT_OPTION_STRING;
435  case 6:
436  return UT_OPTION_BOOL;
437  case 7:
438  return UT_OPTION_STRING;
439  case 8:
440  return UT_OPTION_STRING;
441  case 9:
442  return UT_OPTION_BOOL;
443  case 10:
444  return UT_OPTION_BOOL;
445  case 11:
446  return UT_OPTION_BOOL;
447  case 12:
448  return UT_OPTION_BOOL;
449  case 13:
450  return UT_OPTION_BOOL;
451  case 14:
452  return UT_OPTION_BOOL;
453  case 15:
454  return UT_OPTION_BOOL;
455  case 16:
456  return UT_OPTION_BOOL;
457  case 17:
458  return UT_OPTION_BOOL;
459  case 18:
460  return UT_OPTION_FPREAL;
461  case 19:
462  return UT_OPTION_INT;
463  case 20:
464  return UT_OPTION_BOOL;
465  case 21:
466  return UT_OPTION_STRING;
467  case 22:
468  return UT_OPTION_STRING;
469  case 23:
470  return UT_OPTION_STRING;
471  case 24:
472  return UT_OPTION_BOOL;
473  case 25:
474  return UT_OPTION_BOOL;
475  case 26:
476  return UT_OPTION_BOOL;
477  case 27:
478  return UT_OPTION_INT;
479  case 28:
480  return UT_OPTION_INT;
481  case 29:
482  return UT_OPTION_STRING;
483 
484  }
485  return UT_OPTION_INVALID;
486  }
487 
488  bool getFieldRawSubclass(const char *recordtype,
489  int recordnum,
490  const char *fieldname,
491  UT_OptionEntryPtr &result) const override
492  {
493  if (!isMyRecord(recordtype))
494  return false;
495  if (recordnum != 0)
496  return false;
497  // This is less optimal, but if we are in SIM_Query
498  // land we have already given up on performance.
499  if (!strcmp(fieldname, "runover"))
500  {
501  result = UTmakeUnique<UT_OptionInt>(myParms.myRunOver);
502  return true;
503  }
504  if (!strcmp(fieldname, "align"))
505  {
506  result = UTmakeUnique<UT_OptionBool>(myParms.myAlign);
507  return true;
508  }
509  if (!strcmp(fieldname, "usecode"))
510  {
511  result = UTmakeUnique<UT_OptionBool>(myParms.myUseCode);
512  return true;
513  }
514  if (!strcmp(fieldname, "kernelname"))
515  {
516  result = UTmakeUnique<UT_OptionString>(myParms.myKernelName);
517  return true;
518  }
519  if (!strcmp(fieldname, "kernelfile"))
520  {
521  result = UTmakeUnique<UT_OptionString>(myParms.myKernelFile);
522  return true;
523  }
524  if (!strcmp(fieldname, "kernelcode"))
525  {
526  result = UTmakeUnique<UT_OptionString>(myParms.myKernelCode);
527  return true;
528  }
529  if (!strcmp(fieldname, "atbinding"))
530  {
531  result = UTmakeUnique<UT_OptionBool>(myParms.myAtBinding);
532  return true;
533  }
534  if (!strcmp(fieldname, "kerneloptions"))
535  {
536  result = UTmakeUnique<UT_OptionString>(myParms.myKernelOptions);
537  return true;
538  }
539  if (!strcmp(fieldname, "kerneloptionattrib"))
540  {
541  result = UTmakeUnique<UT_OptionString>(myParms.myOptionAttribute);
542  return true;
543  }
544  if (!strcmp(fieldname, "recompile"))
545  {
546  result = UTmakeUnique<UT_OptionBool>(myParms.myRecompile);
547  return true;
548  }
549  if (!strcmp(fieldname, "origin"))
550  {
551  result = UTmakeUnique<UT_OptionBool>(myParms.myOrigin);
552  return true;
553  }
554  if (!strcmp(fieldname, "size"))
555  {
556  result = UTmakeUnique<UT_OptionBool>(myParms.mySize);
557  return true;
558  }
559  if (!strcmp(fieldname, "voxelsize"))
560  {
561  result = UTmakeUnique<UT_OptionBool>(myParms.myVoxelSize);
562  return true;
563  }
564  if (!strcmp(fieldname, "time"))
565  {
566  result = UTmakeUnique<UT_OptionBool>(myParms.myTime);
567  return true;
568  }
569  if (!strcmp(fieldname, "frame"))
570  {
571  result = UTmakeUnique<UT_OptionBool>(myParms.myFrame);
572  return true;
573  }
574  if (!strcmp(fieldname, "timeinc"))
575  {
576  result = UTmakeUnique<UT_OptionBool>(myParms.myTimeInc);
577  return true;
578  }
579  if (!strcmp(fieldname, "flushattrib"))
580  {
581  result = UTmakeUnique<UT_OptionBool>(myParms.myFlushAttributes);
582  return true;
583  }
584  if (!strcmp(fieldname, "finish"))
585  {
586  result = UTmakeUnique<UT_OptionBool>(myParms.myFinish);
587  return true;
588  }
589  if (!strcmp(fieldname, "timescale"))
590  {
591  result = UTmakeUnique<UT_OptionFpreal>(myParms.myTimeScale);
592  return true;
593  }
594  if (!strcmp(fieldname, "timemethod"))
595  {
596  result = UTmakeUnique<UT_OptionInt>(myParms.myTimeMethod);
597  return true;
598  }
599  if (!strcmp(fieldname, "xnoise"))
600  {
601  result = UTmakeUnique<UT_OptionBool>(myParms.myXNoise);
602  return true;
603  }
604  if (!strcmp(fieldname, "worksets_geo"))
605  {
606  result = UTmakeUnique<UT_OptionString>(myParms.myWorksetsGeometry);
607  return true;
608  }
609  if (!strcmp(fieldname, "worksets_begin"))
610  {
611  result = UTmakeUnique<UT_OptionString>(myParms.myWorksetsBeginAttr);
612  return true;
613  }
614  if (!strcmp(fieldname, "worksets_length"))
615  {
616  result = UTmakeUnique<UT_OptionString>(myParms.myWorksetsLengthAttr);
617  return true;
618  }
619  if (!strcmp(fieldname, "warnmissing"))
620  {
621  result = UTmakeUnique<UT_OptionBool>(myParms.myWarnMissing);
622  return true;
623  }
624  if (!strcmp(fieldname, "errormismatchedpoint"))
625  {
626  result = UTmakeUnique<UT_OptionBool>(myParms.myErrorMismatchedPoint);
627  return true;
628  }
629  if (!strcmp(fieldname, "errormismatchedprim"))
630  {
631  result = UTmakeUnique<UT_OptionBool>(myParms.myErrorMismatchedPrim);
632  return true;
633  }
634  if (!strcmp(fieldname, "singleworkgroup"))
635  {
636  result = UTmakeUnique<UT_OptionInt>(myParms.mySingleWorkgroup);
637  return true;
638  }
639  if (!strcmp(fieldname, "precision"))
640  {
641  result = UTmakeUnique<UT_OptionInt>(myParms.myPrecision);
642  return true;
643  }
644  if (!strcmp(fieldname, "bindings"))
645  {
646  result = UTmakeUnique<UT_OptionString>(myParms.createString(myParms.myBindings));
647  return true;
648  }
649 
650  // Failed to find
651  return false;
652  }
653 
655  };
656 
657  SIM_Query *createQueryObject(const SIM_Data *owner) const
658  { return new Query(owner, *this); }
659 
660 
661 
662 
663  // Boiler plate to load individual types.
664  static void loadData(UT_IStream &is, int64 &v)
665  { is.bread(&v, 1); }
666  static void loadData(UT_IStream &is, bool &v)
667  { int64 iv; is.bread(&iv, 1); v = iv; }
668  static void loadData(UT_IStream &is, fpreal64 &v)
669  { is.bread<fpreal64>(&v, 1); }
670  static void loadData(UT_IStream &is, UT_Vector2D &v)
671  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
672  static void loadData(UT_IStream &is, UT_Vector3D &v)
673  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
674  is.bread<fpreal64>(&v.z(), 1); }
675  static void loadData(UT_IStream &is, UT_Vector4D &v)
676  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
677  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
678  static void loadData(UT_IStream &is, UT_Matrix2D &v)
679  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
680  static void loadData(UT_IStream &is, UT_Matrix3D &v)
681  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
682  static void loadData(UT_IStream &is, UT_Matrix4D &v)
683  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
684  static void loadData(UT_IStream &is, UT_Vector2I &v)
685  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
686  static void loadData(UT_IStream &is, UT_Vector3I &v)
687  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
688  is.bread<int64>(&v.z(), 1); }
689  static void loadData(UT_IStream &is, UT_Vector4I &v)
690  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
691  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
693  { is.bread(v); }
695  { UT_StringHolder rampdata;
696  loadData(is, rampdata);
697  if (rampdata.isstring())
698  {
699  v.reset(new UT_Ramp());
700  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
701  v->load(istr);
702  }
703  else v.reset();
704  }
707  loadData(is, data);
708  if (data.isstring())
709  {
710  // Find the data type.
711  const char *colon = UT_StringWrap(data).findChar(':');
712  if (colon)
713  {
714  int typelen = colon - data.buffer();
716  type.strncpy(data.buffer(), typelen);
717  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
718 
719  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
720  }
721  }
722  else v.reset();
723  }
724 
725  static void saveData(std::ostream &os, int64 v)
726  { UTwrite(os, &v); }
727  static void saveData(std::ostream &os, bool v)
728  { int64 iv = v; UTwrite(os, &iv); }
729  static void saveData(std::ostream &os, fpreal64 v)
730  { UTwrite<fpreal64>(os, &v); }
731  static void saveData(std::ostream &os, UT_Vector2D v)
732  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
733  static void saveData(std::ostream &os, UT_Vector3D v)
734  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
735  UTwrite<fpreal64>(os, &v.z()); }
736  static void saveData(std::ostream &os, UT_Vector4D v)
737  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
738  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
739  static void saveData(std::ostream &os, UT_Matrix2D v)
741  static void saveData(std::ostream &os, UT_Matrix3D v)
743  static void saveData(std::ostream &os, UT_Matrix4D v)
745  static void saveData(std::ostream &os, UT_StringHolder s)
746  { UT_StringWrap(s).saveBinary(os); }
747  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
749  UT_OStringStream ostr;
750  if (s) s->save(ostr);
751  result = ostr.str();
752  saveData(os, result);
753  }
754  static void saveData(std::ostream &os, PRM_DataItemHandle s)
756  UT_OStringStream ostr;
757  if (s)
758  {
759  ostr << s->getDataTypeToken();
760  ostr << ":";
761  s->saveBinary(ostr);
762  }
763  result = ostr.str();
764  saveData(os, result);
765  }
766 
767 
768  void save(std::ostream &os) const
769  {
770  int32 v = version();
771  UTwrite(os, &v);
772  saveData(os, myRunOver);
773  saveData(os, myAlign);
774  saveData(os, myUseCode);
775  saveData(os, myKernelName);
776  saveData(os, myKernelFile);
777  saveData(os, myKernelCode);
778  saveData(os, myAtBinding);
779  saveData(os, myKernelOptions);
780  saveData(os, myOptionAttribute);
781  saveData(os, myRecompile);
782  saveData(os, myOrigin);
783  saveData(os, mySize);
784  saveData(os, myVoxelSize);
785  saveData(os, myTime);
786  saveData(os, myFrame);
787  saveData(os, myTimeInc);
788  saveData(os, myFlushAttributes);
789  saveData(os, myFinish);
790  saveData(os, myTimeScale);
791  saveData(os, myTimeMethod);
792  saveData(os, myXNoise);
793  saveData(os, myWorksetsGeometry);
794  saveData(os, myWorksetsBeginAttr);
795  saveData(os, myWorksetsLengthAttr);
796  saveData(os, myWarnMissing);
797  saveData(os, myErrorMismatchedPoint);
798  saveData(os, myErrorMismatchedPrim);
799  saveData(os, mySingleWorkgroup);
800  saveData(os, myPrecision);
801  {
802  int64 length = myBindings.entries();
803  UTwrite(os, &length);
804  for (exint i = 0; i < length; i++)
805  {
806  auto && _curentry = myBindings(i);
807  (void) _curentry;
808  saveData(os, _curentry.name);
809  saveData(os, _curentry.type);
810  saveData(os, _curentry.intval);
811  saveData(os, _curentry.fval);
812  saveData(os, _curentry.v3val);
813  saveData(os, _curentry.v4val);
814  saveData(os, _curentry.timescale);
815  saveData(os, _curentry.fieldname);
816  saveData(os, _curentry.fieldoffsets);
817  saveData(os, _curentry.ramp);
818  saveData(os, _curentry.rampsize);
819  saveData(os, _curentry.geometry);
820  saveData(os, _curentry.attribute);
821  saveData(os, _curentry.attribclass);
822  saveData(os, _curentry.attribtype);
823  saveData(os, _curentry.attribsize);
824  saveData(os, _curentry.volume);
825  saveData(os, _curentry.vdbtype);
826  saveData(os, _curentry.resolution);
827  saveData(os, _curentry.voxelsize);
828  saveData(os, _curentry.xformtoworld);
829  saveData(os, _curentry.xformtovoxel);
830  saveData(os, _curentry.precision);
831  saveData(os, _curentry.readable);
832  saveData(os, _curentry.writeable);
833  saveData(os, _curentry.optional);
834  saveData(os, _curentry.defval);
835  saveData(os, _curentry.dataname);
836  saveData(os, _curentry.optionname);
837  saveData(os, _curentry.optiontype);
838  saveData(os, _curentry.optionsize);
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, myRunOver);
855  loadData(is, myAlign);
856  loadData(is, myUseCode);
857  loadData(is, myKernelName);
858  loadData(is, myKernelFile);
859  loadData(is, myKernelCode);
860  loadData(is, myAtBinding);
861  loadData(is, myKernelOptions);
862  loadData(is, myOptionAttribute);
863  loadData(is, myRecompile);
864  loadData(is, myOrigin);
865  loadData(is, mySize);
866  loadData(is, myVoxelSize);
867  loadData(is, myTime);
868  loadData(is, myFrame);
869  loadData(is, myTimeInc);
870  loadData(is, myFlushAttributes);
871  loadData(is, myFinish);
872  loadData(is, myTimeScale);
873  loadData(is, myTimeMethod);
874  loadData(is, myXNoise);
875  loadData(is, myWorksetsGeometry);
876  loadData(is, myWorksetsBeginAttr);
877  loadData(is, myWorksetsLengthAttr);
878  loadData(is, myWarnMissing);
879  loadData(is, myErrorMismatchedPoint);
880  loadData(is, myErrorMismatchedPrim);
881  loadData(is, mySingleWorkgroup);
882  loadData(is, myPrecision);
883  {
884  int64 length;
885  is.read(&length, 1);
886  myBindings.setSize(length);
887  for (exint i = 0; i < length; i++)
888  {
889  auto && _curentry = myBindings(i);
890  (void) _curentry;
891  loadData(is, _curentry.name);
892  loadData(is, _curentry.type);
893  loadData(is, _curentry.intval);
894  loadData(is, _curentry.fval);
895  loadData(is, _curentry.v3val);
896  loadData(is, _curentry.v4val);
897  loadData(is, _curentry.timescale);
898  loadData(is, _curentry.fieldname);
899  loadData(is, _curentry.fieldoffsets);
900  loadData(is, _curentry.ramp);
901  loadData(is, _curentry.rampsize);
902  loadData(is, _curentry.geometry);
903  loadData(is, _curentry.attribute);
904  loadData(is, _curentry.attribclass);
905  loadData(is, _curentry.attribtype);
906  loadData(is, _curentry.attribsize);
907  loadData(is, _curentry.volume);
908  loadData(is, _curentry.vdbtype);
909  loadData(is, _curentry.resolution);
910  loadData(is, _curentry.voxelsize);
911  loadData(is, _curentry.xformtoworld);
912  loadData(is, _curentry.xformtovoxel);
913  loadData(is, _curentry.precision);
914  loadData(is, _curentry.readable);
915  loadData(is, _curentry.writeable);
916  loadData(is, _curentry.optional);
917  loadData(is, _curentry.defval);
918  loadData(is, _curentry.dataname);
919  loadData(is, _curentry.optionname);
920  loadData(is, _curentry.optiontype);
921  loadData(is, _curentry.optionsize);
922 
923  }
924  }
925 
926  return true;
927  }
928 
929  int64 getRunOver() const { return myRunOver; }
930  void setRunOver(int64 val) { myRunOver = val; }
931  bool getAlign() const { return myAlign; }
932  void setAlign(bool val) { myAlign = val; }
933  bool getUseCode() const { return myUseCode; }
934  void setUseCode(bool val) { myUseCode = val; }
935  const UT_StringHolder & getKernelName() const { return myKernelName; }
936  void setKernelName(const UT_StringHolder & val) { myKernelName = val; }
937  const UT_StringHolder & getKernelFile() const { return myKernelFile; }
938  void setKernelFile(const UT_StringHolder & val) { myKernelFile = val; }
939  const UT_StringHolder & getKernelCode() const { return myKernelCode; }
940  void setKernelCode(const UT_StringHolder & val) { myKernelCode = val; }
941  bool getAtBinding() const { return myAtBinding; }
942  void setAtBinding(bool val) { myAtBinding = val; }
943  const UT_StringHolder & getKernelOptions() const { return myKernelOptions; }
944  void setKernelOptions(const UT_StringHolder & val) { myKernelOptions = val; }
945  const UT_StringHolder & getOptionAttribute() const { return myOptionAttribute; }
946  void setOptionAttribute(const UT_StringHolder & val) { myOptionAttribute = val; }
947  bool getRecompile() const { return myRecompile; }
948  void setRecompile(bool val) { myRecompile = val; }
949  bool getOrigin() const { return myOrigin; }
950  void setOrigin(bool val) { myOrigin = val; }
951  bool getSize() const { return mySize; }
952  void setSize(bool val) { mySize = val; }
953  bool getVoxelSize() const { return myVoxelSize; }
954  void setVoxelSize(bool val) { myVoxelSize = val; }
955  bool getTime() const { return myTime; }
956  void setTime(bool val) { myTime = val; }
957  bool getFrame() const { return myFrame; }
958  void setFrame(bool val) { myFrame = val; }
959  bool getTimeInc() const { return myTimeInc; }
960  void setTimeInc(bool val) { myTimeInc = val; }
961  bool getFlushAttributes() const { return myFlushAttributes; }
962  void setFlushAttributes(bool val) { myFlushAttributes = val; }
963  bool getFinish() const { return myFinish; }
964  void setFinish(bool val) { myFinish = val; }
965  fpreal64 getTimeScale() const { return myTimeScale; }
966  void setTimeScale(fpreal64 val) { myTimeScale = val; }
967  int64 getTimeMethod() const { return myTimeMethod; }
968  void setTimeMethod(int64 val) { myTimeMethod = val; }
969  bool getXNoise() const { return myXNoise; }
970  void setXNoise(bool val) { myXNoise = val; }
971  const UT_StringHolder & getWorksetsGeometry() const { return myWorksetsGeometry; }
972  void setWorksetsGeometry(const UT_StringHolder & val) { myWorksetsGeometry = val; }
973  const UT_StringHolder & getWorksetsBeginAttr() const { return myWorksetsBeginAttr; }
974  void setWorksetsBeginAttr(const UT_StringHolder & val) { myWorksetsBeginAttr = val; }
975  const UT_StringHolder & getWorksetsLengthAttr() const { return myWorksetsLengthAttr; }
976  void setWorksetsLengthAttr(const UT_StringHolder & val) { myWorksetsLengthAttr = val; }
977  bool getWarnMissing() const { return myWarnMissing; }
978  void setWarnMissing(bool val) { myWarnMissing = val; }
979  bool getErrorMismatchedPoint() const { return myErrorMismatchedPoint; }
980  void setErrorMismatchedPoint(bool val) { myErrorMismatchedPoint = val; }
981  bool getErrorMismatchedPrim() const { return myErrorMismatchedPrim; }
982  void setErrorMismatchedPrim(bool val) { myErrorMismatchedPrim = val; }
983  int64 getSingleWorkgroup() const { return mySingleWorkgroup; }
984  void setSingleWorkgroup(int64 val) { mySingleWorkgroup = val; }
985  int64 getPrecision() const { return myPrecision; }
986  void setPrecision(int64 val) { myPrecision = val; }
987  const UT_Array<Bindings> &getBindings() const { return myBindings; }
988 void setBindings(const UT_Array<Bindings> &val) { myBindings = val; }
989 
990 private:
991  int64 myRunOver;
992  bool myAlign;
993  bool myUseCode;
994  UT_StringHolder myKernelName;
995  UT_StringHolder myKernelFile;
996  UT_StringHolder myKernelCode;
997  bool myAtBinding;
998  UT_StringHolder myKernelOptions;
999  UT_StringHolder myOptionAttribute;
1000  bool myRecompile;
1001  bool myOrigin;
1002  bool mySize;
1003  bool myVoxelSize;
1004  bool myTime;
1005  bool myFrame;
1006  bool myTimeInc;
1007  bool myFlushAttributes;
1008  bool myFinish;
1009  fpreal64 myTimeScale;
1010  int64 myTimeMethod;
1011  bool myXNoise;
1012  UT_StringHolder myWorksetsGeometry;
1013  UT_StringHolder myWorksetsBeginAttr;
1014  UT_StringHolder myWorksetsLengthAttr;
1015  bool myWarnMissing;
1016  bool myErrorMismatchedPoint;
1017  bool myErrorMismatchedPrim;
1018  int64 mySingleWorkgroup;
1019  int64 myPrecision;
1020  UT_Array<Bindings> myBindings;
1021 
1022 };
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
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
#define GAS_API
Definition: GAS_API.h:10
bool getErrorMismatchedPoint() const
void setFrame(bool val)
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:667
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:613
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:491
bool getUseCode() const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
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)
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:495
int64 getTimeMethod() const
UT_SharedPtr< UT_Ramp > ramp
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
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:296
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:648
const UT_StringHolder & getKernelFile() const
void setPrecision(int64 val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setWorksetsLengthAttr(const UT_StringHolder &val)
bool getTimeInc() const
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
void setTimeScale(fpreal64 val)
const UT_StringHolder & getKernelCode() const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
void setWorksetsBeginAttr(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
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:1385
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
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:665
void setKernelOptions(const UT_StringHolder &val)
type
Definition: core.h:1059
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)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
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:425
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:663