12 #ifndef __OP_OTLDefinition__
13 #define __OP_OTLDefinition__
33 #define OTL_LEGAL_OPTYPE_NAME_CHARS ".:/"
40 { readExtraInfo(extra_info); }
44 void readExtraInfo(
const char *extra_info);
48 void writeExtraInfo(
UT_String &extra_info)
const;
55 {
return (myOptions.getNumOptions() == 1) && (myOptions.hasOption(
"vopnetmask")); }
57 #define OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
58 const UT_StringHolder &get##NAME##Token() const \
60 static constexpr UT_StringLit token(TOKEN); \
61 return token.asHolder(); \
64 { myOptions.removeOption(get##NAME##Token()); } \
65 bool has##NAME() const \
66 { return myOptions.hasOption(get##NAME##Token()); } \
71 #define OP_EXTRA_ACCESSOR_BOOL(NAME, TOKEN) \
72 OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
73 bool get##NAME() const \
74 { return myOptions.getOptionB(get##NAME##Token()); } \
75 void set##NAME(bool value) \
76 { myOptions.setOptionB(get##NAME##Token(), value); } \
78 #define OP_EXTRA_ACCESSOR_STRING(NAME, TOKEN) \
79 OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
80 const UT_StringHolder & \
82 { return myOptions.getOptionS(get##NAME##Token()); } \
83 void set##NAME(const UT_StringHolder &value) \
84 { myOptions.setOptionSRaw(get##NAME##Token(),value); } \
86 #define OP_EXTRA_ACCESSOR_INT(NAME, TOKEN) \
87 OP_EXTRA_ACCESSOR_COMMON(NAME, TOKEN) \
88 exint get##NAME() const \
89 { return myOptions.getOptionI(get##NAME##Token()); } \
90 void set##NAME(exint value) \
91 { myOptions.setOptionI(get##NAME##Token(),value); } \
116 return name == getHideDefaultParmsToken()
117 || name == getHasObjExtParmsToken()
122 return name == getAlwaysSyncToken()
123 || name == getVisibleOutputsToken()
127 #undef OP_EXTRA_ACCESSOR_COMMON
128 #undef OP_EXTRA_ACCESSOR_BOOL
129 #undef OP_EXTRA_ACCESSOR_STRING
130 #undef OP_EXTRA_ACCESSOR_INT
137 myInputColors = colors;
138 setInputColorsString(writeColorString(colors));
146 myOutputColors = colors;
147 setOutputColorsString(writeColorString(colors));
187 { myAuthor = author; }
189 {
return myCopyright; }
191 { myCopyright = copyright; }
193 {
return myOpTableName; }
195 { myOpTableName = optablename; }
197 {
return myIndexPath; }
199 { myIndexPath = indexpath; }
201 {
return myIndexFile; }
203 { myIndexFile = indexfile; }
205 {
return myLicenseInfo; }
207 { myLicenseInfo = licenseinfo; }
213 {
return myExtraInfo; }
215 { myExtraInfo = extrainfo;
216 myExtraInfoBuffer.readExtraInfo(extrainfo);
219 {
return myExtraInfoBuffer; }
221 { myExtraInfoBuffer =
buf;
224 myExtraInfo = std::move(extra);
228 {
return myUserInfo; }
230 { myUserInfo = userinfo; }
232 {
return myMinInputs; }
234 { myMinInputs = inputs; }
236 {
return myMaxInputs; }
238 { myMaxInputs = inputs; }
240 {
return myNumOrderedInputs; }
242 { myNumOrderedInputs = inputs; }
244 {
return myMaxOutputs; }
246 { myMaxOutputs = outputs; }
248 {
return myModTime; }
250 { myModTime = modtime; }
252 {
return myIsSubnet; }
254 { myIsSubnet = issubnet ? 1 : 0; }
256 {
return myIsPython; }
258 { myIsPython = ispython ? 1 : 0; }
260 {
return myIsDummyDefinition; }
262 { myIsDummyDefinition = isdummy ? 1 : 0; }
264 {
return myCachedLicenseType; }
266 { myCachedLicenseType =
type; }
270 {
return myPath == theInternalPath.asRef(); }
274 { setPath(theInternalPath.asHolder()); }
277 int handleOption(
int argc,
char *argv[]);
282 bool resolveRelativeOpDefPath(
284 const char *
path)
const;
291 bool save(std::ostream &os);
294 const char *indent = 0)
const;
299 const char *
format)
const;
310 void getDefinitionSectionName(
UT_String §name)
const;
311 void getDefinitionSectionName(
UT_WorkBuffer §name)
const;
319 static time_t getModTimeFromString(
const char *str);
323 static bool isValidOperatorName(
const char *
name);
331 static bool isMatchingNamespaceScope(
const char *op_name,
332 const char *scope_opname );
350 int32 myNumOrderedInputs;
355 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