43 if (bindname != src.
bindname)
return false;
44 if (bindparm != src.
bindparm)
return false;
60 for (
int i = 0; i < list.
entries(); i++)
85 bindgroupname =
""_UTsh;
86 bindgroupparm =
""_UTsh;
109 for (
int i = 0; i < list.
entries(); i++)
130 myVexOutputMask =
"*"_UTsh;
132 myGroupAutobind =
true;
134 myBindGroup =
""_UTsh;
136 myMultiThread =
true;
137 myUpdateNormals =
false;
139 myThreadJobSize = 1024;
140 myMatchAttrib =
"id"_UTsh;
141 mySelectionGroup =
""_UTsh;
142 myCookInPlace =
false;
143 myVexPrecision =
"auto"_UTsh;
147 myEnforcePrototypes =
false;
148 myExportList =
"*"_UTsh;
149 myStrictVariables =
true;
162 if (myVexCWD != src.myVexCWD)
return false;
163 if (myVexOutputMask != src.myVexOutputMask)
return false;
164 if (myBindings != src.myBindings)
return false;
165 if (myGroupBindings != src.myGroupBindings)
return false;
166 if (myAutobind != src.myAutobind)
return false;
167 if (myGroupAutobind != src.myGroupAutobind)
return false;
168 if (myBindClass != src.myBindClass)
return false;
169 if (myBindGroup != src.myBindGroup)
return false;
170 if (myBindGroupType != src.myBindGroupType)
return false;
171 if (myMultiThread != src.myMultiThread)
return false;
172 if (myUpdateNormals != src.myUpdateNormals)
return false;
173 if (myNumCount != src.myNumCount)
return false;
174 if (myThreadJobSize != src.myThreadJobSize)
return false;
175 if (myMatchAttrib != src.myMatchAttrib)
return false;
176 if (mySelectionGroup != src.mySelectionGroup)
return false;
177 if (myCookInPlace != src.myCookInPlace)
return false;
178 if (myVexPrecision != src.myVexPrecision)
return false;
179 if (myVexSource != src.myVexSource)
return false;
180 if (myScript != src.myScript)
return false;
181 if (mySnippet != src.mySnippet)
return false;
182 if (myEnforcePrototypes != src.myEnforcePrototypes)
return false;
183 if (myExportList != src.myExportList)
return false;
184 if (myStrictVariables != src.myStrictVariables)
return false;
202 graph->
evalOpParm(myVexCWD, nodeidx,
"vex_cwdpath", time, graph->
isDirect()?
nullptr:depnode);
203 myVexOutputMask =
"*"_UTsh;
205 graph->
evalOpParm(myVexOutputMask, nodeidx,
"vex_outputmask", time, graph->
isDirect()?
nullptr:depnode);
209 graph->
evalOpParm(length, nodeidx,
"bindings", time, graph->
isDirect()?
nullptr:depnode);
210 if (length < 0) length = 0;
211 myBindings.setSize(length);
218 auto && _curentry = myBindings(i);
220 _curentry.bindname =
""_UTsh;
222 graph->
evalOpParmInst(_curentry.bindname, nodeidx,
"bindname#", parmidx, offsets, time, graph->
isDirect()?
nullptr:depnode, 2-1);
223 _curentry.bindparm =
""_UTsh;
225 graph->
evalOpParmInst(_curentry.bindparm, nodeidx,
"bindparm#", parmidx, offsets, time, graph->
isDirect()?
nullptr:depnode, 2-1);
234 graph->
evalOpParm(length, nodeidx,
"groupbindings", time, graph->
isDirect()?
nullptr:depnode);
235 if (length < 0) length = 0;
236 myGroupBindings.setSize(length);
243 auto && _curentry = myGroupBindings(i);
245 _curentry.bindgroupname =
""_UTsh;
247 graph->
evalOpParmInst(_curentry.bindgroupname, nodeidx,
"bindgroupname#", parmidx, offsets, time, graph->
isDirect()?
nullptr:depnode, 2-1);
248 _curentry.bindgroupparm =
""_UTsh;
250 graph->
evalOpParmInst(_curentry.bindgroupparm, nodeidx,
"bindgroupparm#", parmidx, offsets, time, graph->
isDirect()?
nullptr:depnode, 2-1);
255 myGroupBindings.clear();
258 graph->
evalOpParm(myAutobind, nodeidx,
"autobind", time, graph->
isDirect()?
nullptr:depnode);
259 myGroupAutobind =
true;
261 graph->
evalOpParm(myGroupAutobind, nodeidx,
"groupautobind", time, graph->
isDirect()?
nullptr:depnode);
264 graph->
evalOpParm(myBindClass, nodeidx,
"bindclass", time, graph->
isDirect()?
nullptr:depnode);
265 myBindGroup =
""_UTsh;
267 graph->
evalOpParm(myBindGroup, nodeidx,
"bindgroup", time, graph->
isDirect()?
nullptr:depnode);
270 graph->
evalOpParm(myBindGroupType, nodeidx,
"bindgrouptype", time, graph->
isDirect()?
nullptr:depnode);
271 myMultiThread =
true;
273 graph->
evalOpParm(myMultiThread, nodeidx,
"vex_multithread", time, graph->
isDirect()?
nullptr:depnode);
274 myUpdateNormals =
false;
276 graph->
evalOpParm(myUpdateNormals, nodeidx,
"vex_updatenmls", time, graph->
isDirect()?
nullptr:depnode);
278 if (
true && ( (getBindClass()==4) ) )
279 graph->
evalOpParm(myNumCount, nodeidx,
"vex_numcount", time, graph->
isDirect()?
nullptr:depnode);
280 myThreadJobSize = 1024;
281 if (
true && ( (getBindClass()==4) ) )
282 graph->
evalOpParm(myThreadJobSize, nodeidx,
"vex_threadjobsize", time, graph->
isDirect()?
nullptr:depnode);
283 myMatchAttrib =
"id"_UTsh;
285 graph->
evalOpParm(myMatchAttrib, nodeidx,
"vex_matchattrib", time, graph->
isDirect()?
nullptr:depnode);
286 mySelectionGroup =
""_UTsh;
288 graph->
evalOpParm(mySelectionGroup, nodeidx,
"vex_selectiongroup", time, graph->
isDirect()?
nullptr:depnode);
289 myCookInPlace =
false;
291 graph->
evalOpParm(myCookInPlace, nodeidx,
"vex_inplace", time, graph->
isDirect()?
nullptr:depnode);
292 myVexPrecision =
"auto"_UTsh;
294 graph->
evalOpParm(myVexPrecision, nodeidx,
"vex_precision", time, graph->
isDirect()?
nullptr:depnode);
297 graph->
evalOpParm(myVexSource, nodeidx,
"vexsrc", time, graph->
isDirect()?
nullptr:depnode);
299 if (
true && ( (getVexSource()==2) ) )
300 graph->
evalOpParm(myScript, nodeidx,
"script", time, graph->
isDirect()?
nullptr:depnode);
302 if (
true && ( (getVexSource()==3) ) )
303 graph->
evalOpParm(mySnippet, nodeidx,
"vexsnippet", time, graph->
isDirect()?
nullptr:depnode);
304 myEnforcePrototypes =
false;
305 if (
true && ( (getVexSource()==3) ) )
306 graph->
evalOpParm(myEnforcePrototypes, nodeidx,
"vex_strict", time, graph->
isDirect()?
nullptr:depnode);
307 myExportList =
"*"_UTsh;
308 if (
true && ( (getVexSource()==3) ) )
309 graph->
evalOpParm(myExportList, nodeidx,
"vex_exportlist", time, graph->
isDirect()?
nullptr:depnode);
310 myStrictVariables =
true;
311 if (
true && ( (getVexSource()==3) ) )
312 graph->
evalOpParm(myStrictVariables, nodeidx,
"vex_strictvariables", time, graph->
isDirect()?
nullptr:depnode);
328 template <
typename T>
335 if (idx.
size() != instance.
size()+1)
348 else if (instance[0] < myBindings.entries())
350 auto && _data = myBindings(instance[0]);
366 else if (instance[0] < myGroupBindings.entries())
368 auto && _data = myGroupBindings(instance[0]);
452 { doGetParmValue(idx, instance, value); }
454 { doGetParmValue(idx, instance, value); }
456 { doGetParmValue(idx, instance, value); }
458 { doGetParmValue(idx, instance, value); }
460 { doGetParmValue(idx, instance, value); }
462 { doGetParmValue(idx, instance, value); }
464 { doGetParmValue(idx, instance, value); }
466 { doGetParmValue(idx, instance, value); }
468 { doGetParmValue(idx, instance, value); }
470 { doGetParmValue(idx, instance, value); }
472 { doGetParmValue(idx, instance, value); }
474 template <
typename T>
481 if (idx.
size() != instance.
size()+1)
496 if (newsize < 0) newsize = 0;
497 myBindings.setSize(newsize);
503 myBindings.setSizeIfNeeded(instance[0]+1);
504 auto && _data = myBindings(instance[0]);
522 if (newsize < 0) newsize = 0;
523 myGroupBindings.setSize(newsize);
529 myGroupBindings.setSizeIfNeeded(instance[0]+1);
530 auto && _data = myGroupBindings(instance[0]);
605 { doSetParmValue(idx, instance, value); }
607 { doSetParmValue(idx, instance, value); }
609 { doSetParmValue(idx, instance, value); }
611 { doSetParmValue(idx, instance, value); }
613 { doSetParmValue(idx, instance, value); }
615 { doSetParmValue(idx, instance, value); }
617 { doSetParmValue(idx, instance, value); }
619 { doSetParmValue(idx, instance, value); }
621 { doSetParmValue(idx, instance, value); }
623 { doSetParmValue(idx, instance, value); }
625 { doSetParmValue(idx, instance, value); }
645 if (fieldnum.
size() < 1)
650 return "vex_cwdpath";
652 return "vex_outputmask";
654 if (fieldnum.
size() == 1)
666 if (fieldnum.
size() == 1)
667 return "groupbindings";
671 return "bindgroupname#";
673 return "bindgroupparm#";
680 return "groupautobind";
686 return "bindgrouptype";
688 return "vex_multithread";
690 return "vex_updatenmls";
692 return "vex_numcount";
694 return "vex_threadjobsize";
696 return "vex_matchattrib";
698 return "vex_selectiongroup";
700 return "vex_inplace";
702 return "vex_precision";
712 return "vex_exportlist";
714 return "vex_strictvariables";
722 if (fieldnum.
size() < 1)
723 return PARM_UNSUPPORTED;
731 if (fieldnum.
size() == 1)
732 return PARM_MULTIPARM;
743 if (fieldnum.
size() == 1)
744 return PARM_MULTIPARM;
830 loadData(is, rampdata);
848 int typelen = colon - data.
buffer();
862 {
int64 iv =
v; UTwrite(os, &iv); }
864 { UTwrite<fpreal64>(os, &
v); }
866 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
868 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
869 UTwrite<fpreal64>(os, &v.
z()); }
871 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
872 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
884 if (s) s->save(ostr);
886 saveData(os, result);
893 ostr << s->getDataTypeToken();
898 saveData(os, result);
902 void save(std::ostream &os)
const
906 saveData(os, myVexCWD);
907 saveData(os, myVexOutputMask);
910 UTwrite(os, &length);
913 auto && _curentry = myBindings(i);
915 saveData(os, _curentry.bindname);
916 saveData(os, _curentry.bindparm);
922 UTwrite(os, &length);
925 auto && _curentry = myGroupBindings(i);
927 saveData(os, _curentry.bindgroupname);
928 saveData(os, _curentry.bindgroupparm);
932 saveData(os, myAutobind);
933 saveData(os, myGroupAutobind);
934 saveData(os, myBindClass);
935 saveData(os, myBindGroup);
936 saveData(os, myBindGroupType);
937 saveData(os, myMultiThread);
938 saveData(os, myUpdateNormals);
939 saveData(os, myNumCount);
940 saveData(os, myThreadJobSize);
941 saveData(os, myMatchAttrib);
942 saveData(os, mySelectionGroup);
943 saveData(os, myCookInPlace);
944 saveData(os, myVexPrecision);
945 saveData(os, myVexSource);
946 saveData(os, myScript);
947 saveData(os, mySnippet);
948 saveData(os, myEnforcePrototypes);
949 saveData(os, myExportList);
950 saveData(os, myStrictVariables);
963 loadData(is, myVexCWD);
964 loadData(is, myVexOutputMask);
968 myBindings.setSize(length);
971 auto && _curentry = myBindings(i);
973 loadData(is, _curentry.bindname);
974 loadData(is, _curentry.bindparm);
981 myGroupBindings.setSize(length);
984 auto && _curentry = myGroupBindings(i);
986 loadData(is, _curentry.bindgroupname);
987 loadData(is, _curentry.bindgroupparm);
991 loadData(is, myAutobind);
992 loadData(is, myGroupAutobind);
993 loadData(is, myBindClass);
994 loadData(is, myBindGroup);
995 loadData(is, myBindGroupType);
996 loadData(is, myMultiThread);
997 loadData(is, myUpdateNormals);
998 loadData(is, myNumCount);
999 loadData(is, myThreadJobSize);
1000 loadData(is, myMatchAttrib);
1001 loadData(is, mySelectionGroup);
1002 loadData(is, myCookInPlace);
1003 loadData(is, myVexPrecision);
1004 loadData(is, myVexSource);
1005 loadData(is, myScript);
1006 loadData(is, mySnippet);
1007 loadData(is, myEnforcePrototypes);
1008 loadData(is, myExportList);
1009 loadData(is, myStrictVariables);
1019 if (!thissop)
return getVexCWD();
1021 OP_Utils::evalOpParm(result, thissop,
"vex_cwdpath", cookparms.
getCookTime(), 0);
1029 if (!thissop)
return getVexOutputMask();
1031 OP_Utils::evalOpParm(result, thissop,
"vex_outputmask", cookparms.
getCookTime(), 0);
1039 if (!thissop)
return getBindings().entries();
1041 OP_Utils::evalOpParm(result, thissop,
"bindings", cookparms.
getCookTime(), 0);
1045 {
return opinstBindings_bindname(cookparms, &_idx); }
1049 if (!thissop)
return (myBindings(_idx[0]).bindname);
1051 _parmidx[1-1] = _idx[1-1] + 1;
1054 OP_Utils::evalOpParmInst(result, thissop,
"bindname#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
1058 {
return opinstBindings_bindparm(cookparms, &_idx); }
1062 if (!thissop)
return (myBindings(_idx[0]).bindparm);
1064 _parmidx[1-1] = _idx[1-1] + 1;
1067 OP_Utils::evalOpParmInst(result, thissop,
"bindparm#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
1076 if (!thissop)
return getGroupBindings().entries();
1078 OP_Utils::evalOpParm(result, thissop,
"groupbindings", cookparms.
getCookTime(), 0);
1082 {
return opinstGroupBindings_bindgroupname(cookparms, &_idx); }
1086 if (!thissop)
return (myGroupBindings(_idx[0]).bindgroupname);
1088 _parmidx[1-1] = _idx[1-1] + 1;
1091 OP_Utils::evalOpParmInst(result, thissop,
"bindgroupname#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
1095 {
return opinstGroupBindings_bindgroupparm(cookparms, &_idx); }
1099 if (!thissop)
return (myGroupBindings(_idx[0]).bindgroupparm);
1101 _parmidx[1-1] = _idx[1-1] + 1;
1104 OP_Utils::evalOpParmInst(result, thissop,
"bindgroupparm#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
1113 if (!thissop)
return getAutobind();
1115 OP_Utils::evalOpParm(result, thissop,
"autobind", cookparms.
getCookTime(), 0);
1123 if (!thissop)
return getGroupAutobind();
1125 OP_Utils::evalOpParm(result, thissop,
"groupautobind", cookparms.
getCookTime(), 0);
1133 if (!thissop)
return getBindClass();
1135 OP_Utils::evalOpParm(result, thissop,
"bindclass", cookparms.
getCookTime(), 0);
1143 if (!thissop)
return getBindGroup();
1145 OP_Utils::evalOpParm(result, thissop,
"bindgroup", cookparms.
getCookTime(), 0);
1153 if (!thissop)
return getBindGroupType();
1155 OP_Utils::evalOpParm(result, thissop,
"bindgrouptype", cookparms.
getCookTime(), 0);
1163 if (!thissop)
return getMultiThread();
1165 OP_Utils::evalOpParm(result, thissop,
"vex_multithread", cookparms.
getCookTime(), 0);
1173 if (!thissop)
return getUpdateNormals();
1175 OP_Utils::evalOpParm(result, thissop,
"vex_updatenmls", cookparms.
getCookTime(), 0);
1183 if (!thissop)
return getNumCount();
1185 OP_Utils::evalOpParm(result, thissop,
"vex_numcount", cookparms.
getCookTime(), 0);
1193 if (!thissop)
return getThreadJobSize();
1195 OP_Utils::evalOpParm(result, thissop,
"vex_threadjobsize", cookparms.
getCookTime(), 0);
1203 if (!thissop)
return getMatchAttrib();
1205 OP_Utils::evalOpParm(result, thissop,
"vex_matchattrib", cookparms.
getCookTime(), 0);
1213 if (!thissop)
return getSelectionGroup();
1215 OP_Utils::evalOpParm(result, thissop,
"vex_selectiongroup", cookparms.
getCookTime(), 0);
1223 if (!thissop)
return getCookInPlace();
1225 OP_Utils::evalOpParm(result, thissop,
"vex_inplace", cookparms.
getCookTime(), 0);
1233 if (!thissop)
return getVexPrecision();
1235 OP_Utils::evalOpParm(result, thissop,
"vex_precision", cookparms.
getCookTime(), 0);
1243 if (!thissop)
return getVexSource();
1245 OP_Utils::evalOpParm(result, thissop,
"vexsrc", cookparms.
getCookTime(), 0);
1253 if (!thissop)
return getScript();
1255 OP_Utils::evalOpParm(result, thissop,
"script", cookparms.
getCookTime(), 0);
1263 if (!thissop)
return getSnippet();
1265 OP_Utils::evalOpParm(result, thissop,
"vexsnippet", cookparms.
getCookTime(), 0);
1273 if (!thissop)
return getEnforcePrototypes();
1275 OP_Utils::evalOpParm(result, thissop,
"vex_strict", cookparms.
getCookTime(), 0);
1283 if (!thissop)
return getExportList();
1285 OP_Utils::evalOpParm(result, thissop,
"vex_exportlist", cookparms.
getCookTime(), 0);
1293 if (!thissop)
return getStrictVariables();
1295 OP_Utils::evalOpParm(result, thissop,
"vex_strictvariables", cookparms.
getCookTime(), 0);
1305 bool myGroupAutobind;
1308 int64 myBindGroupType;
1310 bool myUpdateNormals;
1312 int64 myThreadJobSize;
1320 bool myEnforcePrototypes;
1322 bool myStrictVariables;
const char * getNestParmName(TempIndex fieldnum) const override
ParmType getNestParmType(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, fpreal64 &v)
const UT_Array< GroupBindings > & getGroupBindings() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
GLenum GLuint GLenum GLsizei const GLchar * buf
void setExportList(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
UT_StringHolder opinstBindings_bindparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
exint opGroupBindings(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
SOP_Node * getNode() const
const UT_StringHolder & getMatchAttrib() const
bool getEnforcePrototypes() const
bool operator==(const GroupBindings &src) const
UT_StringHolder opExportList(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opVexOutputMask(const SOP_NodeVerb::CookParms &cookparms) const
exint opBindings(const SOP_NodeVerb::CookParms &cookparms) const
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
UT_StringHolder opVexCWD(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const UT_StringHolder & getVexPrecision() const
GLsizei const GLfloat * value
void setMultiThread(bool val)
UT_StringHolder opMatchAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
void setVexCWD(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & z() noexcept
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
SYS_FORCE_INLINE const char * buffer() const
int64 opVexSource(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getExportList() const
GLuint GLsizei GLsizei * length
An output stream object that owns its own string buffer storage.
void setEnforcePrototypes(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UT_StringHolder bindgroupparm
void setMatchAttrib(const UT_StringHolder &val)
**But if you need a result
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool operator!=(const Bindings &src) const
static void saveData(std::ostream &os, fpreal64 v)
UT_StringHolder createString(const UT_Array< Bindings > &list) const
int64 opNumCount(const SOP_NodeVerb::CookParms &cookparms) const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
UT_StringHolder opGroupBindings_bindgroupparm(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void loadData(UT_IStream &is, bool &v)
void copyFrom(const OP_NodeParms *src) override
static void saveData(std::ostream &os, UT_Matrix3D v)
constexpr SYS_FORCE_INLINE T & x() noexcept
const UT_StringHolder & getScript() const
UT_StringHolder opGroupBindings_bindgroupname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setBindGroupType(int64 val)
void setBindGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Matrix4D v)
GLuint GLsizei const GLuint const GLintptr * offsets
UT_StringHolder createString(const UT_Array< GroupBindings > &list) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
constexpr SYS_FORCE_INLINE T & x() noexcept
void setVexSource(int64 val)
bool opMultiThread(const SOP_NodeVerb::CookParms &cookparms) const
void setThreadJobSize(int64 val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_StringHolder & getBindGroup() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setAutobind(bool val)
bool getUpdateNormals() const
void setGroupBindings(const UT_Array< GroupBindings > &val)
void setStrictVariables(bool val)
const UT_StringHolder & getSelectionGroup() const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
UT_StringHolder opSnippet(const SOP_NodeVerb::CookParms &cookparms) const
bool getGroupAutobind() const
bool opGroupAutobind(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
UT_StringHolder opinstGroupBindings_bindgroupname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void save(std::ostream &os) const
const UT_StringHolder & getVexCWD() const
int64 getBindGroupType() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
constexpr SYS_FORCE_INLINE T & z() noexcept
UT_StringHolder opinstBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opVexPrecision(const SOP_NodeVerb::CookParms &cookparms) const
void setCookInPlace(bool val)
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool isParmColorRamp(exint idx) const override
bool operator!=(const GroupBindings &src) const
exint read(bool *array, exint sz=1)
const OP_GraphProxy * graph() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, UT_StringHolder s)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_StringHolder opBindings_bindparm(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, UT_Vector3D v)
bool opStrictVariables(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void saveData(std::ostream &os, UT_Vector4D v)
const UT_Array< Bindings > & getBindings() const
bool operator==(const SOP_AttribVopParms &src) const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool load(UT_IStream &is)
bool operator==(const Bindings &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void loadData(UT_IStream &is, int64 &v)
void setUpdateNormals(bool val)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
static void loadData(UT_IStream &is, UT_Vector2I &v)
UT_StringHolder opBindGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setSnippet(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
UT_StringHolder opSelectionGroup(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
void setBindings(const UT_Array< Bindings > &val)
bool getStrictVariables() const
exint entries() const
Alias of size(). size() is preferred.
int64 opBindGroupType(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool getCookInPlace() const
bool opUpdateNormals(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void coerceValue(T &result, const S &src) const
void setScript(const UT_StringHolder &val)
UT_StringHolder opinstGroupBindings_bindgroupparm(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
DEP_MicroNode * depnode() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setBindClass(int64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
Utility class for containing a color ramp.
bool operator!=(const SOP_AttribVopParms &src) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
constexpr SYS_FORCE_INLINE T & w() noexcept
SYS_FORCE_INLINE void append(char character)
bool opAutobind(const SOP_NodeVerb::CookParms &cookparms) const
virtual UT_StringHolder baseGetSignature() const
const UT_StringHolder & getVexOutputMask() const
void setSelectionGroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
int64 getVexSource() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
int64 getThreadJobSize() const
fpreal getCookTime() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_StringHolder bindgroupname
const char * findChar(int c) const
UT_StringHolder opScript(const SOP_NodeVerb::CookParms &cookparms) const
bool opCookInPlace(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
int64 opBindClass(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool getMultiThread() const
static void saveData(std::ostream &os, UT_Matrix2D v)
void setVexOutputMask(const UT_StringHolder &val)
void setGroupAutobind(bool val)
int64 opThreadJobSize(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
int64 getNumCount() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setVexPrecision(const UT_StringHolder &val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_StringHolder opBindings_bindname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_StringHolder & getSnippet() const
bool opEnforcePrototypes(const SOP_NodeVerb::CookParms &cookparms) const
int64 getBindClass() const
constexpr SYS_FORCE_INLINE T & y() noexcept
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, int64 v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNumCount(int64 val)
constexpr SYS_FORCE_INLINE T & x() noexcept
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override