12 #ifndef __OP_OperatorTable_h__
13 #define __OP_OperatorTable_h__
31 class OP_ScriptIndexFile;
60 int *aliasedScriptedOp = 0,
61 bool exact_type =
false);
65 std::ostream *err =
nullptr);
69 {
return myPrimarySubnet; }
73 void addScriptIndexFile(
const char *indexpath,
74 const char *indexfile,
76 const char *extrainfo,
81 bool loadScriptOperator(
const char *opname,
UT_IStream &is,
84 bool canReuseOperator(
95 bool loadDSO(
const char *dso_file);
98 bool runDSO(
const char* lib_path);
101 {
return myOpCount; }
104 bool english=
true)
const;
107 bool filterhidden =
false)
const;
114 {
return myUniqueOpTypeID; }
123 {
return myScriptDirectory; }
126 unsigned getStatus()
const;
127 void setDefaultType(
const char *type);
128 const char *getDefaultType()
const;
131 bool setOpRename(
const char *optype,
const char *newname,
132 std::ostream *err =
nullptr);
134 void outputOpRenames(std::ostream &os)
const;
137 bool setOpAlias(
const char *optype,
139 std::ostream *err =
nullptr);
143 bool setOpFirstName(
const char *type,
144 const char *firstname,
145 std::ostream *err =
nullptr);
147 void outputOpAliases(std::ostream &os)
const;
149 void outputOpFirstNames(std::ostream &os)
const;
151 void getOpAliases(
const char *opname,
154 const char *getOpFromAlias(
const char *alias)
const;
158 void setTabBoost(
const char *
label,
int boost);
162 int getTabBoost(
const char *
label)
const;
168 void outputTabBoosts(std::ostream &os)
const;
183 void outputTabMacros(std::ostream &os)
const;
186 bool setOpOverride(
const char *optype,
187 const char *
override,
188 bool keep_parms,
bool keep_contents,
189 std::ostream *err =
nullptr);
191 bool clearOpOverride(
const char *optype,
192 std::ostream *err =
nullptr);
194 void outputOpOverrides(std::ostream &os)
const;
196 void getOpOverrides(
const char *opname,
200 bool addOpExcluded(
const char *opname,
201 std::ostream *err =
nullptr);
203 bool isOpExcluded(
const char *opname)
const;
205 void outputOpExcluded(std::ostream &os)
const;
207 bool addOpHidden(
const char *opname,
208 std::ostream *err =
nullptr);
210 void delOpHidden(
const char *opname);
212 bool isOpHidden(
const char *opname)
const;
217 bool isOpExperimental(
const UT_StringRef &opname)
const;
219 bool addOpExperimental(
const char *opname,
220 std::ostream *err =
nullptr);
223 bool setOpDeprecated(
const char *opname,
225 const char *replacement = 0,
226 std::ostream *err =
nullptr);
228 bool isOpDeprecated(
const char *opname)
const;
231 bool getDeprecationInfo(
const char *opname,
235 void outputOpDeprecated(std::ostream &os)
const;
240 std::ostream *err =
nullptr);
244 bool hasSpecificOpDefaultColor(
247 void clearOpDefaultColors();
249 void outputOpDefaultColors(std::ostream &os)
const;
254 std::ostream *err =
nullptr);
258 bool hasSpecificOpDefaultShape(
261 void clearOpDefaultShapes();
263 void outputOpDefaultShapes(std::ostream &os)
const;
272 void getDefaultNodeName(
const char *type,
UT_String &name);
276 const char *getScriptedSubnetIndex()
const;
281 void notifyUpdateTableSinksOfUpdate();
284 {
return theLoadDSOFlag; }
286 { theLoadDSOFlag = i; }
287 static unsigned getPermissionMask(
const OP_Operator *op);
288 static void clearPermissionMask(
const OP_Operator *op);
292 static void initializeOpThemes();
297 static void buildOpTypeNamespaceHierarchy();
301 static const char *getOpTypeNamespaceHierarchyPref();
309 void getCandidateOperatorNamesInPrecedenceOrder(
325 const char *getPreferredOperatorName(
const char *opname,
332 const char *node_name)
const;
335 static bool alwaysReuseScriptOperatorCallback(
338 static bool neverReuseScriptOperatorCallback(
347 void notifyUpdateTableSinksOfDelete();
351 std::ostream *err =
nullptr);
352 int loadScriptIndexFile(OP_ScriptIndexFile &sif,
357 {
return myOpNamespaceHierarchy; }
366 const char *opname,
bool exact_opname);
377 int myUniqueOpTypeID;
378 static int theLoadDSOFlag;
392 bool isEmpty()
const;
406 bool myIsExperimental:1;
407 bool myIsOverridden:1;
420 static UT_String theOpTypeNamespaceHierarchyPref;
421 static bool theOpThemesInitialized;
431 { removeAllTableSinks(); }
435 { removeUpdateTableSink(table); }
441 table->addUpdateTableSink(
this);
442 myOpTables.append(table, 1);
447 table->removeUpdateTableSink(
this);
448 myOpTables.findAndRemove(table);
452 for(
int i = myOpTables.entries(); i --> 0; )
453 removeUpdateTableSink(myOpTables(i));
bool(* OP_ScriptCanReuseFunc)(const OP_ScriptOperator *script_operator, const OP_OTLDefinition &new_definition)
virtual ~OP_UpdateTableSink()
GLuint GLsizei const GLchar * label
void removeAllTableSinks()
UT_SharedPtr< UT_StringMap< int > > tabBoostTable() const
Directly provide the tab boost table.
UT_SharedPtr< UT_StringMap< UT_StringHolder > > tabMacroTable() const
Directly provide the tab boost table.
OP_Operator * getPrimarySubnetOperator()
static void setLoadDSOFlag(int i)
GLint GLint GLsizei GLint GLenum GLenum type
static int getLoadDSOFlag()
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
int getUniqueOpTypeID() const
GLuint const GLchar * name
GLenum GLenum GLsizei void * table
UT_SymbolMap< OP_OperatorTable * > OP_OperatorTableMap
UT_ValArray< OP_OperatorTable * > OP_OperatorTableList
GT_API const UT_StringHolder version
virtual void tableDeleted(OP_OperatorTable *table)
OP_ScriptOperator *(* OP_ScriptCreatorFunc)(const OP_OTLDefinition &definition)
const UT_String & getName() const
void removeUpdateTableSink(OP_OperatorTable *table)
const UT_String & getScriptPath() const
void addUpdateTableSink(OP_OperatorTable *table)