23 namespace SOP_AttribFromParmEnums
 
   36         using namespace UT::Literal;
 
   58         myCategory = 
"*"_UTsh;
 
   59         myName = 
"parms"_UTsh;
 
   60         myParmfilter = 
"*"_UTsh;
 
   61         myFlattenmultiparm = 
false;
 
   62         myFlattenramp = 
false;
 
   63         myEvaluateparms = 
true;
 
   64         myChannelPrims = 
false;
 
   65         myPackLockGeometry = 
true;
 
   66         myExplicitWires = 
false;
 
   67         myExplicitPorts = 
false;
 
   68         myUpdateOnMove = 
false;
 
   69         myUpdateOnRename = 
false;
 
   82         if (myMethod != src.myMethod) 
return false;
 
   83         if (myNodepath != src.myNodepath) 
return false;
 
   84         if (myCategory != src.myCategory) 
return false;
 
   85         if (myName != src.myName) 
return false;
 
   86         if (myParmfilter != src.myParmfilter) 
return false;
 
   87         if (myFlattenmultiparm != src.myFlattenmultiparm) 
return false;
 
   88         if (myFlattenramp != src.myFlattenramp) 
return false;
 
   89         if (myEvaluateparms != src.myEvaluateparms) 
return false;
 
   90         if (myChannelPrims != src.myChannelPrims) 
return false;
 
   91         if (myPackLockGeometry != src.myPackLockGeometry) 
return false;
 
   92         if (myExplicitWires != src.myExplicitWires) 
return false;
 
   93         if (myExplicitPorts != src.myExplicitPorts) 
return false;
 
   94         if (myUpdateOnMove != src.myUpdateOnMove) 
return false;
 
   95         if (myUpdateOnRename != src.myUpdateOnRename) 
return false;
 
  114             graph->
evalOpParm(myMethod, nodeidx, 
"method", time, graph->
isDirect()?
nullptr:depnode);
 
  115         myNodepath = 
""_UTsh;
 
  117             graph->
evalOpParm(myNodepath, nodeidx, 
"nodepath", time, graph->
isDirect()?
nullptr:depnode);
 
  118         myCategory = 
"*"_UTsh;
 
  120             graph->
evalOpParm(myCategory, nodeidx, 
"category", time, graph->
isDirect()?
nullptr:depnode);
 
  121         myName = 
"parms"_UTsh;
 
  124         myParmfilter = 
"*"_UTsh;
 
  126             graph->
evalOpParm(myParmfilter, nodeidx, 
"parmfilter", time, graph->
isDirect()?
nullptr:depnode);
 
  127         myFlattenmultiparm = 
false;
 
  129             graph->
evalOpParm(myFlattenmultiparm, nodeidx, 
"flattenmultiparm", time, graph->
isDirect()?
nullptr:depnode);
 
  130         myFlattenramp = 
false;
 
  131         if (
true && ( (
true&&!(((getFlattenmultiparm()==1)))) ) )
 
  132             graph->
evalOpParm(myFlattenramp, nodeidx, 
"flattenramp", time, graph->
isDirect()?
nullptr:depnode);
 
  133         myEvaluateparms = 
true;
 
  135             graph->
evalOpParm(myEvaluateparms, nodeidx, 
"evaluateparms", time, graph->
isDirect()?
nullptr:depnode);
 
  136         myChannelPrims = 
false;
 
  137         if (
true && ( (
true&&!(((
int64(getMethod())==0))||((getEvaluateparms()==1)))) ) )
 
  138             graph->
evalOpParm(myChannelPrims, nodeidx, 
"channelprims", time, graph->
isDirect()?
nullptr:depnode);
 
  139         myPackLockGeometry = 
true;
 
  141             graph->
evalOpParm(myPackLockGeometry, nodeidx, 
"packlockgeometry", time, graph->
isDirect()?
nullptr:depnode);
 
  142         myExplicitWires = 
false;
 
  144             graph->
