add macros to the doc

This commit is contained in:
Johann Dreo 2020-10-18 17:20:14 +02:00
commit 2936c0363b
44 changed files with 935 additions and 98 deletions

View file

@ -305,7 +305,7 @@ Log levels use a classical semantics for a human skilled in the art, in decreasi
- *Debug*: data which would help debugging the program if there was a bug later on.
- *XDebug*: debugging information which would be heavy to read.
Note: the log levels constants are lower case (for example: `clutchlog::level:xdebug`), but their string representation is not (e.g. "XDebug", this should be taken into account when using `level_of`).
Note: the log levels constants are lower case (for example: `clutchlog::level::xdebug`), but their string representation is not (e.g. "XDebug", this should be taken into account when using `level_of`).
Limitations

View file

@ -2,6 +2,8 @@
#define __CLUTCHLOG_H__
#pragma once
/** @file */
#include <filesystem>
#include <iostream>
#include <sstream>
@ -36,6 +38,9 @@
**********************************************************************/
#ifdef WITH_CLUTCHLOG
/** @addtogroup DefaultConfigMacros Default configuration macros
* @{ **/
#ifndef CLUTCHLOG_DEFAULT_FORMAT
//! Default format of the messages.
#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
@ -67,6 +72,11 @@
#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG clutchlog::level::progress
#endif // CLUTCHLOG_DEFAULT_DEPTH_BUILT
/** @} */
/** @addtogroup UseMacros High-level API macros
* @{ */
//! Handy shortcuts to location.
#define CLUTCHLOC __FILE__, __FUNCTION__, __LINE__
@ -104,6 +114,8 @@
}
#endif // NDEBUG
/** @} */
#else // not WITH_CLUTCHLOG
// Disabled macros can still be used in Release builds.
#define CLUTCHLOG( LEVEL, WHAT ) { do {/*nothing*/} while(false); }
@ -115,9 +127,12 @@
**********************************************************************/
#ifdef WITH_CLUTCHLOG
/** Single class that holds everything.
/** The single class which holds everything.
*
* This is a Singleton class.
*
* @addtogroup Main Main class
* @{
*/
class clutchlog
{
@ -142,6 +157,9 @@ class clutchlog
/** @} */
/** @addtogroup Formating Formating tools
* @{ */
/** @name Formating API
* @{ */
@ -258,6 +276,7 @@ class clutchlog
}; // fmt class
/** @} */
/** @} */
/** @name Internal details
* @{ */
@ -682,6 +701,8 @@ class clutchlog
/** @} */
};
/** @} */
#else // not WITH_CLUTCHLOG

View file

