MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / StringFitsPattern

Function StringFitsPattern

ngstd/stringops.cpp:7–90  ·  view source on GitHub ↗

bool StringFitsPattern(const string & str, const string & pattern)

Source from the content-addressed store, hash-verified

5
6 // bool StringFitsPattern(const string & str, const string & pattern)
7 bool StringFitsPattern(string_view str, string_view pattern)
8 {
9 int patternpos = 0;
10 int strpos = 0;
11
12 int patternsize = -1;
13 for(unsigned i = 0; patternsize < 0 && i<pattern.size(); i++)
14 if(pattern[i] == 0)
15 patternsize = i;
16 if(patternsize < 0)
17 patternsize = pattern.size();
18
19 int strsize = -1;
20 for(unsigned i = 0; strsize < 0 && i<str.size(); i++)
21 if(str[i] == 0)
22 strsize = i;
23 if(strsize < 0)
24 strsize = str.size();
25
26 bool ok = true;
27
28 while(ok &&
29 patternpos < patternsize && strpos < strsize)
30 {
31 string nextpart = "";
32 int nextpartsize = 0;
33 int mindistance = 0;
34 int maxdistance = 0;
35 int strdistance;
36
37 while(patternpos < patternsize &&
38 (pattern[patternpos] == '?' ||
39 pattern[patternpos] == '*'))
40 {
41 if(pattern[patternpos] == '?')
42 {
43 mindistance++;
44 if(maxdistance >= 0)
45 maxdistance++;
46 }
47 else if(pattern[patternpos] == '*')
48 maxdistance = -1;
49
50 patternpos++;
51 }
52
53 while(patternpos < patternsize &&
54 pattern[patternpos] != '?' &&
55 pattern[patternpos] != '*')
56 {
57 nextpart += pattern[patternpos];
58 nextpartsize++;
59 patternpos++;
60 }
61
62
63
64 int foundpos;

Callers 1

FESpaceMethod · 0.85

Calls 1

findMethod · 0.80

Tested by

no test coverage detected