evalOpParm(myExplicitWires, nodeidx, 
"explicitwires", time, graph->
isDirect()?
nullptr:depnode);
 
  145         myExplicitPorts = 
false;
 
  147             graph->
evalOpParm(myExplicitPorts, nodeidx, 
"explicitports", time, graph->
isDirect()?
nullptr:depnode);
 
  148         myUpdateOnMove = 
false;
 
  150             graph->
evalOpParm(myUpdateOnMove, nodeidx, 
"updateonmove", time, graph->
isDirect()?
nullptr:depnode);
 
  151         myUpdateOnRename = 
false;
 
  153             graph->
evalOpParm(myUpdateOnRename, nodeidx, 
"updateonrename", time, graph->
isDirect()?
nullptr:depnode);
 
  169     template <
typename T>
 
  176         if (idx.
size() != instance.
size()+1)
 
  181                 coerceValue(value, myMethod);
 
  184                 coerceValue(value, myNodepath);
 
  187                 coerceValue(value, myCategory);
 
  190                 coerceValue(value, myName);
 
  193                 coerceValue(value, myParmfilter);
 
  196                 coerceValue(value, myFlattenmultiparm);
 
  199                 coerceValue(value, myFlattenramp);
 
  202                 coerceValue(value, myEvaluateparms);
 
  205                 coerceValue(value, myChannelPrims);
 
  208                 coerceValue(value, myPackLockGeometry);
 
  211                 coerceValue(value, myExplicitWires);
 
  214                 coerceValue(value, myExplicitPorts);
 
  217                 coerceValue(value, myUpdateOnMove);
 
  220                 coerceValue(value, myUpdateOnRename);
 
  236     { doGetParmValue(idx, instance, value); }
 
  238     { doGetParmValue(idx, instance, value); }
 
  240     { doGetParmValue(idx, instance, value); }
 
  242     { doGetParmValue(idx, instance, value); }
 
  244     { doGetParmValue(idx, instance, value); }
 
  246     { doGetParmValue(idx, instance, value); }
 
  248     { doGetParmValue(idx, instance, value); }
 
  250     { doGetParmValue(idx, instance, value); }
 
  252     { doGetParmValue(idx, instance, value); }
 
  254     { doGetParmValue(idx, instance, value); }
 
  256     { doGetParmValue(idx, instance, value); }
 
  258     template <
typename T>
 
  265         if (idx.
size() != instance.
size()+1)
 
  270                 coerceValue(myMethod, clampMinValue(0,  clampMaxValue(3,  value ) ));
 
  273                 coerceValue(myNodepath, ( ( value ) ));
 
  276                 coerceValue(myCategory, ( ( value ) ));
 
  279                 coerceValue(myName, ( ( value ) ));
 
  282                 coerceValue(myParmfilter, ( ( value ) ));
 
  285                 coerceValue(myFlattenmultiparm, ( ( value ) ));
 
  288                 coerceValue(myFlattenramp, ( ( value ) ));
 
  291                 coerceValue(myEvaluateparms, ( ( value ) ));
 
  294                 coerceValue(myChannelPrims, ( ( value ) ));
 
  297                 coerceValue(myPackLockGeometry, ( ( value ) ));
 
  300                 coerceValue(myExplicitWires, ( ( value ) ));
 
  303                 coerceValue(myExplicitPorts, ( ( value ) ));
 
  306                 coerceValue(myUpdateOnMove, ( ( value ) ));
 
  309                 coerceValue(myUpdateOnRename, ( ( value ) ));
 
  316     { doSetParmValue(idx, instance, value); }
 
  318     { doSetParmValue(idx, instance, value); }
 
  320     { doSetParmValue(idx, instance, value); }
 
  322     { doSetParmValue(idx, instance, value); }
 
  324     { doSetParmValue(idx, instance, value); }
 
  326     { doSetParmValue(idx, instance, value); }
 
  328     { doSetParmValue(idx, instance, value); }
 
  330     { doSetParmValue(idx, instance, value); }
 
  332     { doSetParmValue(idx, instance, value); }
 
  334     { doSetParmValue(idx, instance, value); }
 
  336     { doSetParmValue(idx, instance, value); }
 
  352         if (fieldnum.
size() < 1)
 
  367                 return "flattenmultiparm";
 
  369                 return "flattenramp";
 
  371                 return "evaluateparms";
 
  373                 return "channelprims";
 
  375                 return "packlockgeometry";
 
  377                 return "explicitwires";
 
  379                 return "explicitports";
 
  381                 return "updateonmove";
 
  383                 return "updateonrename";
 
  391         if (fieldnum.
size() < 1)
 
  392             return PARM_UNSUPPORTED;
 
  425         return PARM_UNSUPPORTED;
 
  461         loadData(is, rampdata);
 
  479                 int             typelen = colon - data.
