14 #ifndef __PRM_ParmList__
15 #define __PRM_ParmList__
39 class PRM_OpSharedInfo;
72 int *tdepend,
int *enable ) = 0;
73 virtual bool setFloatOverride(
int data_idx,
fpreal time,
74 int *tdepend,
int *enable,
fpreal newvalue ) = 0;
76 virtual exint getIntOverride(
int data_idx,
fpreal time,
77 int *tdepend,
int *enable ) = 0;
78 virtual bool setIntOverride(
int data_idx,
fpreal time,
79 int *tdepend,
int *enable,
exint newvalue ) = 0;
82 int *tdepend,
int *enable ) = 0;
83 virtual bool setStringOverride(
int data_idx,
fpreal time,
103 bool build_delayed_defaults);
113 bool leavedefaultsunchanged);
122 { myChannelGroupPtr = thechgroupptr; }
124 {
return myChannelGroupPtr; }
133 int allDefaults()
const;
138 void buildDelayedDefaults(
bool clear_channels =
true );
149 return (theindex >= 0 && theindex < myParms.entries())
155 return (theindex >= 0 && theindex < myParms.entries())
161 int getParmIndex(
const PRM_Parm *parm)
const;
169 int *vecidx =
nullptr)
const
171 int i = getParmIndexFromChannel(
172 channel, vecidx,
true);
180 int *vecidx =
nullptr)
182 int i = getParmIndexFromChannel(
183 channel, vecidx,
true);
190 bool allow_alias =
true)
const
192 return getParmIndexFromChannel(
193 channel_name, &subidx, allow_alias);
195 int getParmIndexFromChannel(
const UT_StringRef &channel,
197 bool allow_alias)
const;
201 void clearAllDirtyFlags();
202 int areAllFlagsClean()
const;
203 void clearAllUndoSavedFlags();
207 void revertValuesToFactoryDefaults();
216 void updateSpareParmTemplates(
PRM_Template *newtemplates,
217 bool leavedefaultsunchanged);
219 void saveSingle(
PRM_Parm *, std::ostream &os,
221 void save(std::ostream &os,
222 bool binary,
bool compiled)
const;
227 void saveSingleUndoData(
const PRM_Parm *parm,
235 void saveChannelAliases(std::ostream &os,
bool binary);
239 bool hasChannelAliases()
const;
243 bool hasSpareOrMultiInstanceParms()
const;
245 void clearAndDestroyChannels();
246 int hasAnyChannels();
248 void reloadChannelPtrs();
257 if (mask != myPermissions)
259 myPermissions =
mask;
264 {
return myAssetPermissionMask; }
267 if (mask != myAssetPermissionMask)
269 myAssetPermissionMask =
mask;
278 int canAccessIgnoringAssetMask(
281 int canAccessCheckingOnlyAssetMask(
285 static void beginLoading();
286 static void endLoading();
287 static bool isLoading();
289 void hardenChanges(
fpreal time,
bool forceflag = 0,
298 myEventObject =
data;
299 myEventHandler = handler;
308 int checkTimeDependence(
bool evaluate_channels =
false);
312 { myTimeDependent=onOff;}
315 {
return myTimeDependent; }
318 { myCookTimeDependent=onOff;}
321 {
return myCookTimeDependent; }
327 &myContextOptionDepsLock).insert(opt); }
330 myContextOptionDepsLock);
331 myContextOptionDeps.reset(); }
334 myContextOptionDeps); }
338 myCookContextOptionDeps,
339 &myContextOptionDepsLock).insert(opt); }
342 myContextOptionDepsLock);
343 myCookContextOptionDeps.reset(); }
346 myCookContextOptionDeps); }
351 { theORCallback = impl; }
353 void pushVariables();
356 int findString(
const char *str,
bool fullword,
357 bool usewildcards)
const;
358 int changeString(
const char *from,
const char *to,
361 bool notifyVarChange(
const char *varname);
365 {
return myNumSendExtra; }
367 { myNumSendExtra +=
n; }
378 { myAutoTakeUndoSavedFlag =
true; }
381 void appendMultiParms(
const PRM_Multi &multiparmowner,
386 void removeAndDestroyParm(
int index);
388 void insertMultiParmItem(
int index,
int i);
389 void removeMultiParmItem(
int index,
int i);
393 void clearParmOwner();
399 bool checkMultiParmInstance(
const UT_StringRef &parmname,
406 bool setChannelAlias(
PRM_Parm &parm,
int subindex,
409 int64 getMemoryUsage(
bool inclusive)
const;
412 {
return myAddRemoveCount; }
414 { myAddRemoveCount =
count; }
442 bool hasParmMicroNode(
int parm_idx)
const;
447 void propagateDirtyParmMicroNodes(
453 void clearMicroNodeInputs();
454 void getParmInputList(
456 bool cooking_only =
false)
const;
457 int getNumParmInputs()
const;
458 void getParmOutputList(
460 bool cooking_only =
false)
const;
465 int indent_level=0)
const;
466 int64 getMicroNodesMemoryUsage()
const;
472 static void removeOpSharedInfo(
const UT_StringRef &optoken);
476 static void renameOpSharedInfo(
const UT_StringRef &oldoptoken,
485 ->getParmPtrInst(parm_name, instance, nest_level, unused);
494 ->getParmPtrInst(parm_name, instance, nest_level, theparmidx);
499 int nest_level)
const
502 return getParmPtrInst(parm_name, instance, nest_level, unused);
507 int &theparmidx)
const;
518 void moveMultiParmAlias(
int index,
int i,
bool up);
525 bool try_again=
true);
531 bool leavedefaultsunchanged);
533 static bool shouldCopyOnAdopt(
536 bool leavedefaultsunchanged);
546 bool leavedefaultsunchanged);
548 void adoptChannelAlias(
558 const PRM_Multi &multiparmowner);
563 bool allow_alias)
const;
568 unsigned long myAddRemoveCount;
599 unsigned myPermissions;
601 unsigned myAssetPermissionMask;
617 bool myTimeDependent;
618 bool myCookTimeDependent;
620 bool myUndoSavedFlag;
621 bool myAutoTakeUndoSavedFlag;
625 static int thePRMLoadCount;
void setChannelGroupPtr(CH_Collection *thechgroupptr)
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
const PRM_Parm * getParmPtrInst(const UT_StringRef &parm_name, const int *instance, int nest_level) const
const PRM_Parm * getParmPtr(const int theindex) const
SYS_FORCE_INLINE void setCookTimeDependent(bool onOff)
UT_UniquePtr< DEP_ContextOptionDeps > DEP_ContextOptionDepsPtr
void setUserMask(unsigned m)
GT_API const UT_StringHolder time
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
GLsizei const GLfloat * value
DEP_API const DEP_ContextOptionDeps & DEPgetContextOptionDepsFromPtr(const DEP_ContextOptionDepsPtr &ptr)
const GLuint GLenum const void * binary
UT_ConcurrentSet< UT_StringHolder > DEP_ContextOptionDeps
SYS_FORCE_INLINE PRM_Parm * getParmPtrFromChannel(const UT_StringRef &channel, int *vecidx=nullptr)
void setEventHandler(void *data, void(*handler)(void *, CH_CHANGE_TYPE, int))
GLsizei const GLchar *const * path
static void setORCallback(PRM_ORCallback *impl)
unsigned getAssetPermissionMask() const
SYS_FORCE_INLINE bool getCookTimeDependent() const
void bumpNumSendExtra(int n)
unsigned getPermissions() const
unsigned long getAddRemoveCount() const
Read, write, execute user.
SYS_FORCE_INLINE const PRM_Parm * getParmPtrFromChannel(const UT_StringRef &channel, int *vecidx=nullptr) const
void setAddRemoveCount(unsigned long count)
int getNumSendExtra() const
This used to be called getSendExtraEvent()
GLint GLint GLsizei GLint GLenum GLenum type
PRM_ParmOwner * getParmOwner() const
PRM_API const PRM_Type PRM_TYPE_ZERO
void addContextOptionDep(const UT_StringHolder &opt)
int getParmIndex(const UT_StringRef &channel_name, int &subidx, bool allow_alias=true) const
const UT_StringRef & getTokenRef() const
Use this for hash tables, might be the sentinel value.
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
SYS_FORCE_INLINE bool getTimeDependent() const
UT_Function< void(DEP_MicroNode &, DEP_MicroNode &) > Visitor
PRM_Parm * getParmPtr(const int theindex)
void addCookContextOptionDep(const UT_StringHolder &opt)
PRM_PresetInfo * getPresetInfo() const
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class.
const DEP_ContextOptionDeps & getContextOptionDeps() const
PRM_Parm * getParmPtrInst(const UT_StringRef &parm_name, const int *instance, int nest_level, int &theparmidx)
static PRM_ORCallback * getORCallback()
GLuint const GLchar * name
void clearContextOptionDeps()
void setPermissions(unsigned mask)
bool getUndoSavedFlag() const
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
void setAutoTakeUndoSavedFlag()
void setAssetPermissionMask(unsigned mask)
SIM_API const UT_StringHolder force
int getParmIndex(const PRM_Name &name) const
const DEP_ContextOptionDeps & getCookContextOptionDeps() const
LeafData & operator=(const LeafData &)=delete
Read, write, execute all.
Read, write, execute group.
DEP_API DEP_ContextOptionDeps & DEPcreateContextOptionDepsFromPtr(DEP_ContextOptionDepsPtr &ptr, DEP_ContextOptionDepsLock *lock=nullptr)
void clearCookContextOptionDeps()
unsigned getUserMask() const
CH_Collection * getChannelGroupPtr() const
PRM_Parm * getParmPtrInst(const UT_StringRef &parm_name, const int *instance, int nest_level)
SYS_FORCE_INLINE bool isstring() const
SYS_FORCE_INLINE void setTimeDependent(bool onOff)