@ -65,7 +65,7 @@ $(function() {
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classclutchlog.html" target="_self">clutchlog</a></td><td class="desc">Single class that holds everything </td></tr>
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classclutchlog.html" target="_self">clutchlog</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classclutchlog_1_1fmt.html" target="_self">fmt</a></td><td class="desc">Color and style formatter for ANSI terminal escape sequences </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structclutchlog_1_1scope__t.html" target="_self">scope_t</a></td><td class="desc">Structure holding a location matching </td></tr>
</table>

View file

@ -63,14 +63,9 @@ $(function() {
<a href="#nested-classes">Classes</a> &#124;
<a href="classclutchlog-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">clutchlog Class Reference</div> </div>
<div class="title">clutchlog Class Reference<div class="ingroups"><a class="el" href="group__Main.html">Main class</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Single class that holds everything.
<a href="classclutchlog.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="clutchlog_8h_source.html">clutchlog.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
@ -165,7 +160,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr class="separator:a23dbb98f0d3c5cc21c232cde16cf317a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7edb2e14f3d55b201b834255aa4bce9"><td class="memTemplParams" colspan="2"><a id="ae7edb2e14f3d55b201b834255aa4bce9"></a>
template&lt;class In &gt; </td></tr>
<tr class="memitem:ae7edb2e14f3d55b201b834255aa4bce9"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classclutchlog.html#ae7edb2e14f3d55b201b834255aa4bce9">dump</a> (const <a class="el" href="classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928">level</a> &amp;stage, const In container_begin, const In container_end, const std::string &amp;<a class="el" href="classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c">file</a>, const std::string &amp;<a class="el" href="classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447">func</a>, size_t <a class="el" href="classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>, const std::string &amp;filename_template=&quot;dump_{n}.dat&quot;, const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const</td></tr>
<tr class="memitem:ae7edb2e14f3d55b201b834255aa4bce9"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classclutchlog.html#ae7edb2e14f3d55b201b834255aa4bce9">dump</a> (const <a class="el" href="classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928">level</a> &amp;stage, const In container_begin, const In container_end, const std::string &amp;<a class="el" href="classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c">file</a>, const std::string &amp;<a class="el" href="classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447">func</a>, size_t <a class="el" href="classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9">line</a>, const std::string &amp;filename_template=&quot;dump_{n}.dat&quot;, const std::string sep=<a class="el" href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a>) const</td></tr>
<tr class="memdesc:ae7edb2e14f3d55b201b834255aa4bce9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump a serializable container after a comment line with log information. <br /></td></tr>
<tr class="separator:ae7edb2e14f3d55b201b834255aa4bce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@ -235,10 +230,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a cla
<tr class="memdesc:a4ebdfcded6c56262676bf6926d63fc96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gather information on the current location of the call. <br /></td></tr>
<tr class="separator:a4ebdfcded6c56262676bf6926d63fc96"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Single class that holds everything. </p>
<p>This is a Singleton class. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acebed8c9df9204f22bf8488e62e1cedd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acebed8c9df9204f22bf8488e62e1cedd">&#9670;&nbsp;</a></span>level_of()</h2>

View file

@ -71,7 +71,7 @@ $(function() {
<a href="#friends">Friends</a> &#124;
<a href="classclutchlog_1_1fmt-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">clutchlog::fmt Class Reference</div> </div>
<div class="title">clutchlog::fmt Class Reference<div class="ingroups"><a class="el" href="group__Formating.html">Formating tools</a></div></div> </div>
</div><!--header-->
<div class="contents">

147
docs/clutchlog_8h.html Normal file
View file

@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: clutchlog/clutchlog.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c318bd5cf14aaa5601e6029e0b5b4048.html">clutchlog</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">clutchlog.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;filesystem&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;cstdlib&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;limits&gt;</code><br />
<code>#include &lt;regex&gt;</code><br />
<code>#include &lt;map&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for clutchlog.h:</div>
<div class="dyncontent">
<div class="center"><img src="clutchlog_8h__incl.png" border="0" usemap="#clutchlog_2clutchlog_8h" alt=""/></div>
</div>
</div>
<p><a href="clutchlog_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classclutchlog.html">clutchlog</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classclutchlog_1_1fmt.html">clutchlog::fmt</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Color and style formatter for ANSI terminal escape sequences. <a href="classclutchlog_1_1fmt.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structclutchlog_1_1scope__t.html">clutchlog::scope_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure holding a location matching. <a href="structclutchlog_1_1scope__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a6bbcf13504687db4dbe0474931d867fb"><td class="memItemLeft" align="right" valign="top"><a id="a6bbcf13504687db4dbe0474931d867fb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CLUTCHLOG_HAVE_UNIX_SYSINFO</b>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a6bbcf13504687db4dbe0474931d867fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c126962abcc7a40e504a6fc3abdfcc4"><td class="memItemLeft" align="right" valign="top"><a id="a5c126962abcc7a40e504a6fc3abdfcc4"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>WITH_CLUTCHLOG</b></td></tr>
<tr class="separator:a5c126962abcc7a40e504a6fc3abdfcc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga524c16f280d92ee8ab683162c9ce01fa"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DefaultConfigMacros.html#ga524c16f280d92ee8ab683162c9ce01fa">CLUTCHLOG_DEFAULT_FORMAT</a>&#160;&#160;&#160;&quot;{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n&quot;</td></tr>
<tr class="memdesc:ga524c16f280d92ee8ab683162c9ce01fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default format of the messages. <br /></td></tr>
<tr class="separator:ga524c16f280d92ee8ab683162c9ce01fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga27b613c6727857a7cbcd0165d862034e"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DefaultConfigMacros.html#ga27b613c6727857a7cbcd0165d862034e">CLUTCHDUMP_DEFAULT_FORMAT</a>&#160;&#160;&#160;&quot;# {level} in {func} @ {file}:{line}&quot;</td></tr>
<tr class="memdesc:ga27b613c6727857a7cbcd0165d862034e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default format of the comment line in file dump. <br /></td></tr>
<tr class="separator:ga27b613c6727857a7cbcd0165d862034e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54d29e956575e1c731eab5406135c5df"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a>&#160;&#160;&#160;&quot;\n&quot;</td></tr>
<tr class="memdesc:ga54d29e956575e1c731eab5406135c5df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default item separator for dump. <br /></td></tr>
<tr class="separator:ga54d29e956575e1c731eab5406135c5df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga45c4c964fad4ad1641d5c9c28c4645b9"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CLUTCHLOG_DEFAULT_DEPTH_MARK</b>&#160;&#160;&#160;&quot;&gt;&quot;</td></tr>
<tr class="separator:ga45c4c964fad4ad1641d5c9c28c4645b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8564be479b948ee3052b61783c66d415"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG</b>&#160;&#160;&#160;clutchlog::level::progress</td></tr>
<tr class="separator:ga8564be479b948ee3052b61783c66d415"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8911119d726a43b77f5781cb5a72813"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a>&#160;&#160;&#160;__FILE__, __FUNCTION__, __LINE__</td></tr>
<tr class="memdesc:gae8911119d726a43b77f5781cb5a72813"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handy shortcuts to location. <br /></td></tr>
<tr class="separator:gae8911119d726a43b77f5781cb5a72813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f86187e2b35e7e1907d688f504a197d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(LEVEL, WHAT)</td></tr>
<tr class="memdesc:ga6f86187e2b35e7e1907d688f504a197d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Log a message at the given level. <a href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">More...</a><br /></td></tr>
<tr class="separator:ga6f86187e2b35e7e1907d688f504a197d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga572e3aa19d8b39e3ed0b9e91961104c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga572e3aa19d8b39e3ed0b9e91961104c2">CLUTCHDUMP</a>(LEVEL, CONTAINER, FILENAME)</td></tr>
<tr class="memdesc:ga572e3aa19d8b39e3ed0b9e91961104c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump the given container. <a href="group__UseMacros.html#ga572e3aa19d8b39e3ed0b9e91961104c2">More...</a><br /></td></tr>
<tr class="separator:ga572e3aa19d8b39e3ed0b9e91961104c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View file

@ -0,0 +1,2 @@
<map id="clutchlog/clutchlog.h" name="clutchlog/clutchlog.h">
</map>

View file

@ -0,0 +1 @@
8a99df5205b118d2ea433982b8d2959e

BIN
docs/clutchlog_8h__incl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,74 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: tests -&gt; clutchlog Relation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_59425e443f801f1f2fd8bbe4959a3ccf.html">tests</a></li> </ul>
</div>
</div><!-- top -->
<div class="contents">
<h3>tests &rarr; clutchlog Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in tests</th><th class="dirtab">Includes file in clutchlog</th></tr><tr class="dirtab"><td class="dirtab"><b>t-color.cpp</b></td><td class="dirtab"><a class="el" href="clutchlog_8h.html">clutchlog.h</a></td></tr><tr class="dirtab"><td class="dirtab"><b>t-demo.cpp</b></td><td class="dirtab"><a class="el" href="clutchlog_8h.html">clutchlog.h</a></td></tr><tr class="dirtab"><td class="dirtab"><b>t-dump.cpp</b></td><td class="dirtab"><a class="el" href="clutchlog_8h.html">clutchlog.h</a></td></tr><tr class="dirtab"><td class="dirtab"><b>t-log.cpp</b></td><td class="dirtab"><a class="el" href="clutchlog_8h.html">clutchlog.h</a></td></tr></table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View file

@ -67,6 +67,16 @@ $(function() {
<div class="title">tests Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for tests:</div>
<div class="dyncontent">
<div class="center"><img src="dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.png" border="0" usemap="#dir__59425e443f801f1f2fd8bbe4959a3ccf__dep" alt="tests"/></div>
<map name="dir__59425e443f801f1f2fd8bbe4959a3ccf__dep" id="dir__59425e443f801f1f2fd8bbe4959a3ccf__dep">
<area shape="rect" id="node1" href="dir_59425e443f801f1f2fd8bbe4959a3ccf.html" title="tests" alt="" coords="7,5,79,53"/>
<area shape="rect" id="node2" href="dir_c318bd5cf14aaa5601e6029e0b5b4048.html" title="clutchlog" alt="" coords="5,101,80,149"/>
<area shape="rect" id="edge1-headlabel" href="dir_000036_000000.html" title="4" alt="" coords="47,75,55,90"/>
</map>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View file

@ -0,0 +1,5 @@
<map id="tests" name="tests">
<area shape="rect" id="node1" href="dir_59425e443f801f1f2fd8bbe4959a3ccf.html" title="tests" alt="" coords="7,5,79,53"/>
<area shape="rect" id="node2" href="dir_c318bd5cf14aaa5601e6029e0b5b4048.html" title="clutchlog" alt="" coords="5,101,80,149"/>
<area shape="rect" id="edge1-headlabel" href="dir_000036_000000.html" title="4" alt="" coords="47,75,55,90"/>
</map>

View file

@ -0,0 +1 @@
a5f8fa0d7d58d59b863458f8c2f78e64

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -67,6 +67,12 @@ $(function() {
<div class="title">clutchlog Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:clutchlog_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clutchlog_8h.html">clutchlog.h</a> <a href="clutchlog_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View file

@ -66,7 +66,7 @@ $(function() {
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_c318bd5cf14aaa5601e6029e0b5b4048.html" target="_self">clutchlog</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="clutchlog_8h_source.html"><span class="icondoc"></span></a><b>clutchlog.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="clutchlog_8h_source.html"><span class="icondoc"></span></a><a class="el" href="clutchlog_8h.html" target="_self">clutchlog.h</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

90
docs/globals.html Normal file
View file

@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
<li>CLUTCHDUMP
: <a class="el" href="group__UseMacros.html#ga572e3aa19d8b39e3ed0b9e91961104c2">clutchlog.h</a>
</li>
<li>CLUTCHDUMP_DEFAULT_FORMAT
: <a class="el" href="group__DefaultConfigMacros.html#ga27b613c6727857a7cbcd0165d862034e">clutchlog.h</a>
</li>
<li>CLUTCHDUMP_DEFAULT_SEP
: <a class="el" href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">clutchlog.h</a>
</li>
<li>CLUTCHLOC
: <a class="el" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">clutchlog.h</a>
</li>
<li>CLUTCHLOG
: <a class="el" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">clutchlog.h</a>
</li>
<li>CLUTCHLOG_DEFAULT_FORMAT
: <a class="el" href="group__DefaultConfigMacros.html#ga524c16f280d92ee8ab683162c9ce01fa">clutchlog.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

90
docs/globals_defs.html Normal file
View file

@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>CLUTCHDUMP
: <a class="el" href="group__UseMacros.html#ga572e3aa19d8b39e3ed0b9e91961104c2">clutchlog.h</a>
</li>
<li>CLUTCHDUMP_DEFAULT_FORMAT
: <a class="el" href="group__DefaultConfigMacros.html#ga27b613c6727857a7cbcd0165d862034e">clutchlog.h</a>
</li>
<li>CLUTCHDUMP_DEFAULT_SEP
: <a class="el" href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">clutchlog.h</a>
</li>
<li>CLUTCHLOC
: <a class="el" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">clutchlog.h</a>
</li>
<li>CLUTCHLOG
: <a class="el" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">clutchlog.h</a>
</li>
<li>CLUTCHLOG_DEFAULT_FORMAT
: <a class="el" href="group__DefaultConfigMacros.html#ga524c16f280d92ee8ab683162c9ce01fa">clutchlog.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View file

@ -0,0 +1,99 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: Default configuration macros</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">Default configuration macros</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga524c16f280d92ee8ab683162c9ce01fa"><td class="memItemLeft" align="right" valign="top"><a id="ga524c16f280d92ee8ab683162c9ce01fa"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DefaultConfigMacros.html#ga524c16f280d92ee8ab683162c9ce01fa">CLUTCHLOG_DEFAULT_FORMAT</a>&#160;&#160;&#160;&quot;{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n&quot;</td></tr>
<tr class="memdesc:ga524c16f280d92ee8ab683162c9ce01fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default format of the messages. <br /></td></tr>
<tr class="separator:ga524c16f280d92ee8ab683162c9ce01fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga27b613c6727857a7cbcd0165d862034e"><td class="memItemLeft" align="right" valign="top"><a id="ga27b613c6727857a7cbcd0165d862034e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DefaultConfigMacros.html#ga27b613c6727857a7cbcd0165d862034e">CLUTCHDUMP_DEFAULT_FORMAT</a>&#160;&#160;&#160;&quot;# {level} in {func} @ {file}:{line}&quot;</td></tr>
<tr class="memdesc:ga27b613c6727857a7cbcd0165d862034e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default format of the comment line in file dump. <br /></td></tr>
<tr class="separator:ga27b613c6727857a7cbcd0165d862034e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54d29e956575e1c731eab5406135c5df"><td class="memItemLeft" align="right" valign="top"><a id="ga54d29e956575e1c731eab5406135c5df"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a>&#160;&#160;&#160;&quot;\n&quot;</td></tr>
<tr class="memdesc:ga54d29e956575e1c731eab5406135c5df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default item separator for dump. <br /></td></tr>
<tr class="separator:ga54d29e956575e1c731eab5406135c5df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga45c4c964fad4ad1641d5c9c28c4645b9"><td class="memItemLeft" align="right" valign="top"><a id="ga45c4c964fad4ad1641d5c9c28c4645b9"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CLUTCHLOG_DEFAULT_DEPTH_MARK</b>&#160;&#160;&#160;&quot;&gt;&quot;</td></tr>
<tr class="separator:ga45c4c964fad4ad1641d5c9c28c4645b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8564be479b948ee3052b61783c66d415"><td class="memItemLeft" align="right" valign="top"><a id="ga8564be479b948ee3052b61783c66d415"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG</b>&#160;&#160;&#160;clutchlog::level::progress</td></tr>
<tr class="separator:ga8564be479b948ee3052b61783c66d415"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View file

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: Formating API</title>
<title>clutchlog: Formating tools</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.1.0</span>
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
@ -62,7 +62,7 @@ $(function() {
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle">
<div class="title">Formating API</div> </div>
<div class="title">Formating tools</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">

88
docs/group__Main.html Normal file
View file

@ -0,0 +1,88 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: Main class</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle">
<div class="title">Main class</div> </div>
</div><!--header-->
<div class="contents">
<p>The single class which holds everything.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classclutchlog.html">clutchlog</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>The single class which holds everything. </p>
<p>This is a Singleton class. </p>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

163
docs/group__UseMacros.html Normal file
View file

@ -0,0 +1,163 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>clutchlog: High-level API macros</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">High-level API macros</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gae8911119d726a43b77f5781cb5a72813"><td class="memItemLeft" align="right" valign="top"><a id="gae8911119d726a43b77f5781cb5a72813"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a>&#160;&#160;&#160;__FILE__, __FUNCTION__, __LINE__</td></tr>
<tr class="memdesc:gae8911119d726a43b77f5781cb5a72813"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handy shortcuts to location. <br /></td></tr>
<tr class="separator:gae8911119d726a43b77f5781cb5a72813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f86187e2b35e7e1907d688f504a197d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(LEVEL, WHAT)</td></tr>
<tr class="memdesc:ga6f86187e2b35e7e1907d688f504a197d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Log a message at the given level. <a href="#ga6f86187e2b35e7e1907d688f504a197d">More...</a><br /></td></tr>
<tr class="separator:ga6f86187e2b35e7e1907d688f504a197d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga572e3aa19d8b39e3ed0b9e91961104c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__UseMacros.html#ga572e3aa19d8b39e3ed0b9e91961104c2">CLUTCHDUMP</a>(LEVEL, CONTAINER, FILENAME)</td></tr>
<tr class="memdesc:ga572e3aa19d8b39e3ed0b9e91961104c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump the given container. <a href="#ga572e3aa19d8b39e3ed0b9e91961104c2">More...</a><br /></td></tr>
<tr class="separator:ga572e3aa19d8b39e3ed0b9e91961104c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga572e3aa19d8b39e3ed0b9e91961104c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga572e3aa19d8b39e3ed0b9e91961104c2">&#9670;&nbsp;</a></span>CLUTCHDUMP</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CLUTCHDUMP</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">LEVEL, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">CONTAINER, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">FILENAME&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ \</div><div class="line"> auto&amp; logger = <a class="code" href="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">clutchlog::logger</a>(); \</div><div class="line"> logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \</div><div class="line"> <a class="code" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a>, FILENAME, <a class="code" href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a>); \</div><div class="line">}</div><div class="ttc" id="group__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:81</div></div>
<div class="ttc" id="classclutchlog_html_acfaceb77da01503b432644a3efaee4fa"><div class="ttname"><a href="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">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:149</div></div>
<div class="ttc" id="group__DefaultConfigMacros_html_ga54d29e956575e1c731eab5406135c5df"><div class="ttname"><a href="group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df">CLUTCHDUMP_DEFAULT_SEP</a></div><div class="ttdeci">#define CLUTCHDUMP_DEFAULT_SEP</div><div class="ttdoc">Default item separator for dump. </div><div class="ttdef"><b>Definition:</b> clutchlog.h:64</div></div>
</div><!-- fragment -->
<p>Dump the given container. </p>
</div>
</div>
<a id="ga6f86187e2b35e7e1907d688f504a197d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6f86187e2b35e7e1907d688f504a197d">&#9670;&nbsp;</a></span>CLUTCHLOG</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CLUTCHLOG</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">LEVEL, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">WHAT&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ \</div><div class="line"> auto&amp; logger = <a class="code" href="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">clutchlog::logger</a>(); \</div><div class="line"> std::ostringstream msg ; msg &lt;&lt; WHAT; \</div><div class="line"> logger.log(clutchlog::level::LEVEL, msg.str(), <a class="code" href="group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813">CLUTCHLOC</a>); \</div><div class="line">}</div><div class="ttc" id="group__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:81</div></div>
<div class="ttc" id="classclutchlog_html_acfaceb77da01503b432644a3efaee4fa"><div class="ttname"><a href="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">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:149</div></div>
</div><!-- fragment -->
<p>Log a message at the given level. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View file

@ -92,7 +92,7 @@ Features</h1>
<p>Additionally, Clutchlog will do its best to allow the compiler to optimize out calls, for instance debug messages in "Release" builds.</p>
<h1><a class="anchor" id="autotoc_md1"></a>
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">CLUTCHLOG(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="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">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.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>
<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="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">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.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>
<h1><a class="anchor" id="autotoc_md2"></a>
Rationale</h1>
<p>Most of existing logging systems targets service events storage, like fast queuing of transactions in a round-robin database. Their aim is to provide a simple interface to efficiently store messages somewhere, which is appropriated when you have a well known service running and you want to be able to trace complex users interactions across its states.</p>
@ -103,7 +103,7 @@ Rationale</h1>
API documentation</h1>
<h2><a class="anchor" id="autotoc_md4"></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 which 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">CLUTCHLOG(info, <span class="stringliteral">&quot;hello world&quot;</span>);</div><div class="line"></div><div class="line"><span class="comment">// Serialisable variable:</span></div><div class="line"><span class="keywordtype">double</span> value = 0;</div><div class="line">CLUTCHLOG(error, value);</div><div class="line"></div><div class="line"><span class="comment">// passed using inline output stream operators:</span></div><div class="line">CLUTCHLOG(debug, <span class="stringliteral">&quot;hello &quot;</span> &lt;&lt; value &lt;&lt; <span class="stringliteral">&quot; world&quot;</span>);</div></div><!-- fragment --><p>There is also a macro to dump the content of an iterable within a separate file: <code>CLUTCHDUMP</code>. This function takes care of incrementing a numeric suffix in the file name, if an existing file with this name exists. </p><div class="fragment"><div class="line">std::vector&lt;int&gt; v(10);</div><div class="line">std::generate(v.begin(), v.end(), std::rand);</div><div class="line">CLUTCHLOG(debug, vec, <span class="stringliteral">&quot;test_{n}.dat&quot;</span>);</div><div class="line"><span class="comment">/* Will output in cat &quot;rand_0.dat&quot;</span></div><div class="line"><span class="comment">* # [t-dump] Info in main (at depth 5) @ /home/nojhan/code/clutchlog/tests/t-dump.cpp:22</span></div><div class="line"><span class="comment">* 1804289383</span></div><div class="line"><span class="comment">* 846930886</span></div><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>
<p>The main entrypoint is the <code>CLUTCHLOG</code> macro, which takes the desired log level and message. The message can be anything which 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><div class="line"></div><div class="line"><span class="comment">// Serialisable variable:</span></div><div class="line"><span class="keywordtype">double</span> value = 0;</div><div class="line"><a class="code" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(error, value);</div><div class="line"></div><div class="line"><span class="comment">// passed using inline output stream operators:</span></div><div class="line"><a class="code" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(debug, <span class="stringliteral">&quot;hello &quot;</span> &lt;&lt; value &lt;&lt; <span class="stringliteral">&quot; world&quot;</span>);</div></div><!-- fragment --><p>There is also a macro to dump the content of an iterable within a separate file: <code>CLUTCHDUMP</code>. This function takes care of incrementing a numeric suffix in the file name, if an existing file with this name exists. </p><div class="fragment"><div class="line">std::vector&lt;int&gt; v(10);</div><div class="line">std::generate(v.begin(), v.end(), std::rand);</div><div class="line"><a class="code" href="group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d">CLUTCHLOG</a>(debug, vec, <span class="stringliteral">&quot;test_{n}.dat&quot;</span>);</div><div class="line"><span class="comment">/* Will output in cat &quot;rand_0.dat&quot;</span></div><div class="line"><span class="comment">* # [t-dump] Info in main (at depth 5) @ /home/nojhan/code/clutchlog/tests/t-dump.cpp:22</span></div><div class="line"><span class="comment">* 1804289383</span></div><div class="line"><span class="comment">* 846930886</span></div><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>
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="classclutchlog.html#acfaceb77da01503b432644a3efaee4fa">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><div class="line">log.threshold(clutchlog::level::error); <span class="comment">// Log level, defaults to error.</span></div></div><!-- fragment --><p> Current levels are defined in an enumeration as <code><a class="el" href="classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928" title="Available log levels. ">clutchlog::level</a></code>: </p><div class="fragment"><div class="line"><span class="keyword">enum</span> level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};</div></div><!-- fragment --><p>File, function and line filters are indicated using (ECMAScript) regular expressions: </p><div class="fragment"><div class="line">log.file(<span class="stringliteral">&quot;.*&quot;</span>); <span class="comment">// File location, defaults to any.</span></div><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> Note that the case of the log levels strings matters (see below).</p>
@ -162,7 +162,7 @@ Disabled calls</h2>
<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>
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>, CLUTCHLOC);</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(), CLUTCHLOC, <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 --><h1><a class="anchor" id="autotoc_md10"></a>
<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 --><h1><a class="anchor" id="autotoc_md10"></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>
@ -175,7 +175,7 @@ Log level semantics</h1>
<li><em>Debug</em>: data which would help debugging the program if there was a bug later on.</li>
<li><em>XDebug</em>: debugging information which would be heavy to read.</li>
</ul>
<p>Note: the log levels constants are lower case (for example: <code><a class="el" href="classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928" title="Available log levels. ">clutchlog::level</a>:xdebug</code>), but their string representation is not (e.g. "XDebug", this should be taken into account when using <code>level_of</code>).</p>
<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_md11"></a>
Limitations</h1>
<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

@ -1,5 +1,6 @@
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Modules",url:"modules.html"},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
@ -18,4 +19,7 @@ var menudata={children:[
{text:"Enumerations",url:"functions_enum.html"},
{text:"Related Functions",url:"functions_rela.html"}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}
{text:"File List",url:"files.html"},
{text:"File Members",url:"globals.html",children:[
{text:"All",url:"globals.html"},
{text:"Macros",url:"globals_defs.html"}]}]}]}

View file

@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">clutchlog
&#160;<span id="projectnumber">0.1.0</span>
&#160;<span id="projectnumber">0.5.0</span>
</div>
</td>
</tr>
@ -65,12 +65,10 @@ $(function() {
<div class="contents">
<div class="textblock">Here is a list of all modules:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__UserAPI.html" target="_self">High-level API</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__Formating.html" target="_self">Formating API</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__FMTConstructors.html" target="_self">All combination of constructors with different parameters orders.</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__Details.html" target="_self">Internal details</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__Config.html" target="_self">Configuration accessors</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__LowAPI.html" target="_self">Low-level API</a></td><td class="desc"></td></tr>
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__DefaultConfigMacros.html" target="_self">Default configuration macros</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__UseMacros.html" target="_self">High-level API macros</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__Main.html" target="_self">Main class</a></td><td class="desc">The single class which holds everything </td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__Formating.html" target="_self">Formating tools</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

View file

@ -1,4 +1,10 @@
var searchData=
[
['clutchlog',['clutchlog',['../classclutchlog.html',1,'']]]
['clutchdump',['CLUTCHDUMP',['../group__UseMacros.html#ga572e3aa19d8b39e3ed0b9e91961104c2',1,'clutchlog.h']]],
['clutchdump_5fdefault_5fformat',['CLUTCHDUMP_DEFAULT_FORMAT',['../group__DefaultConfigMacros.html#ga27b613c6727857a7cbcd0165d862034e',1,'clutchlog.h']]],
['clutchdump_5fdefault_5fsep',['CLUTCHDUMP_DEFAULT_SEP',['../group__DefaultConfigMacros.html#ga54d29e956575e1c731eab5406135c5df',1,'clutchlog.h']]],
['clutchloc',['CLUTCHLOC',['../group__UseMacros.html#gae8911119d726a43b77f5781cb5a72813',1,'clutchlog.h']]],
['clutchlog',['clutchlog',['../classclutchlog.html',1,'clutchlog'],['../group__UseMacros.html#ga6f86187e2b35e7e1907d688f504a197d',1,'CLUTCHLOG():&#160;clutchlog.h']]],
['clutchlog_2eh',['clutchlog.h',['../clutchlog_8h.html',1,'']]],
['clutchlog_5fdefault_5fformat',['CLUTCHLOG_DEFAULT_FORMAT',['../group__DefaultConfigMacros.html#ga524c16f280d92ee8ab683162c9ce01fa',1,'clutchlog.h']]]
];

View file

@ -1,4 +1,5 @@
var searchData=
[
['default_20configuration_20macros',['Default configuration macros',['../group__DefaultConfigMacros.html',1,'']]],
['dump',['dump',['../classclutchlog.html#ae7edb2e14f3d55b201b834255aa4bce9',1,'clutchlog']]]
];

View file

@ -5,5 +5,6 @@ var searchData=
['fmt',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog::fmt'],['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt::fmt()']]],
['format',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &amp;format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#af1219599b1361562c802779572aa669f',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',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &amp;format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]],
['formating_20tools',['Formating tools',['../group__Formating.html',1,'']]],
['func',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]]
];

View file

@ -1,10 +1,4 @@
var searchData=
[
['level',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]],
['level_5fof',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]],
['line',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]],
['locate',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]],
['location',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]],
['log',['log',['../classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]],
['logger',['logger',['../classclutchlog.html#acfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]]
['high_2dlevel_20api_20macros',['High-level API macros',['../group__UseMacros.html',1,'']]]
];

View file

@ -1,6 +1,10 @@
var searchData=
[
['operator_28_29',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]],
['operator_3c_3c',['operator&lt;&lt;',['../classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]],
['out',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &amp;out)'],['../classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]]
['level',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]],
['level_5fof',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]],
['line',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]],
['locate',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]],
['location',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]],
['log',['log',['../classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]],
['logger',['logger',['../classclutchlog.html#acfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['print_5fon',['print_on',['../classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]]
['main_20class',['Main class',['../group__Main.html',1,'']]]
];

View file

@ -1,4 +1,6 @@
var searchData=
[
['replace',['replace',['../classclutchlog.html#a972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
['operator_28_29',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]],
['operator_3c_3c',['operator&lt;&lt;',['../classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]],
['out',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &amp;out)'],['../classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]]
];

View file

@ -1,5 +1,4 @@
var searchData=
[
['scope_5ft',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]],
['style',['style',['../classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../classclutchlog.html#a4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
['print_5fon',['print_on',['../classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]]
];

View file

@ -1,5 +1,4 @@
var searchData=
[
['threshold',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]],
['typo',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]]
['replace',['replace',['../classclutchlog.html#a972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
];

View file

@ -1,4 +1,5 @@
var searchData=
[
['replace',['replace',['../group__LowAPI.html#ga972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const std::string &amp;tag) const'],['../group__LowAPI.html#gae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &amp;form, const std::string &amp;mark, const size_t tag) const']]]
['scope_5ft',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]],
['style',['style',['../classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../classclutchlog.html#a4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['scope_5ft',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]],
['style',['style',['../group__Config.html#gac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../group__Config.html#gad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../group__Config.html#ga4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]]
['threshold',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]],
['typo',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]]
];

26
docs/search/files_0.html Normal file
View file

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

4
docs/search/files_0.js Normal file
View file

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

View file

@ -1,4 +1,4 @@
var searchData=
[
['all_20combination_20of_20constructors_20with_20different_20parameters_20orders_2e',['All combination of constructors with different parameters orders.',['../group__FMTConstructors.html',1,'']]]
['default_20configuration_20macros',['Default configuration macros',['../group__DefaultConfigMacros.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['configuration_20accessors',['Configuration accessors',['../group__Config.html',1,'']]]
['formating_20tools',['Formating tools',['../group__Formating.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['formating_20api',['Formating API',['../group__Formating.html',1,'']]]
['high_2dlevel_20api_20macros',['High-level API macros',['../group__UseMacros.html',1,'']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['high_2dlevel_20api',['High-level API',['../group__UserAPI.html',1,'']]]
['main_20class',['Main class',['../group__Main.html',1,'']]]
];

View file

@ -1,27 +1,33 @@
var indexSectionsWithContent =
{
0: "bcdfloprst",
0: "bcdfhlmoprst",
1: "cfs",
2: "dfloprst",
3: "bflt",
4: "o"
2: "c",
3: "dfloprst",
4: "bflt",
5: "o",
6: "dfhm"
};
var indexSectionNames =
{
0: "all",
1: "classes",
2: "functions",
3: "enums",
4: "related"
2: "files",
3: "functions",
4: "enums",
5: "related",
6: "groups"
};
var indexSectionLabels =
{
0: "All",
1: "Classes",
2: "Functions",
3: "Enumerations",
4: "Friends"
2: "Files",
3: "Functions",
4: "Enumerations",
5: "Friends",
6: "Modules"
};