buffer();
 
  493     { 
int64 iv = 
v; UTwrite(os, &iv); }
 
  495     { UTwrite<fpreal64>(os, &
v); }
 
  497     { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
 
  499     { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
 
  500       UTwrite<fpreal64>(os, &v.
z()); }
 
  502     { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
 
  503       UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
 
  515         if (s) s->save(ostr);
 
  517         saveData(os, result);
 
  524             ostr << s->getDataTypeToken();
 
  529         saveData(os, result);
 
  533     void         save(std::ostream &os)
 const 
  537         saveData(os, myMethod);
 
  538         saveData(os, myNodepath);
 
  539         saveData(os, myCategory);
 
  540         saveData(os, myName);
 
  541         saveData(os, myParmfilter);
 
  542         saveData(os, myFlattenmultiparm);
 
  543         saveData(os, myFlattenramp);
 
  544         saveData(os, myEvaluateparms);
 
  545         saveData(os, myChannelPrims);
 
  546         saveData(os, myPackLockGeometry);
 
  547         saveData(os, myExplicitWires);
 
  548         saveData(os, myExplicitPorts);
 
  549         saveData(os, myUpdateOnMove);
 
  550         saveData(os, myUpdateOnRename);
 
  563         loadData(is, myMethod);
 
  564         loadData(is, myNodepath);
 
  565         loadData(is, myCategory);
 
  566         loadData(is, myName);
 
  567         loadData(is, myParmfilter);
 
  568         loadData(is, myFlattenmultiparm);
 
  569         loadData(is, myFlattenramp);
 
  570         loadData(is, myEvaluateparms);
 
  571         loadData(is, myChannelPrims);
 
  572         loadData(is, myPackLockGeometry);
 
  573         loadData(is, myExplicitWires);
 
  574         loadData(is, myExplicitPorts);
 
  575         loadData(is, myUpdateOnMove);
 
  576         loadData(is, myUpdateOnRename);
 
  586         if (!thissop) 
return getMethod();
 
  588         OP_Utils::evalOpParm(result, thissop, 
"method", cookparms.
getCookTime(), 0);
 
  596         if (!thissop) 
return getNodepath();
 
  598         OP_Utils::evalOpParm(result, thissop, 
"nodepath", cookparms.
getCookTime(), 0);
 
  606         if (!thissop) 
return getCategory();
 
  608         OP_Utils::evalOpParm(result, thissop, 
"category", cookparms.
getCookTime(), 0);
 
  616         if (!thissop) 
return getName();
 
  618         OP_Utils::evalOpParm(result, thissop, 
"name", cookparms.
getCookTime(), 0);
 
  626         if (!thissop) 
return getParmfilter();
 
  628         OP_Utils::evalOpParm(result, thissop, 
"parmfilter", cookparms.
getCookTime(), 0);
 
  636         if (!thissop) 
return getFlattenmultiparm();
 
  638         OP_Utils::evalOpParm(result, thissop, 
"flattenmultiparm", cookparms.
getCookTime(), 0);
 
  646         if (!thissop) 
return getFlattenramp();
 
  648         OP_Utils::evalOpParm(result, thissop, 
"flattenramp", cookparms.
getCookTime(), 0);
 
  656         if (!thissop) 
return getEvaluateparms();
 
  658         OP_Utils::evalOpParm(result, thissop, 
"evaluateparms", cookparms.
getCookTime(), 0);
 
  666         if (!thissop) 
return getChannelPrims();
 
  668         OP_Utils::evalOpParm(result, thissop, 
"channelprims", cookparms.
getCookTime(), 0);
 
  676         if (!thissop) 
return getPackLockGeometry();
 
  678         OP_Utils::evalOpParm(result, thissop, 
"packlockgeometry", cookparms.
getCookTime(), 0);
 
  686         if (!thissop) 
return getExplicitWires();
 
  688         OP_Utils::evalOpParm(result, thissop, 
"explicitwires", cookparms.
getCookTime(), 0);
 
  696         if (!thissop) 
return getExplicitPorts();
 
  698         OP_Utils::evalOpParm(result, thissop, 
"explicitports", cookparms.
getCookTime(), 0);
 
  706         if (!thissop) 
return getUpdateOnMove();
 
  708         OP_Utils::evalOpParm(result, thissop, 
"updateonmove", cookparms.
getCookTime(), 0);
 
  716         if (!thissop) 
return getUpdateOnRename();
 
  718         OP_Utils::evalOpParm(result, thissop, 
"updateonrename", cookparms.
getCookTime(), 0);
 
  728     bool myFlattenmultiparm;
 
  730     bool myEvaluateparms;
 
  732     bool myPackLockGeometry;
 
  733     bool myExplicitWires;
 
  734     bool myExplicitPorts;
 
  736     bool myUpdateOnRename;
 
bool load(UT_IStream &is)
 
static void loadData(UT_IStream &is, bool &v)
 
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
 
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
 
static void saveData(std::ostream &os, UT_Matrix3D v)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
 
SOP_Node * getNode() const 
 
bool getExplicitPorts() const 
 
bool opUpdateOnRename(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool getUpdateOnMove() const 
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
 
exint bread(int32 *buffer, exint asize=1)
 
static void saveData(std::ostream &os, PRM_DataItemHandle s)
 
void setName(const UT_StringHolder &val)
 
SYS_FORCE_INLINE UT_StringHolder getToken(Method enum_value)
 
GT_API const UT_StringHolder time
 
constexpr SYS_FORCE_INLINE T & y() noexcept
 
GLsizei const GLfloat * value
 
static void loadData(UT_IStream &is, UT_Vector2I &v)
 
const OP_Context & context() const 
 
static void loadData(UT_IStream &is, int64 &v)
 
constexpr SYS_FORCE_INLINE T & z() noexcept
 
SYS_FORCE_INLINE const char * buffer() const 
 
void copyFrom(const OP_NodeParms *src) override
 
const UT_StringHolder & getCategory() const 
 
UT_StringHolder opName(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setExplicitPorts(bool val)
 
An output stream object that owns its own string buffer storage. 
 
static void loadData(UT_IStream &is, fpreal64 &v)
 
void setUpdateOnRename(bool val)
 
void setCategory(const UT_StringHolder &val)
 
**But if you need a result
 
bool opExplicitPorts(const SOP_NodeVerb::CookParms &cookparms) const 
 
static void saveData(std::ostream &os, UT_Vector2D v)
 
static void saveData(std::ostream &os, int64 v)
 
static void saveData(std::ostream &os, fpreal64 v)
 
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
 
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer. 
 
bool isParmColorRamp(exint idx) const override
 
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
 
constexpr SYS_FORCE_INLINE T & x() noexcept
 
static void loadData(UT_IStream &is, UT_StringHolder &v)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
 
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
 
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
 
constexpr SYS_FORCE_INLINE T & x() noexcept
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
 
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
 
const UT_StringHolder & getName() const 
 
bool opEvaluateparms(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
 
void setEvaluateparms(bool val)
 
Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
 
bool getFlattenmultiparm() 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
 
PXL_API const char * getName(const ColorSpace *space)
Return the name of the color space. 
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
 
const OP_GraphProxy * graph() const 
 
static void saveData(std::ostream &os, UT_Vector3D v)
 
static void loadData(UT_IStream &is, UT_Vector4I &v)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
 
void setExplicitWires(bool val)
 
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
 
bool opExplicitWires(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
 
void setChannelPrims(bool val)
 
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const 
 
void setPackLockGeometry(bool val)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
 
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
 
bool operator==(const SOP_AttribFromParmParms &src) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
 
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
 
const UT_StringHolder & getNodepath() const 
 
static void saveData(std::ostream &os, bool v)
 
const char * getNestParmName(TempIndex fieldnum) const override
 
bool getExplicitWires() const 
 
void saveBinary(std::ostream &os) const 
Save string to binary stream. 
 
void setMethod(Method val)
 
GT_API const UT_StringHolder version
 
static void saveData(std::ostream &os, UT_Vector4D v)
 
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
 
exint getNestNumParms(TempIndex idx) const override
 
UT_StringHolder opNodepath(const SOP_NodeVerb::CookParms &cookparms) const 
 
ParmType getNestParmType(TempIndex fieldnum) const override
 
const UT_StringHolder & getParmfilter() const 
 
bool operator!=(const SOP_AttribFromParmParms &src) const 
 
bool opUpdateOnMove(const SOP_NodeVerb::CookParms &cookparms) const 
 
UT_StringHolder opCategory(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
 
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
 
void loadFromOpSubclass(const LoadParms &loadparms) override
 
DEP_MicroNode * depnode() const 
 
bool getFlattenramp() const 
 
LeafData & operator=(const LeafData &)=delete
 
Utility class for containing a color ramp. 
 
void setNodepath(const UT_StringHolder &val)
 
bool opPackLockGeometry(const SOP_NodeVerb::CookParms &cookparms) const 
 
constexpr SYS_FORCE_INLINE T & w() noexcept
 
static void loadData(UT_IStream &is, UT_Matrix4D &v)
 
bool opChannelPrims(const SOP_NodeVerb::CookParms &cookparms) const 
 
virtual UT_StringHolder baseGetSignature() const 
 
static void loadData(UT_IStream &is, UT_Matrix2D &v)
 
bool getUpdateOnRename() const 
 
static void loadData(UT_IStream &is, UT_Matrix3D &v)
 
static void loadData(UT_IStream &is, UT_Vector3I &v)
 
bool opFlattenmultiparm(const SOP_NodeVerb::CookParms &cookparms) const 
 
fpreal getCookTime() const 
 
UT_StringHolder opParmfilter(const SOP_NodeVerb::CookParms &cookparms) const 
 
static void loadData(UT_IStream &is, UT_Vector4D &v)
 
static void loadData(UT_IStream &is, UT_Vector3D &v)
 
bool getEvaluateparms() const 
 
void setParmfilter(const UT_StringHolder &val)
 
const char * findChar(int c) const 
 
bool opFlattenramp(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setUpdateOnMove(bool val)
 
static void saveData(std::ostream &os, UT_Matrix2D v)
 
static void loadData(UT_IStream &is, UT_Vector2D &v)
 
bool getPackLockGeometry() const 
 
constexpr SYS_FORCE_INLINE T & y() noexcept
 
void setFlattenramp(bool val)
 
virtual bool isDirect() const =0
Direct proxies mirror actual nodes: 
 
static void saveData(std::ostream &os, UT_Matrix4D v)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
 
void save(std::ostream &os) const 
 
SOP_AttribFromParmParms()
 
bool getChannelPrims() const 
 
constexpr SYS_FORCE_INLINE T & y() noexcept
 
void setFlattenmultiparm(bool val)
 
SYS_FORCE_INLINE bool isstring() const 
 
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
 
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
 
static void saveData(std::ostream &os, UT_StringHolder s)
 
constexpr SYS_FORCE_INLINE T & x() noexcept