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); } \
115 return name == getHideDefaultParmsToken()
116 || name == getHasObjExtParmsToken()
121 return name == getAlwaysSyncToken()
122 || name == getVisibleOutputsToken()
126 #undef OP_EXTRA_ACCESSOR_COMMON
127 #undef OP_EXTRA_ACCESSOR_BOOL
128 #undef OP_EXTRA_ACCESSOR_STRING
129 #undef OP_EXTRA_ACCESSOR_INT
136 myInputColors = colors;
137 setInputColorsString(writeColorString(colors));
145 myOutputColors = colors;
146 setOutputColorsString(writeColorString(colors));
185 { myAuthor = author; }
187 {
return myCopyright; }
189 { myCopyright = copyright; }
191 {
return myOpTableName; }
193 { myOpTableName = optablename; }
195 {
return myIndexPath; }
197 { myIndexPath = indexpath; }
199 {
return myIndexFile; }
201 { myIndexFile = indexfile; }
203 {
return myLicenseInfo; }
205 { myLicenseInfo = licenseinfo; }
211 {
return myExtraInfo; }
213 { myExtraInfo = extrainfo;
214 myExtraInfoBuffer.readExtraInfo(extrainfo);
217 {
return myExtraInfoBuffer; }
219 { myExtraInfoBuffer =
buf;
222 myExtraInfo = std::move(extra);
226 {
return myUserInfo; }
228 { myUserInfo = userinfo; }
230 {
return myMinInputs; }
232 { myMinInputs = inputs; }
234 {
return myMaxInputs; }
236 { myMaxInputs = inputs; }
238 {
return myNumOrderedInputs; }
240 { myNumOrderedInputs = inputs; }
242 {
return myMaxOutputs; }
244 { myMaxOutputs = outputs; }
246 {
return myModTime; }
248 { myModTime = modtime; }
250 {
return myIsSubnet; }
252 { myIsSubnet = issubnet ? 1 : 0; }
254 {
return myIsPython; }
256 { myIsPython = ispython ? 1 : 0; }
258 {
return myIsDummyDefinition; }
260 { myIsDummyDefinition = isdummy ? 1 : 0; }
262 {
return myCachedLicenseType; }
264 { myCachedLicenseType =
type; }
268 {
return myPath == theInternalPath.asRef(); }
272 { setPath(theInternalPath.asHolder()); }
275 int handleOption(
int argc,
char *argv[]);
285 bool save(std::ostream &os);
288 const char *indent = 0)
const;
293 const char *
format)
const;
304 void getDefinitionSectionName(
UT_String §name)
const;
305 void getDefinitionSectionName(
UT_WorkBuffer §name)
const;
313 static time_t getModTimeFromString(
const char *str);
317 static bool isValidOperatorName(
const char *
name);
325 static bool isMatchingNamespaceScope(
const char *op_name,
326 const char *scope_opname );
344 int32 myNumOrderedInputs;
349 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)
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)
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)
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