NCBI C++ ToolKit
mask_regexp.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: mask_regexp.cpp 54529 2012-05-18 15:43:23Z vasilche $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: Vladimir Ivanov
27  *
28  */
29 
30 #include <ncbi_pch.hpp>
32 
33 
35 
36 
38 {
40  if ( use_case == NStr::eNocase ) {
41  compile_flags |= CRegexp::fCompile_ignore_case;
42  }
43  bool found = m_Inclusions.empty();
44 
45  ITERATE(list<string>, it, m_Inclusions) {
46  CRegexp re(*it, compile_flags);
47  if ( re.IsMatch(str) ) {
48  found = true;
49  break;
50  }
51  }
52  if ( found ) {
53  ITERATE(list<string>, it, m_Exclusions) {
54  CRegexp re(*it, compile_flags);
55  if ( re.IsMatch(str) ) {
56  found = false;
57  break;
58  }
59  }
60  }
61  return found;
62 }
63 
64 
CRegexp –.
Definition: regexp.hpp:70
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
Definition: tempstr.hpp:65
static const char * str(char *buf, int n)
Definition: stats.c:84
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
Definition: ncbimisc.hpp:815
bool IsMatch(CTempString str, TMatch flags=fMatch_default)
Check existence substring which match a specified pattern.
Definition: regexp.cpp:193
unsigned int TCompile
Type definitions used for code clarity.
Definition: regexp.hpp:76
@ fCompile_default
Definition: regexp.hpp:102
@ fCompile_ignore_case
Definition: regexp.hpp:103
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
ECase
Which type of string comparison.
Definition: ncbistr.hpp:1204
@ eNocase
Case insensitive compare.
Definition: ncbistr.hpp:1206
list< string > m_Inclusions
List of inclusion masks.
Definition: ncbi_mask.hpp:91
bool Match(CTempString str, NStr::ECase use_case=NStr::eCase) const
Match string.
Definition: mask_regexp.cpp:37
list< string > m_Exclusions
List of exclusion masks.
Definition: ncbi_mask.hpp:92
CMaskRegexp – regexp based class to match string against set of masks.
Modified on Wed Apr 17 13:09:11 2024 by modify_doxy.py rev. 669887