Skip to content

Commit 13eca64

Browse files
committed
Deploying to gh-pages from @ 58ed0ec 🚀
1 parent ef7a468 commit 13eca64

12 files changed

+458
-149
lines changed

d1/d00/wildcards_8hpp.html

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5+
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
6+
<meta name="generator" content="Doxygen 1.9.6"/>
7+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
8+
<title>BehaviorTree: include/behaviortree_cpp/utils/wildcards.hpp File Reference</title>
9+
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
10+
<script type="text/javascript" src="../../jquery.js"></script>
11+
<script type="text/javascript" src="../../dynsections.js"></script>
12+
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
13+
<script type="text/javascript" src="../../resize.js"></script>
14+
<script type="text/javascript" src="../../navtreedata.js"></script>
15+
<script type="text/javascript" src="../../navtree.js"></script>
16+
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
17+
<script type="text/javascript" src="../../search/searchdata.js"></script>
18+
<script type="text/javascript" src="../../search/search.js"></script>
19+
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
20+
</head>
21+
<body>
22+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23+
<div id="titlearea">
24+
<table cellspacing="0" cellpadding="0">
25+
<tbody>
26+
<tr id="projectrow">
27+
<td id="projectalign">
28+
<div id="projectname">BehaviorTree
29+
</div>
30+
<div id="projectbrief">Core Library to create and execute Behavior Trees</div>
31+
</td>
32+
</tr>
33+
</tbody>
34+
</table>
35+
</div>
36+
<!-- end header part -->
37+
<!-- Generated by Doxygen 1.9.6 -->
38+
<script type="text/javascript">
39+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
40+
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
41+
/* @license-end */
42+
</script>
43+
<script type="text/javascript" src="../../menudata.js"></script>
44+
<script type="text/javascript" src="../../menu.js"></script>
45+
<script type="text/javascript">
46+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
47+
$(function() {
48+
initMenu('../../',true,false,'search.php','Search');
49+
$(document).ready(function() { init_search(); });
50+
});
51+
/* @license-end */
52+
</script>
53+
<div id="main-nav"></div>
54+
</div><!-- top -->
55+
<div id="side-nav" class="ui-resizable side-nav-resizable">
56+
<div id="nav-tree">
57+
<div id="nav-tree-contents">
58+
<div id="nav-sync" class="sync"></div>
59+
</div>
60+
</div>
61+
<div id="splitbar" style="-moz-user-select:none;"
62+
class="ui-resizable-handle">
63+
</div>
64+
</div>
65+
<script type="text/javascript">
66+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
67+
$(document).ready(function(){initNavTree('d1/d00/wildcards_8hpp.html','../../'); initResizable(); });
68+
/* @license-end */
69+
</script>
70+
<div id="doc-content">
71+
<!-- window showing the filter options -->
72+
<div id="MSearchSelectWindow"
73+
onmouseover="return searchBox.OnSearchSelectShow()"
74+
onmouseout="return searchBox.OnSearchSelectHide()"
75+
onkeydown="return searchBox.OnSearchSelectKey(event)">
76+
</div>
77+
78+
<!-- iframe showing the search results (closed by default) -->
79+
<div id="MSearchResultsWindow">
80+
<div id="MSearchResults">
81+
<div class="SRPage">
82+
<div id="SRIndex">
83+
<div id="SRResults"></div>
84+
<div class="SRStatus" id="Loading">Loading...</div>
85+
<div class="SRStatus" id="Searching">Searching...</div>
86+
<div class="SRStatus" id="NoMatches">No Matches</div>
87+
</div>
88+
</div>
89+
</div>
90+
</div>
91+
92+
<div class="header">
93+
<div class="summary">
94+
<a href="#func-members">Functions</a> </div>
95+
<div class="headertitle"><div class="title">wildcards.hpp File Reference</div></div>
96+
</div><!--header-->
97+
<div class="contents">
98+
99+
<p>Simple wildcard matching function supporting '*' and '?'.
100+
<a href="#details">More...</a></p>
101+
102+
<p><a href="../../d1/d00/wildcards_8hpp_source.html">Go to the source code of this file.</a></p>
103+
<table class="memberdecls">
104+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
105+
Functions</h2></td></tr>
106+
<tr class="memitem:af11f00885d328145c9c568df26a4ac10"><td class="memItemLeft" align="right" valign="top"><a id="af11f00885d328145c9c568df26a4ac10" name="af11f00885d328145c9c568df26a4ac10"></a>
107+
bool&#160;</td><td class="memItemRight" valign="bottom"><b>wildcards_match</b> (std::string_view str, std::string_view pattern)</td></tr>
108+
<tr class="separator:af11f00885d328145c9c568df26a4ac10"><td class="memSeparator" colspan="2">&#160;</td></tr>
109+
</table>
110+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
111+
<div class="textblock"><p>Simple wildcard matching function supporting '*' and '?'. </p>
112+
<p>This file provides a function to match strings against patterns containing wildcard characters:</p><ul>
113+
<li>'*' matches any sequence of characters (including the empty sequence)</li>
114+
<li>'?' matches any single character</li>
115+
</ul>
116+
<p>The implementation uses recursion with memoization to efficiently handle overlapping subproblems. </p>
117+
</div></div><!-- contents -->
118+
</div><!-- doc-content -->
119+
<!-- start footer part -->
120+
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
121+
<ul>
122+
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_7bd192d5a3f968f9ea7d18b0796c3811.html">behaviortree_cpp</a></li><li class="navelem"><a class="el" href="../../dir_1573ea42ce800d213ff17f25e5e834ef.html">utils</a></li><li class="navelem"><a class="el" href="../../d1/d00/wildcards_8hpp.html">wildcards.hpp</a></li>
123+
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
124+
</ul>
125+
</div>
126+
</body>
127+
</html>

