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; }
59 bool do_path_matching,
62 myDoPathMatching(do_path_matching),
63 myHasWildcards(has_wildcards),
64 myIsSpecialToken(false)
78 bool assume_wildcards);
85 myAssumeWildcardsAroundPlainTokens);
87 virtual bool matchSpecialToken(
90 bool *excludes_branch)
const;
91 void testForExplicitList();
92 void patternInterrupted();
118 PatternOp(PatternOp &parent, Operator
op)
119 : myOwner(parent.myOwner),
124 PatternOp *
push(Operator op);
125 PatternOp *insertGroup();
126 bool containsOnlyAddOperations()
const;
128 PatternOp *leftOp() {
return myLeftOp.get(); }
129 const PatternOp *leftOp()
const {
return myLeftOp.get(); }
130 PatternOp *rightOp() {
return myRightOp.get(); }
131 const PatternOp *rightOp()
const {
return myRightOp.get(); }
144 PatternOpStep(PatternOp *
op =
nullptr)
145 : myPatternOp(
op), myFollowLeftChild(false) { }
147 PatternOp *myPatternOp;
148 bool myFollowLeftChild;
156 bool *excludes_branch)
const;
157 void printPattern(
const PatternOp *patternop,
159 static bool findToken(
int tokenidx,
160 PatternOpPath &oppath);
163 const PatternOp *patternop,
165 static bool patternOpPathContains(
166 const PatternOpPath &oppath,
167 const PatternOp *patternop);
168 static bool patternOpPathIntersects(
169 const PatternOpPath &oppath,
170 const PatternOp *patternop);
171 static void makePruningPatternOp(
172 PatternOp *patternop,
173 const PatternOpPath &oppath);
174 static void makePrecedingGroupPatternOp(
175 PatternOp *patternop,
176 const PatternOpPath &oppath,
178 static bool parsePattern(
const char *&pattern,
185 bool myIsExplicitList;
188 const bool myCaseSensitive;
189 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