You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/05/30 00:51:09 UTC

[08/10] mesos-site git commit: Updated the website built from mesos SHA: 521c8fe.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2environment_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2environment_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2environment_8hpp_source.html
index 446da35..192bf35 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2environment_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2environment_8hpp_source.html
@@ -52,11 +52,11 @@
 <div class="title">environment.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2stout_2include_2stout_2tests_2environment_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">// regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div
  class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</s
 pan>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __STOUT_TESTS_ENVIRONMENT_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __S
 TOUT_TESTS_ENVIRONMENT_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;gtest/gtest.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code"
  href="strings_8hpp.html">stout/strings.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespacestout.html">   28</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestout.html">stout</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespacestout_1_1internal.html">   29</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespacestout_1_1internal_1_1tests.html">   30</a></span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classstout_1_1inter
 nal_1_1tests_1_1TestFilter.html">   32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html">TestFilter</a></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#acd8c73b5e8eaba996351eaa8cc4231c0">TestFilter</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#ae63b57b74d686e980582940751b14c39">~TestFilter</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00037"></a><span class="lineno">  
  37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="comment">// Returns true iff the test should be disabled.</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#ac21e2a8b8217ec789f80032731a10be4">disable</a>(const ::testing::TestInfo* <a class="code" href="namespacerouting_1_1link_1_1internal.html#a7a252b06125fcedef9ce27135306d05d">test</a>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <span class="comment">// Returns whether the test name or parameterization matches the pattern.</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="cl
 assstout_1_1internal_1_1tests_1_1TestFilter.html#aa37a1e6ff5992eeb24c16d076891627a">   42</a></span>&#160;  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#aa37a1e6ff5992eeb24c16d076891627a">matches</a>(</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      const ::testing::TestInfo* test,</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      <span class="keyword">const</span> std::string&amp; pattern)</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;test_case_name(), pattern) ||</div><div class="line"><a name="l00047"></a><span class="lineno">   47<
 /span>&#160;        <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;name(), pattern)) {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    }</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keywordflow">if</span> (test-&gt;type_param() != <span class="keyword">nullptr</span> &amp;&amp;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;type_param(), pattern)) {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;   
    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    }</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordflow">if</span> (test-&gt;value_param() != <span class="keyword">nullptr</span> &amp;&amp;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;value_param(), pattern)) {</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    }</div><div class="line"><a name="l00060"></a><span class="lineno">  
  60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  }</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// Return list of disabled tests based on test name based filters.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">static</span> std::vector&lt;std::string&gt; disabled(</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    const ::testing::UnitTest* unitTest,</div><div cla
 ss="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::shared_ptr&lt;TestFilter&gt;&gt;&amp; <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</a>)</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  std::vector&lt;std::string&gt; disabled;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; unitTest-&gt;total_test_case_count(); i++) {</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    const ::testing::TestCase* testCase = unitTest-&gt;GetTestCase(i);</div><div class="line"><a name="l00075"></a><spa
 n class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; testCase-&gt;total_test_count(); j++) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      const ::testing::TestInfo* <a class="code" href="namespacerouting_1_1link_1_1internal.html#a7a252b06125fcedef9ce27135306d05d">test</a> = testCase-&gt;GetTestInfo(j);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::shared_ptr&lt;TestFilter&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>, <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</
 a>) {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keywordflow">if</span> (filter-&gt;disable(test)) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;          disabled.push_back(</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;              test-&gt;test_case_name() + std::string(<span class="stringliteral">&quot;.&quot;</span>) + test-&gt;name());</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;          <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        }</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;      }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    }</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  }</div><div class="line"
 ><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="keywordflow">return</span> disabled;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment">// Used to set up and manage the test environment.</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classstout_1_1internal_1_1tests_1_1Environment.html">   94</a></span>&#160;<span class="keyword">class </span><a class="code" href="classstout_1_1internal_1_1tests_1_1Environment.html">Environment</a> : <span class="keyword">public</span> ::testing::Environment</div><div class="line"><a name="l00
 095"></a><span class="lineno">   95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// We use the constructor to setup specific tests by updating the</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// gtest filter. We do this so that we can selectively run tests that</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// require root or specific OS support (e.g., cgroups). Note that this</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="comment">// should not effect any other filters that have been put in place</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class=
 "comment">// either on the command line or via an environment variable.</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// NOTE: This should be done before invoking `RUN_ALL_TESTS`.</span></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classstout_1_1internal_1_1tests_1_1Environment.html#a58f2e9fc5638428b717dfb3999715ffa">  103</a></span>&#160;  <a class="code" href="classstout_1_1internal_1_1tests_1_1Environment.html#a58f2e9fc5638428b717dfb3999715ffa">Environment</a>(<span class="keyword">const</span> std::vector&lt;std::shared_ptr&lt;TestFilter&gt;&gt;&amp; <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</a>)</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="comment">// First we spli
 t the current filter into enabled and disabled tests</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">// (which are separated by a &#39;-&#39;).</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">const</span> std::string&amp; filtered_tests = ::testing::GTEST_FLAG(<a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>);</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="comment">// An empty filter indicates no tests should be run.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keywordflow">if</span> (filtered_tests.empty()) {</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      <span class="key
 wordflow">return</span>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    std::string enabled_tests;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    std::string disabled_tests;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordtype">size_t</span> dash = filtered_tests.find(<span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordflow">if</span> (dash != std::string::npos) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      enabled_tests = filtered_tests.substr(0, da
 sh);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      disabled_tests = filtered_tests.substr(dash + 1);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      enabled_tests = filtered_tests;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="comment">// Use universal filter if not specified.</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">if</span> (enabled_tests.empty()) {</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      enabled_tests = <span class="strin
 gliteral">&quot;*&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    }</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// Ensure disabled tests end with &quot;:&quot; separator before we add more.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">if</span> (!disabled_tests.empty() &amp;&amp; !<a class="code" href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a>(disabled_tests, <span class="stringliteral">&quot;:&quot;</span>)) {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      disabled_tests += <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    }</div><div class="line"
 ><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// Construct the filter string to handle system or platform specific tests.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    ::testing::UnitTest* unitTest = ::testing::UnitTest::GetInstance();</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    disabled_tests += <a class="code" href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a>(<span class="stringliteral">&quot;:&quot;</span>, disabled(unitTest, <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</a>));</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l
 00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">// Now update the gtest flag.</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    ::testing::GTEST_FLAG(<a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>) = enabled_tests + <span class="stringliteral">&quot;-&quot;</span> + disabled_tests;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  }</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;};</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00147"></a><span class="lineno">  14
 7</span>&#160;} <span class="comment">// namespace stout {</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="preprocessor">#endif // __STOUT_TESTS_ENVIRONMENT_HPP__</span></div><div class="ttc" id="namespacestrings_html_a04772ad549ec2958e0cd80218c32a865"><div class="ttname"><a href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a></div><div class="ttdeci">bool endsWith(const std::string &amp;s, const std::string &amp;suffix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:393</div></div>
+<a href="3rdparty_2stout_2include_2stout_2tests_2environment_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">// regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div
  class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</s
 pan>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __STOUT_TESTS_ENVIRONMENT_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __S
 TOUT_TESTS_ENVIRONMENT_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;gtest/gtest.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code"
  href="strings_8hpp.html">stout/strings.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespacestout.html">   28</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestout.html">stout</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespacestout_1_1internal.html">   29</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespacestout_1_1internal_1_1tests.html">   30</a></span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classstout_1_1inter
 nal_1_1tests_1_1TestFilter.html">   32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html">TestFilter</a></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#acd8c73b5e8eaba996351eaa8cc4231c0">TestFilter</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#ae63b57b74d686e980582940751b14c39">~TestFilter</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00037"></a><span class="lineno">  
  37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="comment">// Returns true iff the test should be disabled.</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#ac21e2a8b8217ec789f80032731a10be4">disable</a>(const ::testing::TestInfo* <a class="code" href="namespacerouting_1_1link_1_1internal.html#a7a252b06125fcedef9ce27135306d05d">test</a>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <span class="comment">// Returns whether the test name or parameterization matches the pattern.</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="cl
 assstout_1_1internal_1_1tests_1_1TestFilter.html#aa37a1e6ff5992eeb24c16d076891627a">   42</a></span>&#160;  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classstout_1_1internal_1_1tests_1_1TestFilter.html#aa37a1e6ff5992eeb24c16d076891627a">matches</a>(</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      const ::testing::TestInfo* test,</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      <span class="keyword">const</span> std::string&amp; pattern)</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;test_case_name(), pattern) ||</div><div class="line"><a name="l00047"></a><span class="lineno">   47<
 /span>&#160;        <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;name(), pattern)) {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    }</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keywordflow">if</span> (test-&gt;type_param() != <span class="keyword">nullptr</span> &amp;&amp;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;type_param(), pattern)) {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;   
    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    }</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordflow">if</span> (test-&gt;value_param() != <span class="keyword">nullptr</span> &amp;&amp;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(test-&gt;value_param(), pattern)) {</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    }</div><div class="line"><a name="l00060"></a><span class="lineno">  
  60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  }</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// Return list of disabled tests based on test name based filters.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">static</span> std::vector&lt;std::string&gt; disabled(</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    const ::testing::UnitTest* unitTest,</div><div cla
 ss="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::shared_ptr&lt;TestFilter&gt;&gt;&amp; <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</a>)</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  std::vector&lt;std::string&gt; disabled;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; unitTest-&gt;total_test_case_count(); i++) {</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    const ::testing::TestCase* testCase = unitTest-&gt;GetTestCase(i);</div><div class="line"><a name="l00075"></a><spa
 n class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; testCase-&gt;total_test_count(); j++) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      const ::testing::TestInfo* <a class="code" href="namespacerouting_1_1link_1_1internal.html#a7a252b06125fcedef9ce27135306d05d">test</a> = testCase-&gt;GetTestInfo(j);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::shared_ptr&lt;TestFilter&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>, <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</
 a>) {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keywordflow">if</span> (filter-&gt;disable(test)) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;          disabled.push_back(</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;              test-&gt;test_case_name() + std::string(<span class="stringliteral">&quot;.&quot;</span>) + test-&gt;name());</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;          <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        }</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;      }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    }</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  }</div><div class="line"
 ><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="keywordflow">return</span> disabled;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment">// Used to set up and manage the test environment.</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classstout_1_1internal_1_1tests_1_1Environment.html">   94</a></span>&#160;<span class="keyword">class </span><a class="code" href="classstout_1_1internal_1_1tests_1_1Environment.html">Environment</a> : <span class="keyword">public</span> ::testing::Environment</div><div class="line"><a name="l00
 095"></a><span class="lineno">   95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// We use the constructor to setup specific tests by updating the</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// gtest filter. We do this so that we can selectively run tests that</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// require root or specific OS support (e.g., cgroups). Note that this</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="comment">// should not effect any other filters that have been put in place</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class=
 "comment">// either on the command line or via an environment variable.</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// NOTE: This should be done before invoking `RUN_ALL_TESTS`.</span></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classstout_1_1internal_1_1tests_1_1Environment.html#a58f2e9fc5638428b717dfb3999715ffa">  103</a></span>&#160;  <a class="code" href="classstout_1_1internal_1_1tests_1_1Environment.html#a58f2e9fc5638428b717dfb3999715ffa">Environment</a>(<span class="keyword">const</span> std::vector&lt;std::shared_ptr&lt;TestFilter&gt;&gt;&amp; <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</a>)</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="comment">// First we spli
 t the current filter into enabled and disabled tests</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">// (which are separated by a &#39;-&#39;).</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">const</span> std::string&amp; filtered_tests = ::testing::GTEST_FLAG(<a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>);</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="comment">// An empty filter indicates no tests should be run.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keywordflow">if</span> (filtered_tests.empty()) {</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      <span class="key
 wordflow">return</span>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    std::string enabled_tests;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    std::string disabled_tests;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordtype">size_t</span> dash = filtered_tests.find(<span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordflow">if</span> (dash != std::string::npos) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      enabled_tests = filtered_tests.substr(0, da
 sh);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      disabled_tests = filtered_tests.substr(dash + 1);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      enabled_tests = filtered_tests;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="comment">// Use universal filter if not specified.</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">if</span> (enabled_tests.empty()) {</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      enabled_tests = <span class="strin
 gliteral">&quot;*&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    }</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// Ensure disabled tests end with &quot;:&quot; separator before we add more.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">if</span> (!disabled_tests.empty() &amp;&amp; !<a class="code" href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a>(disabled_tests, <span class="stringliteral">&quot;:&quot;</span>)) {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      disabled_tests += <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    }</div><div class="line"
 ><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// Construct the filter string to handle system or platform specific tests.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    ::testing::UnitTest* unitTest = ::testing::UnitTest::GetInstance();</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    disabled_tests += <a class="code" href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a>(<span class="stringliteral">&quot;:&quot;</span>, disabled(unitTest, <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">filters</a>));</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l
 00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">// Now update the gtest flag.</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    ::testing::GTEST_FLAG(<a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>) = enabled_tests + <span class="stringliteral">&quot;-&quot;</span> + disabled_tests;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  }</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;};</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00147"></a><span class="lineno">  14
 7</span>&#160;} <span class="comment">// namespace stout {</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="preprocessor">#endif // __STOUT_TESTS_ENVIRONMENT_HPP__</span></div><div class="ttc" id="namespacestrings_html_a04772ad549ec2958e0cd80218c32a865"><div class="ttname"><a href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a></div><div class="ttdeci">bool endsWith(const std::string &amp;s, const std::string &amp;suffix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:402</div></div>
 <div class="ttc" id="classstout_1_1internal_1_1tests_1_1TestFilter_html_ae63b57b74d686e980582940751b14c39"><div class="ttname"><a href="classstout_1_1internal_1_1tests_1_1TestFilter.html#ae63b57b74d686e980582940751b14c39">stout::internal::tests::TestFilter::~TestFilter</a></div><div class="ttdeci">virtual ~TestFilter()=default</div></div>
-<div class="ttc" id="namespacestrings_html_ac315a6174f56cba0d8295f84da265416"><div class="ttname"><a href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a></div><div class="ttdeci">std::stringstream &amp; join(std::stringstream &amp;stream, const std::string &amp;separator, T &amp;&amp;...args)</div><div class="ttdef"><b>Definition:</b> strings.hpp:306</div></div>
+<div class="ttc" id="namespacestrings_html_ac315a6174f56cba0d8295f84da265416"><div class="ttname"><a href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a></div><div class="ttdeci">std::stringstream &amp; join(std::stringstream &amp;stream, const std::string &amp;separator, T &amp;&amp;...args)</div><div class="ttdef"><b>Definition:</b> strings.hpp:307</div></div>
 <div class="ttc" id="classstout_1_1internal_1_1tests_1_1TestFilter_html_acd8c73b5e8eaba996351eaa8cc4231c0"><div class="ttname"><a href="classstout_1_1internal_1_1tests_1_1TestFilter.html#acd8c73b5e8eaba996351eaa8cc4231c0">stout::internal::tests::TestFilter::TestFilter</a></div><div class="ttdeci">TestFilter()=default</div></div>
-<div class="ttc" id="namespacestrings_html_a269921757daf11096d3f5e02686f8444"><div class="ttname"><a href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a></div><div class="ttdeci">bool contains(const std::string &amp;s, const std::string &amp;substr)</div><div class="ttdef"><b>Definition:</b> strings.hpp:406</div></div>
+<div class="ttc" id="namespacestrings_html_a269921757daf11096d3f5e02686f8444"><div class="ttname"><a href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a></div><div class="ttdeci">bool contains(const std::string &amp;s, const std::string &amp;substr)</div><div class="ttdef"><b>Definition:</b> strings.hpp:423</div></div>
 <div class="ttc" id="classstout_1_1internal_1_1tests_1_1TestFilter_html_aa37a1e6ff5992eeb24c16d076891627a"><div class="ttname"><a href="classstout_1_1internal_1_1tests_1_1TestFilter.html#aa37a1e6ff5992eeb24c16d076891627a">stout::internal::tests::TestFilter::matches</a></div><div class="ttdeci">static bool matches(const ::testing::TestInfo *test, const std::string &amp;pattern)</div><div class="ttdef"><b>Definition:</b> environment.hpp:42</div></div>
 <div class="ttc" id="namespacerouting_1_1filter_1_1internal_html_a646d4e3238d83329525957b5a5586be2"><div class="ttname"><a href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">routing::filter::internal::filters</a></div><div class="ttdeci">Result&lt; std::vector&lt; Filter&lt; Classifier &gt; &gt; &gt; filters(const std::string &amp;_link, const Handle &amp;parent)</div><div class="ttdef"><b>Definition:</b> internal.hpp:776</div></div>
 <div class="ttc" id="classstout_1_1internal_1_1tests_1_1Environment_html"><div class="ttname"><a href="classstout_1_1internal_1_1tests_1_1Environment.html">stout::internal::tests::Environment</a></div><div class="ttdef"><b>Definition:</b> environment.hpp:94</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/3rdparty_2stout_2include_2stout_2uri_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2uri_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2uri_8hpp_source.html
index 725be32..83c7099 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2uri_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2uri_8hpp_source.html
@@ -54,7 +54,7 @@
 <div class="contents">
 <a href="3rdparty_2stout_2include_2stout_2uri_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<
 span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</spa
 n>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_URI_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_URI_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a na
 me="l00021"></a><span class="lineno"><a class="line" href="namespaceuri.html">   21</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceuri.html">uri</a> {</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="namespaceuri.html#a6e4f68da1fb0b805892ab1990aa9c673">   23</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceuri.html#a6e4f68da1fb0b805892ab1990aa9c673">FILE_PREFIX</a> = <span class="stringliteral">&quot;file://&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">// Returns a valid URI containing a filename.</span></div><div class="line"><a name="l00027"
 ></a><span class="lineno">   27</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// On Windows, the / character is replaced with \ since that&#39;s the path</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// separator. Note that / will often work, but will absolutely not work if the</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// path is a long path.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespaceuri.html#adbec56f3648844a3ecfcb4bcbe433545">   31</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespaceuri.html#adbec56f3648844a3ecfcb4bcbe433545">from_path</a>(<span class="keyword">const</span> std::string&amp; filepath)</div><div class="line"><a name="l00032"></a><
 span class="lineno">   32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  <span class="keywordflow">return</span> FILE_PREFIX + <a class="code" href="namespacestrings.html#a082f6de42f9c52047369e2ff80155eca">strings::replace</a>(filepath, <span class="stringliteral">&quot;\\&quot;</span>, <span class="stringliteral">&quot;/&quot;</span>);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  <span class="keywordflow">return</span> FILE_PREFIX + filepath;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00038"></a><span class="li
 neno">   38</span>&#160;}</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;} <span class="comment">// namespace uri {</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#endif // __STOUT_URI_HPP__</span></div><div class="ttc" id="namespaceuri_html_adbec56f3648844a3ecfcb4bcbe433545"><div class="ttname"><a href="namespaceuri.html#adbec56f3648844a3ecfcb4bcbe433545">uri::from_path</a></div><div class="ttdeci">std::string from_path(const std::string &amp;filepath)</div><div class="ttdef"><b>Definition:</b> uri.hpp:31</div></div>
 <div class="ttc" id="namespaceuri_html_a6e4f68da1fb0b805892ab1990aa9c673"><div class="ttname"><a href="namespaceuri.html#a6e4f68da1fb0b805892ab1990aa9c673">uri::FILE_PREFIX</a></div><div class="ttdeci">const std::string FILE_PREFIX</div><div class="ttdef"><b>Definition:</b> uri.hpp:23</div></div>
-<div class="ttc" id="namespacestrings_html_a082f6de42f9c52047369e2ff80155eca"><div class="ttname"><a href="namespacestrings.html#a082f6de42f9c52047369e2ff80155eca">strings::replace</a></div><div class="ttdeci">std::string replace(const std::string &amp;s, const std::string &amp;from, const std::string &amp;to)</div><div class="ttdef"><b>Definition:</b> strings.hpp:112</div></div>
+<div class="ttc" id="namespacestrings_html_a082f6de42f9c52047369e2ff80155eca"><div class="ttname"><a href="namespacestrings.html#a082f6de42f9c52047369e2ff80155eca">strings::replace</a></div><div class="ttdeci">std::string replace(const std::string &amp;s, const std::string &amp;from, const std::string &amp;to)</div><div class="ttdef"><b>Definition:</b> strings.hpp:113</div></div>
 <div class="ttc" id="namespaceuri_html"><div class="ttname"><a href="namespaceuri.html">uri</a></div><div class="ttdef"><b>Definition:</b> uri.hpp:21</div></div>
 <div class="ttc" id="strings_8hpp_html"><div class="ttname"><a href="strings_8hpp.html">strings.hpp</a></div></div>
 </div><!-- fragment --></div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
index d3c1268..ddf42cc 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
@@ -58,7 +58,7 @@
 <div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
 <div class="ttc" id="structVersion_html_a8a7d33d5d4bcc5cbac192597328c6f78"><div class="ttname"><a href="structVersion.html#a8a7d33d5d4bcc5cbac192597328c6f78">Version::operator&gt;</a></div><div class="ttdeci">bool operator&gt;(const Version &amp;other) const </div><div class="ttdef"><b>Definition:</b> version.hpp:259</div></div>
 <div class="ttc" id="structVersion_html_a1d3270fdc6ccd9f39be84c19bb42de46"><div class="ttname"><a href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">Version::majorVersion</a></div><div class="ttdeci">const uint32_t majorVersion</div><div class="ttdef"><b>Definition:</b> version.hpp:278</div></div>
-<div class="ttc" id="namespacestrings_html_ac315a6174f56cba0d8295f84da265416"><div class="ttname"><a href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a></div><div class="ttdeci">std::stringstream &amp; join(std::stringstream &amp;stream, const std::string &amp;separator, T &amp;&amp;...args)</div><div class="ttdef"><b>Definition:</b> strings.hpp:306</div></div>
+<div class="ttc" id="namespacestrings_html_ac315a6174f56cba0d8295f84da265416"><div class="ttname"><a href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a></div><div class="ttdeci">std::stringstream &amp; join(std::stringstream &amp;stream, const std::string &amp;separator, T &amp;&amp;...args)</div><div class="ttdef"><b>Definition:</b> strings.hpp:307</div></div>
 <div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="structVersion_html_adefd3b36f307963dd8f5ee7a34267067"><div class="ttname"><a href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">Version::patchVersion</a></div><div class="ttdeci">const uint32_t patchVersion</div><div class="ttdef"><b>Definition:</b> version.hpp:280</div></div>
 <div class="ttc" id="structVersion_html_a41fb1fed8868043854e28574e9706179"><div class="ttname"><a href="structVersion.html#a41fb1fed8868043854e28574e9706179">Version::Version</a></div><div class="ttdeci">Version(uint32_t _majorVersion, uint32_t _minorVersion, uint32_t _patchVersion, const std::vector&lt; std::string &gt; &amp;_prerelease={}, const std::vector&lt; std::string &gt; &amp;_build={})</div><div class="ttdef"><b>Definition:</b> version.hpp:135</div></div>
@@ -86,10 +86,10 @@
 <div class="ttc" id="stringify_8hpp_html"><div class="ttname"><a href="stringify_8hpp.html">stringify.hpp</a></div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
 <div class="ttc" id="structVersion_html"><div class="ttname"><a href="structVersion.html">Version</a></div><div class="ttdef"><b>Definition:</b> version.hpp:41</div></div>
-<div class="ttc" id="namespacestrings_html_a1f86a4a73f20056475dc065ec984eb7a"><div class="ttname"><a href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::split</a></div><div class="ttdeci">std::vector&lt; std::string &gt; split(const std::string &amp;s, const std::string &amp;delims, const Option&lt; size_t &gt; &amp;maxTokens=None())</div><div class="ttdef"><b>Definition:</b> strings.hpp:183</div></div>
+<div class="ttc" id="namespacestrings_html_a1f86a4a73f20056475dc065ec984eb7a"><div class="ttname"><a href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::split</a></div><div class="ttdeci">std::vector&lt; std::string &gt; split(const std::string &amp;s, const std::string &amp;delims, const Option&lt; size_t &gt; &amp;maxTokens=None())</div><div class="ttdef"><b>Definition:</b> strings.hpp:184</div></div>
 <div class="ttc" id="structVersion_html_a85b8334778605508043fe809becac358"><div class="ttname"><a href="structVersion.html#a85b8334778605508043fe809becac358">Version::operator!=</a></div><div class="ttdeci">bool operator!=(const Version &amp;other) const </div><div class="ttdef"><b>Definition:</b> version.hpp:168</div></div>
 <div class="ttc" id="namespacens_html_a28116b46e6543597a11733424cd1aa20"><div class="ttname"><a href="namespacens.html#a28116b46e6543597a11733424cd1aa20">ns::stringify</a></div><div class="ttdeci">std::string stringify(int flags)</div></div>
-<div class="ttc" id="namespacestrings_html_aa5513faacb213c7e097c0d43af43d9c7"><div class="ttname"><a href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a></div><div class="ttdeci">bool startsWith(const std::string &amp;s, const std::string &amp;prefix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:380</div></div>
+<div class="ttc" id="namespacestrings_html_aa5513faacb213c7e097c0d43af43d9c7"><div class="ttname"><a href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a></div><div class="ttdeci">bool startsWith(const std::string &amp;s, const std::string &amp;prefix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:381</div></div>
 <div class="ttc" id="structVersion_html_a59e48748021526b2498be363d1adfde2"><div class="ttname"><a href="structVersion.html#a59e48748021526b2498be363d1adfde2">Version::build</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; build</div><div class="ttdef"><b>Definition:</b> version.hpp:282</div></div>
 <div class="ttc" id="strings_8hpp_html"><div class="ttname"><a href="strings_8hpp.html">strings.hpp</a></div></div>
 </div><!-- fragment --></div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/Nodes.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Nodes.xml b/content/api/latest/c++/Nodes.xml
index 073dae9..3d60c15 100644
--- a/content/api/latest/c++/Nodes.xml
+++ b/content/api/latest/c++/Nodes.xml
@@ -60680,6 +60680,11 @@
                       <Anchor>a269921757daf11096d3f5e02686f8444</Anchor>
                      </Node>
                      <Node>
+                      <Name>endsWidth</Name>
+                      <Path>strings_8hpp.html</Path>
+                      <Anchor>a9a8ff8ed97c97bc9c7a4583184dadea8</Anchor>
+                     </Node>
+                     <Node>
                       <Name>endsWith</Name>
                       <Path>strings_8hpp.html</Path>
                       <Anchor>a04772ad549ec2958e0cd80218c32a865</Anchor>
@@ -60752,6 +60757,11 @@
                      <Node>
                       <Name>startsWith</Name>
                       <Path>strings_8hpp.html</Path>
+                      <Anchor>a200728db9f01d9a99d4a5e5942f593ee</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>startsWith</Name>
+                      <Path>strings_8hpp.html</Path>
                       <Anchor>ad7fa64549fd2974c79b288e5a30293f0</Anchor>
                      </Node>
                      <Node>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/Tokens.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Tokens.xml b/content/api/latest/c++/Tokens.xml
index fa0f84f..1464bf7 100644
--- a/content/api/latest/c++/Tokens.xml
+++ b/content/api/latest/c++/Tokens.xml
@@ -9309,6 +9309,17 @@
       <Scope>strings</Scope>
     </TokenIdentifier>
     <Path>namespacestrings.html</Path>
+    <Anchor>a200728db9f01d9a99d4a5e5942f593ee</Anchor>
+    <DeclaredIn>strings.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>startsWith</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>strings</Scope>
+    </TokenIdentifier>
+    <Path>namespacestrings.html</Path>
     <Anchor>ad7fa64549fd2974c79b288e5a30293f0</Anchor>
     <DeclaredIn>strings.hpp</DeclaredIn>
   </Token>
@@ -9325,6 +9336,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>endsWidth</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>strings</Scope>
+    </TokenIdentifier>
+    <Path>namespacestrings.html</Path>
+    <Anchor>a9a8ff8ed97c97bc9c7a4583184dadea8</Anchor>
+    <DeclaredIn>strings.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>endsWith</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -196926,6 +196948,17 @@
       <Scope>strings</Scope>
     </TokenIdentifier>
     <Path>namespacestrings.html</Path>
+    <Anchor>a200728db9f01d9a99d4a5e5942f593ee</Anchor>
+    <DeclaredIn>strings.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>startsWith</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>strings</Scope>
+    </TokenIdentifier>
+    <Path>namespacestrings.html</Path>
     <Anchor>ad7fa64549fd2974c79b288e5a30293f0</Anchor>
     <DeclaredIn>strings.hpp</DeclaredIn>
   </Token>
@@ -196942,6 +196975,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>endsWidth</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>strings</Scope>
+    </TokenIdentifier>
+    <Path>namespacestrings.html</Path>
+    <Anchor>a9a8ff8ed97c97bc9c7a4583184dadea8</Anchor>
+    <DeclaredIn>strings.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>endsWith</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/bytes_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/bytes_8hpp_source.html b/content/api/latest/c++/bytes_8hpp_source.html
index c24a48c..07d114c 100644
--- a/content/api/latest/c++/bytes_8hpp_source.html
+++ b/content/api/latest/c++/bytes_8hpp_source.html
@@ -78,7 +78,7 @@
 <div class="ttc" id="classBytes_html_afc19db0edd77ac901f8591a41ef76523"><div class="ttname"><a href="classBytes.html#afc19db0edd77ac901f8591a41ef76523">Bytes::Bytes</a></div><div class="ttdeci">constexpr Bytes(uint64_t bytes=0)</div><div class="ttdef"><b>Definition:</b> bytes.hpp:76</div></div>
 <div class="ttc" id="abort_8hpp_html"><div class="ttname"><a href="abort_8hpp.html">abort.hpp</a></div></div>
 <div class="ttc" id="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &amp;e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
-<div class="ttc" id="namespacestrings_html_a69f3467801285caf9a9e04929ff33cee"><div class="ttname"><a href="namespacestrings.html#a69f3467801285caf9a9e04929ff33cee">strings::upper</a></div><div class="ttdeci">std::string upper(const std::string &amp;s)</div><div class="ttdef"><b>Definition:</b> strings.hpp:420</div></div>
+<div class="ttc" id="namespacestrings_html_a69f3467801285caf9a9e04929ff33cee"><div class="ttname"><a href="namespacestrings.html#a69f3467801285caf9a9e04929ff33cee">strings::upper</a></div><div class="ttdeci">std::string upper(const std::string &amp;s)</div><div class="ttdef"><b>Definition:</b> strings.hpp:437</div></div>
 <div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
 <div class="ttc" id="bytes_8hpp_html_a1ddad0da83178785efb031952a4ef6a5"><div class="ttname"><a href="bytes_8hpp.html#a1ddad0da83178785efb031952a4ef6a5">Gigabytes</a></div><div class="ttdeci">constexpr Bytes Gigabytes(uint64_t value)</div><div class="ttdef"><b>Definition:</b> bytes.hpp:129</div></div>
 <div class="ttc" id="stringify_8hpp_html"><div class="ttname"><a href="stringify_8hpp.html">stringify.hpp</a></div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/credentials_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/credentials_8hpp_source.html b/content/api/latest/c++/credentials_8hpp_source.html
index a7cf3b5..5b9ebbc 100644
--- a/content/api/latest/c++/credentials_8hpp_source.html
+++ b/content/api/latest/c++/credentials_8hpp_source.html
@@ -61,8 +61,8 @@
 <div class="ttc" id="permissions_8hpp_html"><div class="ttname"><a href="permissions_8hpp.html">permissions.hpp</a></div></div>
 <div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
 <div class="ttc" id="structos_1_1Permissions_html_a9c1d8046a31c4b107f4548483dfa9c32"><div class="ttname"><a href="structos_1_1Permissions.html#a9c1d8046a31c4b107f4548483dfa9c32">os::Permissions::rwx</a></div><div class="ttdeci">bool rwx</div><div class="ttdef"><b>Definition:</b> permissions.hpp:52</div></div>
-<div class="ttc" id="namespacestrings_html_adaaf307e99ca9a9e434c43d7fda7d298"><div class="ttname"><a href="namespacestrings.html#adaaf307e99ca9a9e434c43d7fda7d298">strings::pairs</a></div><div class="ttdeci">std::map&lt; std::string, std::vector&lt; std::string &gt; &gt; pairs(const std::string &amp;s, const std::string &amp;delims1, const std::string &amp;delims2)</div><div class="ttdef"><b>Definition:</b> strings.hpp:222</div></div>
-<div class="ttc" id="namespacestrings_html_afffe11c8ecce961981653358520d6a04"><div class="ttname"><a href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a></div><div class="ttdeci">std::vector&lt; std::string &gt; tokenize(const std::string &amp;s, const std::string &amp;delims, const Option&lt; size_t &gt; &amp;maxTokens=None())</div><div class="ttdef"><b>Definition:</b> strings.hpp:138</div></div>
+<div class="ttc" id="namespacestrings_html_adaaf307e99ca9a9e434c43d7fda7d298"><div class="ttname"><a href="namespacestrings.html#adaaf307e99ca9a9e434c43d7fda7d298">strings::pairs</a></div><div class="ttdeci">std::map&lt; std::string, std::vector&lt; std::string &gt; &gt; pairs(const std::string &amp;s, const std::string &amp;delims1, const std::string &amp;delims2)</div><div class="ttdef"><b>Definition:</b> strings.hpp:223</div></div>
+<div class="ttc" id="namespacestrings_html_afffe11c8ecce961981653358520d6a04"><div class="ttname"><a href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a></div><div class="ttdeci">std::vector&lt; std::string &gt; tokenize(const std::string &amp;s, const std::string &amp;delims, const Option&lt; size_t &gt; &amp;maxTokens=None())</div><div class="ttdef"><b>Definition:</b> strings.hpp:139</div></div>
 <div class="ttc" id="classPath_html"><div class="ttname"><a href="classPath.html">Path</a></div><div class="ttdoc">Represents a POSIX or Windows file system path and offers common path manipulations. </div><div class="ttdef"><b>Definition:</b> path.hpp:145</div></div>
 <div class="ttc" id="path_8hpp_html"><div class="ttname"><a href="path_8hpp.html">path.hpp</a></div></div>
 <div class="ttc" id="namespacemesos_html"><div class="ttname"><a href="namespacemesos.html">mesos</a></div><div class="ttdef"><b>Definition:</b> spec.hpp:30</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/decoder_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/decoder_8hpp_source.html b/content/api/latest/c++/decoder_8hpp_source.html
index 4a2576c..cc1727b 100644
--- a/content/api/latest/c++/decoder_8hpp_source.html
+++ b/content/api/latest/c++/decoder_8hpp_source.html
@@ -86,7 +86,7 @@
 <div class="ttc" id="structprocess_1_1http_1_1URL_html_af2d0454d281cfe79f382c0dbc91bc251"><div class="ttname"><a href="structprocess_1_1http_1_1URL.html#af2d0454d281cfe79f382c0dbc91bc251">process::http::URL::query</a></div><div class="ttdeci">hashmap&lt; std::string, std::string &gt; query</div><div class="ttdef"><b>Definition:</b> http.hpp:176</div></div>
 <div class="ttc" id="structprocess_1_1http_1_1Response_html_a6dd5881e0450540a106e37257434eaada7d2a4db1b1426c6caab18fa8b484f4f5"><div class="ttname"><a href="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada7d2a4db1b1426c6caab18fa8b484f4f5">process::http::Response::BODY</a></div><div class="ttdef"><b>Definition:</b> http.hpp:649</div></div>
 <div class="ttc" id="classprocess_1_1DataDecoder_html_a86ae2a264437c9c13249d11473536eec"><div class="ttname"><a href="classprocess_1_1DataDecoder.html#a86ae2a264437c9c13249d11473536eec">process::DataDecoder::decode</a></div><div class="ttdeci">std::deque&lt; http::Request * &gt; decode(const char *data, size_t length)</div><div class="ttdef"><b>Definition:</b> decoder.hpp:88</div></div>
-<div class="ttc" id="namespacestrings_html_a269921757daf11096d3f5e02686f8444"><div class="ttname"><a href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a></div><div class="ttdeci">bool contains(const std::string &amp;s, const std::string &amp;substr)</div><div class="ttdef"><b>Definition:</b> strings.hpp:406</div></div>
+<div class="ttc" id="namespacestrings_html_a269921757daf11096d3f5e02686f8444"><div class="ttname"><a href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a></div><div class="ttdeci">bool contains(const std::string &amp;s, const std::string &amp;substr)</div><div class="ttdef"><b>Definition:</b> strings.hpp:423</div></div>
 <div class="ttc" id="structprocess_1_1http_1_1Response_html_aa3543eb8ecd36f5d6d91b2640d471359"><div class="ttname"><a href="structprocess_1_1http_1_1Response.html#aa3543eb8ecd36f5d6d91b2640d471359">process::http::Response::reader</a></div><div class="ttdeci">Option&lt; Pipe::Reader &gt; reader</div><div class="ttdef"><b>Definition:</b> http.hpp:656</div></div>
 <div class="ttc" id="structprocess_1_1http_1_1URL_html_a184ec5f02b451f1d53b1ac5032a68dac"><div class="ttname"><a href="structprocess_1_1http_1_1URL.html#a184ec5f02b451f1d53b1ac5032a68dac">process::http::URL::path</a></div><div class="ttdeci">std::string path</div><div class="ttdef"><b>Definition:</b> http.hpp:175</div></div>
 <div class="ttc" id="stout_2include_2stout_2check_8hpp_html_aee320e7c6e107071f4b85d4cc135a265"><div class="ttname"><a href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a></div><div class="ttdeci">#define CHECK_SOME(expression)</div><div class="ttdef"><b>Definition:</b> check.hpp:50</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/drf_2sorter_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/drf_2sorter_8hpp_source.html b/content/api/latest/c++/drf_2sorter_8hpp_source.html
index ed00e0a..4828773 100644
--- a/content/api/latest/c++/drf_2sorter_8hpp_source.html
+++ b/content/api/latest/c++/drf_2sorter_8hpp_source.html
@@ -61,7 +61,7 @@
 <div class="ttc" id="namespacemesos_1_1v1_1_1master_html"><div class="ttname"><a href="namespacemesos_1_1v1_1_1master.html">mesos::v1::master</a></div><div class="ttdef"><b>Definition:</b> master.hpp:27</div></div>
 <div class="ttc" id="sorter_8hpp_html"><div class="ttname"><a href="sorter_8hpp.html">sorter.hpp</a></div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_html_a3df87de6f848909e64aae964fc812f65"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node.html#a3df87de6f848909e64aae964fc812f65">mesos::internal::master::allocator::DRFSorter::Node::share</a></div><div class="ttdeci">double share</div><div class="ttdef"><b>Definition:</b> sorter.hpp:244</div></div>
-<div class="ttc" id="namespacestrings_html_ac315a6174f56cba0d8295f84da265416"><div class="ttname"><a href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a></div><div class="ttdeci">std::stringstream &amp; join(std::stringstream &amp;stream, const std::string &amp;separator, T &amp;&amp;...args)</div><div class="ttdef"><b>Definition:</b> strings.hpp:306</div></div>
+<div class="ttc" id="namespacestrings_html_ac315a6174f56cba0d8295f84da265416"><div class="ttname"><a href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a></div><div class="ttdeci">std::stringstream &amp; join(std::stringstream &amp;stream, const std::string &amp;separator, T &amp;&amp;...args)</div><div class="ttdef"><b>Definition:</b> strings.hpp:307</div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_html_aaf5f7c82af3c2f35a3337ad3b270cc06"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node.html#aaf5f7c82af3c2f35a3337ad3b270cc06">mesos::internal::master::allocator::DRFSorter::Node::clientPath</a></div><div class="ttdeci">std::string clientPath() const </div><div class="ttdef"><b>Definition:</b> sorter.hpp:273</div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_html_a4a4cee57ee80c001f04eee39b11d75ea"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node.html#a4a4cee57ee80c001f04eee39b11d75ea">mesos::internal::master::allocator::DRFSorter::Node::children</a></div><div class="ttdeci">std::vector&lt; Node * &gt; children</div><div class="ttdef"><b>Definition:</b> sorter.hpp:262</div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_1_1Allocation_html_a84434bc1109d2bafa13d36233d004800"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_1_1Allocation.html#a84434bc1109d2bafa13d36233d004800">mesos::internal::master::allocator::DRFSorter::Node::Allocation::add</a></div><div class="ttdeci">void add(const SlaveID &amp;slaveId, const Resources &amp;toAdd)</div><div class="ttdef"><b>Definition:</b> sorter.hpp:324</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/fetch_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/fetch_8hpp_source.html b/content/api/latest/c++/fetch_8hpp_source.html
index f831cec..876b46a 100644
--- a/content/api/latest/c++/fetch_8hpp_source.html
+++ b/content/api/latest/c++/fetch_8hpp_source.html
@@ -68,7 +68,7 @@
 <div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1credentials_html_a137c93d60149616181a10e9f39986f7f"><div class="ttname"><a href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">mesos::internal::credentials::read</a></div><div class="ttdeci">Result&lt; Credentials &gt; read(const Path &amp;path)</div><div class="ttdef"><b>Definition:</b> credentials.hpp:35</div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
-<div class="ttc" id="namespacestrings_html_aa5513faacb213c7e097c0d43af43d9c7"><div class="ttname"><a href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a></div><div class="ttdeci">bool startsWith(const std::string &amp;s, const std::string &amp;prefix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:380</div></div>
+<div class="ttc" id="namespacestrings_html_aa5513faacb213c7e097c0d43af43d9c7"><div class="ttname"><a href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a></div><div class="ttdeci">bool startsWith(const std::string &amp;s, const std::string &amp;prefix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:381</div></div>
 <div class="ttc" id="namespaceflags_html"><div class="ttname"><a href="namespaceflags.html">flags</a></div><div class="ttdef"><b>Definition:</b> parse.hpp:33</div></div>
 <div class="ttc" id="strings_8hpp_html"><div class="ttname"><a href="strings_8hpp.html">strings.hpp</a></div></div>
 </div><!-- fragment --></div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/filter_2internal_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/filter_2internal_8hpp_source.html b/content/api/latest/c++/filter_2internal_8hpp_source.html
index c37b664..b061b65 100644
--- a/content/api/latest/c++/filter_2internal_8hpp_source.html
+++ b/content/api/latest/c++/filter_2internal_8hpp_source.html
@@ -85,7 +85,7 @@
 <div class="ttc" id="priority_8hpp_html"><div class="ttname"><a href="priority_8hpp.html">priority.hpp</a></div></div>
 <div class="ttc" id="namespacemesos_1_1modules_html_a70163bdea2fe39ef5b798a7d7ee0c220"><div class="ttname"><a href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">mesos::modules::kind</a></div><div class="ttdeci">const char * kind()</div></div>
 <div class="ttc" id="namespacerouting_1_1filter_1_1internal_html_af143a877c566cca8dacc77d3b64f3372"><div class="ttname"><a href="namespacerouting_1_1filter_1_1internal.html#af143a877c566cca8dacc77d3b64f3372">routing::filter::internal::encode</a></div><div class="ttdeci">Try&lt; Nothing &gt; encode(const Netlink&lt; struct rtnl_cls &gt; &amp;cls, const Classifier &amp;classifier)</div></div>
-<div class="ttc" id="namespacestrings_html_a269921757daf11096d3f5e02686f8444"><div class="ttname"><a href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a></div><div class="ttdeci">bool contains(const std::string &amp;s, const std::string &amp;substr)</div><div class="ttdef"><b>Definition:</b> strings.hpp:406</div></div>
+<div class="ttc" id="namespacestrings_html_a269921757daf11096d3f5e02686f8444"><div class="ttname"><a href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a></div><div class="ttdeci">bool contains(const std::string &amp;s, const std::string &amp;substr)</div><div class="ttdef"><b>Definition:</b> strings.hpp:423</div></div>
 <div class="ttc" id="structrouting_1_1filter_1_1Filter_html"><div class="ttname"><a href="structrouting_1_1filter_1_1Filter.html">routing::filter::Filter</a></div><div class="ttdef"><b>Definition:</b> filter.hpp:46</div></div>
 <div class="ttc" id="structrouting_1_1filter_1_1Filter_html_acfe994fed2fd67ec52ddc877604a8d5f"><div class="ttname"><a href="structrouting_1_1filter_1_1Filter.html#acfe994fed2fd67ec52ddc877604a8d5f">routing::filter::Filter::handle</a></div><div class="ttdeci">Option&lt; Handle &gt; handle</div><div class="ttdef"><b>Definition:</b> filter.hpp:96</div></div>
 <div class="ttc" id="link_2internal_8hpp_html"><div class="ttname"><a href="link_2internal_8hpp.html">internal.hpp</a></div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/a1626605/content/api/latest/c++/globals_u.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/globals_u.html b/content/api/latest/c++/globals_u.html
index 7f3d7c2..3e3c549 100644
--- a/content/api/latest/c++/globals_u.html
+++ b/content/api/latest/c++/globals_u.html
@@ -94,12 +94,12 @@
 <li>Unimplemented()
 : <a class="el" href="unimplemented_8hpp.html#a788f2d5d116d024fbfd9b0fd36fa334f">unimplemented.hpp</a>
 </li>
-<li>Unreachable()
-: <a class="el" href="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3">unreachable.hpp</a>
-</li>
 <li>UNREACHABLE
 : <a class="el" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">unreachable.hpp</a>
 </li>
+<li>Unreachable()
+: <a class="el" href="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3">unreachable.hpp</a>
+</li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->