8 #ifndef __UT_PathPattern_h__
9 #define __UT_PathPattern_h__
39 bool case_sensitive =
true,
40 bool assume_wildcards =
false);
44 bool *excludes_branch =
nullptr)
const;
48 {
return myCaseSensitive; }
50 {
return myAssumeWildcardsAroundPlainTokens; }
52 {
return myPatternError; }
58 bool do_path_matching,
61 myDoPathMatching(do_path_matching),
62 myHasWildcards(has_wildcards),
63 myIsSpecialToken(false)
79 bool assume_wildcards);
86 myAssumeWildcardsAroundPlainTokens);
88 virtual bool matchSpecialToken(
91 bool *excludes_branch)
const;
92 void testForExplicitList();
118 PatternOp(PatternOp &parent, Operator op)
119 : myOwner(parent.myOwner),
131 PatternOp *
push(Operator op);
132 PatternOp *insertGroup();
133 bool containsOnlyAddOperations()
const;
139 PatternOp *myRightOp;
146 PatternOpStep(PatternOp *op =
nullptr)
147 : myPatternOp(op), myFollowLeftChild(false) { }
149 PatternOp *myPatternOp;
150 bool myFollowLeftChild;
158 bool *excludes_branch)
const;
159 void printPattern(
const PatternOp *patternop,
161 static bool findToken(
int tokenidx,
162 PatternOpPath &oppath);
163 static PatternOp *duplicatePatternOp(
165 const PatternOp *patternop,
167 static bool patternOpPathContains(
168 const PatternOpPath &oppath,
169 const PatternOp *patternop);
170 static bool patternOpPathIntersects(
171 const PatternOpPath &oppath,
172 const PatternOp *patternop);
173 static void makePruningPatternOp(
174 PatternOp *patternop,
175 const PatternOpPath &oppath);
176 static void makePrecedingGroupPatternOp(
177 PatternOp *patternop,
178 const PatternOpPath &oppath,
180 static bool parsePattern(
const char *&pattern,
187 bool myIsExplicitList;
190 const bool myCaseSensitive;
191 const bool myAssumeWildcardsAroundPlainTokens;
*pool push(my_func, arg1,...)
GLsizei const GLchar *const * path
const UT_StringHolder & getPatternError() const
A reference counter base class for use with UT_IntrusivePtr.
bool getCaseSensitive() const
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
UT_Array< Token > myTokens
bool getAssumeWildcardsAroundPlainTokens() const
UT_IntrusivePtr< UT_SpecialTokenData > UT_SpecialTokenDataPtr
Token(const UT_StringHolder &str, bool do_path_matching, bool has_wildcards)
virtual ~UT_SpecialTokenData()
virtual UT_PathPattern * createEmptyClone() const
UT_SpecialTokenDataPtr mySpecialTokenDataPtr