patternMatcher.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_BASE_TF_PATTERN_MATCHER_H
25 #define PXR_BASE_TF_PATTERN_MATCHER_H
26 
30 
31 #include "pxr/pxr.h"
32 #include "pxr/base/tf/api.h"
33 #include "pxr/base/arch/regex.h"
34 
35 #include <string>
36 
37 PXR_NAMESPACE_OPEN_SCOPE
38 
49 {
50 
51  public:
52 
54  TF_API TfPatternMatcher();
55 
56  TF_API TfPatternMatcher(TfPatternMatcher &&) noexcept = default;
57  TF_API TfPatternMatcher& operator=(TfPatternMatcher &&) = default;
58 
62  TF_API
63  TfPatternMatcher( const std::string &pattern,
64  bool caseSensitive = false,
65  bool isGlob = false );
66 
68  TF_API ~TfPatternMatcher();
69 
71  TF_API std::string GetInvalidReason() const;
72 
75  bool IsCaseSensitive() const {
76  return _caseSensitive;
77  }
78 
81  bool IsGlobPattern() const {
82  return _isGlob;
83  }
84 
86  TF_API const std::string& GetPattern() const {
87  return _pattern;
88  }
89 
92  TF_API bool IsValid() const;
93 
106  TF_API bool Match( const std::string &query,
107  std::string *errorMsg = NULL ) const;
108 
110  TF_API void SetIsCaseSensitive( bool sensitive );
111 
116  TF_API void SetIsGlobPattern( bool isGlob );
117 
119  TF_API void SetPattern( const std::string &pattern );
120 
121  private:
122  void _Compile() const;
123 
124  bool _caseSensitive;
125  bool _isGlob;
126  std::string _pattern;
127  mutable bool _recompile;
128  mutable ArchRegex _regex;
129 
130 };
131 
132 PXR_NAMESPACE_CLOSE_SCOPE
133 
134 #endif // PXR_BASE_TF_PATTERN_MATCHER_H
bool IsCaseSensitive() const
Returns true if the matcher has been set to be case sensitive, false otherwise.
TF_API void SetIsGlobPattern(bool isGlob)
Set this matcher to treat its pattern as a glob pattern.
TF_API const std::string & GetPattern() const
Returns the matcher's pattern string.
TF_API std::string GetInvalidReason() const
If IsValid() returns true, this will return the reason why (if any).
TF_API void SetIsCaseSensitive(bool sensitive)
Set this matcher to match case-sensitively or not.
TF_API TfPatternMatcher()
Construct an empty (invalid) TfPatternMatcher.
TF_API bool Match(const std::string &query, std::string *errorMsg=NULL) const
Returns true if query matches the matcher's pattern.
TF_API bool IsValid() const
Returns true if the matcher has a valid pattern.
TF_API ~TfPatternMatcher()
Destructor.
TF_API void SetPattern(const std::string &pattern)
Set the pattern that this matcher will use to match against.
Class for matching regular expressions.
bool IsGlobPattern() const
Returns true if the matcher has been set to treat patterns as glob patterns, false otherwise.