diff --git a/CMakeLists.txt b/CMakeLists.txt index 49ac6fa..6316616 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,7 @@ if(BUILD_DOCUMENTATION) configure_file(${doxyfile_in} ${doxyfile} @ONLY) - # ALL allows to build the docs together with any other target. - add_custom_target( doc ALL + add_custom_target( doc COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" diff --git a/build_all.sh b/build_all.sh index 09c3562..500fcd2 100755 --- a/build_all.sh +++ b/build_all.sh @@ -23,3 +23,8 @@ for t in "Debug" "Release" "RelWithDebInfo"; do done done +echo "Update documentation" +cd Debug_ON +make doc +cp -r html/* ../docs/ + diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 0000000..01dcd07 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,81 @@ + + +
+ + + + +|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/bc_s.png b/docs/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/docs/bc_s.png differ
diff --git a/docs/bdwn.png b/docs/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/docs/bdwn.png differ
diff --git a/docs/classclutchlog-members.html b/docs/classclutchlog-members.html
new file mode 100644
index 0000000..d1efec5
--- /dev/null
+++ b/docs/classclutchlog-members.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
This is the complete list of members for clutchlog, including all inherited members.
+| _format_dump (defined in clutchlog) | clutchlog | protected |
| _format_log (defined in clutchlog) | clutchlog | protected |
| _in_file (defined in clutchlog) | clutchlog | protected |
| _in_func (defined in clutchlog) | clutchlog | protected |
| _in_line (defined in clutchlog) | clutchlog | protected |
| _level_fmt (defined in clutchlog) | clutchlog | protected |
| _level_word (defined in clutchlog) | clutchlog | protected |
| _out (defined in clutchlog) | clutchlog | protected |
| _stage (defined in clutchlog) | clutchlog | protected |
| _strip_calls (defined in clutchlog) | clutchlog | protected |
| _word_level (defined in clutchlog) | clutchlog | protected |
| clutchlog(clutchlog const &)=delete (defined in clutchlog) | clutchlog | |
| critical enum value (defined in clutchlog) | clutchlog | |
| debug enum value (defined in clutchlog) | clutchlog | |
| dump(const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const | clutchlog | inline |
| error enum value (defined in clutchlog) | clutchlog | |
| file(std::string file) | clutchlog | inline |
| format(const std::string &format) | clutchlog | inline |
| format() const | clutchlog | inline |
| format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const | clutchlog | inline |
| format_comment(const std::string &format) | clutchlog | inline |
| format_comment() const | clutchlog | inline |
| func(std::string func) | clutchlog | inline |
| info enum value (defined in clutchlog) | clutchlog | |
| level enum name | clutchlog | |
| level_of(const std::string name) | clutchlog | inline |
| line(std::string line) | clutchlog | inline |
| locate(const level &stage, const std::string &file, const std::string &func, const size_t line) const | clutchlog | inlineprotected |
| location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*") | clutchlog | inline |
| log(const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const | clutchlog | inline |
| logger() | clutchlog | inlinestatic |
| note enum value (defined in clutchlog) | clutchlog | |
| operator=(clutchlog const &)=delete (defined in clutchlog) | clutchlog | |
| out(std::ostream &out) | clutchlog | inline |
| out() | clutchlog | inline |
| progress enum value (defined in clutchlog) | clutchlog | |
| replace(const std::string &form, const std::string &mark, const std::string &tag) const | clutchlog | inline |
| replace(const std::string &form, const std::string &mark, const size_t tag) const | clutchlog | inline |
| style(level stage, FMT... styles) | clutchlog | inline |
| style(level stage, fmt style) | clutchlog | inline |
| style(level stage) const | clutchlog | inline |
| threshold(level l) | clutchlog | inline |
| threshold() const | clutchlog | inline |
| warning enum value (defined in clutchlog) | clutchlog | |
| xdebug enum value (defined in clutchlog) | clutchlog |
+ 1.8.13
+
+
+
diff --git a/docs/classclutchlog.html b/docs/classclutchlog.html
new file mode 100644
index 0000000..92de73a
--- /dev/null
+++ b/docs/classclutchlog.html
@@ -0,0 +1,394 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
Single class that holds everything. + More...
+ +#include <clutchlog.h>
+Classes | |
| class | fmt |
| Color and style formatter for ANSI terminal escape sequences. More... | |
| struct | scope_t |
| Structure holding a location matching. More... | |
+Public Member Functions | |
Configuration accessors | |
| +void | format (const std::string &format) |
| Set the template string. | |
| +std::string | format () const |
| Get the template string. | |
| +void | format_comment (const std::string &format) |
| Set the template string for dumps. | |
| +std::string | format_comment () const |
| Get the template string for dumps. | |
| +void | out (std::ostream &out) |
| Set the output stream on which to print. | |
| +std::ostream & | out () |
| Get the output stream on which to print. | |
| +void | threshold (level l) |
| Set the log level below which logs are not printed. | |
| +level | threshold () const |
| Get the log level below which logs are not printed. | |
| +void | file (std::string file) |
| Set the regular expression filtering the file location. | |
| +void | func (std::string func) |
| Set the regular expression filtering the function location. | |
| +void | line (std::string line) |
| Set the regular expression filtering the line location. | |
| +void | location (const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*") |
| Set the regular expressions filtering the location. | |
| template<class ... FMT> | |
| void | style (level stage, FMT... styles) |
| Set the style (color and typo) of the given log level. More... | |
| +void | style (level stage, fmt style) |
Set the style (color and typo) of the given log level, passing a fmt instance. | |
| +fmt | style (level stage) const |
| Get the configured fmt instance of the given log level. | |
| level | level_of (const std::string name) |
| Return the log level tag corresponding to the given pre-configured name. More... | |
Low-level API | |
| std::string | replace (const std::string &form, const std::string &mark, const std::string &tag) const |
Replace mark by tag in form. More... | |
| +std::string | replace (const std::string &form, const std::string &mark, const size_t tag) const |
Replace mark by tag in form, converting tag to its string representation first. | |
| +std::string | format (std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const |
| Substitute all tags in the format string with the corresponding information and apply the style corresponding to the log level. | |
| +void | log (const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const |
| Print a log message IF the location matches the given one. | |
| +template<class In > | |
| void | dump (const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const |
| Dump a serializable container after a comment line with log information. | |
+High-level API | |
| enum | level { + critical =0, +error =1, +warning =2, +progress =3, + + note =4, +info =5, +debug =6, +xdebug =7 + + } |
| Available log levels. | |
| static clutchlog & | logger () |
| Get the logger instance. More... | |
+Internal details | |
| +const size_t | _strip_calls |
| +const std::map< level, std::string > | _level_word |
| +std::map< std::string, level > | _word_level |
| +std::map< level, fmt > | _level_fmt |
| +std::string | _format_log |
| +std::string | _format_dump |
| +std::ostream * | _out |
| +level | _stage |
| +std::regex | _in_file |
| +std::regex | _in_func |
| +std::regex | _in_line |
| + | clutchlog (clutchlog const &)=delete |
| +void | operator= (clutchlog const &)=delete |
| +scope_t | locate (const level &stage, const std::string &file, const std::string &func, const size_t line) const |
| Gather information on the current location of the call. | |
Single class that holds everything.
+This is a Singleton class.
+
+
|
+ +inline | +
Return the log level tag corresponding to the given pre-configured name.
+_level_word.
+
|
+ +inlinestatic | +
Get the logger instance.
+
+
|
+ +inline | +
Replace mark by tag in form.
+
|
+ +inline | +
Set the style (color and typo) of the given log level.
+This version accept style arguments as if they were passed to clutchlog::fmt.
+ 1.8.13
+
+
+
diff --git a/docs/classclutchlog_1_1fmt-members.html b/docs/classclutchlog_1_1fmt-members.html
new file mode 100644
index 0000000..84134e0
--- /dev/null
+++ b/docs/classclutchlog_1_1fmt-members.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
This is the complete list of members for clutchlog::fmt, including all inherited members.
+| back (defined in clutchlog::fmt) | clutchlog::fmt | |
| bg enum name | clutchlog::fmt | |
| fg enum name | clutchlog::fmt | |
| fmt() | clutchlog::fmt | inline |
| fmt(fg f, bg b=bg::none, typo s=typo::none) (defined in clutchlog::fmt) | clutchlog::fmt | inline |
| fmt(fg f, typo s, bg b=bg::none) (defined in clutchlog::fmt) | clutchlog::fmt | inline |
| fmt(bg b, fg f=fg::none, typo s=typo::none) (defined in clutchlog::fmt) | clutchlog::fmt | inline |
| fmt(bg b, typo s, fg f=fg::none) (defined in clutchlog::fmt) | clutchlog::fmt | inline |
| fmt(typo s, fg f=fg::none, bg b=bg::none) (defined in clutchlog::fmt) | clutchlog::fmt | inline |
| fmt(typo s, bg b, fg f=fg::none) (defined in clutchlog::fmt) | clutchlog::fmt | inline |
| fore (defined in clutchlog::fmt) | clutchlog::fmt | |
| operator()(const std::string &msg) const | clutchlog::fmt | inline |
| operator<<(std::ostream &os, const fmt &fmt) | clutchlog::fmt | friend |
| print_on(std::ostream &os) const | clutchlog::fmt | inlineprotected |
| style (defined in clutchlog::fmt) | clutchlog::fmt | |
| typo enum name | clutchlog::fmt |
+ 1.8.13
+
+
+
diff --git a/docs/classclutchlog_1_1fmt.html b/docs/classclutchlog_1_1fmt.html
new file mode 100644
index 0000000..3ca24e1
--- /dev/null
+++ b/docs/classclutchlog_1_1fmt.html
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
Color and style formatter for ANSI terminal escape sequences. + More...
+ +#include <clutchlog.h>
+Public Types | |
| enum | fg { + black = 30, +red = 31, +green = 32, +yellow = 33, + + blue = 34, +magenta = 35, +cyan = 36, +white = 37, + + none + + } |
| Foreground color codes. | |
| enum | bg { + black = 40, +red = 41, +green = 42, +yellow = 43, + + blue = 44, +magenta = 45, +cyan = 46, +white = 47, + + none + + } |
| Background color codes. | |
| enum | typo { + reset = 0, +bold = 1, +underline = 4, +inverse = 7, + + none + + } |
| Typographic style codes. | |
+Public Member Functions | |
| + | fmt () |
| Â Empty constructor, only useful for a no-op formatter. | |
| std::string | operator() (const std::string &msg) const |
| Format the given string with the currently encoded format. More... | |
All combination of constructors with different parameters orders. | |
| + | fmt (fg f, bg b=bg::none, typo s=typo::none) |
| + | fmt (fg f, typo s, bg b=bg::none) |
| + | fmt (bg b, fg f=fg::none, typo s=typo::none) |
| + | fmt (bg b, typo s, fg f=fg::none) |
| + | fmt (typo s, fg f=fg::none, bg b=bg::none) |
| + | fmt (typo s, bg b, fg f=fg::none) |
+Public Attributes | |
| +enum clutchlog::fmt::fg | fore |
| +enum clutchlog::fmt::bg | back |
| +enum clutchlog::fmt::typo | style |
+Protected Member Functions | |
| +std::ostream & | print_on (std::ostream &os) const |
| Print the currently encoded format escape code on the given output stream. | |
+Friends | |
| std::ostream & | operator<< (std::ostream &os, const fmt &fmt) |
| Output stream overload. More... | |
Color and style formatter for ANSI terminal escape sequences.
+
+
|
+ +inline | +
Format the given string with the currently encoded format.
+Allow to use a formatter as a function:
+
|
+ +friend | +
Output stream overload.
+Allow to use a formatter as a tag within a stream:
+ 1.8.13
+
+
+
diff --git a/docs/classes.html b/docs/classes.html
new file mode 100644
index 0000000..a1a8e1b
--- /dev/null
+++ b/docs/classes.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/closed.png b/docs/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/docs/closed.png differ
diff --git a/docs/clutchlog_8h_source.html b/docs/clutchlog_8h_source.html
new file mode 100644
index 0000000..717495b
--- /dev/null
+++ b/docs/clutchlog_8h_source.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_0597ce40fdf188e7870807c32590691d.html b/docs/dir_0597ce40fdf188e7870807c32590691d.html
new file mode 100644
index 0000000..27c5c81
--- /dev/null
+++ b/docs/dir_0597ce40fdf188e7870807c32590691d.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html b/docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html
new file mode 100644
index 0000000..e8d2d97
--- /dev/null
+++ b/docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_0c6859326e57c84153d9ce3980c7b614.html b/docs/dir_0c6859326e57c84153d9ce3980c7b614.html
new file mode 100644
index 0000000..6ba266d
--- /dev/null
+++ b/docs/dir_0c6859326e57c84153d9ce3980c7b614.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html b/docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html
new file mode 100644
index 0000000..6b9322d
--- /dev/null
+++ b/docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html b/docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html
new file mode 100644
index 0000000..2e7b8a3
--- /dev/null
+++ b/docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_11d96b0893f97b142d6effd564752a90.html b/docs/dir_11d96b0893f97b142d6effd564752a90.html
new file mode 100644
index 0000000..0b31e41
--- /dev/null
+++ b/docs/dir_11d96b0893f97b142d6effd564752a90.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html b/docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html
new file mode 100644
index 0000000..3602517
--- /dev/null
+++ b/docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_2010fee6dc55af84ec3880814fe9859d.html b/docs/dir_2010fee6dc55af84ec3880814fe9859d.html
new file mode 100644
index 0000000..6fc5283
--- /dev/null
+++ b/docs/dir_2010fee6dc55af84ec3880814fe9859d.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_232d0e660737fa098457ae695f029c6e.html b/docs/dir_232d0e660737fa098457ae695f029c6e.html
new file mode 100644
index 0000000..7b3e62a
--- /dev/null
+++ b/docs/dir_232d0e660737fa098457ae695f029c6e.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html b/docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html
new file mode 100644
index 0000000..aa512ed
--- /dev/null
+++ b/docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_3353b0403823e43b133a3a97f7b61528.html b/docs/dir_3353b0403823e43b133a3a97f7b61528.html
new file mode 100644
index 0000000..8d9543c
--- /dev/null
+++ b/docs/dir_3353b0403823e43b133a3a97f7b61528.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_3354f823b93c486985d8eff812f202d0.html b/docs/dir_3354f823b93c486985d8eff812f202d0.html
new file mode 100644
index 0000000..6f98924
--- /dev/null
+++ b/docs/dir_3354f823b93c486985d8eff812f202d0.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_3580e889fffd597e9f1e74f0989be3f4.html b/docs/dir_3580e889fffd597e9f1e74f0989be3f4.html
new file mode 100644
index 0000000..f6b2d06
--- /dev/null
+++ b/docs/dir_3580e889fffd597e9f1e74f0989be3f4.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html b/docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html
new file mode 100644
index 0000000..5e050cd
--- /dev/null
+++ b/docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_44d46ce0fefad9fb4568613342a0f089.html b/docs/dir_44d46ce0fefad9fb4568613342a0f089.html
new file mode 100644
index 0000000..67399b1
--- /dev/null
+++ b/docs/dir_44d46ce0fefad9fb4568613342a0f089.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html b/docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html
new file mode 100644
index 0000000..7bbd648
--- /dev/null
+++ b/docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html
new file mode 100644
index 0000000..805340f
--- /dev/null
+++ b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_61ab004aa8225a3da30151b57198e21f.html b/docs/dir_61ab004aa8225a3da30151b57198e21f.html
new file mode 100644
index 0000000..9fe89a3
--- /dev/null
+++ b/docs/dir_61ab004aa8225a3da30151b57198e21f.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_7993767c315ca7e2492c0e12f2140894.html b/docs/dir_7993767c315ca7e2492c0e12f2140894.html
new file mode 100644
index 0000000..c8bbae5
--- /dev/null
+++ b/docs/dir_7993767c315ca7e2492c0e12f2140894.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html b/docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html
new file mode 100644
index 0000000..909e287
--- /dev/null
+++ b/docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_8497d690b57aba136d1839e5c427d666.html b/docs/dir_8497d690b57aba136d1839e5c427d666.html
new file mode 100644
index 0000000..78b0b2f
--- /dev/null
+++ b/docs/dir_8497d690b57aba136d1839e5c427d666.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html b/docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html
new file mode 100644
index 0000000..3aa79f2
--- /dev/null
+++ b/docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html b/docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html
new file mode 100644
index 0000000..d788b6d
--- /dev/null
+++ b/docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_a5e190e82988878b02be1ad8893fe33a.html b/docs/dir_a5e190e82988878b02be1ad8893fe33a.html
new file mode 100644
index 0000000..6a4e060
--- /dev/null
+++ b/docs/dir_a5e190e82988878b02be1ad8893fe33a.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_a6147547081efd8e9250c1acee302c56.html b/docs/dir_a6147547081efd8e9250c1acee302c56.html
new file mode 100644
index 0000000..9b01563
--- /dev/null
+++ b/docs/dir_a6147547081efd8e9250c1acee302c56.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_a943a781f3047d1fe445d5e8eba50028.html b/docs/dir_a943a781f3047d1fe445d5e8eba50028.html
new file mode 100644
index 0000000..dd6ec9d
--- /dev/null
+++ b/docs/dir_a943a781f3047d1fe445d5e8eba50028.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_b1c763aea5b862e235cc9501e2ce06da.html b/docs/dir_b1c763aea5b862e235cc9501e2ce06da.html
new file mode 100644
index 0000000..1350900
--- /dev/null
+++ b/docs/dir_b1c763aea5b862e235cc9501e2ce06da.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_be65af4ad555fa38f52fdec43511df23.html b/docs/dir_be65af4ad555fa38f52fdec43511df23.html
new file mode 100644
index 0000000..6691b68
--- /dev/null
+++ b/docs/dir_be65af4ad555fa38f52fdec43511df23.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html b/docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html
new file mode 100644
index 0000000..e9ec3a6
--- /dev/null
+++ b/docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html
new file mode 100644
index 0000000..415346e
--- /dev/null
+++ b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_dd500134467ec65427366f3cbbc5ff81.html b/docs/dir_dd500134467ec65427366f3cbbc5ff81.html
new file mode 100644
index 0000000..a8a7b38
--- /dev/null
+++ b/docs/dir_dd500134467ec65427366f3cbbc5ff81.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_de06b53c2e04c67b773395f92873ff7f.html b/docs/dir_de06b53c2e04c67b773395f92873ff7f.html
new file mode 100644
index 0000000..a0801e1
--- /dev/null
+++ b/docs/dir_de06b53c2e04c67b773395f92873ff7f.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html b/docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html
new file mode 100644
index 0000000..7b3ba91
--- /dev/null
+++ b/docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_ede0e87241159758c1b375c196bd55d8.html b/docs/dir_ede0e87241159758c1b375c196bd55d8.html
new file mode 100644
index 0000000..769712d
--- /dev/null
+++ b/docs/dir_ede0e87241159758c1b375c196bd55d8.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_f324b8056e3921282ea6aa7d15c7705c.html b/docs/dir_f324b8056e3921282ea6aa7d15c7705c.html
new file mode 100644
index 0000000..2be8e24
--- /dev/null
+++ b/docs/dir_f324b8056e3921282ea6aa7d15c7705c.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_f544411fb6a30872da080b65ab4522b8.html b/docs/dir_f544411fb6a30872da080b65ab4522b8.html
new file mode 100644
index 0000000..f708f28
--- /dev/null
+++ b/docs/dir_f544411fb6a30872da080b65ab4522b8.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/dir_f803ec176eda9a8494dc55dc57236527.html b/docs/dir_f803ec176eda9a8494dc55dc57236527.html
new file mode 100644
index 0000000..666ba03
--- /dev/null
+++ b/docs/dir_f803ec176eda9a8494dc55dc57236527.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/doc.png b/docs/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/docs/doc.png differ
diff --git a/docs/doxygen.css b/docs/doxygen.css
new file mode 100644
index 0000000..4f1ab91
--- /dev/null
+++ b/docs/doxygen.css
@@ -0,0 +1,1596 @@
+/* The standard CSS for doxygen 1.8.13 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+/*
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTableHead tr {
+}
+
+table.markdownTableBodyLeft td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter {
+ text-align: center
+}
+*/
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+
+/* @end */
diff --git a/docs/doxygen.png b/docs/doxygen.png
new file mode 100644
index 0000000..3ff17d8
Binary files /dev/null and b/docs/doxygen.png differ
diff --git a/docs/dynsections.js b/docs/dynsections.js
new file mode 100644
index 0000000..85e1836
--- /dev/null
+++ b/docs/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l|
+ clutchlog
+ 0.5.0
+
+ |
+
| ▼ clutchlog | |
| clutchlog.h |
+ 1.8.13
+
+
+
diff --git a/docs/folderclosed.png b/docs/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
Binary files /dev/null and b/docs/folderclosed.png differ
diff --git a/docs/folderopen.png b/docs/folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/docs/folderopen.png differ
diff --git a/docs/functions.html b/docs/functions.html
new file mode 100644
index 0000000..0478543
--- /dev/null
+++ b/docs/functions.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/functions_enum.html b/docs/functions_enum.html
new file mode 100644
index 0000000..f2e5964
--- /dev/null
+++ b/docs/functions_enum.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/functions_func.html b/docs/functions_func.html
new file mode 100644
index 0000000..05fa33d
--- /dev/null
+++ b/docs/functions_func.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/functions_rela.html b/docs/functions_rela.html
new file mode 100644
index 0000000..de26b5e
--- /dev/null
+++ b/docs/functions_rela.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
+ 1.8.13
+
+
+
diff --git a/docs/graph_legend.html b/docs/graph_legend.html
new file mode 100644
index 0000000..b78c3c5
--- /dev/null
+++ b/docs/graph_legend.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
This page explains how to interpret the graphs that are generated by doxygen.
+Consider the following example:
This will result in the following graph:
+
+The boxes in the above graph have the following meaning:
+The arrows have the following meaning:
+
+ 1.8.13
+
+
+
diff --git a/docs/graph_legend.md5 b/docs/graph_legend.md5
new file mode 100644
index 0000000..a06ed05
--- /dev/null
+++ b/docs/graph_legend.md5
@@ -0,0 +1 @@
+387ff8eb65306fa251338d3c9bd7bfff
\ No newline at end of file
diff --git a/docs/graph_legend.png b/docs/graph_legend.png
new file mode 100644
index 0000000..81788d8
Binary files /dev/null and b/docs/graph_legend.png differ
diff --git a/docs/group__Config.html b/docs/group__Config.html
new file mode 100644
index 0000000..43f16fc
--- /dev/null
+++ b/docs/group__Config.html
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.1.0
+
+ |
+
+Functions | |
| +void | clutchlog::format (const std::string &format) |
| Set the template string. | |
| +std::string | clutchlog::format () const |
| Get the template string. | |
| +void | clutchlog::format_comment (const std::string &format) |
| Set the template string for dumps. | |
| +std::string | clutchlog::format_comment () const |
| Get the template string for dumps. | |
| +void | clutchlog::out (std::ostream &out) |
| Set the output stream on which to print. | |
| +std::ostream & | clutchlog::out () |
| Get the output stream on which to print. | |
| +void | clutchlog::threshold (level l) |
| Set the log level below which logs are not printed. | |
| +level | clutchlog::threshold () const |
| Get the log level below which logs are not printed. | |
| +void | clutchlog::file (std::string file) |
| Set the regular expression filtering the file location. | |
| +void | clutchlog::func (std::string func) |
| Set the regular expression filtering the function location. | |
| +void | clutchlog::line (std::string line) |
| Set the regular expression filtering the line location. | |
| +void | clutchlog::location (const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*") |
| Set the regular expressions filtering the location. | |
| template<class ... FMT> | |
| void | clutchlog::style (level stage, FMT... styles) |
| Set the style (color and typo) of the given log level. More... | |
| +void | clutchlog::style (level stage, fmt style) |
Set the style (color and typo) of the given log level, passing a fmt instance. | |
| +fmt | clutchlog::style (level stage) const |
| Get the configured fmt instance of the given log level. | |
| level | clutchlog::level_of (const std::string name) |
| Return the log level tag corresponding to the given pre-configured name. More... | |
+
|
+ +inline | +
Return the log level tag corresponding to the given pre-configured name.
+_level_word.
+
|
+ +inline | +
Set the style (color and typo) of the given log level.
+This version accept style arguments as if they were passed to clutchlog::fmt.
+ 1.8.13
+
+
+
diff --git a/docs/group__Details.html b/docs/group__Details.html
new file mode 100644
index 0000000..381ab75
--- /dev/null
+++ b/docs/group__Details.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.1.0
+
+ |
+
+Classes | |
| struct | clutchlog::scope_t |
+Functions | |
| + | clutchlog::clutchlog (clutchlog const &)=delete |
| +void | clutchlog::operator= (clutchlog const &)=delete |
| +scope_t | clutchlog::locate (const level &stage, const std::string &file, const std::string &func, const size_t line) const |
| Gather information on the current location of the call. | |
+Variables | |
| +const size_t | clutchlog::_strip_calls |
| +const std::map< level, std::string > | clutchlog::_level_word |
| +std::map< std::string, level > | clutchlog::_word_level |
| +std::map< level, fmt > | clutchlog::_level_fmt |
| +std::string | clutchlog::_format_log |
| +std::string | clutchlog::_format_dump |
| +std::ostream * | clutchlog::_out |
| +level | clutchlog::_stage |
| +std::regex | clutchlog::_in_file |
| +std::regex | clutchlog::_in_func |
| +std::regex | clutchlog::_in_line |
+ 1.8.13
+
+
+
diff --git a/docs/group__FMTConstructors.html b/docs/group__FMTConstructors.html
new file mode 100644
index 0000000..fcb7950
--- /dev/null
+++ b/docs/group__FMTConstructors.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.1.0
+
+ |
+
+Functions | |
| + | clutchlog::fmt::fmt (fg f, bg b=bg::none, typo s=typo::none) |
| + | clutchlog::fmt::fmt (fg f, typo s, bg b=bg::none) |
| + | clutchlog::fmt::fmt (bg b, fg f=fg::none, typo s=typo::none) |
| + | clutchlog::fmt::fmt (bg b, typo s, fg f=fg::none) |
| + | clutchlog::fmt::fmt (typo s, fg f=fg::none, bg b=bg::none) |
| + | clutchlog::fmt::fmt (typo s, bg b, fg f=fg::none) |
+ 1.8.13
+
+
+
diff --git a/docs/group__Formating.html b/docs/group__Formating.html
new file mode 100644
index 0000000..ab34612
--- /dev/null
+++ b/docs/group__Formating.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.1.0
+
+ |
+
+Classes | |
| class | clutchlog::fmt |
| Color and style formatter for ANSI terminal escape sequences. More... | |
+ 1.8.13
+
+
+
diff --git a/docs/group__LowAPI.html b/docs/group__LowAPI.html
new file mode 100644
index 0000000..ff06c56
--- /dev/null
+++ b/docs/group__LowAPI.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.1.0
+
+ |
+
+Functions | |
| std::string | clutchlog::replace (const std::string &form, const std::string &mark, const std::string &tag) const |
Replace mark by tag in form. More... | |
| +std::string | clutchlog::replace (const std::string &form, const std::string &mark, const size_t tag) const |
Replace mark by tag in form, converting tag to its string representation first. | |
| +std::string | clutchlog::format (std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const |
| Substitute all tags in the format string with the corresponding information and apply the style corresponding to the log level. | |
| +void | clutchlog::log (const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const |
| Print a log message IF the location matches the given one. | |
| +template<class In > | |
| void | clutchlog::dump (const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const |
| Dump a serializable container after a comment line with log information. | |
+
|
+ +inline | +
Replace mark by tag in form.
+ 1.8.13
+
+
+
diff --git a/docs/group__UserAPI.html b/docs/group__UserAPI.html
new file mode 100644
index 0000000..2434144
--- /dev/null
+++ b/docs/group__UserAPI.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.1.0
+
+ |
+
+Enumerations | |
| enum | clutchlog::level { + critical =0, +error =1, +warning =2, +progress =3, + + note =4, +info =5, +debug =6, +xdebug =7 + + } |
| Available log levels. | |
+Functions | |
| static clutchlog & | clutchlog::logger () |
| Get the logger instance. More... | |
+
|
+ +inlinestatic | +
Get the logger instance.
+
+ 1.8.13
+
+
+
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..59e6f9d
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+|
+ clutchlog
+ 0.5.0
+
+ |
+
Clutchlog is a logging system which targets versatile debugging. It allows to (de)clutch messages for a given: log level, source code location or call stack depth.
+Clutchlog allows to select which log messages will be displayed, based on their locations:
+Additionally, Clutchlog will do its best to allow the compiler to optimize out calls, for instance debug messages in "Release" builds.
+Adding a message is a simple as calling a macro (which is declutched in Debug build type, when NDEBUG is not defined):
To configure the display, you indicate the three types of locations, for example in your main function:
For more detailled examples, see the "API documentation" section below and the tests directory.
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.
+Clutchlog, however, targets the debugging of a (typically single-run) program. While you develop your software, it's common practice to output several detailled informations on the internal states around the feature you are currently programming. However, once the feature is up and running, those detailled informations are only useful if you encounter a bug traversing this specific part.
+While tracing a bug, it is tedious to uncomment old debugging code (and go on the build-test cycle) or to set up a full debugger session which displays all appropriate data (with ad-hoc fancy hooks).
+To solve this problem, Clutchlog allows to disengage your debug log messages in various parts of the program, allowing for the fast tracking of a bug across the execution.
+The main entrypoint is the CLUTCHLOG macro, which takes the desired log level and message. The message can be anything which can be output in an ostringstream.
There is also a macro to dump the content of an iterable within a separate file: CLUTCHDUMP. This function takes care of incrementing a numeric suffix in the file name, if an existing file with this name exists.
Note that if you pass a file name without the {n} tag, the file will be overwritten as is.
To configure the global behaviour of the logger, you must first get a reference on its (singleton) instance:
One can configure the location(s) at which messages should actually be logged:
Current levels are defined in an enumeration as clutchlog::level:
File, function and line filters are indicated using (ECMAScript) regular expressions:
A shortcut function can be used to filter all at once:
Strings may be used to set up the threshold, using level_of:
Note that the case of the log levels strings matters (see below).
+The output stream can be configured using the out method:
The format of the messages can be defined with the format method, passing a string with standardized tags surrounded by {}:
Available tags are:
+{msg}: the logged message,{name}: the name of the current binary,{level}: the current log level (i.e. Critical, Error, Warning, Progress, Note, Info, Debug or XDebug),{level_letter}: the first letter of the current log level,{file}: the current file (absolute path),{func}: the current function,{line}: the current line number,{depth}: the current depth of the call stack,{depth_marks}: as many chevrons > as there is calls in the stack.The default log format is "[{name}] {level_letter}:{depth_marks} {msg}\t\t\t\t\t{func} @ {file}:{line}\n", it can be overriden at compile time by defining the CLUTCHLOG_DEFAULT_FORMAT macro.
The default format of the comment added with the dump macro is "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}". It can be edited with the format_comment method. If it is set to an empty string, then no comment line is added. The default can be modified at compile time with CLUTCHDUMP_DEFAULT_FORMAT. By default, the separator between items in the container is a new line. To change this behaviour, you can change CLUTCHDUMP_DEFAULT_SEP or call the low-level dump method.
The mark used with the {depth_marks} tag can be configured with the depth_mark method, and its default with the CLUTCHLOG_DEFAULT_DEPTH_MARK macro:
The output can be colored differently depending on the log level.
Or, if you want to declare some semantics beforehand:
Using the clutchlog::fmt class, you can style:
clutchlog::fmt::fg,clutchlog::fmt::bg,clutchlog::fmt::typo.Any of the three arguments may be passed, in any order, if an argument is omitted, it defaults to no color/style.
+Available colors are:
+Available typographies:
+You may use styling within the format message template itself, to add even more colors:
Note: messages at the "critical", "error" and "warning" log levels are colored by default. You may want to set their style to none if you want to stay in control of inserted colors in the format template.
By default, clutchlog is always enabled if the NDEBUG preprocessor variable is not defined (this variable is set by CMake in build types that differs from Debug).
You can however force clutchlog to be enabled in any build type by setting the WITH_CLUTCHLOG preprocessor variable.
When the NDEBUG preprocessor variable is set (e.g. in Release build), clutchlog will do its best to allow the compiler to optimize out any calls for log levels which are under or equal to progress.
You can change this behavior at compile time by setting the CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG preprocessor variable to the desired maximum log level, for example:
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.
+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.
+All configuration setters have a getters counterpart, with the same name but taking no parameter, for example:
To control more precisely the logging, one can use the low-level log method:
A helper macro can helps to fill in the location with the actual one, as seen by the compiler:
A similar dump method exists:
Log levels use a classical semantics for a human skilled in the art, in decreasing order of importance:
+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).
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: execinfo.h, stdlib.h and libgen.h (so far, tested with Linux).
Some colors/styles may not be supported by some exotic terminal emulators.
+Clutchlog needs C++-17 with the filesystem feature. You may need to indicate -std=c++17 -lstdc++fs to your compiler.
To use clutchlog, just include its header in your code and either ensure that the NDEBUG preprocessor variable is not set, either define the WITH_CLUTCHLOG preprocessor variable.
If you're using CMake (or another modern build system), it will unset NDEBUG —and thus enable clutchlog— only for the "Debug" build type, which is usually what you want if you use clutchlog, anyway.
To build and run the tests, just use a classical CMake workflow:
There's a script which tests all the build types combinations: ./build_all.sh.
+ 1.8.13
+
+
+
diff --git a/docs/jquery.js b/docs/jquery.js
new file mode 100644
index 0000000..f5343ed
--- /dev/null
+++ b/docs/jquery.js
@@ -0,0 +1,87 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4| t |