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