23 namespace SOP_MLRegressionInferenceCoreEnums
34 using namespace UT::Literal;
51 using namespace UT::Literal;
68 using namespace UT::Literal;
93 inputpointattribute =
"value"_UTsh;
94 inputvolumename =
"density"_UTsh;
100 if (inputtype != src.
inputtype)
return false;
118 for (
int i = 0; i < list.
entries(); i++)
149 outputpointattribute =
"value"_UTsh;
150 outputvolumename =
"density"_UTsh;
158 if (outputtype != src.
outputtype)
return false;
178 for (
int i = 0; i < list.
entries(); i++)
205 myModelFile =
""_UTsh;
206 raw_myModelFile =
""_UTsh;
208 myOutputs.setSize(1);
222 if (myBatch != src.myBatch)
return false;
223 if (myModelFile != src.myModelFile)
return false;
224 if (raw_myModelFile != src.raw_myModelFile)
return false;
225 if (myInputs != src.myInputs)
return false;
226 if (myOutputs != src.myOutputs)
return false;
227 if (myCuda != src.myCuda)
return false;
245 graph->
evalOpParm(myBatch, nodeidx,
"batch", time, 0);
246 myModelFile =
""_UTsh;
248 graph->
evalOpParm(myModelFile, nodeidx,
"modelfile", time, 0);
249 raw_myModelFile =
""_UTsh;
251 graph->
evalOpParmRaw(raw_myModelFile, nodeidx,
"modelfile", time, 0);
255 graph->
evalOpParm(length, nodeidx,
"inputs", time, 0);
256 if (length < 0) length = 0;
257 myInputs.setSize(length);
264 auto && _curentry = myInputs(i);
266 _curentry.inputtype = 0;
268 graph->
evalOpParmInst(_curentry.inputtype, nodeidx,
"inputtype#", parmidx, offsets, time, 0, 2-1);
269 _curentry.inputpointattribute =
"value"_UTsh;
270 if (
true && ( (
true&&!(((_curentry.inputtype!=0)))) ) )
271 graph->
evalOpParmInst(_curentry.inputpointattribute, nodeidx,
"inputpointattribute#", parmidx, offsets, time, 0, 2-1);
272 _curentry.inputvolumename =
"density"_UTsh;
273 if (
true && ( (
true&&!(((_curentry.inputtype!=1)))) ) )
274 graph->
evalOpParmInst(_curentry.inputvolumename, nodeidx,
"inputvolumename#", parmidx, offsets, time, 0, 2-1);
283 graph->
evalOpParm(length, nodeidx,
"outputs", time, 0);
284 if (length < 0) length = 0;
285 myOutputs.setSize(length);
292 auto && _curentry = myOutputs(i);
294 _curentry.outputtype = 0;
296 graph->
evalOpParmInst(_curentry.outputtype, nodeidx,
"outputtype#", parmidx, offsets, time, 0, 2-1);
297 _curentry.outputpointattribute =
"value"_UTsh;
298 if (
true && ( (
true&&!(((_curentry.outputtype!=0)))) ) )
299 graph->
evalOpParmInst(_curentry.outputpointattribute, nodeidx,
"outputpointattribute#", parmidx, offsets, time, 0, 2-1);
300 _curentry.outputvolumename =
"density"_UTsh;
301 if (
true && ( (
true&&!(((_curentry.outputtype!=1)))) ) )
302 graph->
evalOpParmInst(_curentry.outputvolumename, nodeidx,
"outputvolumename#", parmidx, offsets, time, 0, 2-1);
303 _curentry.outputvolumeresolution =
UT_Vector3I(10,10,10);
304 if (
true && ( (
true&&!(((_curentry.outputtype!=1)))) ) )
305 graph->
evalOpParmInst(_curentry.outputvolumeresolution, nodeidx,
"outputvolumeresolution#", parmidx, offsets, time, 0, 2-1);
306 _curentry.outputtuplesize = 1;
308 graph->
evalOpParmInst(_curentry.outputtuplesize, nodeidx,
"outputtuplesize#", parmidx, offsets, time, 0, 2-1);
316 graph->
evalOpParm(myCuda, nodeidx,
"cuda", time, 0);
332 template <
typename T>
339 if (idx.
size() != instance.
size()+1)
344 coerceValue(value, myBatch);
347 coerceValue(value, myModelFile);
351 coerceValue(value, myInputs.entries());
352 else if (instance[0] < myInputs.entries())
354 auto && _data = myInputs(instance[0]);
358 coerceValue(value, _data.inputtype);
361 coerceValue(value, _data.inputpointattribute);
364 coerceValue(value, _data.inputvolumename);
372 coerceValue(value, myOutputs.entries());
373 else if (instance[0] < myOutputs.entries())
375 auto && _data = myOutputs(instance[0]);
379 coerceValue(value, _data.outputtype);
382 coerceValue(value, _data.outputpointattribute);
385 coerceValue(value, _data.outputvolumename);
388 coerceValue(value, _data.outputvolumeresolution);
391 coerceValue(value, _data.outputtuplesize);
398 coerceValue(value, myCuda);
414 { doGetParmValue(idx, instance, value); }
416 { doGetParmValue(idx, instance, value); }
418 { doGetParmValue(idx, instance, value); }
420 { doGetParmValue(idx, instance, value); }
422 { doGetParmValue(idx, instance, value); }
424 { doGetParmValue(idx, instance, value); }
426 { doGetParmValue(idx, instance, value); }
428 { doGetParmValue(idx, instance, value); }
430 { doGetParmValue(idx, instance, value); }
432 { doGetParmValue(idx, instance, value); }
434 { doGetParmValue(idx, instance, value); }
436 template <
typename T>
443 if (idx.
size() != instance.
size()+1)
448 coerceValue(myBatch, clampMinValue(0, clampMaxValue(1, value ) ));
451 coerceValue(myModelFile, ( ( value ) ));
457 coerceValue(newsize, value);
458 if (newsize < 0) newsize = 0;
459 myInputs.setSize(newsize);
465 myInputs.setSizeIfNeeded(instance[0]+1);
466 auto && _data = myInputs(instance[0]);
470 coerceValue(_data.inputtype, value);
473 coerceValue(_data.inputpointattribute, value);
476 coerceValue(_data.inputvolumename, value);
486 coerceValue(newsize, value);
487 if (newsize < 0) newsize = 0;
488 myOutputs.setSize(newsize);
494 myOutputs.setSizeIfNeeded(instance[0]+1);
495 auto && _data = myOutputs(instance[0]);
499 coerceValue(_data.outputtype, value);
502 coerceValue(_data.outputpointattribute, value);
505 coerceValue(_data.outputvolumename, value);
508 coerceValue(_data.outputvolumeresolution, value);
511 coerceValue(_data.outputtuplesize, value);
518 coerceValue(myCuda, ( ( value ) ));
525 { doSetParmValue(idx, instance, value); }
527 { doSetParmValue(idx, instance, value); }
529 { doSetParmValue(idx, instance, value); }
531 { doSetParmValue(idx, instance, value); }
533 { doSetParmValue(idx, instance, value); }
535 { doSetParmValue(idx, instance, value); }
537 { doSetParmValue(idx, instance, value); }
539 { doSetParmValue(idx, instance, value); }
541 { doSetParmValue(idx, instance, value); }
543 { doSetParmValue(idx, instance, value); }
545 { doSetParmValue(idx, instance, value); }
565 if (fieldnum.
size() < 1)
574 if (fieldnum.
size() == 1)
581 return "inputpointattribute#";
583 return "inputvolumename#";
588 if (fieldnum.
size() == 1)
593 return "outputtype#";
595 return "outputpointattribute#";
597 return "outputvolumename#";
599 return "outputvolumeresolution#";
601 return "outputtuplesize#";
614 if (fieldnum.
size() < 1)
615 return PARM_UNSUPPORTED;
623 if (fieldnum.
size() == 1)
624 return PARM_MULTIPARM;
635 return PARM_UNSUPPORTED;
637 if (fieldnum.
size() == 1)
638 return PARM_MULTIPARM;
653 return PARM_UNSUPPORTED;
658 return PARM_UNSUPPORTED;
694 loadData(is, rampdata);
712 int typelen = colon - data.
buffer();
726 {
int64 iv =
v; UTwrite(os, &iv); }
728 { UTwrite<fpreal64>(os, &
v); }
730 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
732 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
733 UTwrite<fpreal64>(os, &v.
z()); }
735 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
736 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
748 if (s) s->save(ostr);
750 saveData(os, result);
757 ostr << s->getDataTypeToken();
762 saveData(os, result);
766 void save(std::ostream &os)
const
770 saveData(os, myBatch);
771 saveData(os, myModelFile);
772 saveData(os, raw_myModelFile);
775 UTwrite(os, &length);
778 auto && _curentry = myInputs(i);
780 saveData(os, _curentry.inputtype);
781 saveData(os, _curentry.inputpointattribute);
782 saveData(os, _curentry.inputvolumename);
788 UTwrite(os, &length);
791 auto && _curentry = myOutputs(i);
793 saveData(os, _curentry.outputtype);
794 saveData(os, _curentry.outputpointattribute);
795 saveData(os, _curentry.outputvolumename);
796 saveData(os, _curentry.outputvolumeresolution);
797 saveData(os, _curentry.outputtuplesize);
801 saveData(os, myCuda);
814 loadData(is, myBatch);
815 loadData(is, myModelFile);
816 loadData(is, raw_myModelFile);
820 myInputs.setSize(length);
823 auto && _curentry = myInputs(i);
825 loadData(is, _curentry.inputtype);
826 loadData(is, _curentry.inputpointattribute);
827 loadData(is, _curentry.inputvolumename);
834 myOutputs.setSize(length);
837 auto && _curentry = myOutputs(i);
839 loadData(is, _curentry.outputtype);
840 loadData(is, _curentry.outputpointattribute);
841 loadData(is, _curentry.outputvolumename);
842 loadData(is, _curentry.outputvolumeresolution);
843 loadData(is, _curentry.outputtuplesize);
847 loadData(is, myCuda);
857 if (!thissop)
return getBatch();
859 OP_Utils::evalOpParm(result, thissop,
"batch", cookparms.
getCookTime(), 0);
860 return Batch(result);
867 if (!thissop)
return getModelFile();
869 OP_Utils::evalOpParm(result, thissop,
"modelfile", cookparms.
getCookTime(), 0);
877 if (!thissop)
return raw_getModelFile();
879 OP_Utils::evalOpParmRaw(result, thissop,
"modelfile", cookparms.
getCookTime(), 0);
887 if (!thissop)
return getInputs().entries();
889 OP_Utils::evalOpParm(result, thissop,
"inputs", cookparms.
getCookTime(), 0);
893 {
return opinstInputs_inputtype(cookparms, &_idx); }
897 if (!thissop)
return (myInputs(_idx[0]).inputtype);
899 _parmidx[1-1] = _idx[1-1] + 1;
902 OP_Utils::evalOpParmInst(result, thissop,
"inputtype#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
906 {
return opinstInputs_inputpointattribute(cookparms, &_idx); }
910 if (!thissop)
return (myInputs(_idx[0]).inputpointattribute);
912 _parmidx[1-1] = _idx[1-1] + 1;
915 OP_Utils::evalOpParmInst(result, thissop,
"inputpointattribute#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
919 {
return opinstInputs_inputvolumename(cookparms, &_idx); }
923 if (!thissop)
return (myInputs(_idx[0]).inputvolumename);
925 _parmidx[1-1] = _idx[1-1] + 1;
928 OP_Utils::evalOpParmInst(result, thissop,
"inputvolumename#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
937 if (!thissop)
return getOutputs().entries();
939 OP_Utils::evalOpParm(result, thissop,
"outputs", cookparms.
getCookTime(), 0);
943 {
return opinstOutputs_outputtype(cookparms, &_idx); }
947 if (!thissop)
return (myOutputs(_idx[0]).outputtype);
949 _parmidx[1-1] = _idx[1-1] + 1;
952 OP_Utils::evalOpParmInst(result, thissop,
"outputtype#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
956 {
return opinstOutputs_outputpointattribute(cookparms, &_idx); }
960 if (!thissop)
return (myOutputs(_idx[0]).outputpointattribute);
962 _parmidx[1-1] = _idx[1-1] + 1;
965 OP_Utils::evalOpParmInst(result, thissop,
"outputpointattribute#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
969 {
return opinstOutputs_outputvolumename(cookparms, &_idx); }
973 if (!thissop)
return (myOutputs(_idx[0]).outputvolumename);
975 _parmidx[1-1] = _idx[1-1] + 1;
978 OP_Utils::evalOpParmInst(result, thissop,
"outputvolumename#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
982 {
return opinstOutputs_outputvolumeresolution(cookparms, &_idx); }
986 if (!thissop)
return (myOutputs(_idx[0]).outputvolumeresolution);
988 _parmidx[1-1] = _idx[1-1] + 1;
991 OP_Utils::evalOpParmInst(result, thissop,
"outputvolumeresolution#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
995 {
return opinstOutputs_outputtuplesize(cookparms, &_idx); }
999 if (!thissop)
return (myOutputs(_idx[0]).outputtuplesize);
1001 _parmidx[1-1] = _idx[1-1] + 1;
1004 OP_Utils::evalOpParmInst(result, thissop,
"outputtuplesize#", _parmidx, cookparms.
getCookTime(), 0, 2-1);
1013 if (!thissop)
return getCuda();
1015 OP_Utils::evalOpParm(result, thissop,
"cuda", cookparms.
getCookTime(), 0);
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
const UT_StringHolder & getModelFile() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
GLenum GLuint GLenum GLsizei const GLchar * buf
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
int64 opOutputs_outputtuplesize(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
SOP_Node * getNode() const
bool operator!=(const SOP_MLRegressionInferenceCoreParms &src) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void saveData(std::ostream &os, bool v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
ParmType getNestParmType(TempIndex fieldnum) const override
int64 opInputs_inputtype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
exint bread(int32 *buffer, exint asize=1)
SOP_MLRegressionInferenceCoreParms()
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
UT_Vector3I opOutputs_outputvolumeresolution(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_Array< Inputs > & getInputs() const
static void saveData(std::ostream &os, UT_Vector4D v)
static void loadData(UT_IStream &is, int64 &v)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
virtual void evalOpParmRaw(UT_StringHolder &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
constexpr SYS_FORCE_INLINE T & z() noexcept
const char * getNestParmName(TempIndex fieldnum) const override
SYS_FORCE_INLINE const char * buffer() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setModelFile(const UT_StringHolder &val)
bool operator!=(const Outputs &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
GLuint GLsizei GLsizei * length
exint opOutputs(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, fpreal64 &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
void save(std::ostream &os) const
**But if you need a result
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
UT_Vector3T< int64 > UT_Vector3I
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
bool operator==(const Outputs &src) const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void raw_setModelFile(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
constexpr SYS_FORCE_INLINE T & x() noexcept
void setInputs(const UT_Array< Inputs > &val)
int64 opOutputs_outputtype(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
int64 opinstOutputs_outputtuplesize(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
GLuint GLsizei const GLuint const GLintptr * offsets
static void loadData(UT_IStream &is, UT_Vector3D &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_StringHolder opInputs_inputpointattribute(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
UT_StringHolder outputpointattribute
const UT_Array< Outputs > & getOutputs() const
bool load(UT_IStream &is)
void setOutputs(const UT_Array< Outputs > &val)
exint opInputs(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
UT_StringHolder opinstInputs_inputvolumename(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
constexpr SYS_FORCE_INLINE T & z() noexcept
const UT_StringHolder & raw_getModelFile() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
exint read(bool *array, exint sz=1)
const OP_GraphProxy * graph() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
SYS_FORCE_INLINE UT_StringHolder getToken(Batch enum_value)
int64 opinstInputs_inputtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder opinstOutputs_outputpointattribute(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder createString(const UT_Array< Inputs > &list) 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
bool operator==(const SOP_MLRegressionInferenceCoreParms &src) const
static void saveData(std::ostream &os, UT_Vector3D v)
UT_StringHolder opInputs_inputvolumename(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
UT_Vector3I opinstOutputs_outputvolumeresolution(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, UT_StringHolder &v)
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
static void saveData(std::ostream &os, fpreal64 v)
static void saveData(std::ostream &os, UT_StringHolder s)
UT_StringHolder createString(const UT_Array< Outputs > &list) const
GT_API const UT_StringHolder version
exint entries() const
Alias of size(). size() is preferred.
Batch opBatch(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
int64 opinstOutputs_outputtype(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void saveData(std::ostream &os, int64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void copyFrom(const OP_NodeParms *src) override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
UT_StringHolder opOutputs_outputvolumename(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder raw_opModelFile(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static void loadData(UT_IStream &is, UT_Vector4I &v)
DEP_MicroNode * depnode() const
LeafData & operator=(const LeafData &)=delete
UT_StringHolder outputvolumename
Utility class for containing a color ramp.
UT_StringHolder opOutputs_outputpointattribute(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
constexpr SYS_FORCE_INLINE T & w() noexcept
SYS_FORCE_INLINE void append(char character)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal getCookTime() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
UT_Vector3I outputvolumeresolution
const char * findChar(int c) const
UT_StringHolder opModelFile(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opinstOutputs_outputvolumename(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void loadData(UT_IStream &is, bool &v)
UT_StringHolder opinstInputs_inputpointattribute(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
bool opCuda(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
constexpr SYS_FORCE_INLINE T & y() noexcept
static void saveData(std::ostream &os, UT_Vector2D v)
bool isParmColorRamp(exint idx) const override
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
constexpr SYS_FORCE_INLINE T & x() noexcept