update doc

This commit is contained in:
Johann Dreo 2022-08-29 10:26:26 +02:00
commit 5f1c68cc93
35 changed files with 582 additions and 549 deletions

View file

@ -100,22 +100,24 @@ $(function() {
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>info</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> enum name</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a>(const std::string name)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(std::string line)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">location</a>(const std::string &amp;in_file, const std::string &amp;in_function=&quot;.*&quot;, const std::string &amp;in_line=&quot;.*&quot;)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">log</a>(const level &amp;stage, const std::string &amp;what, const std::string &amp;file, const std::string &amp;func, size_t line) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">logger</a>()</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>note</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(clutchlog const &amp;)=delete (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d">out</a>(std::ostream &amp;out)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">out</a>()</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>progress</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2">replace</a>(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(level stage, FMT... styles)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">style</a>(level stage, fmt style)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">style</a>(level stage) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">threshold</a>(level l)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">levels</a>() const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(std::string line)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">location</a>(const std::string &amp;in_file, const std::string &amp;in_function=&quot;.*&quot;, const std::string &amp;in_line=&quot;.*&quot;)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">log</a>(const level &amp;stage, const std::string &amp;what, const std::string &amp;file, const std::string &amp;func, size_t line) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">logger</a>()</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>note</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(clutchlog const &amp;)=delete (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d">out</a>(std::ostream &amp;out)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">out</a>()</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>progress</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2">replace</a>(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(level stage, FMT... styles)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">style</a>(level stage, fmt style)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">style</a>(level stage) const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">threshold</a>(level l)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9">threshold</a>(const std::string &amp;l)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>() const</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>warning</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>xdebug</b> enum value (defined in <a class="el" href="classclutchlog.html">clutchlog</a>)</td><td class="entry"><a class="el" href="classclutchlog.html">clutchlog</a></td><td class="entry"></td></tr>

View file

@ -109,12 +109,23 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="
<tr class="separator:ga6c6ab42a1df147e6c2d115bc36ec8266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">threshold</a> (<a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> l)</td></tr>
<tr class="memdesc:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level below which logs are not printed. <br /></td></tr>
<tr class="memdesc:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level (below which logs are not printed) with an identifier. <br /></td></tr>
<tr class="separator:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a7738eaad114bfa870121412fe23ad9"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9">threshold</a> (const std::string &amp;l)</td></tr>
<tr class="memdesc:ga7a7738eaad114bfa870121412fe23ad9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level (below which logs are not printed) with a string. <br /></td></tr>
<tr class="separator:ga7a7738eaad114bfa870121412fe23ad9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab45287cc9c14217904a13aff49573732"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a> () const</td></tr>
<tr class="memdesc:gab45287cc9c14217904a13aff49573732"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the log level below which logs are not printed. <br /></td></tr>
<tr class="separator:gab45287cc9c14217904a13aff49573732"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff3aa09fb60f7d6dc688c028d3834d8a"><td class="memItemLeft" align="right" valign="top">
const std::map&lt; std::string, <a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">levels</a> () const</td></tr>
<tr class="memdesc:gaff3aa09fb60f7d6dc688c028d3834d8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the map of available log levels string representations toward their identifier. *&zwj;/. <br /></td></tr>
<tr class="separator:gaff3aa09fb60f7d6dc688c028d3834d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a> (const std::string name)</td></tr>
<tr class="memdesc:gacebed8c9df9204f22bf8488e62e1cedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the log level tag corresponding to the given pre-configured name. <a href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">More...</a><br /></td></tr>
<tr class="separator:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga10064493c22f5c03b502a42d814c5c5c"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a> (std::string file)</td></tr>
<tr class="memdesc:ga10064493c22f5c03b502a42d814c5c5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the regular expression filtering the file location. <br /></td></tr>
@ -143,9 +154,6 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="grou
<a class="el" href="classclutchlog_1_1fmt.html">fmt</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">style</a> (<a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage) const</td></tr>
<tr class="memdesc:ga4831f44fd5ade102e57320632095934d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the configured fmt instance of the given log level. <br /></td></tr>
<tr class="separator:ga4831f44fd5ade102e57320632095934d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a> (const std::string name)</td></tr>
<tr class="memdesc:gacebed8c9df9204f22bf8488e62e1cedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the log level tag corresponding to the given pre-configured name. <a href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">More...</a><br /></td></tr>
<tr class="separator:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Low-level API</div></td></tr>
<tr class="memitem:ga4ebdfcded6c56262676bf6926d63fc96"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="structclutchlog_1_1scope__t.html">scope_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a> (const <a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> &amp;stage, const std::string &amp;<a class="el" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, const std::string &amp;<a class="el" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, const size_t <a class="el" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>) const</td></tr>

View file

@ -290,14 +290,14 @@ $(function() {
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; none</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; } <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959"> 285</a></span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>() : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(<a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a>::none), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(<a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a>::none), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a>::none) { }</div>
<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959"> 285</a></span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>() : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(<a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a>::none), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(<a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a>::none), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a>::none) {}</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0"> 299</a></span>&#160; std::ostream&amp; <a class="code" href="group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0">print_on</a>( std::ostream&amp; os)<span class="keyword"> const</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="keyword"> </span>{</div>
@ -424,455 +424,460 @@ $(function() {
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
<div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4"> 476</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">threshold</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> l) {<a class="code" href="group__UseMacros.html#gaeb60684c89bcef5aa9273075c21cc993">_stage</a> = l;}</div>
<div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732"> 478</a></span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gaeb60684c89bcef5aa9273075c21cc993">_stage</a>;}</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
<div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c"> 481</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>(std::string <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>) {<a class="code" href="group__UseMacros.html#gaded03528f34d9000f618419c482c5042">_in_file</a> = <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>;}</div>
<div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447"> 483</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>(std::string <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>) {<a class="code" href="group__UseMacros.html#ga130c4f12eacbd2028102838fe16b734e">_in_func</a> = <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>;}</div>
<div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9"> 485</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(std::string <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>) {<a class="code" href="group__UseMacros.html#ga41757198b29862832a14472a9e5e24c6">_in_line</a> = <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>;}</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3"> 488</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">location</a>(</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">const</span> std::string&amp; in_file,</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> std::string&amp; in_function=<span class="stringliteral">&quot;.*&quot;</span>,</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">const</span> std::string&amp; in_line=<span class="stringliteral">&quot;.*&quot;</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; )</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>(in_file);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>(in_function);</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(in_line);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>... FMT&gt;</div>
<div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591"> 504</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage, FMT... styles) { this-&gt;<a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(stage,<a class="code" href="classclutchlog_1_1fmt.html">fmt</a>(styles...)); }</div>
<div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6"> 506</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage, <a class="code" href="classclutchlog_1_1fmt.html">fmt</a> <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>) { <a class="code" href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">_level_fmt</a>.at(stage) = <a class="code" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">style</a>; }</div>
<div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d"> 508</a></span>&#160; <a class="code" href="classclutchlog_1_1fmt.html">fmt</a> <a class="code" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">_level_fmt</a>.at(stage); }</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; </div>
<div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd"> 514</a></span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a>(<span class="keyword">const</span> std::string name)</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> ilevel = <a class="code" href="group__UseMacros.html#gabd4625bf211bfbaa30d9c126fa3d7888">_word_level</a>.find(name);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span>( ilevel != std::end(<a class="code" href="group__UseMacros.html#gabd4625bf211bfbaa30d9c126fa3d7888">_word_level</a>)) {</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> ilevel-&gt;second;</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;&#39;&quot;</span> + name + <span class="stringliteral">&quot;&#39; is not a valid log level name&quot;</span>);</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; </div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9"> 478</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9">threshold</a>(<span class="keyword">const</span> std::string&amp; l) {<a class="code" href="group__UseMacros.html#gaeb60684c89bcef5aa9273075c21cc993">_stage</a> = this-&gt;<a class="code" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a>(l);}</div>
<div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732"> 480</a></span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gaeb60684c89bcef5aa9273075c21cc993">_stage</a>;}</div>
<div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a"> 482</a></span>&#160; <span class="keyword">const</span> std::map&lt;std::string,level&gt;&amp; <a class="code" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">levels</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gabd4625bf211bfbaa30d9c126fa3d7888">_word_level</a>;}</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd"> 488</a></span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a>(<span class="keyword">const</span> std::string name)</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> ilevel = <a class="code" href="group__UseMacros.html#gabd4625bf211bfbaa30d9c126fa3d7888">_word_level</a>.find(name);</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>( ilevel != std::end(<a class="code" href="group__UseMacros.html#gabd4625bf211bfbaa30d9c126fa3d7888">_word_level</a>)) {</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> ilevel-&gt;second;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;&#39;&quot;</span> + name + <span class="stringliteral">&quot;&#39; is not a valid log level name&quot;</span>);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c"> 499</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>(std::string <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>) {<a class="code" href="group__UseMacros.html#gaded03528f34d9000f618419c482c5042">_in_file</a> = <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>;}</div>
<div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447"> 501</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>(std::string <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>) {<a class="code" href="group__UseMacros.html#ga130c4f12eacbd2028102838fe16b734e">_in_func</a> = <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>;}</div>
<div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9"> 503</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(std::string <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>) {<a class="code" href="group__UseMacros.html#ga41757198b29862832a14472a9e5e24c6">_in_line</a> = <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>;}</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
<div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3"> 506</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">location</a>(</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keyword">const</span> std::string&amp; in_file,</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">const</span> std::string&amp; in_function=<span class="stringliteral">&quot;.*&quot;</span>,</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keyword">const</span> std::string&amp; in_line=<span class="stringliteral">&quot;.*&quot;</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; )</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>(in_file);</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>(in_function);</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(in_line);</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; </div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>... FMT&gt;</div>
<div class="line"><a name="l00522"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591"> 522</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage, FMT... styles) { this-&gt;<a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(stage,<a class="code" href="classclutchlog_1_1fmt.html">fmt</a>(styles...)); }</div>
<div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6"> 524</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage, <a class="code" href="classclutchlog_1_1fmt.html">fmt</a> <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>) { <a class="code" href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">_level_fmt</a>.at(stage) = <a class="code" href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">style</a>; }</div>
<div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d"> 526</a></span>&#160; <a class="code" href="classclutchlog_1_1fmt.html">fmt</a> <a class="code" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">_level_fmt</a>.at(stage); }</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; </div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">struct </span>scope_t {</div>
<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9"> 534</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9">matches</a>;</div>
<div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744"> 536</a></span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744">stage</a>;</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; </div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordtype">size_t</span> depth;</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; </div>
<div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff"> 542</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff">there</a>;</div>
<div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572"> 544</a></span>&#160; <a class="code" href="group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572">scope_t</a>() :</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9">matches</a>(false),</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744">stage</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>::xdebug),</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;#if <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; depth(0),</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;#endif</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff">there</a>(false)</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {}</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }; <span class="comment">// scope_t</span></div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; </div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
<div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96"> 556</a></span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>,</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> scope; <span class="comment">// False scope by default.</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; </div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="comment"> /***** Log level stage *****/</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// Test stage first, because it&#39;s fastest.</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; scope.stage = stage;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span>(not (scope.stage &lt;= <a class="code" href="group__UseMacros.html#gaeb60684c89bcef5aa9273075c21cc993">_stage</a>)) {</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">// Bypass useless computations if no match</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// because of the stage.</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> scope;</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="comment"> /***** Stack depth *****/</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// Backtrace in second, quite fast.</span></div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordtype">size_t</span> stack_depth;</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordtype">void</span> *buffer[max_buffer];</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; stack_depth = backtrace(buffer, max_buffer);</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; scope.depth = stack_depth;</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span>(not (scope.depth &lt;= _depth + <a class="code" href="group__UseMacros.html#ga56ed762c056c5b1d0020863b11bd188e">_strip_calls</a>)) {</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// Bypass if no match.</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> scope;</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; </div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"> /***** Location *****/</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">// Location last, slowest.</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; std::ostringstream sline; sline &lt;&lt; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>;</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; scope.there =</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; std::regex_search(<a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gaded03528f34d9000f618419c482c5042">_in_file</a>)</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; and std::regex_search(<a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <a class="code" href="group__UseMacros.html#ga130c4f12eacbd2028102838fe16b734e">_in_func</a>)</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; and std::regex_search(sline.str(), <a class="code" href="group__UseMacros.html#ga41757198b29862832a14472a9e5e24c6">_in_line</a>);</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// No need to retest stage and depth, which are true here.</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; scope.matches = scope.there;</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; </div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">return</span> scope;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; } <span class="comment">// locate</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
<div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e"> 607</a></span>&#160; std::string <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keyword">const</span> std::string&amp; form,</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">const</span> std::string&amp; mark,</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keyword">const</span> std::string&amp; tag</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="comment">// Useless debug code, unless something fancy would be done with name tags.</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// std::regex re;</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// try {</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// re = std::regex(mark);</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">// } catch(const std::regex_error&amp; e) {</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;ERROR with a regular expression \&quot;&quot; &lt;&lt; mark &lt;&lt; &quot;\&quot;: &quot;;</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// switch(e.code()) {</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">// case std::regex_constants::error_collate:</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid collating element name&quot;;</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// case std::regex_constants::error_ctype:</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid character class name&quot;;</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// case std::regex_constants::error_escape:</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid escaped character or a trailing escape&quot;;</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">// case std::regex_constants::error_backref:</span></div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid back reference&quot;;</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// case std::regex_constants::error_brack:</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains mismatched square brackets (&#39;[&#39; and &#39;]&#39;)&quot;;</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="comment">// case std::regex_constants::error_paren:</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains mismatched parentheses (&#39;(&#39; and &#39;)&#39;)&quot;;</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// case std::regex_constants::error_brace:</span></div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains mismatched curly braces (&#39;{&#39; and &#39;}&#39;)&quot;;</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// case std::regex_constants::error_badbrace:</span></div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid range in a {} expression&quot;;</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="comment">// case std::regex_constants::error_range:</span></div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid character range (e.g. [b-a])&quot;;</span></div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="comment">// case std::regex_constants::error_space:</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;there was not enough memory to convert the expression into a finite state machine&quot;;</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="comment">// case std::regex_constants::error_badrepeat:</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;one of *?+{ was not preceded by a valid regular expression&quot;;</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// case std::regex_constants::error_complexity:</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the complexity of an attempted match exceeded a predefined level&quot;;</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// case std::regex_constants::error_stack:</span></div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;there was not enough memory to perform a match&quot;;</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// default:</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;unknown error&quot;;</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// }</span></div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// std::cerr &lt;&lt; std::endl;</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="comment">// throw;</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// } // catch</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keyword">const</span> std::regex re(mark);</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> std::regex_replace(form, re, tag);</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; </div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keyword">struct </span>scope_t {</div>
<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9"> 538</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9">matches</a>;</div>
<div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744"> 540</a></span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744">stage</a>;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordtype">size_t</span> depth;</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
<div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff"> 546</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff">there</a>;</div>
<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572"> 548</a></span>&#160; <a class="code" href="group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572">scope_t</a>() :</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9">matches</a>(false),</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744">stage</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>::xdebug),</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;#if <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; depth(0),</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;#endif</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff">there</a>(false)</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {}</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }; <span class="comment">// scope_t</span></div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
<div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96"> 560</a></span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>,</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> scope; <span class="comment">// False scope by default.</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="comment"> /***** Log level stage *****/</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// Test stage first, because it&#39;s fastest.</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; scope.stage = stage;</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span>(not (scope.stage &lt;= <a class="code" href="group__UseMacros.html#gaeb60684c89bcef5aa9273075c21cc993">_stage</a>)) {</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">// Bypass useless computations if no match</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">// because of the stage.</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">return</span> scope;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="comment"> /***** Stack depth *****/</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// Backtrace in second, quite fast.</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordtype">size_t</span> stack_depth;</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordtype">void</span> *buffer[max_buffer];</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; stack_depth = backtrace(buffer, max_buffer);</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; scope.depth = stack_depth;</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span>(not (scope.depth &lt;= _depth + <a class="code" href="group__UseMacros.html#ga56ed762c056c5b1d0020863b11bd188e">_strip_calls</a>)) {</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="comment">// Bypass if no match.</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> scope;</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; </div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"> /***** Location *****/</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// Location last, slowest.</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; std::ostringstream sline; sline &lt;&lt; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>;</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; scope.there =</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; std::regex_search(<a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gaded03528f34d9000f618419c482c5042">_in_file</a>)</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; and std::regex_search(<a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <a class="code" href="group__UseMacros.html#ga130c4f12eacbd2028102838fe16b734e">_in_func</a>)</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; and std::regex_search(sline.str(), <a class="code" href="group__UseMacros.html#ga41757198b29862832a14472a9e5e24c6">_in_line</a>);</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; </div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">// No need to retest stage and depth, which are true here.</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; scope.matches = scope.there;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; </div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span> scope;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; } <span class="comment">// locate</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; </div>
<div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e"> 611</a></span>&#160; std::string <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keyword">const</span> std::string&amp; form,</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keyword">const</span> std::string&amp; mark,</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keyword">const</span> std::string&amp; tag</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// Useless debug code, unless something fancy would be done with name tags.</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">// std::regex re;</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="comment">// try {</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// re = std::regex(mark);</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// } catch(const std::regex_error&amp; e) {</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;ERROR with a regular expression \&quot;&quot; &lt;&lt; mark &lt;&lt; &quot;\&quot;: &quot;;</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// switch(e.code()) {</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="comment">// case std::regex_constants::error_collate:</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid collating element name&quot;;</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// case std::regex_constants::error_ctype:</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid character class name&quot;;</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">// case std::regex_constants::error_escape:</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid escaped character or a trailing escape&quot;;</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="comment">// case std::regex_constants::error_backref:</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid back reference&quot;;</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="comment">// case std::regex_constants::error_brack:</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains mismatched square brackets (&#39;[&#39; and &#39;]&#39;)&quot;;</span></div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">// case std::regex_constants::error_paren:</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains mismatched parentheses (&#39;(&#39; and &#39;)&#39;)&quot;;</span></div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="comment">// case std::regex_constants::error_brace:</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains mismatched curly braces (&#39;{&#39; and &#39;}&#39;)&quot;;</span></div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="comment">// case std::regex_constants::error_badbrace:</span></div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid range in a {} expression&quot;;</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// case std::regex_constants::error_range:</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the expression contains an invalid character range (e.g. [b-a])&quot;;</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="comment">// case std::regex_constants::error_space:</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;there was not enough memory to convert the expression into a finite state machine&quot;;</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// case std::regex_constants::error_badrepeat:</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;one of *?+{ was not preceded by a valid regular expression&quot;;</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// case std::regex_constants::error_complexity:</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;the complexity of an attempted match exceeded a predefined level&quot;;</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// case std::regex_constants::error_stack:</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;there was not enough memory to perform a match&quot;;</span></div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// break;</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="comment">// default:</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// std::cerr &lt;&lt; &quot;unknown error&quot;;</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// }</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="comment">// std::cerr &lt;&lt; std::endl;</span></div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="comment">// throw;</span></div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="comment">// } // catch</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; </div>
<div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2"> 672</a></span>&#160; std::string <a class="code" href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2">replace</a>(</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">const</span> std::string&amp; form,</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keyword">const</span> std::string&amp; mark,</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> tag</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; std::ostringstream stag; stag &lt;&lt; tag;</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(form, mark, stag.str());</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
<div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gaf1219599b1361562c802779572aa669f"> 683</a></span>&#160; std::string <a class="code" href="group__UseMacros.html#gaf1219599b1361562c802779572aa669f">format</a>(</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>,</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keyword">const</span> std::string&amp; what,</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keyword">const</span> std::string&amp; name,</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;#endif</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>,</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; ,</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> depth</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;#endif</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{msg\\}&quot;</span>, what);</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{file\\}&quot;</span>, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>);</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{func\\}&quot;</span>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>);</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{line\\}&quot;</span>, <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>);</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; </div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{level\\}&quot;</span>, <a class="code" href="group__UseMacros.html#gab1c377a376e6772fe1746ff7147c125f">_level_word</a>.at(stage));</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; std::string letter(1, <a class="code" href="group__UseMacros.html#gab1c377a376e6772fe1746ff7147c125f">_level_word</a>.at(stage).at(0)); <span class="comment">// char -&gt; string</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{level_letter\\}&quot;</span>, letter);</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keyword">const</span> std::regex re(mark);</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> std::regex_replace(form, re, tag);</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
<div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2"> 676</a></span>&#160; std::string <a class="code" href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2">replace</a>(</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">const</span> std::string&amp; form,</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keyword">const</span> std::string&amp; mark,</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> tag</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; std::ostringstream stag; stag &lt;&lt; tag;</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(form, mark, stag.str());</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
<div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="group__UseMacros.html#gaf1219599b1361562c802779572aa669f"> 687</a></span>&#160; std::string <a class="code" href="group__UseMacros.html#gaf1219599b1361562c802779572aa669f">format</a>(</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>,</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> std::string&amp; what,</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keyword">const</span> std::string&amp; name,</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;#endif</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>,</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; ,</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> depth</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;#endif</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{msg\\}&quot;</span>, what);</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{file\\}&quot;</span>, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>);</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{func\\}&quot;</span>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>);</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{line\\}&quot;</span>, <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>);</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; </div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{name\\}&quot;</span>, name);</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{depth\\}&quot;</span>, depth - <a class="code" href="group__UseMacros.html#ga56ed762c056c5b1d0020863b11bd188e">_strip_calls</a>);</div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{level\\}&quot;</span>, <a class="code" href="group__UseMacros.html#gab1c377a376e6772fe1746ff7147c125f">_level_word</a>.at(stage));</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; std::string letter(1, <a class="code" href="group__UseMacros.html#gab1c377a376e6772fe1746ff7147c125f">_level_word</a>.at(stage).at(0)); <span class="comment">// char -&gt; string</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{level_letter\\}&quot;</span>, letter);</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; </div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; std::ostringstream chevrons;</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = <a class="code" href="group__UseMacros.html#ga56ed762c056c5b1d0020863b11bd188e">_strip_calls</a>; i &lt; depth; ++i) {</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; chevrons &lt;&lt; _depth_mark;</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{depth_marks\\}&quot;</span>, chevrons.str());</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">_level_fmt</a>.at(stage)(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>);</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; </div>
<div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a"> 723</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">log</a>(</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keyword">const</span> std::string&amp; what,</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> scope = <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>);</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; </div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span>(scope.matches) {</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; *<a class="code" href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">_out</a> &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga7c6e3fc082bc6f55d50131ed2b32e81e">_format_log</a>, what, basename(getenv(<span class="stringliteral">&quot;_&quot;</span>)),</div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>, scope.depth );</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; *<a class="code" href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">_out</a> &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga7c6e3fc082bc6f55d50131ed2b32e81e">_format_log</a>, what,</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{name\\}&quot;</span>, name);</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{depth\\}&quot;</span>, depth - <a class="code" href="group__UseMacros.html#ga56ed762c056c5b1d0020863b11bd188e">_strip_calls</a>);</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; </div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; std::ostringstream chevrons;</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = <a class="code" href="group__UseMacros.html#ga56ed762c056c5b1d0020863b11bd188e">_strip_calls</a>; i &lt; depth; ++i) {</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; chevrons &lt;&lt; _depth_mark;</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a> = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>, <span class="stringliteral">&quot;\\{depth_marks\\}&quot;</span>, chevrons.str());</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; </div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">_level_fmt</a>.at(stage)(<a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>);</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; </div>
<div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a"> 727</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">log</a>(</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> std::string&amp; what,</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> scope = <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>);</div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; </div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span>(scope.matches) {</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; *<a class="code" href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">_out</a> &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga7c6e3fc082bc6f55d50131ed2b32e81e">_format_log</a>, what, basename(getenv(<span class="stringliteral">&quot;_&quot;</span>)),</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a> );</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; </div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">_out</a>-&gt;flush();</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; } <span class="comment">// if scopes.matches</span></div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> In&gt;</div>
<div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143"> 748</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143">dump</a>(</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">const</span> In container_begin, <span class="keyword">const</span> In container_end,</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>,</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keyword">const</span> std::string&amp; filename_template = <span class="stringliteral">&quot;dump_{n}.dat&quot;</span>,</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keyword">const</span> std::string sep = <a class="code" href="group__UseMacros.html#gaf898bffe23b125245e338d7495c76d45">dump_default_sep</a></div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> scope = <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>);</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; </div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">if</span>(scope.matches) {</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keyword">const</span> std::string tag = <span class="stringliteral">&quot;\\{n\\}&quot;</span>;</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keyword">const</span> std::regex re(tag);</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; std::string outfile = <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; </div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// If the file name template has the {n} tag.</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span>(std::regex_search(filename_template, re)) {</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="comment">// Increment n until a free one is found.</span></div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordtype">size_t</span> n = 0;</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; outfile = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(filename_template, tag, n);</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; n++;</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; } <span class="keywordflow">while</span>( fs::exists( outfile ) );</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; </div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="comment">// Use the parameter as is.</span></div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; outfile = filename_template;</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; </div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; std::ofstream fd(outfile);</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; </div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">_format_dump</a>.size() &gt; 0) {</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; fd &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">_format_dump</a>, <span class="stringliteral">&quot;&quot;</span>, basename(getenv(<span class="stringliteral">&quot;_&quot;</span>)),</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>, scope.depth );</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; fd &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">_format_dump</a>, <span class="stringliteral">&quot;&quot;</span>,</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>, scope.depth );</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; *<a class="code" href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">_out</a> &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga7c6e3fc082bc6f55d50131ed2b32e81e">_format_log</a>, what,</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a> );</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; </div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">_out</a>-&gt;flush();</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; } <span class="comment">// if scopes.matches</span></div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; </div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> In&gt;</div>
<div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143"> 752</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143">dump</a>(</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp; stage,</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keyword">const</span> In container_begin, <span class="keyword">const</span> In container_end,</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <span class="keyword">const</span> std::string&amp; <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <span class="keywordtype">size_t</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>,</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keyword">const</span> std::string&amp; filename_template = <span class="stringliteral">&quot;dump_{n}.dat&quot;</span>,</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keyword">const</span> std::string sep = <a class="code" href="group__UseMacros.html#gaf898bffe23b125245e338d7495c76d45">dump_default_sep</a></div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="structclutchlog_1_1scope__t.html">scope_t</a> scope = <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>, <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>);</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; </div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">if</span>(scope.matches) {</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keyword">const</span> std::string tag = <span class="stringliteral">&quot;\\{n\\}&quot;</span>;</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keyword">const</span> std::regex re(tag);</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; std::string outfile = <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; </div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// If the file name template has the {n} tag.</span></div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span>(std::regex_search(filename_template, re)) {</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="comment">// Increment n until a free one is found.</span></div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordtype">size_t</span> n = 0;</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; outfile = <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(filename_template, tag, n);</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; n++;</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; } <span class="keywordflow">while</span>( fs::exists( outfile ) );</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; </div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="comment">// Use the parameter as is.</span></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; outfile = filename_template;</div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; </div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; std::ofstream fd(outfile);</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; </div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">_format_dump</a>.size() &gt; 0) {</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; fd &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">_format_dump</a>, <span class="stringliteral">&quot;&quot;</span>, basename(getenv(<span class="stringliteral">&quot;_&quot;</span>)),</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a> );</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; fd &lt;&lt; sep; <span class="comment">// sep after comment line.</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; </div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; std::copy(container_begin, container_end,</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; std::ostream_iterator&lt;typename In::value_type&gt;(fd, sep.c_str()));</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; </div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; fd.close();</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; } <span class="comment">// if scopes.matches</span></div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>, scope.depth );</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; fd &lt;&lt; <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<a class="code" href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">_format_dump</a>, <span class="stringliteral">&quot;&quot;</span>,</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; stage, <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>, <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>,</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a> );</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; fd &lt;&lt; sep; <span class="comment">// sep after comment line.</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; </div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; std::copy(container_begin, container_end,</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; std::ostream_iterator&lt;typename In::value_type&gt;(fd, sep.c_str()));</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; </div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;};</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; </div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="preprocessor">#else // not WITH_CLUTCHLOG</span></div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; fd.close();</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; } <span class="comment">// if scopes.matches</span></div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; </div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;};</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; </div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; </div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="comment">/**********************************************************************</span></div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="comment"> * Fake implementation</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="comment"> **********************************************************************/</span></div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="preprocessor">#else // not WITH_CLUTCHLOG</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; </div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="comment">// Equivalent class with empty methods, will be optimized out</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;<span class="comment">// while allowing to actually have calls implemented without WITH_CLUTCHLOG guards.</span></div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="preprocessor">#pragma GCC diagnostic push</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;<span class="preprocessor">#pragma GCC diagnostic ignored &quot;-Wreturn-type&quot;</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="keyword">class </span><a class="code" href="classclutchlog.html">clutchlog</a></div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;{</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">static</span> <a class="code" href="classclutchlog.html">clutchlog</a>&amp; <a class="code" href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">logger</a>() { }</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">enum</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">class </span>fmt {</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keyword">enum class</span> <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> { black, red, green, yellow, blue, magenta, cyan, white, none } <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>;</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">enum class</span> <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> { black, red, green, yellow, blue, magenta, cyan, white, none } <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>;</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keyword">enum class</span> <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> { reset, bold, underline, inverse, none } <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>;</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>() : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(<a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a>::none), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(<a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a>::none), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a>::none) { }</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) { }</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; std::ostream&amp; <a class="code" href="group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0">print_on</a>(std::ostream&amp;)<span class="keyword"> const </span>{ }</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da">operator&lt;&lt;</a>(std::ostream&amp;, <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>&amp;) { }</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c">operator()</a>(<span class="keyword">const</span> std::string&amp;)<span class="keyword"> const </span>{ }</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; };</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="classclutchlog.html">clutchlog</a>(<a class="code" href="classclutchlog.html">clutchlog</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordtype">void</span> operator=(<a class="code" href="classclutchlog.html">clutchlog</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="classclutchlog.html">clutchlog</a>() {}</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keyword">struct </span>scope_t {};</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; scope_t <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;<span class="keyword"> </span>{ }</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<span class="keyword">const</span> std::string&amp;) {}</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; </div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5">format_comment</a>(<span class="keyword">const</span> std::string&amp;) {}</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; std::string <a class="code" href="group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5">format_comment</a>()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; </div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">out</a>(std::ostream&amp;) {}</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::ostream&amp; <a class="code" href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">out</a>() {}</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; </div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordtype">void</span> depth(<span class="keywordtype">size_t</span>) {}</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordtype">size_t</span> depth()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="comment">/**********************************************************************</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;<span class="comment"> * Fake implementation</span></div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="comment"> **********************************************************************/</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; </div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="comment">// Equivalent class with empty methods, will be optimized out</span></div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;<span class="comment">// while allowing to actually have calls implemented without WITH_CLUTCHLOG guards.</span></div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor">#pragma GCC diagnostic push</span></div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;<span class="preprocessor">#pragma GCC diagnostic ignored &quot;-Wreturn-type&quot;</span></div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;<span class="keyword">class </span><a class="code" href="classclutchlog.html">clutchlog</a></div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;{</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keyword">static</span> <a class="code" href="classclutchlog.html">clutchlog</a>&amp; <a class="code" href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">logger</a>() {}</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">enum</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keyword">class </span>fmt {</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keyword">enum class</span> <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> { black, red, green, yellow, blue, magenta, cyan, white, none } <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>;</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">enum class</span> <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> { black, red, green, yellow, blue, magenta, cyan, white, none } <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>;</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">enum class</span> <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> { reset, bold, underline, inverse, none } <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>;</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>() : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(<a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a>::none), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(<a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a>::none), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a>::none) {}</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s = typo::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>( <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b, <a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b = bg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>(<a class="code" href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">typo</a> s, <a class="code" href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">bg</a> b , <a class="code" href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">fg</a> f = fg::none) : <a class="code" href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">fore</a>(f), <a class="code" href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">back</a>(b), <a class="code" href="group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b">style</a>(s) {}</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; std::ostream&amp; <a class="code" href="group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0">print_on</a>(std::ostream&amp;)<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da">operator&lt;&lt;</a>(std::ostream&amp;, <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">fmt</a>&amp;) {}</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c">operator()</a>(<span class="keyword">const</span> std::string&amp;)<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; };</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classclutchlog.html">clutchlog</a>(<a class="code" href="classclutchlog.html">clutchlog</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordtype">void</span> operator=(<a class="code" href="classclutchlog.html">clutchlog</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="classclutchlog.html">clutchlog</a>() {}</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">struct </span>scope_t {};</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; scope_t <a class="code" href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">locate</a>(</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="keyword"> </span>{}</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(<span class="keyword">const</span> std::string&amp;) {}</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; </div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5">format_comment</a>(<span class="keyword">const</span> std::string&amp;) {}</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; std::string <a class="code" href="group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5">format_comment</a>()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">out</a>(std::ostream&amp;) {}</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; std::ostream&amp; <a class="code" href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">out</a>() {}</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; </div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordtype">void</span> depth_mark(std::string) {}</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; std::string depth_mark()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="preprocessor">#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1</span></div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordtype">void</span> depth(<span class="keywordtype">size_t</span>) {}</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordtype">size_t</span> depth()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; </div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>) {}</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; </div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>(std::string) {}</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>(std::string) {}</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(std::string) {}</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; </div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;<span class="preprocessor">#pragma GCC diagnostic push</span></div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;<span class="preprocessor">#pragma GCC diagnostic ignored &quot;-Wunused-parameter&quot;</span></div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">location</a>(</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keyword">const</span> std::string&amp; in_function=<span class="stringliteral">&quot;.*&quot;</span>,</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keyword">const</span> std::string&amp; in_line=<span class="stringliteral">&quot;.*&quot;</span></div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; )</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; { }</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="preprocessor">#pragma GCC diagnostic pop</span></div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>, fmt) { }</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; fmt <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>)<span class="keyword"> const </span>{ }</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a>(<span class="keyword">const</span> std::string) { }</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; std::string <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keyword">const</span> std::string&amp;</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;<span class="keyword"> </span>{ }</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; </div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; std::string <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordtype">void</span> depth_mark(std::string) {}</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; std::string depth_mark()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; </div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>) {}</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>(<span class="keyword">const</span> std::string&amp;) {}</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">threshold</a>()<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keyword">const</span> std::map&lt;std::string,level&gt; <a class="code" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">levels</a>()<span class="keyword"> const </span>{};</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> <a class="code" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">level_of</a>(<span class="keyword">const</span> std::string) {}</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; </div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">file</a>(std::string) {}</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">func</a>(std::string) {}</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>(std::string) {}</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; </div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="preprocessor">#pragma GCC diagnostic push</span></div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="preprocessor">#pragma GCC diagnostic ignored &quot;-Wunused-parameter&quot;</span></div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">location</a>(</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keyword">const</span> std::string&amp; in_function=<span class="stringliteral">&quot;.*&quot;</span>,</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keyword">const</span> std::string&amp; in_line=<span class="stringliteral">&quot;.*&quot;</span></div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; )</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; {}</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;<span class="preprocessor">#pragma GCC diagnostic pop</span></div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>, fmt) {}</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; fmt <a class="code" href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">style</a>(<a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>)<span class="keyword"> const </span>{}</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; std::string <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="keyword"> </span>{ }</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; </div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; std::string,</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;#endif</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keyword">const</span> std::string&amp;</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="keyword"> </span>{}</div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; </div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; std::string <a class="code" href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">replace</a>(</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;<span class="keyword"> </span>{}</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; </div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; std::string <a class="code" href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">format</a>(</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; std::string,</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ,</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;#endif</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;<span class="keyword"> </span>{ }</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; </div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">log</a>(</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keyword">const</span> std::string&amp;, <span class="keyword">const</span> std::string&amp;, <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;<span class="keyword"> </span>{ }</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; </div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> In&gt;</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143">dump</a>(</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keyword">const</span> In, <span class="keyword">const</span> In,</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keyword">const</span> std::string&amp;, <span class="keyword">const</span> std::string&amp;, <span class="keywordtype">size_t</span>,</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keyword">const</span> std::string</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;<span class="keyword"> </span>{ }</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;};</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="preprocessor">#pragma GCC diagnostic pop</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="preprocessor">#endif // WITH_CLUTCHLOG</span></div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; </div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;<span class="preprocessor">#endif // __CLUTCHLOG_H__</span></div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;#endif</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a> == 1</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; ,</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;#endif</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="keyword"> </span>{}</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; </div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">log</a>(</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keyword">const</span> std::string&amp;, <span class="keyword">const</span> std::string&amp;, <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;<span class="keyword"> </span>{}</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; </div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> In&gt;</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordtype">void</span> <a class="code" href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143">dump</a>(</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keyword">const</span> <a class="code" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&amp;,</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keyword">const</span> In, <span class="keyword">const</span> In,</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keyword">const</span> std::string&amp;, <span class="keyword">const</span> std::string&amp;, <span class="keywordtype">size_t</span>,</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keyword">const</span> std::string&amp;,</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">const</span> std::string</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; )<span class="keyword"> const</span></div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;<span class="keyword"> </span>{}</div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;};</div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;<span class="preprocessor">#pragma GCC diagnostic pop</span></div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="preprocessor">#endif // WITH_CLUTCHLOG</span></div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; </div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="preprocessor">#endif // __CLUTCHLOG_H__</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="agroup__UseMacros_html_ga10064493c22f5c03b502a42d814c5c5c"><div class="ttname"><a href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">clutchlog::file</a></div><div class="ttdeci">void file(std::string file)</div><div class="ttdoc">Set the regular expression filtering the file location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:481</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga10064493c22f5c03b502a42d814c5c5c"><div class="ttname"><a href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">clutchlog::file</a></div><div class="ttdeci">void file(std::string file)</div><div class="ttdoc">Set the regular expression filtering the file location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:499</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga27b613c6727857a7cbcd0165d862034e"><div class="ttname"><a href="group__UseMacros.html#ga27b613c6727857a7cbcd0165d862034e">CLUTCHDUMP_DEFAULT_FORMAT</a></div><div class="ttdeci">#define CLUTCHDUMP_DEFAULT_FORMAT</div><div class="ttdoc">Compile-time default format of the comment line in file dump.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:187</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga4662a3ec3577c6a575a2c734636ed8a0"><div class="ttname"><a href="group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0">clutchlog::fmt::fg</a></div><div class="ttdeci">fg</div><div class="ttdoc">Foreground color codes.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:250</div></div>
<div class="ttc" id="agroup__UseMacros_html_gace879554298e6e6e36dafef330c27be8"><div class="ttname"><a href="group__UseMacros.html#gace879554298e6e6e36dafef330c27be8">clutchlog::dump_default_format</a></div><div class="ttdeci">static std::string dump_default_format</div><div class="ttdoc">Default format of the comment line in file dump.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:191</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaff3aa09fb60f7d6dc688c028d3834d8a"><div class="ttname"><a href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">clutchlog::levels</a></div><div class="ttdeci">const std::map&lt; std::string, level &gt; &amp; levels() const</div><div class="ttdoc">Get the map of available log levels string representations toward their identifier....</div><div class="ttdef"><b>Definition:</b> clutchlog.h:482</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga7fd7c7bd3668c537061c314a619a336d"><div class="ttname"><a href="group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d">clutchlog::out</a></div><div class="ttdeci">void out(std::ostream &amp;out)</div><div class="ttdoc">Set the output stream on which to print.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:459</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga407506bc02ed3f91d88b3df630e54959"><div class="ttname"><a href="group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959">clutchlog::fmt::fmt</a></div><div class="ttdeci">fmt()</div><div class="ttdoc">&amp;#160;Empty constructor, only useful for a no-op formatter.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:285</div></div>
<div class="ttc" id="agroup__UseMacros_html_gacfaceb77da01503b432644a3efaee4fa"><div class="ttname"><a href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">clutchlog::logger</a></div><div class="ttdeci">static clutchlog &amp; logger()</div><div class="ttdoc">Get the logger instance.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:226</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaa26c6b81ebaeb9e9daa3457e3a3d17c9"><div class="ttname"><a href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">clutchlog::line</a></div><div class="ttdeci">void line(std::string line)</div><div class="ttdoc">Set the regular expression filtering the line location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:485</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaa26c6b81ebaeb9e9daa3457e3a3d17c9"><div class="ttname"><a href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">clutchlog::line</a></div><div class="ttdeci">void line(std::string line)</div><div class="ttdoc">Set the regular expression filtering the line location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:503</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga2144abe4ec6f630126b6490908b5f924"><div class="ttname"><a href="group__UseMacros.html#ga2144abe4ec6f630126b6490908b5f924">clutchlog::format_comment</a></div><div class="ttdeci">void format_comment(const std::string &amp;format)</div><div class="ttdoc">Set the template string for dumps.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:454</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga932f47b78fb7b10590d5613a1c4eab89"><div class="ttname"><a href="group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89">clutchlog::fmt::typo</a></div><div class="ttdeci">typo</div><div class="ttdoc">Typographic style codes.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:276</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga54d29e956575e1c731eab5406135c5df"><div class="ttname"><a href="group__UseMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a></div><div class="ttdeci">#define CLUTCHDUMP_DEFAULT_SEP</div><div class="ttdoc">Compile-time default item separator for dump.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:195</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga229fd61519f1245282440120f2d45fb5"><div class="ttname"><a href="group__UseMacros.html#ga229fd61519f1245282440120f2d45fb5">clutchlog::default_depth_mark</a></div><div class="ttdeci">static std::string default_depth_mark</div><div class="ttdoc">Default mark for stack depth.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:205</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga524c16f280d92ee8ab683162c9ce01fa"><div class="ttname"><a href="group__UseMacros.html#ga524c16f280d92ee8ab683162c9ce01fa">CLUTCHLOG_DEFAULT_FORMAT</a></div><div class="ttdeci">#define CLUTCHLOG_DEFAULT_FORMAT</div><div class="ttdoc">Compile-time default format of the messages.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:176</div></div>
<div class="ttc" id="agroup__UseMacros_html_gafc53dbca51d0e2322a21899d0c571a80"><div class="ttname"><a href="group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80">clutchlog::format</a></div><div class="ttdeci">std::string format() const</div><div class="ttdoc">Get the template string.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:451</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga23dbb98f0d3c5cc21c232cde16cf317a"><div class="ttname"><a href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">clutchlog::log</a></div><div class="ttdeci">void log(const level &amp;stage, const std::string &amp;what, const std::string &amp;file, const std::string &amp;func, size_t line) const</div><div class="ttdoc">Print a log message IF the location matches the given one.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:723</div></div>
<div class="ttc" id="agroup__UseMacros_html_gacebed8c9df9204f22bf8488e62e1cedd"><div class="ttname"><a href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">clutchlog::level_of</a></div><div class="ttdeci">level level_of(const std::string name)</div><div class="ttdoc">Return the log level tag corresponding to the given pre-configured name.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:514</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga23dbb98f0d3c5cc21c232cde16cf317a"><div class="ttname"><a href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">clutchlog::log</a></div><div class="ttdeci">void log(const level &amp;stage, const std::string &amp;what, const std::string &amp;file, const std::string &amp;func, size_t line) const</div><div class="ttdoc">Print a log message IF the location matches the given one.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:727</div></div>
<div class="ttc" id="agroup__UseMacros_html_gacebed8c9df9204f22bf8488e62e1cedd"><div class="ttname"><a href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">clutchlog::level_of</a></div><div class="ttdeci">level level_of(const std::string name)</div><div class="ttdoc">Return the log level tag corresponding to the given pre-configured name.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:488</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga5f4ddb57ce42e8be86a7c7d269f7bae5"><div class="ttname"><a href="group__UseMacros.html#ga5f4ddb57ce42e8be86a7c7d269f7bae5">clutchlog::_format_dump</a></div><div class="ttdeci">std::string _format_dump</div><div class="ttdoc">Current format of the file output.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:419</div></div>
<div class="ttc" id="agroup__UseMacros_html_gafeaedd18298498d1dcfcc15f5f17ac3c"><div class="ttname"><a href="group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c">clutchlog::fmt::operator()</a></div><div class="ttdeci">std::string operator()(const std::string &amp;msg) const</div><div class="ttdoc">Format the given string with the currently encoded format.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:344</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaf1219599b1361562c802779572aa669f"><div class="ttname"><a href="group__UseMacros.html#gaf1219599b1361562c802779572aa669f">clutchlog::format</a></div><div class="ttdeci">std::string format(std::string format, const std::string &amp;what, const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const</div><div class="ttdoc">Substitute all tags in the format string with the corresponding information and apply the style corre...</div><div class="ttdef"><b>Definition:</b> clutchlog.h:683</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaf1219599b1361562c802779572aa669f"><div class="ttname"><a href="group__UseMacros.html#gaf1219599b1361562c802779572aa669f">clutchlog::format</a></div><div class="ttdeci">std::string format(std::string format, const std::string &amp;what, const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const</div><div class="ttdoc">Substitute all tags in the format string with the corresponding information and apply the style corre...</div><div class="ttdef"><b>Definition:</b> clutchlog.h:687</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga7c6e3fc082bc6f55d50131ed2b32e81e"><div class="ttname"><a href="group__UseMacros.html#ga7c6e3fc082bc6f55d50131ed2b32e81e">clutchlog::_format_log</a></div><div class="ttdeci">std::string _format_log</div><div class="ttdoc">Current format of the standard output.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:417</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga10fd25a1b51c8c95bd6d876ce1b4b928"><div class="ttname"><a href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">clutchlog::level</a></div><div class="ttdeci">level</div><div class="ttdoc">Available log levels.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:233</div></div>
<div class="ttc" id="agroup__UseMacros_html_gadcca6846ff90d436c61861db85917744"><div class="ttname"><a href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744">clutchlog::scope_t::stage</a></div><div class="ttdeci">level stage</div><div class="ttdoc">Current log level.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:536</div></div>
<div class="ttc" id="agroup__UseMacros_html_gadcca6846ff90d436c61861db85917744"><div class="ttname"><a href="group__UseMacros.html#gadcca6846ff90d436c61861db85917744">clutchlog::scope_t::stage</a></div><div class="ttdeci">level stage</div><div class="ttdoc">Current log level.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:540</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga45c4c964fad4ad1641d5c9c28c4645b9"><div class="ttname"><a href="group__UseMacros.html#ga45c4c964fad4ad1641d5c9c28c4645b9">CLUTCHLOG_DEFAULT_DEPTH_MARK</a></div><div class="ttdeci">#define CLUTCHLOG_DEFAULT_DEPTH_MARK</div><div class="ttdoc">Compile-time default mark for stack depth.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:202</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga96849ba427feac3a2eeaa1165e3845da"><div class="ttname"><a href="group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da">clutchlog::fmt::operator&lt;&lt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const fmt &amp;fmt)</div><div class="ttdoc">Output stream overload.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:329</div></div>
<div class="ttc" id="agroup__UseMacros_html_gab805ac5c33885459f9f752518a4aa735"><div class="ttname"><a href="group__UseMacros.html#gab805ac5c33885459f9f752518a4aa735">clutchlog::_level_fmt</a></div><div class="ttdeci">std::map&lt; level, fmt &gt; _level_fmt</div><div class="ttdoc">Dictionary of level identifier to their format.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:415</div></div>
@ -883,34 +888,35 @@ $(function() {
<div class="ttc" id="agroup__UseMacros_html_gaa8d0a569ed3623ce36c5e567ec2d1ad5"><div class="ttname"><a href="group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5">clutchlog::format_comment</a></div><div class="ttdeci">std::string format_comment() const</div><div class="ttdoc">Get the template string for dumps.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:456</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga98f30d814d4913a8a7c93a8793f49adf"><div class="ttname"><a href="group__UseMacros.html#ga98f30d814d4913a8a7c93a8793f49adf">CLUTCHLOG_STRIP_CALLS</a></div><div class="ttdeci">#define CLUTCHLOG_STRIP_CALLS</div><div class="ttdoc">Compile-time number of call stack levels to remove from depth display by default.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:209</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga1896f6c4b8597e3e76ff93970bd85167"><div class="ttname"><a href="group__UseMacros.html#ga1896f6c4b8597e3e76ff93970bd85167">clutchlog::_out</a></div><div class="ttdeci">std::ostream * _out</div><div class="ttdoc">Standard output.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:421</div></div>
<div class="ttc" id="agroup__UseMacros_html_gad32b5a0274dc03ee0004f67ba58b2447"><div class="ttname"><a href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">clutchlog::func</a></div><div class="ttdeci">void func(std::string func)</div><div class="ttdoc">Set the regular expression filtering the function location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:483</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga6666106b9e5c239b6ae5e0d1091648e3"><div class="ttname"><a href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">clutchlog::location</a></div><div class="ttdeci">void location(const std::string &amp;in_file, const std::string &amp;in_function=&quot;.*&quot;, const std::string &amp;in_line=&quot;.*&quot;)</div><div class="ttdoc">Set the regular expressions filtering the location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:488</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga63308e8deae3cfec6801318203494143"><div class="ttname"><a href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143">clutchlog::dump</a></div><div class="ttdeci">void dump(const level &amp;stage, const In container_begin, const In container_end, const std::string &amp;file, const std::string &amp;func, size_t line, const std::string &amp;filename_template=&quot;dump_{n}.dat&quot;, const std::string sep=dump_default_sep) const</div><div class="ttdoc">Dump a serializable container after a comment line with log information.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:748</div></div>
<div class="ttc" id="agroup__UseMacros_html_gae90d5a1a428587ad67b38b2ea4ca9fa2"><div class="ttname"><a href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2">clutchlog::replace</a></div><div class="ttdeci">std::string replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const</div><div class="ttdoc">Replace mark by tag in form, converting tag to its string representation first.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:672</div></div>
<div class="ttc" id="agroup__UseMacros_html_gad32b5a0274dc03ee0004f67ba58b2447"><div class="ttname"><a href="group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447">clutchlog::func</a></div><div class="ttdeci">void func(std::string func)</div><div class="ttdoc">Set the regular expression filtering the function location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:501</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga6666106b9e5c239b6ae5e0d1091648e3"><div class="ttname"><a href="group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3">clutchlog::location</a></div><div class="ttdeci">void location(const std::string &amp;in_file, const std::string &amp;in_function=&quot;.*&quot;, const std::string &amp;in_line=&quot;.*&quot;)</div><div class="ttdoc">Set the regular expressions filtering the location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:506</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga63308e8deae3cfec6801318203494143"><div class="ttname"><a href="group__UseMacros.html#ga63308e8deae3cfec6801318203494143">clutchlog::dump</a></div><div class="ttdeci">void dump(const level &amp;stage, const In container_begin, const In container_end, const std::string &amp;file, const std::string &amp;func, size_t line, const std::string &amp;filename_template=&quot;dump_{n}.dat&quot;, const std::string sep=dump_default_sep) const</div><div class="ttdoc">Dump a serializable container after a comment line with log information.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:752</div></div>
<div class="ttc" id="agroup__UseMacros_html_gae90d5a1a428587ad67b38b2ea4ca9fa2"><div class="ttname"><a href="group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2">clutchlog::replace</a></div><div class="ttdeci">std::string replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const</div><div class="ttdoc">Replace mark by tag in form, converting tag to its string representation first.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:676</div></div>
<div class="ttc" id="aclassclutchlog_1_1fmt_html"><div class="ttname"><a href="classclutchlog_1_1fmt.html">clutchlog::fmt</a></div><div class="ttdoc">Color and style formatter for ANSI terminal escape sequences.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:247</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaded03528f34d9000f618419c482c5042"><div class="ttname"><a href="group__UseMacros.html#gaded03528f34d9000f618419c482c5042">clutchlog::_in_file</a></div><div class="ttdeci">std::regex _in_file</div><div class="ttdoc">Current file location filter.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:431</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga6c6ab42a1df147e6c2d115bc36ec8266"><div class="ttname"><a href="group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266">clutchlog::out</a></div><div class="ttdeci">std::ostream &amp; out()</div><div class="ttdoc">Get the output stream on which to print.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:461</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga972f895c70edc335f3018a2c8971d59e"><div class="ttname"><a href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">clutchlog::replace</a></div><div class="ttdeci">std::string replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const</div><div class="ttdoc">Replace mark by tag in form.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:607</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga972f895c70edc335f3018a2c8971d59e"><div class="ttname"><a href="group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e">clutchlog::replace</a></div><div class="ttdeci">std::string replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const</div><div class="ttdoc">Replace mark by tag in form.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:611</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga1a8cb6411726133208f5a2f2cb42d468"><div class="ttname"><a href="group__UseMacros.html#ga1a8cb6411726133208f5a2f2cb42d468">clutchlog::default_strip_calls</a></div><div class="ttdeci">static unsigned int default_strip_calls</div><div class="ttdoc">Number of call stack levels to remove from depth display by default.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:212</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga0c4ac57601e6f8d146fd5cc060968ecc"><div class="ttname"><a href="group__UseMacros.html#ga0c4ac57601e6f8d146fd5cc060968ecc">clutchlog::default_format</a></div><div class="ttdeci">static std::string default_format</div><div class="ttdoc">Default format of the messages.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:180</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga8307a848fcf9ed929435b3e1f2b53401"><div class="ttname"><a href="group__UseMacros.html#ga8307a848fcf9ed929435b3e1f2b53401">clutchlog::fmt::fore</a></div><div class="ttdeci">enum clutchlog::fmt::fg fore</div><div class="ttdoc">Foreground color.</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga7918e55cd3bac1bd30c69b8c711387ff"><div class="ttname"><a href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff">clutchlog::scope_t::there</a></div><div class="ttdeci">bool there</div><div class="ttdoc">Location is compatible.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:542</div></div>
<div class="ttc" id="astructclutchlog_1_1scope__t_html"><div class="ttname"><a href="structclutchlog_1_1scope__t.html">clutchlog::scope_t</a></div><div class="ttdoc">Structure holding a location matching.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:532</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga7a7738eaad114bfa870121412fe23ad9"><div class="ttname"><a href="group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9">clutchlog::threshold</a></div><div class="ttdeci">void threshold(const std::string &amp;l)</div><div class="ttdoc">Set the log level (below which logs are not printed) with a string.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:478</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga7918e55cd3bac1bd30c69b8c711387ff"><div class="ttname"><a href="group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff">clutchlog::scope_t::there</a></div><div class="ttdeci">bool there</div><div class="ttdoc">Location is compatible.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:546</div></div>
<div class="ttc" id="astructclutchlog_1_1scope__t_html"><div class="ttname"><a href="structclutchlog_1_1scope__t.html">clutchlog::scope_t</a></div><div class="ttdoc">Structure holding a location matching.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:536</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga130c4f12eacbd2028102838fe16b734e"><div class="ttname"><a href="group__UseMacros.html#ga130c4f12eacbd2028102838fe16b734e">clutchlog::_in_func</a></div><div class="ttdeci">std::regex _in_func</div><div class="ttdoc">Current function location filter.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:433</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga3cb0e4f43a4cadf1966001ad7c9861f4"><div class="ttname"><a href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">clutchlog::threshold</a></div><div class="ttdeci">void threshold(level l)</div><div class="ttdoc">Set the log level below which logs are not printed.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:476</div></div>
<div class="ttc" id="agroup__UseMacros_html_gad1cfa9945c3f7f98fe8ce724c627d0d6"><div class="ttname"><a href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">clutchlog::style</a></div><div class="ttdeci">void style(level stage, fmt style)</div><div class="ttdoc">Set the style (color and typo) of the given log level, passing a fmt instance.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:506</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga3cb0e4f43a4cadf1966001ad7c9861f4"><div class="ttname"><a href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">clutchlog::threshold</a></div><div class="ttdeci">void threshold(level l)</div><div class="ttdoc">Set the log level (below which logs are not printed) with an identifier.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:476</div></div>
<div class="ttc" id="agroup__UseMacros_html_gad1cfa9945c3f7f98fe8ce724c627d0d6"><div class="ttname"><a href="group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6">clutchlog::style</a></div><div class="ttdeci">void style(level stage, fmt style)</div><div class="ttdoc">Set the style (color and typo) of the given log level, passing a fmt instance.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:524</div></div>
<div class="ttc" id="agroup__UseMacros_html_gab1c377a376e6772fe1746ff7147c125f"><div class="ttname"><a href="group__UseMacros.html#gab1c377a376e6772fe1746ff7147c125f">clutchlog::_level_word</a></div><div class="ttdeci">const std::map&lt; level, std::string &gt; _level_word</div><div class="ttdoc">Dictionary of level identifier to their string representation.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:411</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga4ebdfcded6c56262676bf6926d63fc96"><div class="ttname"><a href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">clutchlog::locate</a></div><div class="ttdeci">scope_t locate(const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const</div><div class="ttdoc">Gather information on the current location of the call.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:556</div></div>
<div class="ttc" id="agroup__UseMacros_html_gae6c0e4ed20db797124ed1e5faa033ad9"><div class="ttname"><a href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9">clutchlog::scope_t::matches</a></div><div class="ttdeci">bool matches</div><div class="ttdoc">Everything is compatible.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:534</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga4ebdfcded6c56262676bf6926d63fc96"><div class="ttname"><a href="group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96">clutchlog::locate</a></div><div class="ttdeci">scope_t locate(const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const</div><div class="ttdoc">Gather information on the current location of the call.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:560</div></div>
<div class="ttc" id="agroup__UseMacros_html_gae6c0e4ed20db797124ed1e5faa033ad9"><div class="ttname"><a href="group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9">clutchlog::scope_t::matches</a></div><div class="ttdeci">bool matches</div><div class="ttdoc">Everything is compatible.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:538</div></div>
<div class="ttc" id="agroup__UseMacros_html_gaf898bffe23b125245e338d7495c76d45"><div class="ttname"><a href="group__UseMacros.html#gaf898bffe23b125245e338d7495c76d45">clutchlog::dump_default_sep</a></div><div class="ttdeci">static std::string dump_default_sep</div><div class="ttdoc">Default item separator for dump.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:198</div></div>
<div class="ttc" id="agroup__UseMacros_html_gab45287cc9c14217904a13aff49573732"><div class="ttname"><a href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">clutchlog::threshold</a></div><div class="ttdeci">level threshold() const</div><div class="ttdoc">Get the log level below which logs are not printed.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:478</div></div>
<div class="ttc" id="agroup__UseMacros_html_gab45287cc9c14217904a13aff49573732"><div class="ttname"><a href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">clutchlog::threshold</a></div><div class="ttdeci">level threshold() const</div><div class="ttdoc">Get the log level below which logs are not printed.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:480</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga0b607e343b6813b99eafca1fdfec9cd0"><div class="ttname"><a href="group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0">clutchlog::fmt::print_on</a></div><div class="ttdeci">std::ostream &amp; print_on(std::ostream &amp;os) const</div><div class="ttdoc">Print the currently encoded format escape code on the given output stream.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:299</div></div>
<div class="ttc" id="agroup__UseMacros_html_gabd4625bf211bfbaa30d9c126fa3d7888"><div class="ttname"><a href="group__UseMacros.html#gabd4625bf211bfbaa30d9c126fa3d7888">clutchlog::_word_level</a></div><div class="ttdeci">std::map&lt; std::string, level &gt; _word_level</div><div class="ttdoc">Dictionary of level string to their identifier.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:413</div></div>
<div class="ttc" id="agroup__UseMacros_html_gac3ec55057b9c734b66f169bf43dbd591"><div class="ttname"><a href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">clutchlog::style</a></div><div class="ttdeci">void style(level stage, FMT... styles)</div><div class="ttdoc">Set the style (color and typo) of the given log level.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:504</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga0f1d865ffcf17f215e5559cdd2690572"><div class="ttname"><a href="group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572">clutchlog::scope_t::scope_t</a></div><div class="ttdeci">scope_t()</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:544</div></div>
<div class="ttc" id="agroup__UseMacros_html_gac3ec55057b9c734b66f169bf43dbd591"><div class="ttname"><a href="group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591">clutchlog::style</a></div><div class="ttdeci">void style(level stage, FMT... styles)</div><div class="ttdoc">Set the style (color and typo) of the given log level.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:522</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga0f1d865ffcf17f215e5559cdd2690572"><div class="ttname"><a href="group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572">clutchlog::scope_t::scope_t</a></div><div class="ttdeci">scope_t()</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:548</div></div>
<div class="ttc" id="aclutchlog_8h_html_a6bbcf13504687db4dbe0474931d867fb"><div class="ttname"><a href="clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb">CLUTCHLOG_HAVE_UNIX_SYSINFO</a></div><div class="ttdeci">#define CLUTCHLOG_HAVE_UNIX_SYSINFO</div><div class="ttdoc">POSIX headers necessary for stack depth management are available.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:32</div></div>
<div class="ttc" id="aclassclutchlog_html"><div class="ttname"><a href="classclutchlog.html">clutchlog</a></div><div class="ttdef"><b>Definition:</b> clutchlog.h:165</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga4831f44fd5ade102e57320632095934d"><div class="ttname"><a href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">clutchlog::style</a></div><div class="ttdeci">fmt style(level stage) const</div><div class="ttdoc">Get the configured fmt instance of the given log level.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:508</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga4831f44fd5ade102e57320632095934d"><div class="ttname"><a href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">clutchlog::style</a></div><div class="ttdeci">fmt style(level stage) const</div><div class="ttdoc">Get the configured fmt instance of the given log level.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:526</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga1cf3e27e4041250ffea0a6d58010da1e"><div class="ttname"><a href="group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e">clutchlog::fmt::bg</a></div><div class="ttdeci">bg</div><div class="ttdoc">Background color codes.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:263</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga86696b20e5b31c96ba592926efb324f3"><div class="ttname"><a href="group__UseMacros.html#ga86696b20e5b31c96ba592926efb324f3">clutchlog::fmt::back</a></div><div class="ttdeci">enum clutchlog::fmt::bg back</div><div class="ttdoc">Background color.</div></div>
<!-- start footer part -->

View file

@ -165,6 +165,9 @@ $(function() {
<li>level_of()
: <a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">clutchlog</a>
</li>
<li>levels()
: <a class="el" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">clutchlog</a>
</li>
<li>line()
: <a class="el" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">clutchlog</a>
</li>

View file

@ -84,6 +84,9 @@ $(function() {
<li>level_of()
: <a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">clutchlog</a>
</li>
<li>levels()
: <a class="el" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">clutchlog</a>
</li>
<li>line()
: <a class="el" href="group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9">clutchlog</a>
</li>

View file

@ -353,12 +353,23 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="
<tr class="separator:ga6c6ab42a1df147e6c2d115bc36ec8266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="memItemLeft" align="right" valign="top"><a id="ga3cb0e4f43a4cadf1966001ad7c9861f4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4">clutchlog::threshold</a> (<a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> l)</td></tr>
<tr class="memdesc:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level below which logs are not printed. <br /></td></tr>
<tr class="memdesc:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level (below which logs are not printed) with an identifier. <br /></td></tr>
<tr class="separator:ga3cb0e4f43a4cadf1966001ad7c9861f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a7738eaad114bfa870121412fe23ad9"><td class="memItemLeft" align="right" valign="top"><a id="ga7a7738eaad114bfa870121412fe23ad9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9">clutchlog::threshold</a> (const std::string &amp;l)</td></tr>
<tr class="memdesc:ga7a7738eaad114bfa870121412fe23ad9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level (below which logs are not printed) with a string. <br /></td></tr>
<tr class="separator:ga7a7738eaad114bfa870121412fe23ad9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab45287cc9c14217904a13aff49573732"><td class="memItemLeft" align="right" valign="top"><a id="gab45287cc9c14217904a13aff49573732"></a>
<a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gab45287cc9c14217904a13aff49573732">clutchlog::threshold</a> () const</td></tr>
<tr class="memdesc:gab45287cc9c14217904a13aff49573732"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the log level below which logs are not printed. <br /></td></tr>
<tr class="separator:gab45287cc9c14217904a13aff49573732"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff3aa09fb60f7d6dc688c028d3834d8a"><td class="memItemLeft" align="right" valign="top"><a id="gaff3aa09fb60f7d6dc688c028d3834d8a"></a>
const std::map&lt; std::string, <a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a">clutchlog::levels</a> () const</td></tr>
<tr class="memdesc:gaff3aa09fb60f7d6dc688c028d3834d8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the map of available log levels string representations toward their identifier. *&zwj;/. <br /></td></tr>
<tr class="separator:gaff3aa09fb60f7d6dc688c028d3834d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">clutchlog::level_of</a> (const std::string name)</td></tr>
<tr class="memdesc:gacebed8c9df9204f22bf8488e62e1cedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the log level tag corresponding to the given pre-configured name. <a href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">More...</a><br /></td></tr>
<tr class="separator:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga10064493c22f5c03b502a42d814c5c5c"><td class="memItemLeft" align="right" valign="top"><a id="ga10064493c22f5c03b502a42d814c5c5c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c">clutchlog::file</a> (std::string file)</td></tr>
<tr class="memdesc:ga10064493c22f5c03b502a42d814c5c5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the regular expression filtering the file location. <br /></td></tr>
@ -387,9 +398,6 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="grou
<a class="el" href="classclutchlog_1_1fmt.html">fmt</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga4831f44fd5ade102e57320632095934d">clutchlog::style</a> (<a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a> stage) const</td></tr>
<tr class="memdesc:ga4831f44fd5ade102e57320632095934d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the configured fmt instance of the given log level. <br /></td></tr>
<tr class="separator:ga4831f44fd5ade102e57320632095934d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928">level</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">clutchlog::level_of</a> (const std::string name)</td></tr>
<tr class="memdesc:gacebed8c9df9204f22bf8488e62e1cedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the log level tag corresponding to the given pre-configured name. <a href="group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd">More...</a><br /></td></tr>
<tr class="separator:gacebed8c9df9204f22bf8488e62e1cedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Low-level API</h2></td></tr>
@ -819,7 +827,7 @@ template&lt;class ... FMT&gt; </div>
</div><!-- contents -->
<div class="ttc" id="agroup__UseMacros_html_gacfaceb77da01503b432644a3efaee4fa"><div class="ttname"><a href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">clutchlog::logger</a></div><div class="ttdeci">static clutchlog &amp; logger()</div><div class="ttdoc">Get the logger instance.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:226</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga54d29e956575e1c731eab5406135c5df"><div class="ttname"><a href="group__UseMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a></div><div class="ttdeci">#define CLUTCHDUMP_DEFAULT_SEP</div><div class="ttdoc">Compile-time default item separator for dump.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:195</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga23dbb98f0d3c5cc21c232cde16cf317a"><div class="ttname"><a href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">clutchlog::log</a></div><div class="ttdeci">void log(const level &amp;stage, const std::string &amp;what, const std::string &amp;file, const std::string &amp;func, size_t line) const</div><div class="ttdoc">Print a log message IF the location matches the given one.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:723</div></div>
<div class="ttc" id="agroup__UseMacros_html_ga23dbb98f0d3c5cc21c232cde16cf317a"><div class="ttname"><a href="group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a">clutchlog::log</a></div><div class="ttdeci">void log(const level &amp;stage, const std::string &amp;what, const std::string &amp;file, const std::string &amp;func, size_t line) const</div><div class="ttdoc">Print a log message IF the location matches the given one.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:727</div></div>
<div class="ttc" id="agroup__UseMacros_html_gae8911119d726a43b77f5781cb5a72813"><div class="ttname"><a href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a></div><div class="ttdeci">#define CLUTCHLOC</div><div class="ttdoc">Handy shortcuts to location.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:65</div></div>
<div class="ttc" id="aclassclutchlog_1_1fmt_html"><div class="ttname"><a href="classclutchlog_1_1fmt.html">clutchlog::fmt</a></div><div class="ttdoc">Color and style formatter for ANSI terminal escape sequences.</div><div class="ttdef"><b>Definition:</b> clutchlog.h:247</div></div>
<!-- start footer part -->

View file

@ -70,17 +70,17 @@ $(function() {
<ul><li class="level1"><a href="#autotoc_md0">Features</a></li>
<li class="level1"><a href="#autotoc_md1">Example</a></li>
<li class="level1"><a href="#autotoc_md2">Rationale</a></li>
<li class="level1"><a href="#autotoc_md3">API documentation</a><ul><li class="level2"><a href="#autotoc_md4">Calls</a></li>
<li class="level2"><a href="#autotoc_md5">Location filtering</a></li>
<li class="level2"><a href="#autotoc_md6">Output Configuration</a></li>
<li class="level2"><a href="#autotoc_md7">Output style</a></li>
<li class="level2"><a href="#autotoc_md8">Disabled calls</a></li>
<li class="level2"><a href="#autotoc_md9">Low-level API</a></li>
<li class="level2"><a href="#autotoc_md10">(De)clutch any function call</a></li>
<li class="level2"><a href="#autotoc_md11">(De)clutch any code section</a></li>
<li class="level1"><a href="#autotoc_md3">API documentation</a><ul><li class="level2"><a href="#autotoc_md4">Log level semantics</a></li>
<li class="level2"><a href="#autotoc_md5">Calls</a></li>
<li class="level2"><a href="#autotoc_md6">Location filtering</a></li>
<li class="level2"><a href="#autotoc_md7">Output Configuration</a></li>
<li class="level2"><a href="#autotoc_md8">Output style</a></li>
<li class="level2"><a href="#autotoc_md9">Disabled calls</a></li>
<li class="level2"><a href="#autotoc_md10">Low-level API</a></li>
<li class="level2"><a href="#autotoc_md11">(De)clutch any function call</a></li>
<li class="level2"><a href="#autotoc_md12">(De)clutch any code section</a></li>
</ul>
</li>
<li class="level1"><a href="#autotoc_md12">Log level semantics</a></li>
<li class="level1"><a href="#autotoc_md13">Limitations</a></li>
<li class="level1"><a href="#autotoc_md14">Build and tests</a></li>
</ul>
@ -107,7 +107,7 @@ Example</h1>
<p>Adding a message is a simple as calling a macro (which is declutched in Debug build type, when <code>NDEBUG</code> is not defined): </p><div class="fragment"><div class="line"><a class="code" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(info, <span class="stringliteral">&quot;matrix size: &quot;</span> &lt;&lt; m &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; n);</div>
</div><!-- fragment --><p>To configure the display, you indicate the three types of locations, for example in your <code>main</code> function: </p><div class="fragment"><div class="line"><span class="keyword">auto</span>&amp; log = <a class="code" href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">clutchlog::logger</a>();</div>
<div class="line">log.depth(2); <span class="comment">// Log functions called from &quot;main&quot; but not below.</span></div>
<div class="line">log.threshold(clutchlog::level::info); <span class="comment">// Log only &quot;info&quot;, &quot;warning&quot;, &quot;error&quot; or &quot;critical&quot; messages.</span></div>
<div class="line">log.threshold(<span class="stringliteral">&quot;Info&quot;</span>); <span class="comment">// Log only &quot;info&quot;, &quot;warning&quot;, &quot;error&quot; or &quot;critical&quot; messages.</span></div>
<div class="line">log.file(<span class="stringliteral">&quot;algebra/.*&quot;</span>); <span class="comment">// Will match any file in the &quot;algebra&quot; directory.</span></div>
<div class="line">log.func(<span class="stringliteral">&quot;(mul|add|sub|div)&quot;</span>); <span class="comment">// Will match &quot;multiply&quot;, for instance.</span></div>
</div><!-- fragment --><p>For more detailled examples, see the "API documentation" section below and the <code>tests</code> directory.</p>
@ -120,6 +120,20 @@ Rationale</h1>
<h1><a class="anchor" id="autotoc_md3"></a>
API documentation</h1>
<h2><a class="anchor" id="autotoc_md4"></a>
Log level semantics</h2>
<p>Log levels use a classical semantics for a human skilled in the art, in decreasing order of importance:</p>
<ul>
<li><em>Critical</em>: an error that cannot be recovered. For instance, something which will make a server stop right here.</li>
<li><em>Error</em>: an error that invalidates a function, but may still be recovered. For example, a bad user input that will make a server reset its state, but not crash.</li>
<li><em>Warning</em>: something that is strange, but is probably legit. For example a default parameter is set because the user forgot to indicate its preference.</li>
<li><em>Progress</em>: the state at which computation currently is.</li>
<li><em>Note</em>: some state worth noting to understand what's going on.</li>
<li><em>Info</em>: any information that would help ensuring that everything is going well.</li>
<li><em>Debug</em>: data that would help debugging the program if there was a bug later on.</li>
<li><em>XDebug</em>: debugging information that would be heavy to read.</li>
</ul>
<p>Note: the log levels constants are lower case (for example: <code>clutchlog::level::xdebug</code>), but their string representation is not (e.g. "XDebug", this should be taken into account when using <code>threshold</code> or <code>level_of</code>).</p>
<h2><a class="anchor" id="autotoc_md5"></a>
Calls</h2>
<p>The main entrypoint is the <code>CLUTCHLOG</code> macro, which takes the desired log level and message. The message can be anything that can be output in an <code>ostringstream</code>. </p><div class="fragment"><div class="line"><span class="comment">// Simple string:</span></div>
<div class="line"><a class="code" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(info, <span class="stringliteral">&quot;hello world&quot;</span>);</div>
@ -140,7 +154,7 @@ Calls</h2>
<div class="line"><span class="comment">* 1681692777</span></div>
<div class="line"><span class="comment">*/</span></div>
</div><!-- fragment --><p>Note that if you pass a file name without the <code>{n}</code> tag, the file will be overwritten as is.</p>
<h2><a class="anchor" id="autotoc_md5"></a>
<h2><a class="anchor" id="autotoc_md6"></a>
Location filtering</h2>
<p>To configure the global behaviour of the logger, you must first get a reference on its (singleton) instance: </p><div class="fragment"><div class="line"><span class="keyword">auto</span>&amp; log = <a class="code" href="group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa">clutchlog::logger</a>();</div>
</div><!-- fragment --><p>One can configure the location(s) at which messages should actually be logged: </p><div class="fragment"><div class="line">log.depth(3); <span class="comment">// Depth of the call stack, defaults to the maximum possible value.</span></div>
@ -150,9 +164,9 @@ Location filtering</h2>
<div class="line">log.func(<span class="stringliteral">&quot;.*&quot;</span>); <span class="comment">// Function location, defaults to any.</span></div>
<div class="line">log.line(<span class="stringliteral">&quot;.*&quot;</span>); <span class="comment">// Line location, defaults to any.</span></div>
</div><!-- fragment --><p>A shortcut function can be used to filter all at once: </p><div class="fragment"><div class="line">log.location(file, func, line); <span class="comment">// Defaults to any, second and last parameters being optional.</span></div>
</div><!-- fragment --><p>Strings may be used to set up the threshold, using <code>level_of</code>: </p><div class="fragment"><div class="line">log.threshold( log.level_of(<span class="stringliteral">&quot;XDebug&quot;</span>) ); <span class="comment">// You have to know the exact string.</span></div>
</div><!-- fragment --><p>Strings may be used to set up the threshold: </p><div class="fragment"><div class="line">log.threshold(<span class="stringliteral">&quot;Error&quot;</span>); <span class="comment">// You have to know the exact —case sensitive— string.</span></div>
</div><!-- fragment --><p>Note that the case of the log levels strings matters (see below).</p>
<h2><a class="anchor" id="autotoc_md6"></a>
<h2><a class="anchor" id="autotoc_md7"></a>
Output Configuration</h2>
<p>The output stream can be configured using the <code>out</code> method: </p><div class="fragment"><div class="line">log.out(std::clog); <span class="comment">// Defaults to clog.</span></div>
</div><!-- fragment --><p>The format of the messages can be defined with the <code>format</code> method, passing a string with standardized tags surrounded by <code>{}</code>: </p><div class="fragment"><div class="line">log.format(<span class="stringliteral">&quot;{msg}&quot;</span>);</div>
@ -172,7 +186,7 @@ Output Configuration</h2>
<p>The default format of the first line of comment added with the dump macro is <code>"# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}"</code>. It can be edited with the <code>format_comment</code> method. If it is set to an empty string, then no comment line is added. The default can be modified at compile time with <code>CLUTCHDUMP_DEFAULT_FORMAT</code>. By default, the separator between items in the container is a new line. To change this behaviour, you can change <code>CLUTCHDUMP_DEFAULT_SEP</code> or call the low-level <code>dump</code> method.</p>
<p>The mark used with the <code>{depth_marks}</code> tag can be configured with the <code>depth_mark</code> method, and its default with the <code>CLUTCHLOG_DEFAULT_DEPTH_MARK</code> macro: </p><div class="fragment"><div class="line">log.depth_mark(<a class="code" href="group__UseMacros.html#ga45c4c964fad4ad1641d5c9c28c4645b9">CLUTCHLOG_DEFAULT_DEPTH_MARK</a>); <span class="comment">// Defaults to &quot;&gt;&quot;.</span></div>
</div><!-- fragment --><p>By default, clutchlog removes 5 levels of the calls stack, so that your <code>main</code> entrypoint corresponds to a depth of zero. You can change this behaviour by defining the <code>CLUTCHLOG_STRIP_CALLS</code> macro.</p>
<h2><a class="anchor" id="autotoc_md7"></a>
<h2><a class="anchor" id="autotoc_md8"></a>
Output style</h2>
<p>The output can be colored differently depending on the log level. </p><div class="fragment"><div class="line"><span class="comment">// Print error messages in bold red:</span></div>
<div class="line">log.style(clutchlog::level::error, <span class="comment">// First, the log level.</span></div>
@ -218,7 +232,7 @@ Output style</h2>
<div class="line"> &lt;&lt; fmt(fmt::typo::reset) &lt;&lt; <span class="stringliteral">&quot; {msg}&quot;</span> &lt;&lt; std::endl; <span class="comment">// This is a reset.</span></div>
<div class="line">log.format(format.str());</div>
</div><!-- fragment --><p>Note: messages at the "critical", "error" and "warning" log levels are colored by default. You may want to set their style to <code>none</code> if you want to stay in control of inserted colors in the format template.</p>
<h2><a class="anchor" id="autotoc_md8"></a>
<h2><a class="anchor" id="autotoc_md9"></a>
Disabled calls</h2>
<p>By default, clutchlog is always enabled if the <code>NDEBUG</code> preprocessor variable is not defined (this variable is set by CMake in build types that differs from <code>Debug</code>).</p>
<p>You can however force clutchlog to be enabled in any build type by setting the <code>WITH_CLUTCHLOG</code> preprocessor variable.</p>
@ -227,39 +241,26 @@ Disabled calls</h2>
<div class="line"><span class="preprocessor">#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG clutchlog::level::xdebug</span></div>
</div><!-- fragment --><p>Note that allowing a log level does not mean that it will actually output something. If the configured log level at runtime is lower than the log level of the message, it will still not be printed.</p>
<p>This behavior intend to remove as many conditional statements as possible when not debugging, without having to use preprocessor guards around calls to clutchlog, thus saving run time at no readability cost.</p>
<h2><a class="anchor" id="autotoc_md9"></a>
<h2><a class="anchor" id="autotoc_md10"></a>
Low-level API</h2>
<p>All configuration setters have a getters counterpart, with the same name but taking no parameter, for example: </p><div class="fragment"><div class="line">std::string mark = log.depth_mark();</div>
</div><!-- fragment --><p>To control more precisely the logging, one can use the low-level <code>log</code> method: </p><div class="fragment"><div class="line">log.log(clutchlog::level::xdebug, <span class="stringliteral">&quot;hello world&quot;</span>, <span class="stringliteral">&quot;main.cpp&quot;</span>, <span class="stringliteral">&quot;main&quot;</span>, 122);</div>
</div><!-- fragment --><p>A helper macro can helps to fill in the location with the actual one, as seen by the compiler: </p><div class="fragment"><div class="line">log.log(clutchlog::level::xdebug, <span class="stringliteral">&quot;hello world&quot;</span>, <a class="code" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a>);</div>
</div><!-- fragment --><p>A similar <code>dump</code> method exists: </p><div class="fragment"><div class="line">log.dump(clutchlog::level::xdebug, cont.begin(), cont.end(), <a class="code" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a>, <span class="stringliteral">&quot;dumped_{n}.dat&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>);</div>
<div class="line">log.dump(clutchlog::level::xdebug, cont.begin(), cont.end(), <span class="stringliteral">&quot;main.cpp&quot;</span>, <span class="stringliteral">&quot;main&quot;</span>, 122, <span class="stringliteral">&quot;dumped.dat&quot;</span>, <span class="stringliteral">&quot;\n\n&quot;</span>);</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md10"></a>
</div><!-- fragment --><p>You can access the identifier of log levels with <code>level_of</code>: </p><div class="fragment"><div class="line">log.threshold( log.level_of(<span class="stringliteral">&quot;XDebug&quot;</span>) ); <span class="comment">// You have to know the exact string.</span></div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md11"></a>
(De)clutch any function call</h2>
<p>The <code>CLUTHFUNC</code> macro allows to wrap any function within the current logger.</p>
<p>For instance, this can be useful if you want to (de)clutch calls to <code>assert</code>s. To do that, just declare your own macro: </p><div class="fragment"><div class="line"><span class="preprocessor">#define ASSERT(...) { CLUTCHFUNC(error, assert, __VA_ARGS__) }</span></div>
</div><!-- fragment --><p>Thus, any call like <code>ASSERT(x &gt; 3);</code> will be declutchable with the same configuration than a call to <code>CLUTCHLOG</code>.</p>
<h2><a class="anchor" id="autotoc_md11"></a>
<h2><a class="anchor" id="autotoc_md12"></a>
(De)clutch any code section</h2>
<p>The <code>CLUTCHCODE</code> macro allows to wrap any code within the current logger.</p>
<p>For instance: </p><div class="fragment"><div class="line"><a class="code" href="group__UseMacros.html#gaaf2e85e1153e6c88b458dd49e3c37c73">CLUTCHCODE</a>(info,</div>
<div class="line"> std::clog &lt;&lt; <span class="stringliteral">&quot;We are clutched!\n&quot;</span>;</div>
<div class="line">);</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md12"></a>
Log level semantics</h1>
<p>Log levels use a classical semantics for a human skilled in the art, in decreasing order of importance:</p>
<ul>
<li><em>Critical</em>: an error that cannot be recovered. For instance, something which will make a server stop right here.</li>
<li><em>Error</em>: an error that invalidates a function, but may still be recovered. For example, a bad user input that will make a server reset its state, but not crash.</li>
<li><em>Warning</em>: something that is strange, but is probably legit. For example a default parameter is set because the user forgot to indicate its preference.</li>
<li><em>Progress</em>: the state at which computation currently is.</li>
<li><em>Note</em>: some state worth noting to understand what's going on.</li>
<li><em>Info</em>: any information that would help ensuring that everything is going well.</li>
<li><em>Debug</em>: data that would help debugging the program if there was a bug later on.</li>
<li><em>XDebug</em>: debugging information that would be heavy to read.</li>
</ul>
<p>Note: the log levels constants are lower case (for example: <code>clutchlog::level::xdebug</code>), but their string representation is not (e.g. "XDebug", this should be taken into account when using <code>level_of</code>).</p>
<h1><a class="anchor" id="autotoc_md13"></a>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md13"></a>
Limitations</h1>
<h3>System-dependent stack depth</h3>
<p>Because the call stack depth and program name access are system-dependent, the features relying on the depth of the call stack and the display of the program name are only available for operating systems having the following headers: <code>execinfo.h</code>, <code>stdlib.h</code> and <code>libgen.h</code> (so far, tested with Linux).</p>

View file

@ -2,9 +2,10 @@ var searchData=
[
['level_43',['level',['../group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]],
['level_5fof_44',['level_of',['../group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]],
['line_45',['line',['../group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]],
['locate_46',['locate',['../group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]],
['location_47',['location',['../group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]],
['log_48',['log',['../group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]],
['logger_49',['logger',['../group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]]
['levels_45',['levels',['../group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a',1,'clutchlog']]],
['line_46',['line',['../group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]],
['locate_47',['locate',['../group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]],
['location_48',['location',['../group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]],
['log_49',['log',['../group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]],
['logger_50',['logger',['../group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['main_20class_50',['Main class',['../group__Main.html',1,'']]],
['matches_51',['matches',['../group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9',1,'clutchlog::scope_t']]]
['main_20class_51',['Main class',['../group__Main.html',1,'']]],
['matches_52',['matches',['../group__UseMacros.html#gae6c0e4ed20db797124ed1e5faa033ad9',1,'clutchlog::scope_t']]]
];

View file

@ -1,6 +1,6 @@
var searchData=
[
['operator_28_29_52',['operator()',['../group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]],
['operator_3c_3c_53',['operator&lt;&lt;',['../group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]],
['out_54',['out',['../group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &amp;out)'],['../group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]]
['operator_28_29_53',['operator()',['../group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]],
['operator_3c_3c_54',['operator&lt;&lt;',['../group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]],
['out_55',['out',['../group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &amp;out)'],['../group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['print_5fon_55',['print_on',['../group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]]
['print_5fon_56',['print_on',['../group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['replace_56',['replace',['../group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
['replace_57',['replace',['../group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
];

View file

@ -1,6 +1,6 @@
var searchData=
[
['scope_5ft_57',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog::scope_t'],['../group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t::scope_t()']]],
['stage_58',['stage',['../group__UseMacros.html#gadcca6846ff90d436c61861db85917744',1,'clutchlog::scope_t']]],
['style_59',['style',['../group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b',1,'clutchlog::fmt::style()'],['../group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../group__UseMacros.html#ga4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
['scope_5ft_58',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog::scope_t'],['../group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t::scope_t()']]],
['stage_59',['stage',['../group__UseMacros.html#gadcca6846ff90d436c61861db85917744',1,'clutchlog::scope_t']]],
['style_60',['style',['../group__UseMacros.html#ga2bb0fde65fcd264393e102314dd1610b',1,'clutchlog::fmt::style()'],['../group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../group__UseMacros.html#ga4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
];

View file

@ -1,6 +1,6 @@
var searchData=
[
['there_60',['there',['../group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff',1,'clutchlog::scope_t']]],
['threshold_61',['threshold',['../group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../group__UseMacros.html#gab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]],
['typo_62',['typo',['../group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]]
['there_61',['there',['../group__UseMacros.html#ga7918e55cd3bac1bd30c69b8c711387ff',1,'clutchlog::scope_t']]],
['threshold_62',['threshold',['../group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9',1,'clutchlog::threshold(const std::string &amp;l)'],['../group__UseMacros.html#gab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]],
['typo_63',['typo',['../group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['clutchlog_64',['clutchlog',['../classclutchlog.html',1,'']]]
['clutchlog_65',['clutchlog',['../classclutchlog.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['fmt_65',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog']]]
['fmt_66',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['scope_5ft_66',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]]
['scope_5ft_67',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['bg_109',['bg',['../group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]]
['bg_111',['bg',['../group__UseMacros.html#ga1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['fg_110',['fg',['../group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]]
['fg_112',['fg',['../group__UseMacros.html#ga4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['level_111',['level',['../group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]]
['level_113',['level',['../group__UseMacros.html#ga10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['typo_112',['typo',['../group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]]
['typo_114',['typo',['../group__UseMacros.html#ga932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['clutchlog_2eh_67',['clutchlog.h',['../clutchlog_8h.html',1,'']]]
['clutchlog_2eh_68',['clutchlog.h',['../clutchlog_8h.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['dump_68',['dump',['../group__UseMacros.html#ga63308e8deae3cfec6801318203494143',1,'clutchlog']]]
['dump_69',['dump',['../group__UseMacros.html#ga63308e8deae3cfec6801318203494143',1,'clutchlog']]]
];

View file

@ -1,8 +1,8 @@
var searchData=
[
['file_69',['file',['../group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]],
['fmt_70',['fmt',['../group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt']]],
['format_71',['format',['../group__UseMacros.html#ga656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &amp;format)'],['../group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../group__UseMacros.html#gaf1219599b1361562c802779572aa669f',1,'clutchlog::format(std::string format, const std::string &amp;what, const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const']]],
['format_5fcomment_72',['format_comment',['../group__UseMacros.html#ga2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &amp;format)'],['../group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]],
['func_73',['func',['../group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]]
['file_70',['file',['../group__UseMacros.html#ga10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]],
['fmt_71',['fmt',['../group__UseMacros.html#ga407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt']]],
['format_72',['format',['../group__UseMacros.html#ga656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &amp;format)'],['../group__UseMacros.html#gafc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../group__UseMacros.html#gaf1219599b1361562c802779572aa669f',1,'clutchlog::format(std::string format, const std::string &amp;what, const level &amp;stage, const std::string &amp;file, const std::string &amp;func, const size_t line) const']]],
['format_5fcomment_73',['format_comment',['../group__UseMacros.html#ga2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &amp;format)'],['../group__UseMacros.html#gaa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]],
['func_74',['func',['../group__UseMacros.html#gad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]]
];

View file

@ -1,9 +1,10 @@
var searchData=
[
['level_5fof_74',['level_of',['../group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]],
['line_75',['line',['../group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]],
['locate_76',['locate',['../group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]],
['location_77',['location',['../group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]],
['log_78',['log',['../group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]],
['logger_79',['logger',['../group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]]
['level_5fof_75',['level_of',['../group__UseMacros.html#gacebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]],
['levels_76',['levels',['../group__UseMacros.html#gaff3aa09fb60f7d6dc688c028d3834d8a',1,'clutchlog']]],
['line_77',['line',['../group__UseMacros.html#gaa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]],
['locate_78',['locate',['../group__UseMacros.html#ga4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]],
['location_79',['location',['../group__UseMacros.html#ga6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]],
['log_80',['log',['../group__UseMacros.html#ga23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]],
['logger_81',['logger',['../group__UseMacros.html#gacfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['operator_28_29_80',['operator()',['../group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]],
['out_81',['out',['../group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &amp;out)'],['../group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]]
['operator_28_29_82',['operator()',['../group__UseMacros.html#gafeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]],
['out_83',['out',['../group__UseMacros.html#ga7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &amp;out)'],['../group__UseMacros.html#ga6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['print_5fon_82',['print_on',['../group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]]
['print_5fon_84',['print_on',['../group__UseMacros.html#ga0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['replace_83',['replace',['../group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
['replace_85',['replace',['../group__UseMacros.html#ga972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../group__UseMacros.html#gae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['scope_5ft_84',['scope_t',['../group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t']]],
['style_85',['style',['../group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../group__UseMacros.html#ga4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
['scope_5ft_86',['scope_t',['../group__UseMacros.html#ga0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t']]],
['style_87',['style',['../group__UseMacros.html#gac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../group__UseMacros.html#gad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../group__UseMacros.html#ga4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['threshold_86',['threshold',['../group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../group__UseMacros.html#gab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]]
['threshold_88',['threshold',['../group__UseMacros.html#ga3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../group__UseMacros.html#ga7a7738eaad114bfa870121412fe23ad9',1,'clutchlog::threshold(const std::string &amp;l)'],['../group__UseMacros.html#gab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['default_20configuration_20macros_116',['Default configuration macros',['../group__DefaultConfigMacros.html',1,'']]]
['default_20configuration_20macros_118',['Default configuration macros',['../group__DefaultConfigMacros.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['formating_20tools_117',['Formating tools',['../group__Formating.html',1,'']]]
['formating_20tools_119',['Formating tools',['../group__Formating.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['high_2dlevel_20api_20macros_118',['High-level API macros',['../group__UseMacros.html',1,'']]]
['high_2dlevel_20api_20macros_120',['High-level API macros',['../group__UseMacros.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['main_20class_119',['Main class',['../group__Main.html',1,'']]]
['main_20class_121',['Main class',['../group__Main.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['operator_3c_3c_113',['operator&lt;&lt;',['../group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]]
['operator_3c_3c_115',['operator&lt;&lt;',['../group__UseMacros.html#ga96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]]
];