14 #ifndef __PRM_ParmList__
15 #define __PRM_ParmList__
38 class PRM_OpSharedInfo;
67 int *tdepend,
int *
enable ) = 0;
68 virtual bool setFloatOverride(
int data_idx,
fpreal time,
72 int *tdepend,
int *
enable ) = 0;
73 virtual bool setIntOverride(
int data_idx,
fpreal time,
77 int *tdepend,
int *
enable ) = 0;
78 virtual bool setStringOverride(
int data_idx,
fpreal time,
99 bool leavedefaultsunchanged);
108 { myChannelGroupPtr = thechgroupptr; }
110 {
return myChannelGroupPtr; }
119 int allDefaults()
const;
124 void buildDelayedDefaults(
bool clear_channels =
true );
135 return (theindex >= 0 && theindex < myParms.entries())
141 return (theindex >= 0 && theindex < myParms.entries())
147 int getParmIndex(
const PRM_Parm *parm)
const;
155 int *vecidx =
nullptr)
const
157 int i = getParmIndexFromChannel(
158 channel, vecidx,
true);
166 int *vecidx =
nullptr)
168 int i = getParmIndexFromChannel(
169 channel, vecidx,
true);
176 bool allow_alias =
true)
const
178 return getParmIndexFromChannel(
179 channel_name, &subidx, allow_alias);
181 int getParmIndexFromChannel(
const UT_StringRef &channel,
183 bool allow_alias)
const;
187 void clearAllDirtyFlags();
188 int areAllFlagsClean()
const;
189 void clearAllUndoSavedFlags();
193 void revertValuesToFactoryDefaults();
202 void updateSpareParmTemplates(
PRM_Template *newtemplates,
203 bool leavedefaultsunchanged);
205 void saveSingle(
PRM_Parm *, std::ostream &os,
207 void save(std::ostream &os,
208 int binary,
bool compiled)
const;
213 void saveSingleUndoData(
const PRM_Parm *parm,
221 void saveChannelAliases(std::ostream &os,
int binary);
225 bool hasChannelAliases()
const;
227 void clearAndDestroyChannels();
228 int hasAnyChannels();
230 void reloadChannelPtrs();
239 if (mask != myPermissions)
241 myPermissions =
mask;
246 {
return myAssetPermissionMask; }
249 if (mask != myAssetPermissionMask)
251 myAssetPermissionMask =
mask;
260 int canAccessIgnoringAssetMask(
263 int canAccessCheckingOnlyAssetMask(
267 static void beginLoading();
268 static void endLoading();
269 static bool isLoading();
271 void hardenChanges(
fpreal time,
bool forceflag = 0,
280 myEventObject =
data;
281 myEventHandler = handler;
290 int checkTimeDependence(
bool evaluate_channels =
false);
294 { myTimeDependent=onOff;}
297 {
return myTimeDependent; }
300 { myCookTimeDependent=onOff;}
303 {
return myCookTimeDependent; }
309 &myContextOptionDepsLock).insert(opt); }
312 myContextOptionDepsLock);
313 myContextOptionDeps.reset(); }
316 myContextOptionDeps); }
320 myCookContextOptionDeps,
321 &myContextOptionDepsLock).insert(opt); }
324 myContextOptionDepsLock);
325 myCookContextOptionDeps.reset(); }
328 myCookContextOptionDeps); }
333 { theORCallback = impl; }
335 void pushVariables();
338 int findString(
const char *str,
bool fullword,
339 bool usewildcards)
const;
340 int changeString(
const char *from,
const char *to,
343 bool notifyVarChange(
const char *varname);
347 {
return myNumSendExtra; }
349 { myNumSendExtra +=
n; }
359 { myAutoTakeUndoSavedFlag =
true; }
362 void appendMultiParms(
const PRM_Multi &multiparmowner,
367 void removeAndDestroyParm(
int index);
369 void insertMultiParmItem(
int index,
int i);
370 void removeMultiParmItem(
int index,
int i);
374 void clearParmOwner();
380 bool checkMultiParmInstance(
const UT_StringRef &parmname,
387 bool setChannelAlias(
PRM_Parm &parm,
int subindex,
390 int64 getMemoryUsage(
bool inclusive)
const;
393 {
return myAddRemoveCount; }
395 { myAddRemoveCount =
count; }
418 bool hasParmMicroNode(
int parm_idx)
const;
423 void propagateDirtyParmMicroNodes(
429 void clearMicroNodeInputs();
430 void getParmInputList(
432 bool cooking_only =
false)
const;
433 int getNumParmInputs()
const;
434 void getParmOutputList(
436 bool cooking_only =
false)
const;
441 int indent_level=0)
const;
442 int64 getMicroNodesMemoryUsage()
const;
448 static void removeOpSharedInfo(
const UT_StringRef &optoken);
452 static void renameOpSharedInfo(
const UT_StringRef &oldoptoken,
461 ->getParmPtrInst(parm_name, instance, nest_level, unused);
470 ->getParmPtrInst(parm_name, instance, nest_level, theparmidx);
475 int nest_level)
const
478 return getParmPtrInst(parm_name, instance, nest_level, unused);
483 int &theparmidx)
const;
489 void moveMultiParmAlias(
int index,
int i,
bool up);
496 bool try_again=
true);
502 bool leavedefaultsunchanged);
504 static bool shouldCopyOnAdopt(
507 bool leavedefaultsunchanged);
517 bool leavedefaultsunchanged);
519 void adoptChannelAlias(
529 const PRM_Multi &multiparmowner);
534 bool allow_alias)
const;
539 unsigned long myAddRemoveCount;
570 unsigned myPermissions;
572 unsigned myAssetPermissionMask;
588 bool myTimeDependent;
589 bool myCookTimeDependent;
591 bool myUndoSavedFlag;
592 bool myAutoTakeUndoSavedFlag;
596 static int thePRMLoadCount;
void setChannelGroupPtr(CH_Collection *thechgroupptr)
const PRM_Parm * getParmPtrInst(const UT_StringRef &parm_name, const int *instance, int nest_level) const
const PRM_Parm * getParmPtr(const int theindex) const
std::function< void(DEP_MicroNode &, DEP_MicroNode &) > Visitor
SYS_FORCE_INLINE void setCookTimeDependent(bool onOff)
UT_UniquePtr< DEP_ContextOptionDeps > DEP_ContextOptionDepsPtr
void setUserMask(unsigned m)
GLuint const GLchar * name
GT_API const UT_StringHolder time
DEP_API const DEP_ContextOptionDeps & DEPgetContextOptionDepsFromPtr(const DEP_ContextOptionDepsPtr &ptr)
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))
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()
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.
GLint GLenum GLsizei GLint GLsizei const void * data
SYS_FORCE_INLINE bool getTimeDependent() const
const GLuint GLenum const void * binary
PRM_Parm * getParmPtr(const int theindex)
void addCookContextOptionDep(const UT_StringHolder &opt)
PRM_PresetInfo * getPresetInfo() const
GLuint const GLuint * names
const DEP_ContextOptionDeps & getContextOptionDeps() const
virtual ~PRM_ORCallback()
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
PRM_Parm * getParmPtrInst(const UT_StringRef &parm_name, const int *instance, int nest_level, int &theparmidx)
static PRM_ORCallback * getORCallback()
*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
GLuint GLuint GLsizei GLenum type
void clearContextOptionDeps()
void setPermissions(unsigned mask)
GLsizei const GLchar *const * path
void setAutoTakeUndoSavedFlag()
void setAssetPermissionMask(unsigned mask)
GA_API const UT_StringHolder up
int getParmIndex(const PRM_Name &name) const
const DEP_ContextOptionDeps & getCookContextOptionDeps() const
OIIO_API bool copy(string_view from, string_view to, std::string &err)
Read, write, execute all.
GLuint GLuint GLsizei count
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)
GLsizei const GLfloat * value
SYS_FORCE_INLINE bool isstring() const
SYS_FORCE_INLINE void setTimeDependent(bool onOff)