20 using namespace UT::Literal;
23 namespace SOP_Fuse_2_0Enums
109 attribsnapmethod = 8;
110 pointattribnames =
""_sh;
133 for (
int i = 0; i < list.
entries(); i++)
158 grouppropagation = 0;
159 pointgroupnames =
""_sh;
182 for (
int i = 0; i < list.
entries(); i++)
202 myQuerygroup =
""_sh;
203 myPosAttrib =
"P"_sh;
208 myTargetPtAttrib =
"snap_to"_sh;
210 myUsePositionSnapMethod =
true;
211 myPositionSnapMethod = 0;
212 myUseradiusattrib =
false;
213 myRadiusattrib =
"pscale"_sh;
214 myUsematchattrib =
false;
215 myMatchattrib =
"name"_sh;
226 myConsolidateSnappedPoints =
true;
227 myKeepConsolidatedPoints =
false;
229 myDelDegenPoints =
true;
230 myDelUnusedPoints =
false;
231 myRecomputenml =
true;
232 myCreatesnappedgroup =
false;
233 mySnappedgroupname =
"snapped_points"_sh;
234 myCreatesnappedattrib =
false;
235 mySnappedattribname =
"snapped_to"_sh;
236 myUsetargetgroup =
false;
237 myTargetgroup =
""_sh;
238 myModifyboth =
false;
248 if (myQuerygroup != src.myQuerygroup)
return false;
249 if (myPosAttrib != src.myPosAttrib)
return false;
250 if (mySnaptype != src.mySnaptype)
return false;
251 if (myAlgorithm != src.myAlgorithm)
return false;
252 if (myUseTol3D != src.myUseTol3D)
return false;
253 if (myTol3d != src.myTol3d)
return false;
254 if (myTargetPtAttrib != src.myTargetPtAttrib)
return false;
255 if (myTargetClass != src.myTargetClass)
return false;
256 if (myUsePositionSnapMethod != src.myUsePositionSnapMethod)
return false;
257 if (myPositionSnapMethod != src.myPositionSnapMethod)
return false;
258 if (myUseradiusattrib != src.myUseradiusattrib)
return false;
259 if (myRadiusattrib != src.myRadiusattrib)
return false;
260 if (myUsematchattrib != src.myUsematchattrib)
return false;
261 if (myMatchattrib != src.myMatchattrib)
return false;
262 if (myMatchtype != src.myMatchtype)
return false;
263 if (myMatchTol != src.myMatchTol)
return false;
264 if (myGridtype != src.myGridtype)
return false;
265 if (myGridspacing != src.myGridspacing)
return false;
266 if (myGridlines != src.myGridlines)
return false;
267 if (myGridpow2 != src.myGridpow2)
return false;
268 if (myGridoffset != src.myGridoffset)
return false;
269 if (myGridround != src.myGridround)
return false;
270 if (myUseGridTol != src.myUseGridTol)
return false;
271 if (myGridtol != src.myGridtol)
return false;
272 if (myConsolidateSnappedPoints != src.myConsolidateSnappedPoints)
return false;
273 if (myKeepConsolidatedPoints != src.myKeepConsolidatedPoints)
return false;
274 if (myDelDegen != src.myDelDegen)
return false;
275 if (myDelDegenPoints != src.myDelDegenPoints)
return false;
276 if (myDelUnusedPoints != src.myDelUnusedPoints)
return false;
277 if (myRecomputenml != src.myRecomputenml)
return false;
278 if (myCreatesnappedgroup != src.myCreatesnappedgroup)
return false;
279 if (mySnappedgroupname != src.mySnappedgroupname)
return false;
280 if (myCreatesnappedattrib != src.myCreatesnappedattrib)
return false;
281 if (mySnappedattribname != src.mySnappedattribname)
return false;
282 if (myNumpointattribs != src.myNumpointattribs)
return false;
283 if (myNumgroups != src.myNumgroups)
return false;
284 if (myUsetargetgroup != src.myUsetargetgroup)
return false;
285 if (myTargetgroup != src.myTargetgroup)
return false;
286 if (myModifyboth != src.myModifyboth)
return false;
308 myQuerygroup =
""_sh;
310 graph->
evalOpParm(myQuerygroup, nodeidx,
"querygroup", time, 0);
311 myPosAttrib =
"P"_sh;
313 graph->
evalOpParm(myPosAttrib, nodeidx,
"posattrib", time, 0);
316 graph->
evalOpParm(mySnaptype, nodeidx,
"snaptype", time, 0);
318 if (
true && ( (!(((
int64(getSnaptype())!=0)))) ) )
319 graph->
evalOpParm(myAlgorithm, nodeidx,
"algorithm", time, 0);
321 if (
true && ( (!(((
int64(getSnaptype())!=0)))) ) )
322 graph->
evalOpParm(myUseTol3D, nodeidx,
"usetol3d", time, 0);
324 if (
true && ( (!(((
int64(getSnaptype())!=0))||((getUseTol3D()==0))||((
int64(getSnaptype())!=0)))) ) )
325 graph->
evalOpParm(myTol3d, nodeidx,
"tol3d", time, 0);
326 myTargetPtAttrib =
"snap_to"_sh;
327 if (
true && ( (!(((
int64(getSnaptype())!=2)))) ) )
328 graph->
evalOpParm(myTargetPtAttrib, nodeidx,
"targetptattrib", time, 0);
330 if (
true && ( (!(((
int64(getSnaptype())!=2)))) ) )
331 graph->
evalOpParm(myTargetClass, nodeidx,
"targetclass", time, 0);
332 myUsePositionSnapMethod =
true;
333 if (
true && ( (!(((
int64(getSnaptype())==1)))) ) )
334 graph->
evalOpParm(myUsePositionSnapMethod, nodeidx,
"usepositionsnapmethod", time, 0);
335 myPositionSnapMethod = 0;
336 if (
true && ( (!(((
int64(getSnaptype())==1))||((getUsePositionSnapMethod()==0))||((
int64(getSnaptype())==1)))) ) )
337 graph->
evalOpParm(myPositionSnapMethod, nodeidx,
"positionsnapmethod", time, 0);
338 myUseradiusattrib =
false;
339 if (
true && ( (!(((
int64(getSnaptype())!=0)))) ) )
340 graph->
evalOpParm(myUseradiusattrib, nodeidx,
"useradiusattrib", time, 0);
341 myRadiusattrib =
"pscale"_sh;
342 if (
true && ( (!(((getUseradiusattrib()==0))||((
int64(getSnaptype())!=0)))) ) )
343 graph->
evalOpParm(myRadiusattrib, nodeidx,
"radiusattrib", time, 0);
344 myUsematchattrib =
false;
345 if (
true && ( (!(((
int64(getSnaptype())!=0)))) ) )
346 graph->
evalOpParm(myUsematchattrib, nodeidx,
"usematchattrib", time, 0);
347 myMatchattrib =
"name"_sh;
348 if (
true && ( (!(((getUsematchattrib()==0))||((
int64(getSnaptype())!=0)))) ) )
349 graph->
evalOpParm(myMatchattrib, nodeidx,
"matchattrib", time, 0);
351 if (
true && ( (!(((getUsematchattrib()==0))||((
int64(getSnaptype())!=0)))) ) )
352 graph->
evalOpParm(myMatchtype, nodeidx,
"matchtype", time, 0);
354 if (
true && ( (!(((getUsematchattrib()==0))||((
int64(getSnaptype())!=0)))) ) )
355 graph->
evalOpParm(myMatchTol, nodeidx,
"matchtol", time, 0);
357 if (
true && ( (!(((
int64(getSnaptype())!=1)))) ) )
358 graph->
evalOpParm(myGridtype, nodeidx,
"gridtype", time, 0);
360 if (
true && ( (!(((
int64(getGridtype())!=0))||((
int64(getSnaptype())!=1)))) ) )
361 graph->
evalOpParm(myGridspacing, nodeidx,
"gridspacing", time, 0);
363 if (
true && ( (!(((
int64(getGridtype())!=1))||((
int64(getSnaptype())!=1)))) ) )
364 graph->
evalOpParm(myGridlines, nodeidx,
"gridlines", time, 0);
366 if (
true && ( (!(((
int64(getGridtype())!=2))||((
int64(getSnaptype())!=1)))) ) )
367 graph->
evalOpParm(myGridpow2, nodeidx,
"gridpow2", time, 0);
369 if (
true && ( (!(((
int64(getSnaptype())!=1)))) ) )
370 graph->
evalOpParm(myGridoffset, nodeidx,
"gridoffset", time, 0);
372 if (
true && ( (!(((
int64(getSnaptype())!=1)))) ) )
373 graph->
evalOpParm(myGridround, nodeidx,
"gridround", time, 0);
375 if (
true && ( (!(((
int64(getSnaptype())!=1)))) ) )
376 graph->
evalOpParm(myUseGridTol, nodeidx,
"usegridtol", time, 0);
378 if (
true && ( (!(((
int64(getSnaptype())!=1))||((getUseGridTol()==0))||((
int64(getSnaptype())!=1)))) ) )
379 graph->
evalOpParm(myGridtol, nodeidx,
"gridtol", time, 0);
380 myConsolidateSnappedPoints =
true;
382 graph->
evalOpParm(myConsolidateSnappedPoints, nodeidx,
"consolidatesnappedpoints", time, 0);
383 myKeepConsolidatedPoints =
false;
384 if (
true && ( (!(((getConsolidateSnappedPoints()==0)))) ) )
385 graph->
evalOpParm(myKeepConsolidatedPoints, nodeidx,
"keepconsolidatedpoints", time, 0);
387 if (
true && ( (!(((getConsolidateSnappedPoints()==0)))) ) )
388 graph->
evalOpParm(myDelDegen, nodeidx,
"deldegen", time, 0);
389 myDelDegenPoints =
true;
390 if (
true && ( (!(((getConsolidateSnappedPoints()==0))||((getDelDegen()==0)))) ) )
391 graph->
evalOpParm(myDelDegenPoints, nodeidx,
"deldegenpoints", time, 0);
392 myDelUnusedPoints =
false;
393 if (
true && ( (!(((getConsolidateSnappedPoints()==0)))) ) )
394 graph->
evalOpParm(myDelUnusedPoints, nodeidx,
"delunusedpoints", time, 0);
395 myRecomputenml =
true;
397 graph->
evalOpParm(myRecomputenml, nodeidx,
"recomputenml", time, 0);
398 myCreatesnappedgroup =
false;
400 graph->
evalOpParm(myCreatesnappedgroup, nodeidx,
"createsnappedgroup", time, 0);
401 mySnappedgroupname =
"snapped_points"_sh;
402 if (
true && ( (!(((getCreatesnappedgroup()==0)))) ) )
403 graph->
evalOpParm(mySnappedgroupname, nodeidx,
"snappedgroupname", time, 0);
404 myCreatesnappedattrib =
false;
405 if (
true && ( (!(((
int64(getSnaptype())==1)))) ) )
406 graph->
evalOpParm(myCreatesnappedattrib, nodeidx,
"createsnappedattrib", time, 0);
407 mySnappedattribname =
"snapped_to"_sh;
408 if (
true && ( (!(((getCreatesnappedattrib()==0))||((
int64(getSnaptype())==1)))) ) )
409 graph->
evalOpParm(mySnappedattribname, nodeidx,
"snappedattribname", time, 0);
413 graph->
evalOpParm(length, nodeidx,
"numpointattribs", time, 0);
414 myNumpointattribs.entries(length);
418 auto && _curentry = myNumpointattribs(i);
420 myNumpointattribs(i).attribsnapmethod = 8;
422 graph->
evalOpParmInst(myNumpointattribs(i).attribsnapmethod, nodeidx,
"attribsnapmethod#", &parmidx, time, 0);
423 myNumpointattribs(i).pointattribnames =
""_sh;
425 graph->
evalOpParmInst(myNumpointattribs(i).pointattribnames, nodeidx,
"pointattribnames#", &parmidx, time, 0);
430 myNumpointattribs.clear();
434 graph->
evalOpParm(length, nodeidx,
"numgroups", time, 0);
435 myNumgroups.entries(length);
439 auto && _curentry = myNumgroups(i);
441 myNumgroups(i).grouppropagation = 0;
443 graph->
evalOpParmInst(myNumgroups(i).grouppropagation, nodeidx,
"grouppropagation#", &parmidx, time, 0);
444 myNumgroups(i).pointgroupnames =
""_sh;
446 graph->
evalOpParmInst(myNumgroups(i).pointgroupnames, nodeidx,
"pointgroupnames#", &parmidx, time, 0);
452 myUsetargetgroup =
false;
453 if (
true && ( (!(((
int64(getSnaptype())==1))||(((graph->
getInput(nodeidx,1)>=0)==1)))) ) )
454 graph->
evalOpParm(myUsetargetgroup, nodeidx,
"usetargetgroup", time, 0);
455 myTargetgroup =
""_sh;
456 if (
true && ( (!(((
int64(getSnaptype())==1))||((getUsetargetgroup()==0)&&((graph->
getInput(nodeidx,1)>=0)==0)))) ) )
457 graph->
evalOpParm(myTargetgroup, nodeidx,
"targetgroup", time, 0);
458 myModifyboth =
false;
459 if (
true && ( (!(((
int64(getSnaptype())==1))||(((graph->
getInput(nodeidx,1)>=0)==1))||((getUsetargetgroup()==0)&&(
int64(getSnaptype())!=2)))) ) )
460 graph->
evalOpParm(myModifyboth, nodeidx,
"modifyboth", time, 0);
476 template <
typename T>
483 if (idx.
size() != instance.
size()+1)
488 coerceValue(value, myQuerygroup);
491 coerceValue(value, myPosAttrib);
494 coerceValue(value, mySnaptype);
497 coerceValue(value, myAlgorithm);
500 coerceValue(value, myUseTol3D);
503 coerceValue(value, myTol3d);
506 coerceValue(value, myTargetPtAttrib);
509 coerceValue(value, myTargetClass);
512 coerceValue(value, myUsePositionSnapMethod);
515 coerceValue(value, myPositionSnapMethod);
518 coerceValue(value, myUseradiusattrib);
521 coerceValue(value, myRadiusattrib);
524 coerceValue(value, myUsematchattrib);
527 coerceValue(value, myMatchattrib);
530 coerceValue(value, myMatchtype);
533 coerceValue(value, myMatchTol);
536 coerceValue(value, myGridtype);
539 coerceValue(value, myGridspacing);
542 coerceValue(value, myGridlines);
545 coerceValue(value, myGridpow2);
548 coerceValue(value, myGridoffset);
551 coerceValue(value, myGridround);
554 coerceValue(value, myUseGridTol);
557 coerceValue(value, myGridtol);
560 coerceValue(value, myConsolidateSnappedPoints);
563 coerceValue(value, myKeepConsolidatedPoints);
566 coerceValue(value, myDelDegen);
569 coerceValue(value, myDelDegenPoints);
572 coerceValue(value, myDelUnusedPoints);
575 coerceValue(value, myRecomputenml);
578 coerceValue(value, myCreatesnappedgroup);
581 coerceValue(value, mySnappedgroupname);
584 coerceValue(value, myCreatesnappedattrib);
587 coerceValue(value, mySnappedattribname);
591 coerceValue(value, myNumpointattribs.entries());
592 else if (instance[0] < myNumpointattribs.entries())
594 auto && _data = myNumpointattribs(instance[0]);
598 coerceValue(value, _data.attribsnapmethod);
601 coerceValue(value, _data.pointattribnames);
609 coerceValue(value, myNumgroups.entries());
610 else if (instance[0] < myNumgroups.entries())
612 auto && _data = myNumgroups(instance[0]);
616 coerceValue(value, _data.grouppropagation);
619 coerceValue(value, _data.pointgroupnames);
626 coerceValue(value, myUsetargetgroup);
629 coerceValue(value, myTargetgroup);
632 coerceValue(value, myModifyboth);
639 { doGetParmValue(idx, instance, value); }
641 { doGetParmValue(idx, instance, value); }
643 { doGetParmValue(idx, instance, value); }
645 { doGetParmValue(idx, instance, value); }
647 { doGetParmValue(idx, instance, value); }
649 { doGetParmValue(idx, instance, value); }
651 { doGetParmValue(idx, instance, value); }
653 { doGetParmValue(idx, instance, value); }
655 { doGetParmValue(idx, instance, value); }
657 { doGetParmValue(idx, instance, value); }
659 { doGetParmValue(idx, instance, value); }
661 template <
typename T>
668 if (idx.
size() != instance.
size()+1)
673 coerceValue(myQuerygroup, value);
676 coerceValue(myPosAttrib, value);
679 coerceValue(mySnaptype, value);
682 coerceValue(myAlgorithm, value);
685 coerceValue(myUseTol3D, value);
688 coerceValue(myTol3d, value);
691 coerceValue(myTargetPtAttrib, value);
694 coerceValue(myTargetClass, value);
697 coerceValue(myUsePositionSnapMethod, value);
700 coerceValue(myPositionSnapMethod, value);
703 coerceValue(myUseradiusattrib, value);
706 coerceValue(myRadiusattrib, value);
709 coerceValue(myUsematchattrib, value);
712 coerceValue(myMatchattrib, value);
715 coerceValue(myMatchtype, value);
718 coerceValue(myMatchTol, value);
721 coerceValue(myGridtype, value);
724 coerceValue(myGridspacing, value);
727 coerceValue(myGridlines, value);
730 coerceValue(myGridpow2, value);
733 coerceValue(myGridoffset, value);
736 coerceValue(myGridround, value);
739 coerceValue(myUseGridTol, value);
742 coerceValue(myGridtol, value);
745 coerceValue(myConsolidateSnappedPoints, value);
748 coerceValue(myKeepConsolidatedPoints, value);
751 coerceValue(myDelDegen, value);
754 coerceValue(myDelDegenPoints, value);
757 coerceValue(myDelUnusedPoints, value);
760 coerceValue(myRecomputenml, value);
763 coerceValue(myCreatesnappedgroup, value);
766 coerceValue(mySnappedgroupname, value);
769 coerceValue(myCreatesnappedattrib, value);
772 coerceValue(mySnappedattribname, value);
778 coerceValue(newsize, value);
779 myNumpointattribs.setSize(newsize);
783 myNumpointattribs.setSizeIfNeeded(instance[0]+1);
784 auto && _data = myNumpointattribs(instance[0]);
788 coerceValue(_data.attribsnapmethod, value);
791 coerceValue(_data.pointattribnames, value);
801 coerceValue(newsize, value);
802 myNumgroups.setSize(newsize);
806 myNumgroups.setSizeIfNeeded(instance[0]+1);
807 auto && _data = myNumgroups(instance[0]);
811 coerceValue(_data.grouppropagation, value);
814 coerceValue(_data.pointgroupnames, value);
821 coerceValue(myUsetargetgroup, value);
824 coerceValue(myTargetgroup, value);
827 coerceValue(myModifyboth, value);
834 { doSetParmValue(idx, instance, value); }
836 { doSetParmValue(idx, instance, value); }
838 { doSetParmValue(idx, instance, value); }
840 { doSetParmValue(idx, instance, value); }
842 { doSetParmValue(idx, instance, value); }
844 { doSetParmValue(idx, instance, value); }
846 { doSetParmValue(idx, instance, value); }
848 { doSetParmValue(idx, instance, value); }
850 { doSetParmValue(idx, instance, value); }
852 { doSetParmValue(idx, instance, value); }
854 { doSetParmValue(idx, instance, value); }
874 if (fieldnum.
size() < 1)
891 return "targetptattrib";
893 return "targetclass";
895 return "usepositionsnapmethod";
897 return "positionsnapmethod";
899 return "useradiusattrib";
901 return "radiusattrib";
903 return "usematchattrib";
905 return "matchattrib";
913 return "gridspacing";
927 return "consolidatesnappedpoints";
929 return "keepconsolidatedpoints";
933 return "deldegenpoints";
935 return "delunusedpoints";
937 return "recomputenml";
939 return "createsnappedgroup";
941 return "snappedgroupname";
943 return "createsnappedattrib";
945 return "snappedattribname";
947 if (fieldnum.
size() == 1)
948 return "numpointattribs";
952 return "attribsnapmethod#";
954 return "pointattribnames#";
959 if (fieldnum.
size() == 1)
964 return "grouppropagation#";
966 return "pointgroupnames#";
971 return "usetargetgroup";
973 return "targetgroup";
983 if (fieldnum.
size() < 1)
984 return PARM_UNSUPPORTED;
1002 return PARM_INTEGER;
1004 return PARM_INTEGER;
1006 return PARM_INTEGER;
1008 return PARM_INTEGER;
1012 return PARM_INTEGER;
1016 return PARM_INTEGER;
1020 return PARM_INTEGER;
1022 return PARM_VECTOR3;
1024 return PARM_VECTOR3;
1026 return PARM_VECTOR3;
1028 return PARM_VECTOR3;
1030 return PARM_INTEGER;
1032 return PARM_INTEGER;
1036 return PARM_INTEGER;
1038 return PARM_INTEGER;
1040 return PARM_INTEGER;
1042 return PARM_INTEGER;
1044 return PARM_INTEGER;
1046 return PARM_INTEGER;
1048 return PARM_INTEGER;
1052 return PARM_INTEGER;
1056 if (fieldnum.
size() == 1)
1057 return PARM_MULTIPARM;
1058 switch (fieldnum[1])
1061 return PARM_INTEGER;
1066 return PARM_UNSUPPORTED;
1068 if (fieldnum.
size() == 1)
1069 return PARM_MULTIPARM;
1070 switch (fieldnum[1])
1073 return PARM_INTEGER;
1078 return PARM_UNSUPPORTED;
1080 return PARM_INTEGER;
1084 return PARM_INTEGER;
1087 return PARM_UNSUPPORTED;
1092 { is.
bread(&v, 1); }
1123 loadData(is, rampdata);
1141 int typelen = colon - data.
buffer();
1153 { UTwrite(os, &v); }
1155 {
int64 iv =
v; UTwrite(os, &iv); }
1157 { UTwrite<fpreal64>(os, &
v); }
1159 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
1161 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
1162 UTwrite<fpreal64>(os, &v.
z()); }
1164 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
1165 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
1177 if (s) s->save(ostr);
1178 result = ostr.
str();
1179 saveData(os, result);
1186 ostr << s->getDataTypeToken();
1188 s->saveBinary(ostr);
1190 result = ostr.
str();
1191 saveData(os, result);
1199 saveData(os, myQuerygroup);
1200 saveData(os, myPosAttrib);
1201 saveData(os, mySnaptype);
1202 saveData(os, myAlgorithm);
1203 saveData(os, myUseTol3D);
1204 saveData(os, myTol3d);
1205 saveData(os, myTargetPtAttrib);
1206 saveData(os, myTargetClass);
1207 saveData(os, myUsePositionSnapMethod);
1208 saveData(os, myPositionSnapMethod);
1209 saveData(os, myUseradiusattrib);
1210 saveData(os, myRadiusattrib);
1211 saveData(os, myUsematchattrib);
1212 saveData(os, myMatchattrib);
1213 saveData(os, myMatchtype);
1214 saveData(os, myMatchTol);
1215 saveData(os, myGridtype);
1216 saveData(os, myGridspacing);
1217 saveData(os, myGridlines);
1218 saveData(os, myGridpow2);
1219 saveData(os, myGridoffset);
1220 saveData(os, myGridround);
1221 saveData(os, myUseGridTol);
1222 saveData(os, myGridtol);
1223 saveData(os, myConsolidateSnappedPoints);
1224 saveData(os, myKeepConsolidatedPoints);
1225 saveData(os, myDelDegen);
1226 saveData(os, myDelDegenPoints);
1227 saveData(os, myDelUnusedPoints);
1228 saveData(os, myRecomputenml);
1229 saveData(os, myCreatesnappedgroup);
1230 saveData(os, mySnappedgroupname);
1231 saveData(os, myCreatesnappedattrib);
1232 saveData(os, mySnappedattribname);
1235 UTwrite(os, &length);
1238 saveData(os, myNumpointattribs(i).attribsnapmethod);
1239 saveData(os, myNumpointattribs(i).pointattribnames);
1245 UTwrite(os, &length);
1248 saveData(os, myNumgroups(i).grouppropagation);
1249 saveData(os, myNumgroups(i).pointgroupnames);
1253 saveData(os, myUsetargetgroup);
1254 saveData(os, myTargetgroup);
1255 saveData(os, myModifyboth);
1268 loadData(is, myQuerygroup);
1269 loadData(is, myPosAttrib);
1270 loadData(is, mySnaptype);
1271 loadData(is, myAlgorithm);
1272 loadData(is, myUseTol3D);
1273 loadData(is, myTol3d);
1274 loadData(is, myTargetPtAttrib);
1275 loadData(is, myTargetClass);
1276 loadData(is, myUsePositionSnapMethod);
1277 loadData(is, myPositionSnapMethod);
1278 loadData(is, myUseradiusattrib);
1279 loadData(is, myRadiusattrib);
1280 loadData(is, myUsematchattrib);
1281 loadData(is, myMatchattrib);
1282 loadData(is, myMatchtype);
1283 loadData(is, myMatchTol);
1284 loadData(is, myGridtype);
1285 loadData(is, myGridspacing);
1286 loadData(is, myGridlines);
1287 loadData(is, myGridpow2);
1288 loadData(is, myGridoffset);
1289 loadData(is, myGridround);
1290 loadData(is, myUseGridTol);
1291 loadData(is, myGridtol);
1292 loadData(is, myConsolidateSnappedPoints);
1293 loadData(is, myKeepConsolidatedPoints);
1294 loadData(is, myDelDegen);
1295 loadData(is, myDelDegenPoints);
1296 loadData(is, myDelUnusedPoints);
1297 loadData(is, myRecomputenml);
1298 loadData(is, myCreatesnappedgroup);
1299 loadData(is, mySnappedgroupname);
1300 loadData(is, myCreatesnappedattrib);
1301 loadData(is, mySnappedattribname);
1304 is.
read(&length, 1);
1305 myNumpointattribs.entries(length);
1308 loadData(is, myNumpointattribs(i).attribsnapmethod);
1309 loadData(is, myNumpointattribs(i).pointattribnames);
1315 is.
read(&length, 1);
1316 myNumgroups.entries(length);
1319 loadData(is, myNumgroups(i).grouppropagation);
1320 loadData(is, myNumgroups(i).pointgroupnames);
1324 loadData(is, myUsetargetgroup);
1325 loadData(is, myTargetgroup);
1326 loadData(is, myModifyboth);
1336 if (!thissop)
return getQuerygroup();
1338 OP_Utils::evalOpParm(result, thissop,
"querygroup", cookparms.
getCookTime(), 0);
1346 if (!thissop)
return getPosAttrib();
1348 OP_Utils::evalOpParm(result, thissop,
"posattrib", cookparms.
getCookTime(), 0);
1356 if (!thissop)
return getSnaptype();
1358 OP_Utils::evalOpParm(result, thissop,
"snaptype", cookparms.
getCookTime(), 0);
1366 if (!thissop)
return getAlgorithm();
1368 OP_Utils::evalOpParm(result, thissop,
"algorithm", cookparms.
getCookTime(), 0);
1376 if (!thissop)
return getUseTol3D();
1378 OP_Utils::evalOpParm(result, thissop,
"usetol3d", cookparms.
getCookTime(), 0);
1386 if (!thissop)
return getTol3d();
1388 OP_Utils::evalOpParm(result, thissop,
"tol3d", cookparms.
getCookTime(), 0);
1396 if (!thissop)
return getTargetPtAttrib();
1398 OP_Utils::evalOpParm(result, thissop,
"targetptattrib", cookparms.
getCookTime(), 0);
1406 if (!thissop)
return getTargetClass();
1408 OP_Utils::evalOpParm(result, thissop,
"targetclass", cookparms.
getCookTime(), 0);
1416 if (!thissop)
return getUsePositionSnapMethod();
1418 OP_Utils::evalOpParm(result, thissop,
"usepositionsnapmethod", cookparms.
getCookTime(), 0);
1426 if (!thissop)
return getPositionSnapMethod();
1428 OP_Utils::evalOpParm(result, thissop,
"positionsnapmethod", cookparms.
getCookTime(), 0);
1436 if (!thissop)
return getUseradiusattrib();
1438 OP_Utils::evalOpParm(result, thissop,
"useradiusattrib", cookparms.
getCookTime(), 0);
1446 if (!thissop)
return getRadiusattrib();
1448 OP_Utils::evalOpParm(result, thissop,
"radiusattrib", cookparms.
getCookTime(), 0);
1456 if (!thissop)
return getUsematchattrib();
1458 OP_Utils::evalOpParm(result, thissop,
"usematchattrib", cookparms.
getCookTime(), 0);
1466 if (!thissop)
return getMatchattrib();
1468 OP_Utils::evalOpParm(result, thissop,
"matchattrib", cookparms.
getCookTime(), 0);
1476 if (!thissop)
return getMatchtype();
1478 OP_Utils::evalOpParm(result, thissop,
"matchtype", cookparms.
getCookTime(), 0);
1486 if (!thissop)
return getMatchTol();
1488 OP_Utils::evalOpParm(result, thissop,
"matchtol", cookparms.
getCookTime(), 0);
1496 if (!thissop)
return getGridtype();
1498 OP_Utils::evalOpParm(result, thissop,
"gridtype", cookparms.
getCookTime(), 0);
1506 if (!thissop)
return getGridspacing();
1508 OP_Utils::evalOpParm(result, thissop,
"gridspacing", cookparms.
getCookTime(), 0);
1516 if (!thissop)
return getGridlines();
1518 OP_Utils::evalOpParm(result, thissop,
"gridlines", cookparms.
getCookTime(), 0);
1526 if (!thissop)
return getGridpow2();
1528 OP_Utils::evalOpParm(result, thissop,
"gridpow2", cookparms.
getCookTime(), 0);
1536 if (!thissop)
return getGridoffset();
1538 OP_Utils::evalOpParm(result, thissop,
"gridoffset", cookparms.
getCookTime(), 0);
1546 if (!thissop)
return getGridround();
1548 OP_Utils::evalOpParm(result, thissop,
"gridround", cookparms.
getCookTime(), 0);
1556 if (!thissop)
return getUseGridTol();
1558 OP_Utils::evalOpParm(result, thissop,
"usegridtol", cookparms.
getCookTime(), 0);
1566 if (!thissop)
return getGridtol();
1568 OP_Utils::evalOpParm(result, thissop,
"gridtol", cookparms.
getCookTime(), 0);
1576 if (!thissop)
return getConsolidateSnappedPoints();
1578 OP_Utils::evalOpParm(result, thissop,
"consolidatesnappedpoints", cookparms.
getCookTime(), 0);
1586 if (!thissop)
return getKeepConsolidatedPoints();
1588 OP_Utils::evalOpParm(result, thissop,
"keepconsolidatedpoints", cookparms.
getCookTime(), 0);
1596 if (!thissop)
return getDelDegen();
1598 OP_Utils::evalOpParm(result, thissop,
"deldegen", cookparms.
getCookTime(), 0);
1606 if (!thissop)
return getDelDegenPoints();
1608 OP_Utils::evalOpParm(result, thissop,
"deldegenpoints", cookparms.
getCookTime(), 0);
1616 if (!thissop)
return getDelUnusedPoints();
1618 OP_Utils::evalOpParm(result, thissop,
"delunusedpoints", cookparms.
getCookTime(), 0);
1626 if (!thissop)
return getRecomputenml();
1628 OP_Utils::evalOpParm(result, thissop,
"recomputenml", cookparms.
getCookTime(), 0);
1636 if (!thissop)
return getCreatesnappedgroup();
1638 OP_Utils::evalOpParm(result, thissop,
"createsnappedgroup", cookparms.
getCookTime(), 0);
1646 if (!thissop)
return getSnappedgroupname();
1648 OP_Utils::evalOpParm(result, thissop,
"snappedgroupname", cookparms.
getCookTime(), 0);
1656 if (!thissop)
return getCreatesnappedattrib();
1658 OP_Utils::evalOpParm(result, thissop,
"createsnappedattrib", cookparms.
getCookTime(), 0);
1666 if (!thissop)
return getSnappedattribname();
1668 OP_Utils::evalOpParm(result, thissop,
"snappedattribname", cookparms.
getCookTime(), 0);
1676 if (!thissop)
return getNumpointattribs().entries();
1678 OP_Utils::evalOpParm(result, thissop,
"numpointattribs", cookparms.
getCookTime(), 0);
1684 if (!thissop)
return (myNumpointattribs(_idx).attribsnapmethod);
1685 int _parmidx = _idx + 1;
1687 OP_Utils::evalOpParmInst(result, thissop,
"attribsnapmethod#", &_parmidx, cookparms.
getCookTime(), 0);
1693 if (!thissop)
return (myNumpointattribs(_idx).pointattribnames);
1694 int _parmidx = _idx + 1;
1696 OP_Utils::evalOpParmInst(result, thissop,
"pointattribnames#", &_parmidx, cookparms.
getCookTime(), 0);
1705 if (!thissop)
return getNumgroups().entries();
1707 OP_Utils::evalOpParm(result, thissop,
"numgroups", cookparms.
getCookTime(), 0);
1713 if (!thissop)
return (myNumgroups(_idx).grouppropagation);
1714 int _parmidx = _idx + 1;
1716 OP_Utils::evalOpParmInst(result, thissop,
"grouppropagation#", &_parmidx, cookparms.
getCookTime(), 0);
1722 if (!thissop)
return (myNumgroups(_idx).pointgroupnames);
1723 int _parmidx = _idx + 1;
1725 OP_Utils::evalOpParmInst(result, thissop,
"pointgroupnames#", &_parmidx, cookparms.
getCookTime(), 0);
1734 if (!thissop)
return getUsetargetgroup();
1736 OP_Utils::evalOpParm(result, thissop,
"usetargetgroup", cookparms.
getCookTime(), 0);
1744 if (!thissop)
return getTargetgroup();
1746 OP_Utils::evalOpParm(result, thissop,
"targetgroup", cookparms.
getCookTime(), 0);
1754 if (!thissop)
return getModifyboth();
1756 OP_Utils::evalOpParm(result, thissop,
"modifyboth", cookparms.
getCookTime(), 0);
1768 int64 myTargetClass;
1769 bool myUsePositionSnapMethod;
1770 int64 myPositionSnapMethod;
1771 bool myUseradiusattrib;
1773 bool myUsematchattrib;
1785 bool myConsolidateSnappedPoints;
1786 bool myKeepConsolidatedPoints;
1788 bool myDelDegenPoints;
1789 bool myDelUnusedPoints;
1790 bool myRecomputenml;
1791 bool myCreatesnappedgroup;
1793 bool myCreatesnappedattrib;
1797 bool myUsetargetgroup;
void setCreatesnappedattrib(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool opRecomputenml(const SOP_NodeVerb::CookParms &cookparms) const
bool getDelDegenPoints() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setTol3d(fpreal64 val)
const UT_Array< Numpointattribs > & getNumpointattribs() const
bool opDelDegen(const SOP_NodeVerb::CookParms &cookparms) const
void setUsetargetgroup(bool val)
Algorithm opAlgorithm(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
UT_Vector3I opGridpow2(const SOP_NodeVerb::CookParms &cookparms) const
SOP_Node * getNode() const
const UT_StringHolder & getQuerygroup() const
exint getNestNumParms(TempIndex idx) const override
UT_Vector3D opGridlines(const SOP_NodeVerb::CookParms &cookparms) const
bool opDelDegenPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector3D v)
bool operator==(const Numgroups &src) const
void setPosAttrib(const UT_StringHolder &val)
void setMatchtype(Matchtype val)
exint opNumpointattribs(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getGridtol() const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, int *inst, fpreal time, DEP_MicroNode *depnode) const =0
virtual NodeIdx getInput(NodeIdx idx, int input, bool markused=false) const =0
UT_StringHolder opSnappedattribname(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
PositionSnapMethod opPositionSnapMethod(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMatchattrib() const
void copyFrom(const SOP_NodeParms *src) override
GLuint const GLfloat * val
void setModifyboth(bool val)
Snaptype getSnaptype() const
void setGridtype(Gridtype val)
int64 opNumgroups_grouppropagation(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
Gridtype opGridtype(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getTargetgroup() const
void setTargetPtAttrib(const UT_StringHolder &val)
UT_StringHolder opNumpointattribs_pointattribnames(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
bool getConsolidateSnappedPoints() const
Matchtype opMatchtype(const SOP_NodeVerb::CookParms &cookparms) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
UT_StringHolder opPosAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseradiusattrib() const
UT_StringHolder createString(const UT_Array< Numgroups > &list) const
bool operator!=(const Numpointattribs &src) const
void setGridspacing(UT_Vector3D val)
UT_StringHolder opTargetPtAttrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
const SOP_GraphProxy * graph() const
static void saveData(std::ostream &os, UT_Matrix4D v)
An output stream object that owns its own string buffer storage.
void setGridlines(UT_Vector3D val)
bool opCreatesnappedgroup(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
UT_Vector3D getGridoffset() const
void setDelDegenPoints(bool val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const UT_StringHolder & getTargetPtAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
Snaptype opSnaptype(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< int64 > UT_Vector3I
const UT_StringHolder & getSnappedgroupname() const
Algorithm getAlgorithm() const
void setUsematchattrib(bool val)
bool opUsePositionSnapMethod(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
UT_Vector3D getGridlines() const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
fpreal64 opTol3d(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSnappedattribname() const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
bool load(UT_IStream &is)
UT_Vector3D opGridoffset(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
fpreal64 opGridtol(const SOP_NodeVerb::CookParms &cookparms) const
const UT_Array< Numgroups > & getNumgroups() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Gridtype getGridtype() const
UT_StringHolder pointattribnames
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setDelDegen(bool val)
bool opDelUnusedPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setSnaptype(Snaptype val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
bool getKeepConsolidatedPoints() const
void setNumpointattribs(const UT_Array< Numpointattribs > &val)
void setNumgroups(const UT_Array< Numgroups > &val)
static void saveData(std::ostream &os, UT_StringHolder s)
UT_StringHolder opSnappedgroupname(const SOP_NodeVerb::CookParms &cookparms) const
Gridround opGridround(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setSnappedgroupname(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
void setUseradiusattrib(bool val)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
static void saveData(std::ostream &os, UT_Matrix3D v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
GLint GLenum GLsizei GLint GLsizei const void * data
void setUseTol3D(bool val)
bool opModifyboth(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setUsePositionSnapMethod(bool val)
exint read(bool *array, exint sz=1)
const UT_StringHolder & getPosAttrib() const
exint opNumgroups(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getGridspacing() const
UT_StringHolder opQuerygroup(const SOP_NodeVerb::CookParms &cookparms) const
void setGridoffset(UT_Vector3D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
static void saveData(std::ostream &os, bool v)
GLuint GLsizei GLsizei * length
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setKeepConsolidatedPoints(bool val)
UT_Vector3I getGridpow2() const
UT_Vector3D opGridspacing(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setUseGridTol(bool val)
static void loadData(UT_IStream &is, bool &v)
UT_Vector3T< fpreal64 > UT_Vector3D
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void saveData(std::ostream &os, int64 v)
bool operator!=(const Numgroups &src) const
void setGridpow2(UT_Vector3I val)
Gridround getGridround() const
bool getUseGridTol() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool getModifyboth() const
SYS_FORCE_INLINE void strcat(const char *src)
UT_StringHolder opRadiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
static void saveData(std::ostream &os, UT_Vector4D v)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setTargetgroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
exint entries() const
Alias of size(). size() is preferred.
fpreal64 getTol3d() const
bool getUsematchattrib() const
bool opUseradiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
bool operator!=(const SOP_Fuse_2_0Parms &src) const
void setSnappedattribname(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
TargetClass getTargetClass() const
static void saveData(std::ostream &os, UT_Matrix2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool getDelUnusedPoints() const
bool opKeepConsolidatedPoints(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getMatchTol() const
void setQuerygroup(const UT_StringHolder &val)
void setConsolidateSnappedPoints(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
bool operator==(const SOP_Fuse_2_0Parms &src) const
bool getCreatesnappedgroup() const
Utility class for containing a color ramp.
bool getCreatesnappedattrib() const
void setTargetClass(TargetClass val)
bool getUsePositionSnapMethod() const
UT_StringHolder opTargetgroup(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void append(char character)
~SOP_Fuse_2_0Parms() override
GLdouble GLdouble GLdouble r
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void saveData(std::ostream &os, fpreal64 v)
bool opUsetargetgroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
bool getRecomputenml() const
bool opUseTol3D(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
const UT_StringHolder & getRadiusattrib() const
void setGridtol(fpreal64 val)
fpreal getCookTime() const
static void loadData(UT_IStream &is, int64 &v)
void setCreatesnappedgroup(bool val)
bool opUseGridTol(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
int64 opNumpointattribs_attribsnapmethod(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
UT_StringHolder opNumgroups_pointgroupnames(const SOP_NodeVerb::CookParms &cookparms, exint _idx) const
void setDelUnusedPoints(bool val)
void setRadiusattrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void saveData(std::ostream &os, UT_Vector2D v)
bool opConsolidateSnappedPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setGridround(Gridround val)
void setRecomputenml(bool val)
GLenum GLuint GLsizei const GLchar * buf
void setMatchattrib(const UT_StringHolder &val)
bool opCreatesnappedattrib(const SOP_NodeVerb::CookParms &cookparms) const
Matchtype getMatchtype() const
GLsizei const GLfloat * value
void loadFromOpSubclass(const LoadParms &loadparms) override
fpreal64 opMatchTol(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder pointgroupnames
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setAlgorithm(Algorithm val)
const OP_Context & context() const
const char * getNestParmName(TempIndex fieldnum) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
static void loadData(UT_IStream &is, UT_Vector4I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setMatchTol(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
SYS_FORCE_INLINE bool isstring() const
UT_StringHolder opMatchattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
PositionSnapMethod getPositionSnapMethod() const
UT_StringHolder createString(const UT_Array< Numpointattribs > &list) const
bool opUsematchattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setPositionSnapMethod(PositionSnapMethod val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
bool getUsetargetgroup() const
TargetClass opTargetClass(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Numpointattribs &src) const
ParmType getNestParmType(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override