d1/d00/wildcards_8hpp_source.html

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5+
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
6+
<meta name="generator" content="Doxygen 1.9.6"/>
7+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
8+
<title>BehaviorTree: include/behaviortree_cpp/utils/wildcards.hpp Source File</title>
9+
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
10+
<script type="text/javascript" src="../../jquery.js"></script>
11+
<script type="text/javascript" src="../../dynsections.js"></script>
12+
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
13+
<script type="text/javascript" src="../../resize.js"></script>
14+
<script type="text/javascript" src="../../navtreedata.js"></script>
15+
<script type="text/javascript" src="../../navtree.js"></script>
16+
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
17+
<script type="text/javascript" src="../../search/searchdata.js"></script>
18+
<script type="text/javascript" src="../../search/search.js"></script>
19+
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
20+
</head>
21+
<body>
22+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23+
<div id="titlearea">
24+
<table cellspacing="0" cellpadding="0">
25+
<tbody>
26+
<tr id="projectrow">
27+
<td id="projectalign">
28+
<div id="projectname">BehaviorTree
29+
</div>
30+
<div id="projectbrief">Core Library to create and execute Behavior Trees</div>
31+
</td>
32+
</tr>
33+
</tbody>
34+
</table>
35+
</div>
36+
<!-- end header part -->
37+
<!-- Generated by Doxygen 1.9.6 -->
38+
<script type="text/javascript">
39+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
40+
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
41+
/* @license-end */
42+
</script>
43+
<script type="text/javascript" src="../../menudata.js"></script>
44+
<script type="text/javascript" src="../../menu.js"></script>
45+
<script type="text/javascript">
46+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
47+
$(function() {
48+
initMenu('../../',true,false,'search.php','Search');
49+
$(document).ready(function() { init_search(); });
50+
});
51+
/* @license-end */
52+
</script>
53+
<div id="main-nav"></div>
54+
</div><!-- top -->
55+
<div id="side-nav" class="ui-resizable side-nav-resizable">
56+
<div id="nav-tree">
57+
<div id="nav-tree-contents">
58+
<div id="nav-sync" class="sync"></div>
59+
</div>
60+
</div>
61+
<div id="splitbar" style="-moz-user-select:none;"
62+
class="ui-resizable-handle">
63+
</div>
64+
</div>
65+
<script type="text/javascript">
66+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
67+
$(document).ready(function(){initNavTree('d1/d00/wildcards_8hpp_source.html','../../'); initResizable(); });
68+
/* @license-end */
69+
</script>
70+
<div id="doc-content">
71+
<!-- window showing the filter options -->
72+
<div id="MSearchSelectWindow"
73+
onmouseover="return searchBox.OnSearchSelectShow()"
74+
onmouseout="return searchBox.OnSearchSelectHide()"
75+
onkeydown="return searchBox.OnSearchSelectKey(event)">
76+
</div>
77+
78+
<!-- iframe showing the search results (closed by default) -->
79+
<div id="MSearchResultsWindow">
80+
<div id="MSearchResults">
81+
<div class="SRPage">
82+
<div id="SRIndex">
83+
<div id="SRResults"></div>
84+
<div class="SRStatus" id="Loading">Loading...</div>
85+
<div class="SRStatus" id="Searching">Searching...</div>
86+
<div class="SRStatus" id="NoMatches">No Matches</div>
87+
</div>
88+
</div>
89+
</div>
90+
</div>
91+
92+
<div class="header">
93+
<div class="headertitle"><div class="title">wildcards.hpp</div></div>
94+
</div><!--header-->
95+
<div class="contents">
96+
<a href="../../d1/d00/wildcards_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#</span><span class="preprocessor">pragma</span> <span class="preprocessor">once</span></div>
97+
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span> </div>
98+
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">/**</span></div>
99+
<div class="line"><span class="lineno"> 4</span><span class="comment"> * @file wildcards.hpp</span></div>
100+
<div class="line"><span class="lineno"> 5</span><span class="comment"> * @brief Simple wildcard matching function supporting &#39;*&#39; and &#39;?&#39;.</span></div>
101+
<div class="line"><span class="lineno"> 6</span><span class="comment"> *</span></div>
102+
<div class="line"><span class="lineno"> 7</span><span class="comment"> * This file provides a function to match strings against patterns containing</span></div>
103+
<div class="line"><span class="lineno"> 8</span><span class="comment"> * wildcard characters:</span></div>
104+
<div class="line"><span class="lineno"> 9</span><span class="comment"> * - &#39;*&#39; matches any sequence of characters (including the empty sequence)</span></div>
105+
<div class="line"><span class="lineno"> 10</span><span class="comment"> * - &#39;?&#39; matches any single character</span></div>
106+
<div class="line"><span class="lineno"> 11</span><span class="comment"> *</span></div>
107+
<div class="line"><span class="lineno"> 12</span><span class="comment"> * The implementation uses recursion with memoization to efficiently handle</span></div>
108+
<div class="line"><span class="lineno"> 13</span><span class="comment"> * overlapping subproblems.</span></div>
109+
<div class="line"><span class="lineno"> 14</span><span class="comment"> */</span></div>
110+
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
111+
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> wildcards_match(std::string_view str, std::string_view pattern)</div>
112+
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span>{</div>
113+
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">const</span> size_t n = str.size();</div>
114+
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">const</span> size_t m = pattern.size();</div>
115+
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
116+
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// Pre-allocate memo table: -1 = not computed, 0 = false, 1 = true</span></div>
117+
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> std::vector&lt;int8_t&gt; memo((n + 1) * (m + 1), -1);</div>
118+
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
119+
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">auto</span> get_memo = [&amp;](size_t i, size_t j) -&gt; int8_t&amp; { <span class="keywordflow">return</span> memo[i * (m + 1) + j]; };</div>
120+
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
121+
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">auto</span> match = [&amp;](<span class="keyword">auto</span>&amp; match_ref, size_t i, size_t j) -&gt; <span class="keywordtype">bool</span> {</div>
122+
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">if</span>(j == m)</div>
123+
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> {</div>
124+
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">return</span> i == n;</div>
125+
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> }</div>
126+
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
127+
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> int8_t&amp; cached = get_memo(i, j);</div>
128+
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">if</span>(cached != -1)</div>
129+
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> {</div>
130+
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keywordflow">return</span> cached == 1;</div>
131+
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> }</div>
132+
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
133+
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">bool</span> result;</div>
134+
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">if</span>(pattern[j] == <span class="stringliteral">&#39;*&#39;</span>)</div>
135+
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> {</div>
136+
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> result = match_ref(match_ref, i, j + 1);</div>
137+
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">if</span>(!result &amp;&amp; i &lt; n)</div>
138+
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> {</div>
139+
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> result = match_ref(match_ref, i + 1, j);</div>
140+
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
141+
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
142+
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i &lt; n &amp;&amp; (pattern[j] == <span class="stringliteral">&#39;?&#39;</span> || pattern[j] == str[i]))</div>
143+
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> {</div>
144+
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> result = match_ref(match_ref, i + 1, j + 1);</div>
145+
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
146+
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">else</span></div>
147+
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> {</div>
148+
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> result = <span class="keyword">false</span>;</div>
149+
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> }</div>
150+
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
151+
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> cached = result ? 1 : 0;</div>
152+
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> result;</div>
153+
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> };</div>
154+
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
155+
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">return</span> match(match, 0, 0);</div>
156+
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span>}</div>
157+
</div><!-- fragment --></div><!-- contents -->
158+
</div><!-- doc-content -->
159+
<!-- start footer part -->
160+
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
161+
<ul>
162+
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_7bd192d5a3f968f9ea7d18b0796c3811.html">behaviortree_cpp</a></li><li class="navelem"><a class="el" href="../../dir_1573ea42ce800d213ff17f25e5e834ef.html">utils</a></li><li class="navelem"><a class="el" href="../../d1/d00/wildcards_8hpp.html">wildcards.hpp</a></li>
163+
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
164+
</ul>
165+
</div>
166+
</body>
167+
</html>

dir_1573ea42ce800d213ff17f25e5e834ef.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@
127127
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
128128
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>wakeup_signal.hpp</b> <a href="d2/dd4/wakeup__signal_8hpp_source.html">[code]</a></td></tr>
129129
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
130+
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="d1/d00/wildcards_8hpp.html">wildcards.hpp</a> <a href="d1/d00/wildcards_8hpp_source.html">[code]</a></td></tr>
131+
<tr class="memdesc:d1/d00/wildcards_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple wildcard matching function supporting '*' and '?'. <br /></td></tr>
132+
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
130133
</table>
131134
</div><!-- contents -->
132135
</div><!-- doc-content -->

dir_1573ea42ce800d213ff17f25e5e834ef.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ var dir_1573ea42ce800d213ff17f25e5e834ef =
1010
[ "simple_string.hpp", "dd/d3d/simple__string_8hpp_source.html", null ],
1111
[ "strcat.hpp", "d7/d3f/strcat_8hpp_source.html", null ],
1212
[ "timer_queue.h", "d2/dbf/timer__queue_8h_source.html", null ],
13-
[ "wakeup_signal.hpp", "d2/dd4/wakeup__signal_8hpp_source.html", null ]
13+
[ "wakeup_signal.hpp", "d2/dd4/wakeup__signal_8hpp_source.html", null ],
14+
[ "wildcards.hpp", "d1/d00/wildcards_8hpp.html", null ]
1415
];

0 commit comments

Comments
 (0)