12 #ifndef __OP_OTLDefinition__
13 #define __OP_OTLDefinition__
29 #define OTL_LEGAL_OPTYPE_NAME_CHARS \
30 (UT_OpUtils::theSafeNodeTypeNameChars.asRef())
37 { readExtraInfo(extra_info); }
41 void readExtraInfo(
const char *extra_info);
45 void writeExtraInfo(
UT_String &extra_info)
const;
52 {
return (myOptions.getNumOptions() == 1) && (myOptions.hasOption(
"vopnetmask")); }
54 #define OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
55 const UT_StringHolder &get##NAME##Token() const \
57 static constexpr UT_StringLit token(TOKEN); \
58 return token.asHolder(); \
61 { myOptions.removeOption(get##NAME##Token()); } \
62 bool has##NAME() const \
63 { return myOptions.hasOption(get##NAME##Token()); } \
68 #define OP_EXTRA_ACCESSOR_BOOL(NAME, TOKEN) \
69 OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
70 bool get##NAME() const \
71 { return myOptions.getOptionB(get##NAME##Token()); } \
72 void set##NAME(bool value) \
73 { myOptions.setOptionB(get##NAME##Token(), value); } \
75 #define OP_EXTRA_ACCESSOR_STRING(NAME, TOKEN) \
76 OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
77 const UT_StringHolder & \
79 { return myOptions.getOptionS(get##NAME##Token()); } \
80 void set##NAME(const UT_StringHolder &value) \
81 { myOptions.setOptionSRaw(get##NAME##Token(),value); } \
83 #define OP_EXTRA_ACCESSOR_INT(NAME, TOKEN) \
84 OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
85 exint get##NAME() const \
86 { return myOptions.getOptionI(get##NAME##Token()); } \
87 void set##NAME(exint value) \
88 { myOptions.setOptionI(get##NAME##Token(),value); } \
113 return name == getHideDefaultParmsToken()
114 || name == getHasObjExtParmsToken()
119 return name == getAlwaysSyncToken()
120 || name == getVisibleOutputsToken()
124 #undef OP_EXTRA_ACCESSOR_COMMON
125 #undef OP_EXTRA_ACCESSOR_BOOL
126 #undef OP_EXTRA_ACCESSOR_STRING
127 #undef OP_EXTRA_ACCESSOR_INT
134 myInputColors = colors;
135 setInputColorsString(writeColorString(colors));
143 myOutputColors = colors;
144 setOutputColorsString(writeColorString(colors));
184 { myAuthor = author; }
186 {
return myCopyright; }
188 { myCopyright = copyright; }
190 {
return myOpTableName; }
192 { myOpTableName = optablename; }
194 {
return myIndexPath; }
196 { myIndexPath = indexpath; }
198 {
return myIndexFile; }
200 { myIndexFile = indexfile; }
202 {
return myLicenseInfo; }
204 { myLicenseInfo = licenseinfo; }
210 {
return myExtraInfo; }
212 { myExtraInfo = extrainfo;
213 myExtraInfoBuffer.readExtraInfo(extrainfo);
216 {
return myExtraInfoBuffer; }
218 { myExtraInfoBuffer =
buf;
221 myExtraInfo = std::move(extra);
225 {
return myUserInfo; }
227 { myUserInfo = userinfo; }
229 {
return myMinInputs; }
231 { myMinInputs = inputs; }
233 {
return myMaxInputs; }
235 { myMaxInputs = inputs; }
237 {
return myNumOrderedInputs; }
239 { myNumOrderedInputs = inputs; }
241 {
return myMaxOutputs; }
243 { myMaxOutputs = outputs; }
245 {
return myModTime; }
247 { myModTime = modtime; }
249 {
return myIsSubnet; }
251 { myIsSubnet = issubnet ? 1 : 0; }
253 {
return myIsPython; }
255 { myIsPython = ispython ? 1 : 0; }
257 {
return myIsDummyDefinition; }
259 { myIsDummyDefinition = isdummy ? 1 : 0; }
261 {
return myCachedLicenseType; }
263 { myCachedLicenseType =
type; }
267 {
return myPath == theInternalPath.asRef(); }
271 { setPath(theInternalPath.asHolder()); }
274 int handleOption(
int argc,
char *argv[]);
279 bool resolveRelativeOpDefPath(
281 const char *
path)
const;
288 bool save(std::ostream &os);
291 const char *indent = 0)
const;
296 const char *
format)
const;
307 void getDefinitionSectionName(
UT_String §name)
const;
308 void getDefinitionSectionName(
UT_WorkBuffer §name)
const;
316 static time_t getModTimeFromString(
const char *str);
320 static bool isValidOperatorName(
const char *
name);
328 static bool isMatchingNamespaceScope(
const char *op_name,
329 const char *scope_opname );
347 int32 myNumOrderedInputs;
352 char myIsDummyDefinition;
GLenum GLuint GLenum GLsizei const GLchar * buf
UT_ValArray< OP_OTLDefinition * > OP_OTLDefinitionArray
GLuint GLsizei const GLchar * label
void setLicenseInfo(const UT_StringHolder &licenseinfo)
#define OP_EXTRA_ACCESSOR_BOOL(NAME, TOKEN)
#define OP_EXTRA_ACCESSOR_INT(NAME, TOKEN)
const UT_StringHolder & getLicenseInfo() const
#define OP_EXTRA_ACCESSOR_STRING(NAME, TOKEN)
GLsizei const GLchar *const * path
const UT_StringHolder & getUserInfo() const
const UT_StringHolder & getLabel() const
void setIsSubnet(bool issubnet)
int getNumOrderedInputs() const
void setMaxOutputs(int outputs)
void setUserInfo(const UT_StringHolder &userinfo)
**But if you need a result
const UT_StringHolder & getIcon() const
bool getIsDummyDefinition() const
const UT_StringHolder & getAuthor() const
void setLabel(const UT_StringHolder &label)
void setNumOrderedInputs(int inputs)
bool isInternal() const
Return if this is an internally defined operator.
void setIcon(const UT_StringHolder &icon)
GLint GLint GLsizei GLint GLenum GLenum type
void setExtraInfo(const UT_StringHolder &extrainfo)
const UT_StringHolder & getPath() const
void setIsPython(bool ispython)
OP_OTLLicenseType getCachedLicenseType() const
void setCopyright(const UT_StringHolder ©right)
void setModTime(time_t modtime)
GLint GLint GLsizei GLint GLenum format
GLuint const GLchar * name
void setName(const UT_StringHolder &name)
const OP_ExtraInfoBuffer & getExtraInfoBuffer() const
time_t getModTime() const
A map of string to various well defined value types.
void setMinInputs(int inputs)
void setPath(const UT_StringHolder &path)
void setIndexFile(const UT_StringHolder &indexfile)
LeafData & operator=(const LeafData &)=delete
const UT_StringHolder & getIndexFile() const
void setCachedLicenseType(OP_OTLLicenseType type)
int getMaxOutputs() const
void setIndexPath(const UT_StringHolder &indexpath)
void setOpTableName(const UT_StringHolder &optablename)
const UT_StringHolder & getName() const
void setPathToInternal()
Mark as internal.
void setAuthor(const UT_StringHolder &author)
const UT_StringHolder & getIndexPath() const
void setIsDummyDefinition(bool isdummy)
void setMaxInputs(int inputs)
void setExtraInfoBuffer(const OP_ExtraInfoBuffer &buf)
const UT_StringHolder & getCopyright() const
const UT_StringHolder & getOpTableName() const
const UT_StringHolder & getExtraInfo() const