diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a68f26..90fce70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.10 FATAL_ERROR) project("clutchlog" - VERSION 0.17 + VERSION 0.12 DESCRIPTION "A logging system which targets versatile debugging") enable_language(CXX) # C++ @@ -35,7 +35,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) option(WITH_CLUTCHLOG "Define WITH_CLUTCHLOG, whatever the build type." OFF) if(WITH_CLUTCHLOG) - add_compile_definitions(WITH_CLUTCHLOG) + add_definitions(-DWITH_CLUTCHLOG) endif() # Do not build documentation by default. diff --git a/README.md b/README.md index d94ada6..8bc1ab1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -Clutchlog — versatile (de)clutchable spatial logging -==================================================== +Clutchlog — versatile (de)clutchable logging +============================================ -**Clutchlog is a *spatial* logging system that targets versatile *debugging*.** -**It allows to (de)clutch messages for a given: log level, source code location or call stack depth.** +***Clutchlog is a logging system that targets versatile debugging.*** +***It allows to (de)clutch messages for a given: log level, source code location or call stack depth.*** - [Project page on Github](https://github.com/nojhan/clutchlog) - [Documentation](https://nojhan.github.io/clutchlog/) @@ -34,7 +34,7 @@ for instance debug messages in "Release" builds. Additional features: - **Templated log format**, to easily design your own format. -- **Powerful Styling**. Clutchlog comes with many options to color its output, for example by using colors with a semantic meaning, so that visually parse the logs is easy. +- **Colored log**. By default only important ones are colored (critical and error in red, warning in magenta). - **Macro to dump the content of a container in a file** with automatic naming (yes, it is useful for fast debugging). - **Generic clutching wrapper**, to wrap any function call. Useful to (de)clutch *asserts* for example. @@ -56,14 +56,6 @@ To configure the display, you indicate the three types of locations, for example log.func("(mul|add|sub|div)"); // Will match "multiply", for instance. ``` -Example of a real-life log session (as seen in the [frictionlesser](https://github.com/jdreo/frictionlesser) software): - -![A log screen capture with full details, showing colored messages and location.](https://raw.githubusercontent.com/nojhan/clutchlog/master/demo.png) - -Demo showing fancy styling: - -![A log screen capture showing fancy coloring of text lines.](https://raw.githubusercontent.com/nojhan/clutchlog/master/demo-extra.png) - For more detailled examples, see the "Usage" sections below and the `tests` directory. @@ -196,19 +188,15 @@ Available tags are: - `{msg}`: the logged message, - `{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, -- `{level_short}`: the current log level, printed in only four letters, -- `{file}`: the current file name, +- `{file}`: the current file (absolute path), - `{func}`: the current function, - `{line}`: the current line number, -- `{level_fmt}`: the style of the current level (i.e. configured with `clutchlog::style`), -- `{filehash_fmt}`: a style for file names, which is value-dependant (see `clutchlog::filehash_styles`), -- `{funchash_fmt}`: a style for function names, which is value-dependant (see `clutchlog::funchash_styles`). +- `{level_fmt}`: the format of the current level (i.e. configured with `clutchlog::style`). Some tags are only available on POSIX operating systems as of now: - `{name}`: the name of the current binary, - `{depth}`: the current depth of the call stack, - `{depth_marks}`: as many chevrons `>` as there is calls in the stack, -- `{depth_fmt}`: a style depending on the current depth value (see `clutchlog::depth_styles`), - `{hfill}`: Inserts a sequence of characters that will stretch to fill the space available in the current terminal, between the rightmost and leftmost part of the log message. @@ -223,17 +211,15 @@ clutchlog will not put the location-related tags in the message formats (i.e. `{name}`, `{func}`, and `{line}`) when not in Debug builds. -Output Styling --------------- +Output style +------------ -Output lines can be styled differently depending on their content. - -For example, output lines can be colored differently depending on the log level. +Output lines can be colored differently depending on the log level. ```cpp // Print error messages in bold red: -log.style(level::error, // First, the log level. - fmt::fg::red, // Then the styles, in any order... - fmt::typo::bold); +log.style(clutchlog::level::error, // First, the log level. + clutchlog::fmt::fg::red, // Then the styles, in any order... + clutchlog::fmt::typo::bold); ``` Or, if you want to declare some semantics beforehand: @@ -241,33 +227,40 @@ Or, if you want to declare some semantics beforehand: // Print warning messages in bold magenta: using fmt = clutchlog::fmt; fmt warn(fmt::fg::magenta, fmt::typo::bold); -log.style(level::warning, warn); +log.style(clutchlog::level::warning, warn); ``` Note: this inserts a style marker at the very beginning of the line. If you add other styles later on the line, they will take precedence. -Colors can be specified in several different ways. -The ANSI color mode will be automatically detected, -depending on the types of arguments passed to styling functions: -- named tags from `clutchlog::fmt::fg` or `clutchlog::fmt::bg` will encode a 16-colors mode, -- integers will encode a 256-colors mode, -- numeric triplets or web hex strings will encode a 16 million ("true") colors mode, -- `clutchlog::fg::none` and `clutchlog::bg::none` can be passed in all modes. +Using the `clutchlog::fmt` class, you can style: -For example, all the following lines encode -a bright red foreground for the critical level -(see the "Colors" section below): -```cpp - log.style(level:critical, - fmt::fg::red); // 16-colors mode. - log.style(level:critical, - 255); // 256-colors mode. - log.style(level:critical, - 255,0,0); // 16M-colors mode. - log.style(level:critical, - "#ff0000"); // 16M-colors mode again. -``` +- the foreground color, passing a `clutchlog::fmt::fg`, +- the background color, passing a `clutchlog::fmt::bg`, +- some typographic style, passing a `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: + +- black, +- red, +- green, +- yellow, +- blue, +- magenta, +- cyan, +- white, +- none. + +Available typographies: + +- reset (remove any style), +- bold, +- underline, +- inverse, +- none. You may use styling within the format message template itself, to add even more colors: ```cpp @@ -286,137 +279,13 @@ You may want to set their style to `none` if you want to stay in control of inse The horizontal filling line (the `{hfill}` tag) can be configured separately with `clutchlog::hfill_style`, for example: ```cpp - log.hfill_style(fmt::fg::black); + log.hfill_style(clutchlog::fmt::fg::black); ``` Note: this will actually reset any styling after the hfill, disabling any style you would have set for the whole message using `clutchlog::format` for the remaining of the message. -### Typographic Style - -Available typographies: - -- reset (remove any style), -- bold, -- underline, -- inverse, -- none. - -Typographic styles are always passed with the named tag -(see `clutchlog::fmt::typo`), whatever the color mode. - - -### Colors - -#### 16-colors mode - -Using the `clutchlog::fmt` class, you can style: - -- the foreground color, passing a `clutchlog::fmt::fg`, -- the background color, passing a `clutchlog::fmt::bg`. - -In 16-colors mode, any of the arguments may be passed, in any order, -if an argument is omitted, it defaults to no color/style. - -Available colors are: - -- black, -- red, -- green, -- yellow, -- blue, -- magenta, -- cyan, -- white, -- bright_black, -- bright_red, -- bright_green, -- bright_yellow, -- bright_blue, -- bright_magenta, -- bright_cyan, -- bright_white, -- none. - -Note: some terminals allow the user to configure the actual encoding of -those colors. You may thus notice some difference with the expected rendering -of the same colors encoded in the other modes. Use the other color modes if you -want to fully control the actual color rendering. - - -#### 256-colors mode - -For 256-colors mode, colors are expected to be passed as integers in [-1,255] -or the `fg::none` and `bg::none` tags. - -In 256-colors mode, if you want to only encode the background color, -you cannot just omit the foreground color, -you have to bass a `fg::none` tag as first argument. - -```cpp -log.style(level::info, fg::none, 52); // No color over dark red. -log.style(level::info, fg::none, 52, typo::bold); // No color over bold dark red. -``` - - -#### 16 million colors mode (RGB) - -For 16M-colors mode, colors can be encoded as: -- three integer arguments, -- a "web color" hexadecimal triplet string, starting with a leading number sign (e.g. "#0055ff"). -- the `fg::none` and `bg::none` tags. - -In 16M-colors mode, if you want to only encode the background color, -you cannot just omit the foreground color, -you have to pass a `fg::none` tag as first argument. - -```cpp -log.style(level::info, fg::none, 100,0,0); // No color over dark red. -log.style(level::info, fg::none, 100,0,0, typo::bold); // No color over bold dark red. -``` - - -### Value-dependant Format Tags - -Some tags can be used to change the style of (part of) the output line, - -*depending on its content*. -The `{filehash_fmt}` and `{funchash_fmt}` will introduce a styling sequence -which depends on the current file name, and function name respectively. -The chosen style is chosen at random among the candidate ones, -but will always be the same for each value. - -The set of candidate styles can be configured with `clutchlog::filehash_styles` -and `clutchlog::funchash_styles`, which both take a vector of `clutchlog::fmt` -objects as argument: -```cpp -// Either one or the other color for filenames: -log.filehash_styles( { fmt(fg::red), fmt(fg::yellow) } ); -// This would fix the function name style to a single one: -log.funchash_styles( { fmt(typo::bold) } ); -// Works with any `fmt` constructor -// (here, shades of blues in 256-colors mode): -log.funchash_styles( { fmt(33), fmt(27), fmt(39), fmt(45) } ); -``` - -The same idea applies to `{depth_fmt}`. -However, if `clutchlog::depth_styles` is configured, -then the styles are chosen *in order*. -That is, a depth of 1 would lead to the first style being chosen. -If the current depth of the stack is larger than the number of configured -styles, then the last one is used. -For example: -```cpp -// Increasingly darker depth level colors (using the 256-colors mode). -log.depth_styles({ fmt(255), fmt(250), fmt(245), fmt(240), fmt(235) }); -``` - -If `clutchlog::depth_styles` is set, the `{depth_marks}` template tag will render -with each mark having each own style corresponding to its depth. -Note: a depth of zero showing no mark, the first style in the list is never applied to marks. - - Advanced Usage ============== @@ -480,32 +349,6 @@ log.strip_calls(CLUTCHLOG_STRIP_CALLS); // Defaults to 5. ``` -### Filename - -By default, the `{file}` template tag is rendered as the absolute path -(which is usualy handy if your terminal detects paths -and allows to run a command on click). - -You can change this behavior to display shorter names, using `clutchlog::filename`, -and passing one of the following the shortening method: -- `clutchlog::filename::base`: the file name itself, -- `clutchlog::filename::dir`: the name of the single last directory containing the file, -- `clutchlog::filename::dirbase`: the last directory and the file names, -- `clutchlog::filename::stem`: the file name without its extension, -- `clutchlog::filename::dirstem`: the last directory and the file without extension. -- `clutchlog::filename::path`: the absolute path (the default). - -Example: -```cpp -log.filename(clutchlog::filename::path) // /home/nojhan/code/clutchlog/tests/t-filename.cpp -log.filename(clutchlog::filename::base) // t-filename.cpp -log.filename(clutchlog::filename::dir) // tests -log.filename(clutchlog::filename::dirbase) // tests/t-filename.cpp -log.filename(clutchlog::filename::stem) // t-filename -log.filename(clutchlog::filename::dirstem) // tests/t-filename -``` - - Disabled calls -------------- @@ -592,23 +435,6 @@ CLUTCHCODE(info, ``` -Manually Increase Stack Depth ------------------------------ - -You may want to manually increase the stack depth for a given logging call, -for instance to subdivise a single function in sections. -To do so, you can use the `CLUTCHLOGD` macro, which take an additional argument, -in the form of the number of additional (fake) stack depths you want: -```cpp -CLUTCHLOG( debug, "Call"); // Regular macro. -CLUTCHLOGD(debug, "Sub call", 1); // Adds an additional (fake) stack depth. -CLUTCHLOGD(debug, "Sub sub!", 2); // Adds two additional (fake) stack depths. -``` -That way, the depth will be rendered to the actual depth, plus the additional -depth delta. Note that the displayed function will stay the same. Any filtering -on the stack depth will take into account the fake depth and not the real one. - - Examples ======== @@ -665,36 +491,6 @@ And here are all the functions you may call to log something: ASSERT(x>0); ``` -Here what you would do to setup clutchlog with the default configuration -using 16M-colors mode: -```cpp - auto& log = clutchlog::logger(); - log.out(std::clog); - // Location filtering. - log.depth(std::numeric_limits::max()); - log.threshold("Error"); - log.file(".*"); - log.func(".*"); - log.line(".*"); - // Colors of the 3 firsts levels. - log.style(clutchlog::level::critical, clutchlog::fmt( - "#ff0000", - clutchlog::fmt::typo::underline); - log.style(clutchlog::level::error, clutchlog::fmt( - "#ff0000", - clutchlog::fmt::typo::bold); - log.style(clutchlog::level::warning, clutchlog::fmt( - "#ff00ff", - clutchlog::fmt::typo::bold); - // Assuming you are on a POSIX system. - log.format("[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n"); - log.depth_mark(">"); - log.strip_calls(5); - log.hfill_char('.'); - log.hfill_max(300); - log.hfill_style(clutchlog::fmt::fg::none); -``` - Limitations =========== @@ -731,11 +527,6 @@ You can make portable code using something like: #endif ``` -If you use unicode characters in your template, the horizontal width will not be -computed properly, resulting in incorrectly right-aligned lines. -Solving this would require the use of third-party libraries, making portability -more difficult. - ### Dependencies @@ -791,21 +582,3 @@ ctest There's a script that tests all the build types combinations: `./build_all.sh`. - -Usage as a Git submodule -======================== - -If you are using Git and CMake, it is easy to include Clutchlog as a dependency. - -First, add Clutchlog as a submodule of your repository: -```sh -git submodule add git@github.com:nojhan/clutchlog.git external/ -git commit -m "Add clutchlog as a submodule dependency" -``` - -Then, in your `CMakeLists.txt` file, add: -```cmake -include_directories(external/clutchlog) -``` - -And that's it. diff --git a/banner.png b/banner.png deleted file mode 100644 index f06355e..0000000 Binary files a/banner.png and /dev/null differ diff --git a/banner.xcf b/banner.xcf deleted file mode 100644 index a20329d..0000000 Binary files a/banner.xcf and /dev/null differ diff --git a/clutchlog/clutchlog.h b/clutchlog/clutchlog.h index 9a2c57f..954a201 100644 --- a/clutchlog/clutchlog.h +++ b/clutchlog/clutchlog.h @@ -13,7 +13,6 @@ namespace fs = std::filesystem; #endif -#include #include #include #include @@ -32,7 +31,6 @@ #define CLUTCHLOG_HAVE_UNIX_SYSINFO 1 #else #define CLUTCHLOG_HAVE_UNIX_SYSINFO 0 - // #pragma message("[clutchlog] no POSIX SYSINFO header") #endif //! True if the system can handle the `hfill` feature. @@ -43,7 +41,6 @@ #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 1 #else #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 0 - // #pragma message("[clutchlog] no POSIX SYSIOCTL header") #endif @@ -54,12 +51,7 @@ #ifndef NDEBUG //! Actually enable clutchlog features. #define WITH_CLUTCHLOG - // #pragma message("[clutchlog] automatically enabled") - // #else - // #pragma message("[clutchlog] automatically disabled") #endif -// #else - // #pragma message("[clutchlog] manually enabled") #endif /********************************************************************** @@ -84,30 +76,21 @@ //! Handy shortcuts to location. #define CLUTCHLOC __FILE__, __FUNCTION__, __LINE__ -//! Log a message at the given level and with a given depth delta. -#ifndef NDEBUG - #define CLUTCHLOGD( LEVEL, WHAT, DEPTH_DELTA ) do { \ - auto& clutchlog__logger = clutchlog::logger(); \ - std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \ - clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC, DEPTH_DELTA); \ - } while(0) -#else // not Debug build. - #define CLUTCHLOGD( LEVEL, WHAT, DEPTH_DELTA ) do { \ - if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \ - auto& clutchlog__logger = clutchlog::logger(); \ - std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \ - clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC, DEPTH_DELTA); \ - } \ - } while(0) -#endif // NDEBUG - //! Log a message at the given level. #ifndef NDEBUG - #define CLUTCHLOG( LEVEL, WHAT ) \ - CLUTCHLOGD(LEVEL, WHAT, 0) + #define CLUTCHLOG( LEVEL, WHAT ) do { \ + auto& clutchlog__logger = clutchlog::logger(); \ + std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \ + clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC); \ + } while(0) #else // not Debug build. - #define CLUTCHLOG( LEVEL, WHAT ) \ - CLUTCHLOGD(LEVEL, WHAT, 0) + #define CLUTCHLOG( LEVEL, WHAT ) do { \ + if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \ + auto& clutchlog__logger = clutchlog::logger(); \ + std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \ + clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC); \ + } \ + } while(0) #endif // NDEBUG //! Dump the given container. @@ -174,11 +157,9 @@ #else // not WITH_CLUTCHLOG // Disabled macros can still be called in Release builds. #define CLUTCHLOG( LEVEL, WHAT ) do {/*nothing*/} while(0) - #define CLUTCHLOGD( LEVEL, WHAT, DEPTH_DELTA ) do {/*nothing*/} while(0) #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do {/*nothing*/} while(0) #define CLUTCHFUNC( LEVEL, FUNC, ... ) do {/*nothing*/} while(0) #define CLUTCHCODE( LEVEL, CODE ) do {/*nothing*/} while(0) - // #pragma message("[clutchlog] fully disabled") #endif // WITH_CLUTCHLOG /********************************************************************** @@ -321,93 +302,17 @@ class clutchlog //! Available log levels. enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7}; - //! Available filename rendering methods. - enum filename {path, base, dir, dirbase, stem, dirstem}; - /** @} */ /** @addtogroup Formating Formating tools * @{ */ /** Color and style formatter for ANSI terminal escape sequences. - * - * The formatter supports typographic "styles" and colors. - * Typographic styles are available as named tag in `fmt::typo`. - * - * The formatter supports the three ANSI modes, which are automatically selected depending the argument types: - * - 16 colors (using named tags), - * - 256 colors (using integers), - * - 16 millions ("true") colors (using RGB integer triplets or web hex strings). - * - * For 16-colors mode, colors are named tag in: - * - `fmt::fg` for foreground colors. - * - `fmt::bg` for background colors. - * - * @note The order in which you pass foreground, background and style does not matter in 16-colors mode. - * - * The following colors are available for both foregrounds (see `fmt::fg`) and backgrounds (see `fmt::bg`): - * - none, - * - black, - * - red, - * - green, - * - yellow, - * - blue, - * - magenta, - * - cyan, - * - white, - * - bright_black (i.e. grey), - * - bright_red, - * - bright_green, - * - bright_yellow, - * - bright_blue, - * - bright_magenta, - * - bright_cyan, - * - bright_white. - * - * @note Some terminal are configured to display colored text set in bold - * using the bright color counterpart. - * - * For 256-colors mode, colors are expected to be passed as integers in [-1,255] - * or the `fg::none` and `bg::none` tags. - * - * @note In 256-colors mode, if you want to only encode the background color, - * you cannot just omit the foreground color, - * you have to bass a `fg::none` tag as first argument. - * - * For 16M-colors mode, colors can be encoded as: - * - three integer arguments, - * - a "web color" hexadecimal triplet string, starting with a leading number sign (e.g. "#0055ff"). - * - the `fg::none` and `bg::none` tags. - * - * @note In 16M-colors mode, if you want to only encode the background color, - * you cannot just omit the foreground color, - * you have to bass a `fg::none` tag as first argument. * * @note All styles may not be supported by a given terminal/operating system. */ class fmt { public: - //! ANSI code configuring the available number of colors. - enum class ansi { - //! 16 colors mode. - colors_16 = -1, // Not supposed to be casted. - //! 256 colors mode. - colors_256 = 5, // Casted as short in color::operator<<. - //! 16 millions ("true") colors mode. - colors_16M = 2 // Casted as short in color::operator<< - } /** Current ANSI color mode. */ mode; - - //! Typographic style codes. - enum class typo { - reset = 0, - bold = 1, - underline = 4, - inverse = 7, - none = -1 - } /** Typographic style. */ style; - - /** @addtogroup colors16 Colors management in 16 colors mode (4-bits ANSI). - * @{ */ //! Foreground color codes. enum class fg { black = 30, @@ -418,16 +323,8 @@ class clutchlog magenta = 35, cyan = 36, white = 37, - bright_black = 90, - bright_red = 91, - bright_green = 92, - bright_yellow = 93, - bright_blue = 94, - bright_magenta = 95, - bright_cyan = 96, - bright_white = 97, - none = -1 - } /** Foreground color. */ fore; + none + } /** Foreground color */ fore; //! Background color codes. enum class bg { @@ -439,352 +336,48 @@ class clutchlog magenta = 45, cyan = 46, white = 47, - bright_black = 100, - bright_red = 101, - bright_green = 102, - bright_yellow = 103, - bright_blue = 104, - bright_magenta = 105, - bright_cyan = 106, - bright_white = 107, - none = -1 - } /** Background color. */ back; + none + } /** Background color */ back; - protected: - //! Output stream operator for a 3-tuple of 16-colors mode tags. - friend std::ostream& operator<<(std::ostream& os, const std::tuple& fbs) - { - auto [f,b,s] = fbs; - std::vector codes; codes.reserve(3); - if(f != fg::none) { codes.push_back(static_cast(f));} - if(b != bg::none) { codes.push_back(static_cast(b));} - if(s != typo::none) { codes.push_back(static_cast(s));} - if(codes.size() == 0) { - return os; + //! Typographic style codes. + enum class typo { + reset = 0, + bold = 1, + underline = 4, + inverse = 7, + none + } /** Typographic style*/ style; - } else { - os << "\033["; - os << codes[0]; - for(size_t i=1; i < codes.size(); ++i) { - os << ";" << codes[i]; - } - os << "m"; - } - return os; - } + //! Empty constructor, only useful for a no-op formatter. + fmt() : fore(fg::none), back(bg::none), style(typo::none) {} - //! Output stream operator for a typo tag alone, in 16-colors mode. - friend std::ostream& operator<<(std::ostream& os, const typo& s) - { - if(s != typo::none) { - os << "\033[" << static_cast(s) << "m"; - } - return os; - } - - /** @} colors16 */ - - protected: - /** @addtogroup colors256_16M Internal colors management in 256 and 16M colors modes. + /** @name All combination of constructors with different parameters orders. * @{ */ - - /** Interface class for colors representation. */ - struct color { - ansi mode; // Not const to allow for the implicit copy assignemnt operator. - - //! Codes for representing foreground or background. - enum class ground { // idem. - fore = 38, - back = 48 - } /** Type of color (foreground or background). */ type; - - /** Constructor. - * - * @param a ANSI mode (i.e. number of colors). - * @param g Color type (i.e. foreground or background). - */ - color(ansi a, ground g) : mode(a), type(g) {} - - //! Should return true if the underying representation encodes an existing color. - virtual bool is_set() const = 0; - - //! Should print the underlying representation on the given stream. - virtual std::ostream& print_on( std::ostream& os) const = 0; - - //! Print the actually encoded escaped color sequence on the given stream. - friend std::ostream& operator<<(std::ostream& os, const color& c) - { - if(c.is_set()) { - os << "\033[" << static_cast(c.type) << ";" << static_cast(c.mode) << ";"; - c.print_on(os); - os << "m"; - } - return os; - } - }; - - // There is no color_16 because it would be the same as color_256, only with different indices, - // hence making it more complicated for the user to select the right constructor. - // Here, we just use enum for 16 colors, and indices for 256 colors. - - //! Abstract base class for 256 colors objects (8-bits ANSI). - struct color_256 : public color { - /** The encoded color index in 4-bits ANSI. - * - * "No color" is encoded as -1. */ - short index; - - /** Constructor - * - * @param t Foreground or background tag. */ - color_256(ground t) : color(ansi::colors_256, t), index(-1) {} - - /** Constructor - * - * @param t Foreground or background tag. - * @param i Color index (within [-1,255], -1 being "no color"). - */ - color_256(ground t, const short i) : color(ansi::colors_256, t), index(i) {assert(-1 <= i and i <= 255);} - - //! Returns true if the underying representation encodes an existing color. - bool is_set() const {return index > -1;} - - //! Print the color index on the given stream. - std::ostream& print_on( std::ostream& os) const - { - os << index; - return os; - } - }; - - //! Foreground in 256-colors mode. - struct fg_256 : public color_256 { - //! Empty constructor: no color. - fg_256() : color_256(ground::fore) {} - - /** Constructor. - * - * @param f Foreground color index (within [-1,255], -1 being "no color"). */ - fg_256(const short f) : color_256(ground::fore, f) {} - - /** Conversion constructor from 16-colors mode. - * - * @warning Only encodes "no color", whatever is passed. */ - fg_256(const fg&) : color_256(ground::fore, -1) {} - - } /** Current foreground in 256-colors mode. */ fore_256; - - //! Background in 256-colors mode. - struct bg_256 : public color_256 { - //! Empty constructor: no color. - bg_256() : color_256(ground::back) {} - - /** Constructor. - * - * @param b Background color index (within [-1,255], -1 being "no color"). */ - bg_256(const short b) : color_256(ground::back, b) {} - - /** Conversion constructor from 16-colors mode. - * - * @warning Only encodes "no color", whatever is passed. */ - bg_256(const bg&) : color_256(ground::back, -1) {} - - } /** Current background in 256-colors mode. */ back_256; - - //! Abstract base class for 16M colors objects (24-bits ANSI). - struct color_16M : public color { - /** The encoded RGB indices. - * - * "No color" is encoded as -1. */ - short red, green, blue; - - /** Constructor. - * - * @param t Foreground or background tag. */ - color_16M(ground t) : color(ansi::colors_16M, t), red(-1), green(-1), blue(-1) {} - - /** Numeric triplet constructor. - * - * @param t Foreground or background tag. - * @param r Red color component. - * @param g Green color component. - * @param b Blue color component. - */ - color_16M(ground t, short r, short g, short b) - : color(ansi::colors_16M, t), red(r), green(g), blue(b) {} - - /** Hex triplet string constructor. - * - * @note If the given string is ill-formed, it will silently encode a "no color". - * - * @param t Foreground or background tag. - * @param srgb A "web color" hexadecimal triplet of two characters, starting with a leading number sign (e.g. "#0055ff"). - */ - color_16M(ground t, const std::string& srgb) : color(ansi::colors_16M, t) - { - assert(srgb.size() == 7); - if(srgb.size() != 7) { - red = -1; - green = -1; - blue = -1; - } else { - char i = 0; - if(srgb.at(0) == '#') { - i = 1; - } - std::istringstream(srgb.substr(0+i,2)) >> std::hex >> red; - std::istringstream(srgb.substr(2+i,2)) >> std::hex >> green; - std::istringstream(srgb.substr(4+i,2)) >> std::hex >> blue; - } - assert(-1 <= red and red <= 255); - assert(-1 <= green and green <= 255); - assert(-1 <= blue and blue <= 255); - } - - //! Returns true if the underying representation encodes an existing color. - bool is_set() const {return red > -1 and green > -1 and blue > -1;} - - //! Print the color RGB triplet on the given stream. - std::ostream& print_on( std::ostream& os) const - { - os << red << ";" << green << ";" << blue; - return os; - } - }; - - //! Foreground in 256-colors mode. - struct fg_16M : public color_16M { - //! Empty constructor: no color. - fg_16M() : color_16M(ground::fore) {} - - /** Numeric triplet constructor. - * - * Parameters are expected to be in [0,255]. - * - * @param r Red color component. - * @param g Green color component. - * @param b Blue color component. - */ - fg_16M(short r, short g, short b) : color_16M(ground::fore, r,g,b) {} - - /** Hex triplet string constructor. - * - * @note If the given string is ill-formed, it will silently encode a "no color". - * - * @param srgb A "web color" hexadecimal triplet of two characters, starting with a leading number sign (e.g. "#0055ff"). - */ - fg_16M(const std::string& srgb) : color_16M(ground::fore, srgb) {} - - /** Conversion constructor from 16-colors mode. - * - * @warning Only encodes "no color", whatever is passed. */ - fg_16M(const fg&) : color_16M(ground::fore, -1,-1,-1) {} - - } /** Current foreground in 16M-colors mode. */ fore_16M; - - //! background in 256-colors mode. - struct bg_16M : public color_16M { - //! Empty constructor: no color. - bg_16M() : color_16M(ground::back) {} - - /** Numeric triplet constructor. - * - * Parameters are expected to be in [0,255]. - * - * @param r Red color component. - * @param g Green color component. - * @param b Blue color component. - */ - bg_16M(short r, short g, short b) : color_16M(ground::back, r,g,b) {} - - /** Hex triplet string constructor. - * - * @note If the given string is ill-formed, it will silently encode a "no color". - * - * @param srgb A "web color" hexadecimal triplet of two characters, starting with a leading number sign (e.g. "#0055ff"). - */ - bg_16M(const std::string& srgb) : color_16M(ground::back, srgb) {} - - /** Conversion constructor from 16-colors mode. - * - * @warning Only encodes "no color", whatever is passed. */ - bg_16M(const bg&) : color_16M(ground::back, -1,-1,-1) {} - - } /** Current background in 16M-colors mode. */ back_16M; - - /** @} colors256_16M */ - - public: - //! Empty constructor, only useful for a no-op formatter. - fmt() : mode(ansi::colors_16), style(typo::none), fore(fg::none), back(bg::none) {} - - /** @name All combination of 16-colors mode constructors with different parameters orders. - * @{ */ - explicit fmt( fg f, bg b = bg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - explicit fmt( fg f, typo s , bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - explicit fmt( bg b, fg f = fg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - explicit fmt( bg b, typo s , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - explicit fmt(typo s, fg f = fg::none, bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - explicit fmt(typo s, bg b , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - /** @} */ - - /** @name All combination of 256-colors mode constructors with different parameters orders. - * @{ */ - explicit fmt(const short f, const short b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(b) {} - explicit fmt(const short f, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(bg::none) {} - explicit fmt(fg, const short b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(fg::none), back_256(b) {} - explicit fmt(const short f, bg, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(bg::none) {} - /** @} */ - - /** @name All combination of 16M-colors mode constructors with different parameters orders. - * @{ */ - explicit fmt(const short fr, const short fg, const short fb, - const short gr, const short gg, const short gb, - typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(gr,gg,gb) {} - explicit fmt(fg, - const short gr, const short gg, const short gb, - typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(gr,gg,gb) {} - explicit fmt(const short fr, const short fg, const short fb, - bg, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {} - explicit fmt(const short fr, const short fg, const short fb, - typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {} - - explicit fmt(const std::string& f, const std::string& b, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(b) {} - explicit fmt(fg, const std::string& b, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(b) {} - explicit fmt(const std::string& f, bg, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {} - explicit fmt(const std::string& f, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {} + fmt( fg f, bg b = bg::none, typo s = typo::none) : fore(f), back(b), style(s) {} + fmt( fg f, typo s , bg b = bg::none) : fore(f), back(b), style(s) {} + fmt( bg b, fg f = fg::none, typo s = typo::none) : fore(f), back(b), style(s) {} + fmt( bg b, typo s , fg f = fg::none) : fore(f), back(b), style(s) {} + fmt(typo s, fg f = fg::none, bg b = bg::none) : fore(f), back(b), style(s) {} + fmt(typo s, bg b , fg f = fg::none) : fore(f), back(b), style(s) {} /** @} */ protected: - //! Print the currently encoded format escape code on the given output stream. std::ostream& print_on( std::ostream& os) const { - if(mode == ansi::colors_16) { - // Print all in a single escape. - os << std::make_tuple(fore,back,style); + std::vector codes; codes.reserve(3); + if(this->fore != fg::none) { codes.push_back(static_cast(this->fore ));} + if(this->back != bg::none) { codes.push_back(static_cast(this->back ));} + if(this->style != typo::none) { codes.push_back(static_cast(this->style));} + if(codes.size() == 0) {return os;} - } else { - // 256 or 16M: always print separated escapes for foreground/background. - if(mode == ansi::colors_256) { - os << fore_256; - os << back_256; - - } else if(mode == ansi::colors_16M) { - os << fore_16M; - os << back_16M; - } - // In any case, print the style separately. - os << style; + os << "\033["; + assert(codes.size() > 0); + os << codes[0]; + for(size_t i=1; i < codes.size(); ++i) { + os << ";" << codes[i]; } + os << "m"; return os; } @@ -833,16 +426,6 @@ class clutchlog this->print_on(os); return os.str(); } - - static fmt hash( const std::string& str, const std::vector domain = {}) - { - size_t h = std::hash{}(str); - if(domain.size() == 0) { - return fmt(static_cast(h % 256)); - } else { - return domain[h % domain.size()]; - } - } }; // fmt class /** @} */ @@ -868,16 +451,6 @@ class clutchlog {level::debug ,"Debug"}, {level::xdebug ,"XDebug"} }), - _level_short({ - {level::critical, "Crit"}, - {level::error , "Erro"}, - {level::warning , "Warn"}, - {level::progress, "Prog"}, - {level::note , "Note"}, - {level::info , "Info"}, - {level::debug , "Dbug"}, - {level::xdebug , "XDbg"} - }), _level_fmt({ {level::critical,fmt(fmt::fg::red, fmt::typo::underline)}, {level::error ,fmt(fmt::fg::red, fmt::typo::bold)}, @@ -904,12 +477,7 @@ class clutchlog _stage(level::error), _in_file(".*"), _in_func(".*"), - _in_line(".*"), - // Empty vectors by default: - // _filehash_fmts - // _funchash_fmts - // _depth_fmts - _filename(filename::path) + _in_line(".*") { // Reverse the level->word map into a word->level map. for(auto& lw : _level_word) { @@ -929,8 +497,6 @@ class clutchlog const std::map _level_word; /** Dictionary of level string to their identifier. */ std::map _word_level; - /** dictionary of level identifier to their 4-letters representation. */ - std::map _level_short; /** Dictionary of level identifier to their format. */ std::map _level_fmt; /** Current format of the standard output. */ @@ -964,26 +530,16 @@ class clutchlog /** Current line location filter. */ std::regex _in_line; - /** List of candidate format objects for value-dependant file name styling. */ - std::vector _filehash_fmts; - /** List of candidate format objects for value-dependant function name styling. */ - std::vector _funchash_fmts; - #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 /** Maximum buffer size for backtrace message. */ static const size_t _max_buffer = 4096; - /** Ordered list of format objects for value-dependant depth styling. */ - std::vector _depth_fmts; #endif #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL /** Current terminal size (for right-alignment). */ size_t _nb_columns; #endif - - /** Filename rendering method. */ - filename _filename; - /** @} Internal details */ + /** @}*/ public: @@ -1007,9 +563,7 @@ class clutchlog #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 //! Set the stack depth above which logs are not printed. - void depth(size_t d) { - _depth = std::min(d, std::numeric_limits::max() - _strip_calls); - } + void depth(size_t d) {_depth = d;} //! Get the stack depth above which logs are not printed. size_t depth() const {return _depth;} @@ -1024,11 +578,11 @@ class clutchlog size_t strip_calls() const {return _strip_calls;} #endif #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1 - //! Set the character for the stretching `{hfill}` template tag marker. + //! Set the character for the stretching hfill marker. void hfill_mark(const char mark) {_hfill_char = mark;} - //! Get the character for the stretching `{hfill}` template tag marker. + //! Get the character for the stretching hfill marker. char hfill_mark() const {return _hfill_char;} - //! Set the style for the stretching `{hfill}` template tag marker, with a `fmt` object. + //! Set the style for the stretching hfill marker, with a `fmt` object. void hfill_style(fmt style) {_hfill_fmt = style;} /** Set the style for the stretching hfill marker. * @@ -1036,42 +590,17 @@ class clutchlog */ template void hfill_style(FMT... styles) { this->hfill_style(fmt(styles...)); } - //! Get the character for the stretching `{hfill}` template tag marker. + //! Get the character for the stretching hfill marker. fmt hfill_style() const {return _hfill_fmt;} - //! Set the maximum width for which to `{hfill}`. + //! Set the maximum width for which to hfill. */ void hfill_max(const size_t nmax) {_hfill_max = nmax;} - //! Get the maximum width for which to `{hfill}`. + //! Get the maximum width for which to hfill. */ size_t hfill_max() {return _hfill_max;} - //! Set the minimum width at which to `{hfill}`. + //! Set the minimum width at which to hfill. */ void hfill_min(const size_t nmin) {_hfill_min = nmin;} - //! Get the minimum width at which to `{hfill}`. + //! Get the minimum width at which to hfill. */ size_t hfill_min() {return _hfill_min;} #endif - /** Set the candidate styles for value-dependant file name formatting. - * - * Style will be chosen based on the hash value of the filename - * among the candidate ones. - * - * See the `{filehash_fmt}` template tag. - */ - void filehash_styles(std::vector styles) {_filehash_fmts = styles;} - /** Set the candidate styles for value-dependant function name formatting. - * - * Style will be chosen based on the hash value of the filename - * among the candidate ones. - * - * See the `{funchash_fmt}` template tag. - */ - void funchash_styles(std::vector styles) {_funchash_fmts = styles;} - /** Set the styles for value-dependant depth formatting. - * - * The given list should be ordered, styles will be applied - * for the corresponding depth level. If the actual depth is - * larger than the number of styles, the last one is used. - * - * See the `{depth_fmt}` template tag. - */ - void depth_styles(std::vector styles) {_depth_fmts = styles;} //! Set the log level (below which logs are not printed) with an identifier. void threshold(level l) {_stage = l;} @@ -1126,10 +655,7 @@ class clutchlog //! Get the configured fmt instance of the given log level. fmt style(level stage) const { return _level_fmt.at(stage); } - //! Sets the file naming scheme. */ - void filename(filename f) {_filename = f;} - - /** @} Configuration accessors */ + /** @} */ public: @@ -1305,80 +831,30 @@ class clutchlog ) const { row = replace(row, "\\{msg\\}", what); - - const std::filesystem::path filepath(file); - std::string filename; - std::filesystem::path::iterator ip = filepath.end(); - std::advance(ip, -2); - switch(_filename) { - case filename::base: - filename = filepath.filename().string(); - break; - case filename::dir: - filename = ip->string(); - break; - case filename::dirbase: - filename = (*ip / filepath.filename()).string(); - break; - case filename::stem: - filename = filepath.stem().string(); - break; - case filename::dirstem: - filename = (*ip / filepath.stem()).string(); - break; - case filename::path: - default: - filename = file; - break; - } - row = replace(row, "\\{file\\}", filename); - - + row = replace(row, "\\{file\\}", file); row = replace(row, "\\{func\\}", func); row = replace(row, "\\{line\\}", line); row = replace(row, "\\{level\\}", _level_word.at(stage)); std::string letter(1, _level_word.at(stage).at(0)); // char -> string row = replace(row, "\\{level_letter\\}", letter); - row = replace(row, "\\{level_short\\}", _level_short.at(stage)); #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 - size_t actual_depth = 0; - if( _strip_calls < depth) { - actual_depth = depth - _strip_calls; - } row = replace(row, "\\{name\\}", name); - row = replace(row, "\\{depth\\}", actual_depth); + row = replace(row, "\\{depth\\}", depth - _strip_calls); - if(_depth_fmts.size() == 0) { - row = replace(row, "\\{depth_fmt\\}", fmt(actual_depth % 256).str() ); - - std::ostringstream chevrons; - for(size_t i = 0; i < actual_depth; ++i) { - chevrons << _depth_mark; - } - row = replace(row, "\\{depth_marks\\}", chevrons.str()); - - } else { - row = replace(row, "\\{depth_fmt\\}", - _depth_fmts[std::min(actual_depth,_depth_fmts.size()-1)].str() ); - - std::ostringstream chevrons; - for(size_t i = 0; i < actual_depth; ++i) { - chevrons << _depth_fmts[std::min(i+1,_depth_fmts.size()-1)].str() - << _depth_mark; - } - row = replace(row, "\\{depth_marks\\}", chevrons.str()); + std::ostringstream chevrons; + for(size_t i = _strip_calls; i < depth; ++i) { + chevrons << _depth_mark; } + row = replace(row, "\\{depth_marks\\}", chevrons.str()); #endif row = replace(row, "\\{level_fmt\\}", _level_fmt.at(stage).str()); - row = replace(row, "\\{filehash_fmt\\}", fmt::hash(file, _filehash_fmts).str() ); - row = replace(row, "\\{funchash_fmt\\}", fmt::hash(func, _funchash_fmts).str() ); #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL // hfill is replaced last to allow for correct line width estimation. - const std::string raw_row = replace(row, "(\\x9B|\\x1B\\[)[0-?]*[ -\\/]*[@-~]", ""); + const std::string raw_row = replace(row, "\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]", ""); const std::string hfill_tag = "{hfill}"; const size_t hfill_pos = row.find(hfill_tag); const size_t raw_hfill_pos = raw_row.find(hfill_tag); @@ -1427,8 +903,7 @@ class clutchlog void log( const level& stage, const std::string& what, - const std::string& file, const std::string& func, const size_t line, - const size_t depth_delta = 0 + const std::string& file, const std::string& func, size_t line ) const { scope_t scope = locate(stage, file, func, line); @@ -1437,11 +912,12 @@ class clutchlog #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 *_out << format(_format_log, what, basename(getenv("_")), stage, file, func, - line, scope.depth + depth_delta ); + line, scope.depth ); #else *_out << format(_format_log, what, stage, file, func, line ); + #endif _out->flush(); } // if scopes.matches @@ -1452,7 +928,7 @@ class clutchlog void dump( const level& stage, const In container_begin, const In container_end, - const std::string& file, const std::string& func, const size_t line, + const std::string& file, const std::string& func, size_t line, const std::string& filename_template = "dump_{n}.dat", const std::string sep = dump_default_sep ) const @@ -1519,108 +995,25 @@ class clutchlog class clutchlog { public: - static clutchlog& logger() { - static clutchlog instance; - return instance; - } + static clutchlog& logger() {} enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7}; - enum filename {path, base, dir, dirbase, stem, dirstem}; class fmt { public: - enum class ansi { colors_16, colors_256, colors_16M} mode; - enum class typo { reset, bold, underline, inverse, none} style; - enum class fg { black, red, green, yellow, blue, magenta, cyan, white, bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white, none} fore; - enum class bg { black, red, green, yellow, blue, magenta, cyan, white, bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white, none } back; + enum class fg { black, red, green, yellow, blue, magenta, cyan, white, none } fore; + enum class bg { black, red, green, yellow, blue, magenta, cyan, white, none } back; + enum class typo { reset, bold, underline, inverse, none } style; + fmt() : fore(fg::none), back(bg::none), style(typo::none) {} + fmt( fg f, bg b = bg::none, typo s = typo::none) : fore(f), back(b), style(s) {} + fmt( fg f, typo s , bg b = bg::none) : fore(f), back(b), style(s) {} + fmt( bg b, fg f = fg::none, typo s = typo::none) : fore(f), back(b), style(s) {} + fmt( bg b, typo s , fg f = fg::none) : fore(f), back(b), style(s) {} + fmt(typo s, fg f = fg::none, bg b = bg::none) : fore(f), back(b), style(s) {} + fmt(typo s, bg b , fg f = fg::none) : fore(f), back(b), style(s) {} protected: - friend std::ostream& operator<<(std::ostream&, const std::tuple&) {} - friend std::ostream& operator<<(std::ostream&, const typo&) {} - protected: - struct color { - ansi mode; - enum class ground { fore, back } type; - color(ansi a, ground g) : mode(a), type(g) {} - virtual bool is_set() const = 0; - virtual std::ostream& print_on( std::ostream&) const = 0; - friend std::ostream& operator<<(std::ostream&, const color&) {} - }; - struct color_256 : public color { - short index; - color_256(ground t) : color(ansi::colors_256, t), index(-1) {} - color_256(ground t, const short i) : color(ansi::colors_256, t), index(i) {} - bool is_set() const {} - std::ostream& print_on( std::ostream&) const {} - }; - struct fg_256 : public color_256 { - fg_256() : color_256(ground::fore) {} - fg_256(const short f) : color_256(ground::fore, f) {} - fg_256(const fg&) : color_256(ground::fore, -1) {} - } fore_256; - struct bg_256 : public color_256 { - bg_256() : color_256(ground::back) {} - bg_256(const short b) : color_256(ground::back, b) {} - bg_256(const bg&) : color_256(ground::back, -1) {} - } back_256; - struct color_16M : public color { - short red, green, blue; - color_16M(ground t) : color(ansi::colors_16M, t), red(-1), green(-1), blue(-1) {} - color_16M(ground t, short r, short g, short b) : color(ansi::colors_16M, t), red(r), green(g), blue(b) {} - color_16M(ground t, const std::string&) : color(ansi::colors_16M, t) {} - bool is_set() const {return red > -1 and green > -1 and blue > -1;} - std::ostream& print_on( std::ostream&) const {} - }; - struct fg_16M : public color_16M { - fg_16M() : color_16M(ground::fore) {} - fg_16M(short r, short g, short b) : color_16M(ground::fore, r,g,b) {} - fg_16M(const std::string& srgb) : color_16M(ground::fore, srgb) {} - fg_16M(const fg&) : color_16M(ground::fore, -1,-1,-1) {} - } fore_16M; - struct bg_16M : public color_16M { - bg_16M() : color_16M(ground::back) {} - bg_16M(short r, short g, short b) : color_16M(ground::back, r,g,b) {} - bg_16M(const std::string& srgb) : color_16M(ground::back, srgb) {} - bg_16M(const bg&) : color_16M(ground::back, -1,-1,-1) {} - } back_16M; + std::ostream& print_on(std::ostream&) const {} public: - fmt() : mode(ansi::colors_16), style(typo::none), fore(fg::none), back(bg::none) {} - fmt( fg f, bg b = bg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - fmt( fg f, typo s , bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - fmt( bg b, fg f = fg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - fmt( bg b, typo s , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - fmt(typo s, fg f = fg::none, bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - fmt(typo s, bg b , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {} - fmt(fg_256 f, bg_256 b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(b) {} - fmt(fg_256 f, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(bg::none) {} - fmt(fg, bg_256 b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(fg::none), back_256(b) {} - fmt(const short fr, const short fg, const short fb, - const short gr, const short gg, const short gb, - typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(gr,gg,gb) {} - fmt(fg, - const short gr, const short gg, const short gb, - typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(gr,gg,gb) {} - fmt(const short fr, const short fg, const short fb, - bg, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {} - fmt(const short fr, const short fg, const short fb, - typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {} - - fmt(const std::string& f, const std::string& b, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(b) {} - fmt(fg, const std::string& b, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(b) {} - fmt(const std::string& f, bg, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {} - fmt(const std::string& f, typo s = typo::none) - : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {} - protected: - std::ostream& print_on( std::ostream&) const {} - public: - friend std::ostream& operator<<(std::ostream& os, const fmt&) { return os; } - std::string operator()( const std::string& msg) const { return msg; } - std::string str() const { return ""; } - static fmt hash( const std::string&, const std::vector) {} + friend std::ostream& operator<<(std::ostream&, const fmt&) {} + std::string operator()(const std::string&) const {} }; public: clutchlog(clutchlog const&) = delete; @@ -1638,42 +1031,39 @@ class clutchlog {} public: void format(const std::string&) {} - std::string format() const { return ""; } + std::string format() const {} void format_comment(const std::string&) {} - std::string format_comment() const { return ""; } + std::string format_comment() const {} void out(std::ostream&) {} std::ostream& out() {} #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 void depth(size_t) {} - size_t depth() const { return 0; } + size_t depth() const {} void depth_mark(const std::string) {} - std::string depth_mark() const { return ""; } + std::string depth_mark() const {} void strip_calls(const size_t) {} - size_t strip_calls() const { return 0; } + size_t strip_calls() const {} #endif #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1 void hfill_mark(const char) {} - char hfill_mark() const { return '\0'; } + char hfill_mark() const {} void hfill_fmt(fmt) {} - fmt hfill_fmt() const { return fmt(); } + fmt hfill_fmt() const {} void hfill_min(const size_t) {} - size_t hfill_min() { return 0; } + size_t hfill_min() {} void hfill_max(const size_t) {} - size_t hfill_max() { return 0; } + size_t hfill_max() {} #endif - void filehash_styles(std::vector ) {} - void funchash_styles(std::vector ) {} - void depth_styles(std::vector) {} void threshold(level) {} void threshold(const std::string&) {} - level threshold() const { return level::error; } + level threshold() const {} const std::map levels() const {} - level level_of(const std::string) { return level::error; } + level level_of(const std::string) {} void file(std::string) {} void func(std::string) {} @@ -1691,29 +1081,24 @@ class clutchlog template void style(level, FMT...) {} void style(level, fmt) {} - fmt style(level) const { return fmt(); } - void filename(filename) {} + fmt style(level) const {} public: std::string replace( - const std::string& form, + const std::string&, const std::string&, const std::string& ) const - { - return form; - } + {} std::string replace( - const std::string& form, + const std::string&, const std::string&, const size_t ) const - { - return form; - } + {} std::string format( - std::string row, + std::string, const std::string&, #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 const std::string&, @@ -1727,9 +1112,7 @@ class clutchlog const size_t #endif ) const - { - return row; - } + {} void log( const level&, diff --git a/demo-extra.png b/demo-extra.png deleted file mode 100644 index d33a152..0000000 Binary files a/demo-extra.png and /dev/null differ diff --git a/demo.png b/demo.png deleted file mode 100644 index 972bd59..0000000 Binary files a/demo.png and /dev/null differ diff --git a/docs/annotated.html b/docs/annotated.html index 6570179..6ccc27a 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class List @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,21 +84,15 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
-
Class List
+
+
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 123]
+
[detail level 12]
- - - - - - - - - + +
 CclutchlogThe single class which holds everything
 CfmtColor and style formatter for ANSI terminal escape sequences
 Cbg_16MBackground in 256-colors mode
 Cbg_256Background in 256-colors mode
 CcolorInterface class for colors representation
 Ccolor_16MAbstract base class for 16M colors objects (24-bits ANSI)
 Ccolor_256Abstract base class for 256 colors objects (8-bits ANSI)
 Cfg_16MForeground in 256-colors mode
 Cfg_256Foreground in 256-colors mode
 Cscope_tStructure holding a location matching
 CfmtColor and style formatter for ANSI terminal escape sequences
 Cscope_tStructure holding a location matching
@@ -106,7 +100,9 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable(); diff --git a/docs/classclutchlog-members.html b/docs/classclutchlog-members.html index 8ea54b8..e2ac279 100644 --- a/docs/classclutchlog-members.html +++ b/docs/classclutchlog-members.html @@ -2,8 +2,8 @@ - - + + clutchlog: Member List @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,89 +84,77 @@ $(document).ready(function(){initNavTree('classclutchlog.html',''); initResizabl
-
clutchlog Member List
+
+
clutchlog Member List

This is the complete list of members for clutchlog, including all inherited members.

- - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + +
_filehash_fmtsclutchlogprotected
_filenameclutchlogprotected
_format_dumpclutchlogprotected
_format_logclutchlogprotected
_funchash_fmtsclutchlogprotected
_in_fileclutchlogprotected
_in_funcclutchlogprotected
_in_lineclutchlogprotected
_level_fmtclutchlogprotected
_level_shortclutchlogprotected
_format_logclutchlogprotected
_in_fileclutchlogprotected
_in_funcclutchlogprotected
_in_lineclutchlogprotected
_level_fmtclutchlogprotected
_level_wordclutchlogprotected
_outclutchlogprotected
_outclutchlogprotected
_stageclutchlogprotected
_strip_callsclutchlogprotected
_strip_callsclutchlogprotected
_word_levelclutchlogprotected
base enum value (defined in clutchlog)clutchlog
clutchlog(clutchlog const &)=delete (defined in clutchlog)clutchlog
clutchlog() (defined in clutchlog)clutchloginlineprivate
critical enum value (defined in clutchlog)clutchlog
debug enum value (defined in clutchlog)clutchlog
default_depth_markclutchloginlineprotectedstatic
default_formatclutchloginlineprotectedstatic
default_hfill_charclutchloginlineprotectedstatic
default_hfill_maxclutchloginlineprotectedstatic
default_hfill_minclutchloginlineprotectedstatic
default_strip_callsclutchloginlineprotectedstatic
depth_styles(std::vector< fmt > styles)clutchloginline
dir enum value (defined in clutchlog)clutchlog
dirbase enum value (defined in clutchlog)clutchlog
dirstem 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, const size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=dump_default_sep) constclutchloginline
dump_default_formatclutchloginlineprotectedstatic
dump_default_sepclutchloginlineprotectedstatic
error enum value (defined in clutchlog)clutchlog
file(std::string file)clutchloginline
filehash_styles(std::vector< fmt > styles)clutchloginline
filename enum nameclutchlog
filename(filename f)clutchloginline
clutchlog(clutchlog const &)=delete (defined in clutchlog)clutchlog
clutchlog() (defined in clutchlog)clutchloginlineprivate
critical enum value (defined in clutchlog)clutchlog
debug enum value (defined in clutchlog)clutchlog
default_depth_markclutchloginlineprotectedstatic
default_formatclutchloginlineprotectedstatic
default_hfill_charclutchloginlineprotectedstatic
default_hfill_maxclutchloginlineprotectedstatic
default_hfill_minclutchloginlineprotectedstatic
default_strip_callsclutchloginlineprotectedstatic
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=dump_default_sep) constclutchloginline
dump_default_formatclutchloginlineprotectedstatic
dump_default_sepclutchloginlineprotectedstatic
error enum value (defined in clutchlog)clutchlog
file(std::string file)clutchloginline
format(const std::string &format)clutchloginline
format() constclutchloginline
format() constclutchloginline
format(std::string row, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
format_comment(const std::string &format)clutchloginline
format_comment(const std::string &format)clutchloginline
format_comment() constclutchloginline
func(std::string func)clutchloginline
funchash_styles(std::vector< fmt > styles)clutchloginline
info enum value (defined in clutchlog)clutchlog
level enum nameclutchlog
level_of(const std::string name)clutchloginline
levels() constclutchloginline
line(std::string line)clutchloginline
locate(const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")clutchloginline
log(const level &stage, const std::string &what, const std::string &file, const std::string &func, const size_t line, const size_t depth_delta=0) constclutchloginline
logger()clutchloginlinestatic
note enum value (defined in clutchlog)clutchlog
operator=(clutchlog const &)=delete (defined in clutchlog)clutchlog
out(std::ostream &out)clutchloginline
out()clutchloginline
path enum value (defined in clutchlog)clutchlog
progress enum value (defined in clutchlog)clutchlog
func(std::string func)clutchloginline
info enum value (defined in clutchlog)clutchlog
level enum nameclutchlog
level_of(const std::string name)clutchloginline
levels() constclutchloginline
line(std::string line)clutchloginline
locate(const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")clutchloginline
log(const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) constclutchloginline
logger()clutchloginlinestatic
note enum value (defined in clutchlog)clutchlog
operator=(clutchlog const &)=delete (defined in clutchlog)clutchlog
out(std::ostream &out)clutchloginline
out()clutchloginline
progress enum value (defined in clutchlog)clutchlog
replace(const std::string &form, const std::string &mark, const std::string &tag) constclutchloginline
replace(const std::string &form, const std::string &mark, const size_t tag) constclutchloginline
stem enum value (defined in clutchlog)clutchlog
style(level stage, FMT... styles)clutchloginline
style(level stage, fmt style)clutchloginline
style(level stage) constclutchloginline
threshold(level l)clutchloginline
threshold(const std::string &l)clutchloginline
threshold() constclutchloginline
warning enum value (defined in clutchlog)clutchlog
xdebug enum value (defined in clutchlog)clutchlog
replace(const std::string &form, const std::string &mark, const size_t tag) constclutchloginline
style(level stage, FMT... styles)clutchloginline
style(level stage, fmt style)clutchloginline
style(level stage) constclutchloginline
threshold(level l)clutchloginline
threshold(const std::string &l)clutchloginline
threshold() constclutchloginline
warning enum value (defined in clutchlog)clutchlog
xdebug enum value (defined in clutchlog)clutchlog
diff --git a/docs/classclutchlog.html b/docs/classclutchlog.html index a7e611c..4ea2c00 100644 --- a/docs/classclutchlog.html +++ b/docs/classclutchlog.html @@ -2,8 +2,8 @@ - - + + clutchlog: clutchlog Class Reference @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -87,7 +87,8 @@ $(document).ready(function(){initNavTree('classclutchlog.html',''); initResizabl -
clutchlog Class Reference
+
+
clutchlog Class Reference
@@ -96,131 +97,148 @@ $(document).ready(function(){initNavTree('classclutchlog.html',''); initResizabl

#include <clutchlog.h>

Detailed Description

-

The single class which holds everything.

-

This is a Singleton class.

+

The single class which holds everything.

+

This is a Singleton class.

-

Definition at line 188 of file clutchlog.h.

+

Definition at line 177 of file clutchlog.h.

- - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - + + + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + - - + + - - + + - - - - - - - + + + + + + +

+

Public Member Functions

Configuration accessors
void format (const std::string &format)
 Set the template string. More...
+void format (const std::string &format)
 Set the template string.
 
std::string format () const
 Get the template string. More...
+std::string format () const
 Get the template string.
 
void format_comment (const std::string &format)
 Set the template string for dumps. More...
+void format_comment (const std::string &format)
 Set the template string for dumps.
 
std::string format_comment () const
 Get the template string for dumps. More...
+std::string format_comment () const
 Get the template string for dumps.
 
void out (std::ostream &out)
 Set the output stream on which to print. More...
+void out (std::ostream &out)
 Set the output stream on which to print.
 
std::ostream & out ()
 Get the output stream on which to print. More...
 
void filehash_styles (std::vector< fmt > styles)
 Set the candidate styles for value-dependant file name formatting. More...
 
void funchash_styles (std::vector< fmt > styles)
 Set the candidate styles for value-dependant function name formatting. More...
 
void depth_styles (std::vector< fmt > styles)
 Set the styles for value-dependant depth formatting. More...
 
void threshold (level l)
 Set the log level (below which logs are not printed) with an identifier. More...
+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) with an identifier.
 
void threshold (const std::string &l)
 Set the log level (below which logs are not printed) with a string. More...
+void threshold (const std::string &l)
 Set the log level (below which logs are not printed) with a string.
 
level threshold () const
 Get the log level below which logs are not printed. More...
+level threshold () const
 Get the log level below which logs are not printed.
 
const std::map< std::string, level > & levels () const
 Get the map of available log levels string representations toward their identifier. *‍/. More...
 
+const std::map< std::string, level > & levels () const
 Get the map of available log levels string representations toward their identifier. *‍/.
 
level level_of (const std::string name)
 Return the log level tag corresponding to the given pre-configured name. More...
 
void file (std::string file)
 Set the regular expression filtering the file location. More...
+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. More...
+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. More...
+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. More...
+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. 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. More...
+fmt style (level stage) const
 Get the configured fmt instance of the given log level.
 
void filename (filename f)
 Sets the file naming scheme. *‍/. More...
 
Low-level API
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. More...
+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.
 
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. 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 row, 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. More...
+std::string format (std::string row, 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, const size_t line, const size_t depth_delta=0) const
 Print a log message IF the location matches the given one. More...
 
template<class In >
void dump (const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, const size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=dump_default_sep) const
 Dump a serializable container after a comment line with log information. More...
 
+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=dump_default_sep) const
 Dump a serializable container after a comment line with log information.
 
- - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +

+

Static Protected Attributes

Default configuration members
static std::string default_format = CLUTCHLOG_DEFAULT_FORMAT
 Default format of the messages. More...
+static std::string default_format = CLUTCHLOG_DEFAULT_FORMAT
 Default format of the messages.
 
static std::string dump_default_format = CLUTCHDUMP_DEFAULT_FORMAT
 Default format of the comment line in file dump. More...
+static std::string dump_default_format = CLUTCHDUMP_DEFAULT_FORMAT
 Default format of the comment line in file dump.
 
static std::string dump_default_sep = CLUTCHDUMP_DEFAULT_SEP
 Default item separator for dump. More...
+static std::string dump_default_sep = CLUTCHDUMP_DEFAULT_SEP
 Default item separator for dump.
 
static std::string default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK
 Default mark for stack depth. More...
+static std::string default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK
 Default mark for stack depth.
 
static unsigned int default_strip_calls = CLUTCHLOG_STRIP_CALLS
 Number of call stack levels to remove from depth display by default. More...
+static unsigned int default_strip_calls = CLUTCHLOG_STRIP_CALLS
 Number of call stack levels to remove from depth display by default.
 
static char default_hfill_char = CLUTCHLOG_DEFAULT_HFILL_MARK
 Default character used as a filling for right-align the right part of messages with "{hfill}". More...
+static char default_hfill_char = CLUTCHLOG_DEFAULT_HFILL_MARK
 Default character used as a filling for right-align the right part of messages with "{hfill}".
 
static size_t default_hfill_max = CLUTCHLOG_DEFAULT_HFILL_MAX
 Default maximum width (number of characters) for which to fill for right-aligning the right part of messages (using "{hfill}"). More...
+static size_t default_hfill_max = CLUTCHLOG_DEFAULT_HFILL_MAX
 Default maximum width (number of characters) for which to fill for right-aligning the right part of messages (using "{hfill}").
 
static size_t default_hfill_min = CLUTCHLOG_DEFAULT_HFILL_MIN
 Default minimum width (number of characters) at which to fill for right-aligning the right part of messages (using "{hfill}"). More...
+static size_t default_hfill_min = CLUTCHLOG_DEFAULT_HFILL_MIN
 Default minimum width (number of characters) at which to fill for right-aligning the right part of messages (using "{hfill}").
 
- @@ -229,123 +247,85 @@ Classes

+

Classes

class  fmt
 Color and style formatter for ANSI terminal escape sequences. More...
 Structure holding a location matching. More...
 
- - + - + - - - - - - + + +

High-level API

enum  level {
-  critical =0 -, error =1 -, warning =2 -, progress =3 -,
-  note =4 -, info =5 -, debug =6 -, xdebug =7 +

+High-level API

enum  level {
+  critical =0, +error =1, +warning =2, +progress =3, +
+  note =4, +info =5, +debug =6, +xdebug =7
}
 Available log levels. More...
 Available log levels.
 
enum  filename {
-  path -, base -, dir -, dirbase -,
-  stem -, dirstem -
- }
 Available filename rendering methods. More...
 
static clutchloglogger ()
 Get the logger instance. More...
 
static clutchloglogger ()
 Get the logger instance. More...
 
- - - + + + - - + + - - + + - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - +

Internal details

size_t _strip_calls
 Current number of call stack levels to remove from depth display. More...

+Internal details

+size_t _strip_calls
 Current number of call stack levels to remove from depth display.
 
const std::map< level, std::string > _level_word
 Dictionary of level identifier to their string representation. More...
+const std::map< level, std::string > _level_word
 Dictionary of level identifier to their string representation.
 
std::map< std::string, level_word_level
 Dictionary of level string to their identifier. More...
+std::map< std::string, level_word_level
 Dictionary of level string to their identifier.
 
std::map< level, std::string > _level_short
 dictionary of level identifier to their 4-letters representation. More...
 
std::map< level, fmt_level_fmt
 Dictionary of level identifier to their format. More...
+std::map< level, fmt_level_fmt
 Dictionary of level identifier to their format.
 
std::string _format_log
 Current format of the standard output. More...
+std::string _format_log
 Current format of the standard output.
 
std::string _format_dump
 Current format of the file output. More...
+std::string _format_dump
 Current format of the file output.
 
std::ostream * _out
 Standard output. More...
+std::ostream * _out
 Standard output.
 
level _stage
 Current log level. More...
+level _stage
 Current log level.
 
std::regex _in_file
 Current file location filter. More...
+std::regex _in_file
 Current file location filter.
 
std::regex _in_func
 Current function location filter. More...
+std::regex _in_func
 Current function location filter.
 
std::regex _in_line
 Current line location filter. More...
+std::regex _in_line
 Current line location filter.
 
std::vector< fmt_filehash_fmts
 List of candidate format objects for value-dependant file name styling. More...
 
std::vector< fmt_funchash_fmts
 List of candidate format objects for value-dependant function name styling. More...
 
filename _filename
 Filename rendering method. More...
 
+
 clutchlog (clutchlog const &)=delete
 
+
void operator= (clutchlog const &)=delete
 
 clutchlog ()
clutchlog ()
 
-

Constructor & Destructor Documentation

- -

◆ clutchlog()

- -
-
- - - - - -
- - - - - - - -
clutchlog::clutchlog ()
-
-inlineprivate
-
- -

Definition at line 850 of file clutchlog.h.

- -
-

Member Function Documentation

- -

◆ logger()

+ +

◆ logger()

@@ -354,7 +334,7 @@ void operator= ( - + @@ -368,436 +348,13 @@ void 

Format the given string with the currently encoded format.

-

Allow to use a formatter as a function:

clutchlog::fmt error(clutchlog::fmt::fg::red, clutchlog::fmt::typo::bold);
+

Allow to use a formatter as a function:

clutchlog::fmt error(clutchlog::fmt::fg::red, clutchlog::fmt::typo::bold);
std::cout << error("ERROR") << std::endl;
-
Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:380
Note
A formatter called this way WILL output a reset escape code at the end.
-

Definition at line 810 of file clutchlog.h.

+

Definition at line 411 of file clutchlog.h.

-

References print_on().

- -
-
- -

◆ str()

- -
-
-
static clutchlog & clutchlog::logger static clutchlog& clutchlog::logger ( ) operator= (

Get the logger instance.

-
-
void log(const level &stage, const std::string &what, const std::string &file, const std::string &func, const size_t line, const size_t depth_delta=0) const
Print a log message IF the location matches the given one.
Definition: clutchlog.h:1413
-
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:307
+ -

Definition at line 307 of file clutchlog.h.

+

Definition at line 296 of file clutchlog.h.

- -

◆ format() [1/3]

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::format (const std::string & format)
-
-inline
-
- -

Set the template string.

- -

Definition at line 986 of file clutchlog.h.

- -

References _format_log, and format().

- -

Referenced by format().

- -
-
- -

◆ format() [2/3]

- -
-
- - - - - -
- - - - - - - -
std::string clutchlog::format () const
-
-inline
-
- -

Get the template string.

- -

Definition at line 988 of file clutchlog.h.

- -

References _format_log.

- -

Referenced by dump(), format_comment(), and log().

- -
-
- -

◆ format_comment() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::format_comment (const std::string & format)
-
-inline
-
- -

Set the template string for dumps.

- -

Definition at line 991 of file clutchlog.h.

- -

References _format_dump, and format().

- -
-
- -

◆ format_comment() [2/2]

- -
-
- - - - - -
- - - - - - - -
std::string clutchlog::format_comment () const
-
-inline
-
- -

Get the template string for dumps.

- -

Definition at line 993 of file clutchlog.h.

- -

References _format_dump.

- -
-
- -

◆ out() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::out (std::ostream & out)
-
-inline
-
- -

Set the output stream on which to print.

- -

Definition at line 996 of file clutchlog.h.

- -

References _out, and out().

- -

Referenced by out().

- -
-
- -

◆ out() [2/2]

- -
-
- - - - - -
- - - - - - - -
std::ostream & clutchlog::out ()
-
-inline
-
- -

Get the output stream on which to print.

- -

Definition at line 998 of file clutchlog.h.

- -

References _out.

- -
-
- -

◆ filehash_styles()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::filehash_styles (std::vector< fmtstyles)
-
-inline
-
- -

Set the candidate styles for value-dependant file name formatting.

-

Style will be chosen based on the hash value of the filename among the candidate ones.

-

See the {filehash_fmt} template tag.

- -

Definition at line 1047 of file clutchlog.h.

- -

References _filehash_fmts.

- -
-
- -

◆ funchash_styles()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::funchash_styles (std::vector< fmtstyles)
-
-inline
-
- -

Set the candidate styles for value-dependant function name formatting.

-

Style will be chosen based on the hash value of the filename among the candidate ones.

-

See the {funchash_fmt} template tag.

- -

Definition at line 1055 of file clutchlog.h.

- -

References _funchash_fmts.

- -
-
- -

◆ depth_styles()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::depth_styles (std::vector< fmtstyles)
-
-inline
-
- -

Set the styles for value-dependant depth formatting.

-

The given list should be ordered, styles will be applied for the corresponding depth level. If the actual depth is larger than the number of styles, the last one is used.

-

See the {depth_fmt} template tag.

- -

Definition at line 1064 of file clutchlog.h.

- -
-
- -

◆ threshold() [1/3]

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::threshold (level l)
-
-inline
-
- -

Set the log level (below which logs are not printed) with an identifier.

- -

Definition at line 1067 of file clutchlog.h.

- -

References _stage.

- -
-
- -

◆ threshold() [2/3]

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::threshold (const std::string & l)
-
-inline
-
- -

Set the log level (below which logs are not printed) with a string.

- -

Definition at line 1069 of file clutchlog.h.

- -

References _stage, and level_of().

- -
-
- -

◆ threshold() [3/3]

- -
-
- - - - - -
- - - - - - - -
level clutchlog::threshold () const
-
-inline
-
- -

Get the log level below which logs are not printed.

- -

Definition at line 1071 of file clutchlog.h.

- -

References _stage.

- -
-
- -

◆ levels()

- -
-
- - - - - -
- - - - - - - -
const std::map< std::string, level > & clutchlog::levels () const
-
-inline
-
- -

Get the map of available log levels string representations toward their identifier. *‍/.

- -

Definition at line 1073 of file clutchlog.h.

- -

References _word_level.

- -
-
- +

◆ level_of()

@@ -824,166 +381,16 @@ void 
operator= (Return the log level tag corresponding to the given pre-configured name.

Note
This is case sensitive, see the pre-configured _level_word.
-

Definition at line 1079 of file clutchlog.h.

+

Definition at line 618 of file clutchlog.h.

-

References _word_level.

+

References _word_level.

-

Referenced by threshold().

+

Referenced by threshold().

- -

◆ file()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::file (std::string file)
-
-inline
-
- -

Set the regular expression filtering the file location.

- -

Definition at line 1090 of file clutchlog.h.

- -

References _in_file, and file().

- -

Referenced by dump(), file(), format(), locate(), location(), and log().

- -
-
- -

◆ func()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::func (std::string func)
-
-inline
-
- -

Set the regular expression filtering the function location.

- -

Definition at line 1092 of file clutchlog.h.

- -

References _in_func, and func().

- -

Referenced by dump(), format(), func(), locate(), location(), and log().

- -
-
- -

◆ line()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::line (std::string line)
-
-inline
-
- -

Set the regular expression filtering the line location.

- -

Definition at line 1094 of file clutchlog.h.

- -

References _in_line, and line().

- -

Referenced by dump(), format(), line(), locate(), location(), and log().

- -
-
- -

◆ location()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void clutchlog::location (const std::string & in_file,
const std::string & in_function = ".*",
const std::string & in_line = ".*" 
)
-
-inline
-
- -

Set the regular expressions filtering the location.

- -

Definition at line 1097 of file clutchlog.h.

- -

References file(), func(), and line().

- -
-
- -

◆ style() [1/3]

+ +

◆ style()

@@ -1019,182 +426,18 @@ template<class ... FMT>

Set the style (color and typo) of the given log level.

-

This version accept style arguments as if they were passed to clutchlog::fmt.

+

This version accept style arguments as if they were passed to clutchlog::fmt.

-

Definition at line 1113 of file clutchlog.h.

+

Definition at line 652 of file clutchlog.h.

-

References style().

+

References style().

-

Referenced by style().

+

Referenced by style().

- -

◆ style() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void clutchlog::style (level stage,
fmt style 
)
-
-inline
-
- -

Set the style (color and typo) of the given log level, passing a fmt instance.

- -

Definition at line 1115 of file clutchlog.h.

- -

References _level_fmt, and style().

- -

Referenced by style().

- -
-
- -

◆ style() [3/3]

- -
-
- - - - - -
- - - - - - - - -
fmt clutchlog::style (level stage) const
-
-inline
-
- -

Get the configured fmt instance of the given log level.

- -

Definition at line 1117 of file clutchlog.h.

- -

References _level_fmt.

- -
-
- -

◆ filename()

- -
-
- - - - - -
- - - - - - - - -
void clutchlog::filename (filename f)
-
-inline
-
- -

Sets the file naming scheme. *‍/.

- -

Definition at line 1120 of file clutchlog.h.

- -

References _filename.

- -
-
- -

◆ locate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
scope_t clutchlog::locate (const levelstage,
const std::string & file,
const std::string & func,
const size_t line 
) const
-
-inline
-
- -

Gather information on the current location of the call.

- -

Definition at line 1154 of file clutchlog.h.

- -

References _in_file, _in_func, _in_line, _stage, _strip_calls, file(), func(), line(), clutchlog::scope_t::matches, clutchlog::scope_t::stage, and clutchlog::scope_t::there.

- -

Referenced by dump(), and log().

- -
-
- -

◆ replace() [1/2]

+ +

◆ replace()

@@ -1234,938 +477,12 @@ template<class ... FMT>

Replace mark by tag in form.

-
log.replace("{greet} {world}", "\\{greet\\}", "hello");
+
log.replace("{greet} {world}", "\\{greet\\}", "hello");
// returns "hello {world}"
-

Definition at line 1205 of file clutchlog.h.

+

Definition at line 741 of file clutchlog.h.

-

Referenced by dump(), format(), and replace().

- -
-
- -

◆ replace() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
std::string clutchlog::replace (const std::string & form,
const std::string & mark,
const size_t tag 
) const
-
-inline
-
- -

Replace mark by tag in form, converting tag to its string representation first.

- -

Definition at line 1270 of file clutchlog.h.

- -

References replace().

- -
-
- -

◆ format() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
std::string clutchlog::format (std::string row,
const std::string & what,
const levelstage,
const std::string & file,
const std::string & func,
const size_t line 
) const
-
-inline
-
- -

Substitute all tags in the format string with the corresponding information and apply the style corresponding to the log level.

- -

Definition at line 1281 of file clutchlog.h.

- -

References _filehash_fmts, _filename, _funchash_fmts, _level_fmt, _level_short, _level_word, _strip_calls, file(), func(), line(), and replace().

- -
-
- -

◆ log()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void clutchlog::log (const levelstage,
const std::string & what,
const std::string & file,
const std::string & func,
const size_t line,
const size_t depth_delta = 0 
) const
-
-inline
-
- -

Print a log message IF the location matches the given one.

- -

Definition at line 1413 of file clutchlog.h.

- -

References _format_log, _out, file(), format(), func(), line(), locate(), and clutchlog::scope_t::matches.

- -
-
- -

◆ dump()

- -
-
-
-template<class In >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void clutchlog::dump (const levelstage,
const In container_begin,
const In container_end,
const std::string & file,
const std::string & func,
const size_t line,
const std::string & filename_template = "dump_{n}.dat",
const std::string sep = dump_default_sep 
) const
-
-inline
-
- -

Dump a serializable container after a comment line with log information.

- -

Definition at line 1438 of file clutchlog.h.

- -

References _format_dump, file(), format(), func(), line(), locate(), clutchlog::scope_t::matches, and replace().

- -
-
-

Member Data Documentation

- -

◆ default_format

- -
-
- - - - - -
- - - - -
std::string clutchlog::default_format = CLUTCHLOG_DEFAULT_FORMAT
-
-inlinestaticprotected
-
- -

Default format of the messages.

- -

Definition at line 224 of file clutchlog.h.

- -
-
- -

◆ dump_default_format

- -
-
- - - - - -
- - - - -
std::string clutchlog::dump_default_format = CLUTCHDUMP_DEFAULT_FORMAT
-
-inlinestaticprotected
-
- -

Default format of the comment line in file dump.

- -

Definition at line 246 of file clutchlog.h.

- -
-
- -

◆ dump_default_sep

- -
-
- - - - - -
- - - - -
std::string clutchlog::dump_default_sep = CLUTCHDUMP_DEFAULT_SEP
-
-inlinestaticprotected
-
- -

Default item separator for dump.

- -

Definition at line 253 of file clutchlog.h.

- -
-
- -

◆ default_depth_mark

- -
-
- - - - - -
- - - - -
std::string clutchlog::default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK
-
-inlinestaticprotected
-
- -

Default mark for stack depth.

- -

Definition at line 260 of file clutchlog.h.

- -
-
- -

◆ default_strip_calls

- -
-
- - - - - -
- - - - -
unsigned int clutchlog::default_strip_calls = CLUTCHLOG_STRIP_CALLS
-
-inlinestaticprotected
-
- -

Number of call stack levels to remove from depth display by default.

- -

Definition at line 267 of file clutchlog.h.

- -
-
- -

◆ default_hfill_char

- -
-
- - - - - -
- - - - -
char clutchlog::default_hfill_char = CLUTCHLOG_DEFAULT_HFILL_MARK
-
-inlinestaticprotected
-
- -

Default character used as a filling for right-align the right part of messages with "{hfill}".

- -

Definition at line 274 of file clutchlog.h.

- -
-
- -

◆ default_hfill_max

- -
-
- - - - - -
- - - - -
size_t clutchlog::default_hfill_max = CLUTCHLOG_DEFAULT_HFILL_MAX
-
-inlinestaticprotected
-
- -

Default maximum width (number of characters) for which to fill for right-aligning the right part of messages (using "{hfill}").

- -

Definition at line 286 of file clutchlog.h.

- -
-
- -

◆ default_hfill_min

- -
-
- - - - - -
- - - - -
size_t clutchlog::default_hfill_min = CLUTCHLOG_DEFAULT_HFILL_MIN
-
-inlinestaticprotected
-
- -

Default minimum width (number of characters) at which to fill for right-aligning the right part of messages (using "{hfill}").

- -

Definition at line 288 of file clutchlog.h.

- -
-
- -

◆ _strip_calls

- -
-
- - - - - -
- - - - -
size_t clutchlog::_strip_calls
-
-protected
-
- -

Current number of call stack levels to remove from depth display.

- -

Definition at line 919 of file clutchlog.h.

- -

Referenced by format(), and locate().

- -
-
- -

◆ _level_word

- -
-
- - - - - -
- - - - -
const std::map<level,std::string> clutchlog::_level_word
-
-protected
-
- -

Dictionary of level identifier to their string representation.

- -

Definition at line 921 of file clutchlog.h.

- -

Referenced by format().

- -
-
- -

◆ _word_level

- -
-
- - - - - -
- - - - -
std::map<std::string,level> clutchlog::_word_level
-
-protected
-
- -

Dictionary of level string to their identifier.

- -

Definition at line 923 of file clutchlog.h.

- -

Referenced by level_of(), and levels().

- -
-
- -

◆ _level_short

- -
-
- - - - - -
- - - - -
std::map<level,std::string> clutchlog::_level_short
-
-protected
-
- -

dictionary of level identifier to their 4-letters representation.

- -

Definition at line 925 of file clutchlog.h.

- -

Referenced by format().

- -
-
- -

◆ _level_fmt

- -
-
- - - - - -
- - - - -
std::map<level,fmt> clutchlog::_level_fmt
-
-protected
-
- -

Dictionary of level identifier to their format.

- -

Definition at line 927 of file clutchlog.h.

- -

Referenced by format(), and style().

- -
-
- -

◆ _format_log

- -
-
- - - - - -
- - - - -
std::string clutchlog::_format_log
-
-protected
-
- -

Current format of the standard output.

- -

Definition at line 929 of file clutchlog.h.

- -

Referenced by format(), and log().

- -
-
- -

◆ _format_dump

- -
-
- - - - - -
- - - - -
std::string clutchlog::_format_dump
-
-protected
-
- -

Current format of the file output.

- -

Definition at line 931 of file clutchlog.h.

- -

Referenced by dump(), and format_comment().

- -
-
- -

◆ _out

- -
-
- - - - - -
- - - - -
std::ostream* clutchlog::_out
-
-protected
-
- -

Standard output.

- -

Definition at line 943 of file clutchlog.h.

- -

Referenced by log(), and out().

- -
-
- -

◆ _stage

- -
-
- - - - - -
- - - - -
level clutchlog::_stage
-
-protected
-
- -

Current log level.

- -

Definition at line 951 of file clutchlog.h.

- -

Referenced by locate(), and threshold().

- -
-
- -

◆ _in_file

- -
-
- - - - - -
- - - - -
std::regex clutchlog::_in_file
-
-protected
-
- -

Current file location filter.

- -

Definition at line 953 of file clutchlog.h.

- -

Referenced by file(), and locate().

- -
-
- -

◆ _in_func

- -
-
- - - - - -
- - - - -
std::regex clutchlog::_in_func
-
-protected
-
- -

Current function location filter.

- -

Definition at line 955 of file clutchlog.h.

- -

Referenced by func(), and locate().

- -
-
- -

◆ _in_line

- -
-
- - - - - -
- - - - -
std::regex clutchlog::_in_line
-
-protected
-
- -

Current line location filter.

- -

Definition at line 957 of file clutchlog.h.

- -

Referenced by line(), and locate().

- -
-
- -

◆ _filehash_fmts

- -
-
- - - - - -
- - - - -
std::vector<fmt> clutchlog::_filehash_fmts
-
-protected
-
- -

List of candidate format objects for value-dependant file name styling.

- -

Definition at line 960 of file clutchlog.h.

- -

Referenced by filehash_styles(), and format().

- -
-
- -

◆ _funchash_fmts

- -
-
- - - - - -
- - - - -
std::vector<fmt> clutchlog::_funchash_fmts
-
-protected
-
- -

List of candidate format objects for value-dependant function name styling.

- -

Definition at line 962 of file clutchlog.h.

- -

Referenced by format(), and funchash_styles().

- -
-
- -

◆ _filename

- -
-
- - - - - -
- - - - -
filename clutchlog::_filename
-
-protected
-
- -

Filename rendering method.

- -

Definition at line 977 of file clutchlog.h.

- -

Referenced by filename(), and format().

- -
-
-

Member Enumeration Documentation

- -

◆ level

- -
-
- - - - -
enum clutchlog::level
-
- -

Available log levels.

- -

Definition at line 314 of file clutchlog.h.

- -
-
- -

◆ filename

- -
-
- - - - -
enum clutchlog::filename
-
- -

Available filename rendering methods.

- -

Definition at line 317 of file clutchlog.h.

+

Referenced by dump(), format(), and replace().

@@ -2174,11 +491,15 @@ template<class In > +
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.
Definition: clutchlog.h:903
+
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:296
diff --git a/docs/classclutchlog.js b/docs/classclutchlog.js index 46fd783..fa467b4 100644 --- a/docs/classclutchlog.js +++ b/docs/classclutchlog.js @@ -1,20 +1,20 @@ var classclutchlog = [ [ "scope_t", "structclutchlog_1_1scope__t.html", "structclutchlog_1_1scope__t" ], - [ "logger", "classclutchlog.html#a6e2a5e98fa9f722d90ba6515895543ac", null ], + [ "clutchlog", "classclutchlog.html#a0906d74275cedcd403da94879764815e", null ], + [ "clutchlog", "classclutchlog.html#a03b145e36f15435a640bb5a885d9f642", null ], + [ "logger", "classclutchlog.html#acfaceb77da01503b432644a3efaee4fa", null ], + [ "operator=", "classclutchlog.html#aef653a9744a72a889ca8163269bb781e", null ], [ "format", "classclutchlog.html#a656c277e074b64728cca871f2b484d1c", null ], [ "format", "classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80", null ], [ "format_comment", "classclutchlog.html#a2144abe4ec6f630126b6490908b5f924", null ], [ "format_comment", "classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5", null ], [ "out", "classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d", null ], - [ "out", "classclutchlog.html#ab7773f031a00a05b8c83c1936406cb98", null ], - [ "filehash_styles", "classclutchlog.html#ae17db5808155fbc6dc48b4727d0c3abf", null ], - [ "funchash_styles", "classclutchlog.html#acbb50f6306ebb3c8b0d1a52e7f327416", null ], - [ "depth_styles", "classclutchlog.html#a08310b92e86687349e70f56f9ac1d656", null ], + [ "out", "classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266", null ], [ "threshold", "classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4", null ], [ "threshold", "classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9", null ], [ "threshold", "classclutchlog.html#ab45287cc9c14217904a13aff49573732", null ], - [ "levels", "classclutchlog.html#a8d206443dea964f77965450a83693d98", null ], + [ "levels", "classclutchlog.html#aff3aa09fb60f7d6dc688c028d3834d8a", null ], [ "level_of", "classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd", null ], [ "file", "classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c", null ], [ "func", "classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447", null ], @@ -23,13 +23,12 @@ var classclutchlog = [ "style", "classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591", null ], [ "style", "classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6", null ], [ "style", "classclutchlog.html#a4831f44fd5ade102e57320632095934d", null ], - [ "filename", "classclutchlog.html#a82b9375728af2d962831a743d95f4ae7", null ], [ "locate", "classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96", null ], [ "replace", "classclutchlog.html#a972f895c70edc335f3018a2c8971d59e", null ], [ "replace", "classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2", null ], [ "format", "classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761", null ], - [ "log", "classclutchlog.html#a14c19e17c54d6353ba34c0dc3371094a", null ], - [ "dump", "classclutchlog.html#ab72a0adc9ff287270afe09c9da825fdb", null ], + [ "log", "classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a", null ], + [ "dump", "classclutchlog.html#a63308e8deae3cfec6801318203494143", null ], [ "default_format", "classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc", null ], [ "dump_default_format", "classclutchlog.html#ace879554298e6e6e36dafef330c27be8", null ], [ "dump_default_sep", "classclutchlog.html#af898bffe23b125245e338d7495c76d45", null ], @@ -41,7 +40,6 @@ var classclutchlog = [ "_strip_calls", "classclutchlog.html#a356df86455409193792b6ed550dfd09e", null ], [ "_level_word", "classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f", null ], [ "_word_level", "classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888", null ], - [ "_level_short", "classclutchlog.html#a08e8a817a75a4e9f0159231c941e0dae", null ], [ "_level_fmt", "classclutchlog.html#ab805ac5c33885459f9f752518a4aa735", null ], [ "_format_log", "classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e", null ], [ "_format_dump", "classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5", null ], @@ -50,9 +48,6 @@ var classclutchlog = [ "_in_file", "classclutchlog.html#aded03528f34d9000f618419c482c5042", null ], [ "_in_func", "classclutchlog.html#a130c4f12eacbd2028102838fe16b734e", null ], [ "_in_line", "classclutchlog.html#a41757198b29862832a14472a9e5e24c6", null ], - [ "_filehash_fmts", "classclutchlog.html#a2a334e009533744b52f01ef240a59e9d", null ], - [ "_funchash_fmts", "classclutchlog.html#a095e1545a2085ac623e4af19364fea7f", null ], - [ "_filename", "classclutchlog.html#a0431616914dbbecb908a794f5b46dada", null ], [ "level", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928", [ [ "critical", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928af332f31a368c931f79b9b64d55fc7701", null ], [ "error", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928a023c3e8a55ddfd140d3e3268dd6221e9", null ], @@ -62,13 +57,5 @@ var classclutchlog = [ "info", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928aa1ea607f2bfe5db06f1cf2bd991f7dc1", null ], [ "debug", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928a911f5ef324f37061f68a239577e0d0bd", null ], [ "xdebug", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928abba74b810831c7753777e6dcc0c0f4e2", null ] - ] ], - [ "filename", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20e", [ - [ "path", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea19ebb39c0f117afbe6658bbc9bea68a4", null ], - [ "base", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ead79ddc78294d362c22ba917cba2cd3ef", null ], - [ "dir", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea35cf5f272267d9656cfcfe52243f4841", null ], - [ "dirbase", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea9534ecbf6a632833ca32ea5bb33f7eea", null ], - [ "stem", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea04548b133168127416623d51dd3b9338", null ], - [ "dirstem", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea5b96778dd84a50c1b288b31a5200df4d", null ] ] ] ]; \ No newline at end of file diff --git a/docs/classclutchlog_1_1fmt-members.html b/docs/classclutchlog_1_1fmt-members.html index 4fb22b6..9756774 100644 --- a/docs/classclutchlog_1_1fmt-members.html +++ b/docs/classclutchlog_1_1fmt-members.html @@ -2,8 +2,8 @@ - - + + clutchlog: Member List @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,56 +84,38 @@ $(document).ready(function(){initNavTree('classclutchlog_1_1fmt.html',''); initR
-
clutchlog::fmt Member List
+
+
clutchlog::fmt Member List

This is the complete list of members for clutchlog::fmt, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
ansi enum nameclutchlog::fmt
backclutchlog::fmt
back_16Mclutchlog::fmtprotected
back_256clutchlog::fmtprotected
bg enum nameclutchlog::fmt
fg enum nameclutchlog::fmt
fmt()clutchlog::fmtinline
fmt(fg f, bg b=bg::none, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(fg f, typo s, bg b=bg::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(bg b, fg f=fg::none, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(bg b, typo s, fg f=fg::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(typo s, fg f=fg::none, bg b=bg::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(typo s, bg b, fg f=fg::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const short f, const short b, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const short f, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(fg, const short b, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const short f, bg, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const short fr, const short fg, const short fb, const short gr, const short gg, const short gb, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(fg, const short gr, const short gg, const short gb, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const short fr, const short fg, const short fb, bg, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const short fr, const short fg, const short fb, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const std::string &f, const std::string &b, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(fg, const std::string &b, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const std::string &f, bg, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
fmt(const std::string &f, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinlineexplicit
foreclutchlog::fmt
fore_16Mclutchlog::fmtprotected
fore_256clutchlog::fmtprotected
hash(const std::string &str, const std::vector< fmt > domain={}) (defined in clutchlog::fmt)clutchlog::fmtinlinestatic
modeclutchlog::fmt
operator()(const std::string &msg) constclutchlog::fmtinline
operator<<clutchlog::fmtfriend
operator<<clutchlog::fmtfriend
operator<<clutchlog::fmtfriend
print_on(std::ostream &os) constclutchlog::fmtinlineprotected
str() constclutchlog::fmtinline
styleclutchlog::fmt
typo enum nameclutchlog::fmt
backclutchlog::fmt
bg enum nameclutchlog::fmt
fg enum nameclutchlog::fmt
fmt()clutchlog::fmtinline
fmt(fg f, bg b=bg::none, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinline
fmt(fg f, typo s, bg b=bg::none) (defined in clutchlog::fmt)clutchlog::fmtinline
fmt(bg b, fg f=fg::none, typo s=typo::none) (defined in clutchlog::fmt)clutchlog::fmtinline
fmt(bg b, typo s, fg f=fg::none) (defined in clutchlog::fmt)clutchlog::fmtinline
fmt(typo s, fg f=fg::none, bg b=bg::none) (defined in clutchlog::fmt)clutchlog::fmtinline
fmt(typo s, bg b, fg f=fg::none) (defined in clutchlog::fmt)clutchlog::fmtinline
foreclutchlog::fmt
operator()(const std::string &msg) constclutchlog::fmtinline
operator<<(std::ostream &os, const fmt &fmt)clutchlog::fmtfriend
print_on(std::ostream &os) constclutchlog::fmtinlineprotected
str() constclutchlog::fmtinline
styleclutchlog::fmt
typo enum nameclutchlog::fmt
diff --git a/docs/classclutchlog_1_1fmt.html b/docs/classclutchlog_1_1fmt.html index f949dfc..fe445ce 100644 --- a/docs/classclutchlog_1_1fmt.html +++ b/docs/classclutchlog_1_1fmt.html @@ -2,8 +2,8 @@ - - + + clutchlog: clutchlog::fmt Class Reference @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -86,15 +86,13 @@ $(document).ready(function(){initNavTree('classclutchlog_1_1fmt.html',''); initR
@@ -102,1167 +100,121 @@ $(document).ready(function(){initNavTree('classclutchlog_1_1fmt.html',''); initR More...

#include <clutchlog.h>

-
- + Collaboration diagram for clutchlog::fmt:
-
-
-

Detailed Description

-

Color and style formatter for ANSI terminal escape sequences.

-

The formatter supports typographic "styles" and colors. Typographic styles are available as named tag in fmt::typo.

-

The formatter supports the three ANSI modes, which are automatically selected depending the argument types:

    -
  • 16 colors (using named tags),
  • -
  • 256 colors (using integers),
  • -
  • 16 millions ("true") colors (using RGB integer triplets or web hex strings).
  • -
-

For 16-colors mode, colors are named tag in:

-
Note
The order in which you pass foreground, background and style does not matter in 16-colors mode.
-

The following colors are available for both foregrounds (see fmt::fg) and backgrounds (see fmt::bg):

    -
  • none,
  • -
  • black,
  • -
  • red,
  • -
  • green,
  • -
  • yellow,
  • -
  • blue,
  • -
  • magenta,
  • -
  • cyan,
  • -
  • white,
  • -
  • bright_black (i.e. grey),
  • -
  • bright_red,
  • -
  • bright_green,
  • -
  • bright_yellow,
  • -
  • bright_blue,
  • -
  • bright_magenta,
  • -
  • bright_cyan,
  • -
  • bright_white.
  • -
-
Note
Some terminal are configured to display colored text set in bold using the bright color counterpart.
-

For 256-colors mode, colors are expected to be passed as integers in [-1,255] or the fg::none and bg::none tags.

-
Note
In 256-colors mode, if you want to only encode the background color, you cannot just omit the foreground color, you have to bass a fg::none tag as first argument.
-

For 16M-colors mode, colors can be encoded as:

    -
  • three integer arguments,
  • -
  • a "web color" hexadecimal triplet string, starting with a leading number sign (e.g. "#0055ff").
  • -
  • the fg::none and bg::none tags.
  • -
-
Note
In 16M-colors mode, if you want to only encode the background color, you cannot just omit the foreground color, you have to bass a fg::none tag as first argument.
-
-All styles may not be supported by a given terminal/operating system.
+

Color and style formatter for ANSI terminal escape sequences.

+
Note
All styles may not be supported by a given terminal/operating system.
-

Definition at line 380 of file clutchlog.h.

+

Definition at line 314 of file clutchlog.h.

- - - + + - - + + - - + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - -

+

Public Member Functions

 fmt ()
 Empty constructor, only useful for a no-op formatter. More...
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...
 
std::string str () const
 Return the formatting code as a string. More...
+std::string str () const
 Return the formatting code as a string.
 
All combination of 16-colors mode constructors with different parameters orders.
 fmt (fg f, bg b=bg::none, typo s=typo::none)
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 (fg f, typo s, bg b=bg::none)
 
 fmt (bg b, fg f=fg::none, typo s=typo::none)
fmt (bg b, fg f=fg::none, typo s=typo::none)
 
 fmt (bg b, typo s, fg f=fg::none)
fmt (bg b, typo s, fg f=fg::none)
 
 fmt (typo s, fg f=fg::none, bg b=bg::none)
fmt (typo s, fg f=fg::none, bg b=bg::none)
 
 fmt (typo s, bg b, fg f=fg::none)
fmt (typo s, bg b, fg f=fg::none)
 
All combination of 256-colors mode constructors with different parameters orders.
 fmt (const short f, const short b, typo s=typo::none)
 
 fmt (const short f, typo s=typo::none)
 
 fmt (fg, const short b, typo s=typo::none)
 
 fmt (const short f, bg, typo s=typo::none)
 
All combination of 16M-colors mode constructors with different parameters orders.
 fmt (const short fr, const short fg, const short fb, const short gr, const short gg, const short gb, typo s=typo::none)
 
 fmt (fg, const short gr, const short gg, const short gb, typo s=typo::none)
 
 fmt (const short fr, const short fg, const short fb, bg, typo s=typo::none)
 
 fmt (const short fr, const short fg, const short fb, typo s=typo::none)
 
 fmt (const std::string &f, const std::string &b, typo s=typo::none)
 
 fmt (fg, const std::string &b, typo s=typo::none)
 
 fmt (const std::string &f, bg, typo s=typo::none)
 
 fmt (const std::string &f, typo s=typo::none)
 
- - - -

-Static Public Member Functions

static fmt hash (const std::string &str, const std::vector< fmt > domain={})
 
- - - - - + + + + + + + - - - - - -

+

Public Attributes

-enum clutchlog::fmt::ansi mode
 Current ANSI color mode.
 
-enum clutchlog::fmt::typo style
+enum clutchlog::fmt::fg fore
 Foreground color.
 
+enum clutchlog::fmt::bg back
 Background color.
 
+enum clutchlog::fmt::typo style
 Typographic style.
 
-enum clutchlog::fmt::fg fore
 Foreground color.
 
-enum clutchlog::fmt::bg back
 Background color.
 
- - - - + + +

+

Protected Member Functions

std::ostream & print_on (std::ostream &os) const
 Print the currently encoded format escape code on the given output stream. More...
 
+std::ostream & print_on (std::ostream &os) const
 Print the currently encoded format escape code on the given output stream.
 
- - - - - - - - - - - - - -

-Protected Attributes

-clutchlog::fmt::fg_256 fore_256
 Current foreground in 256-colors mode.
 
-clutchlog::fmt::bg_256 back_256
 Current background in 256-colors mode.
 
-clutchlog::fmt::fg_16M fore_16M
 Current foreground in 16M-colors mode.
 
-clutchlog::fmt::bg_16M back_16M
 Current background in 16M-colors mode.
 
- - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  bg_16M
 background in 256-colors mode. More...
 
struct  bg_256
 Background in 256-colors mode. More...
 
struct  color
 Interface class for colors representation. More...
 
struct  color_16M
 Abstract base class for 16M colors objects (24-bits ANSI). More...
 
struct  color_256
 Abstract base class for 256 colors objects (8-bits ANSI). More...
 
struct  fg_16M
 Foreground in 256-colors mode. More...
 
struct  fg_256
 Foreground in 256-colors mode. More...
 
- - - - - - + + + + + + + - - - - - -

+

Public Types

enum class  ansi { colors_16 = -1 -, colors_256 = 5 -, colors_16M = 2 - }
 ANSI code configuring the available number of colors. More...
 
enum class  typo {
-  reset = 0 -, bold = 1 -, underline = 4 -, inverse = 7 -,
-  none = -1 +
enum  fg {
+  black = 30, +red = 31, +green = 32, +yellow = 33, +
+  blue = 34, +magenta = 35, +cyan = 36, +white = 37, +
+  none
}
 Typographic style codes. More...
 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.
 
enum class  fg {
-  black = 30 -, red = 31 -, green = 32 -, yellow = 33 -,
-  blue = 34 -, magenta = 35 -, cyan = 36 -, white = 37 -,
-  bright_black = 90 -, bright_red = 91 -, bright_green = 92 -, bright_yellow = 93 -,
-  bright_blue = 94 -, bright_magenta = 95 -, bright_cyan = 96 -, bright_white = 97 -,
-  none = -1 -
- }
 Foreground color codes. More...
 
enum class  bg {
-  black = 40 -, red = 41 -, green = 42 -, yellow = 43 -,
-  blue = 44 -, magenta = 45 -, cyan = 46 -, white = 47 -,
-  bright_black = 100 -, bright_red = 101 -, bright_green = 102 -, bright_yellow = 103 -,
-  bright_blue = 104 -, bright_magenta = 105 -, bright_cyan = 106 -, bright_white = 107 -,
-  none = -1 -
- }
 Background color codes. More...
 
- - - - - - - - - - + + +

+

Friends

std::ostream & operator<< (std::ostream &os, const std::tuple< fg, bg, typo > &fbs)
 Output stream operator for a 3-tuple of 16-colors mode tags. More...
 
std::ostream & operator<< (std::ostream &os, const typo &s)
 Output stream operator for a typo tag alone, in 16-colors mode. More...
 
std::ostream & operator<< (std::ostream &os, const fmt &fmt)
 Output stream overload. More...
 
std::ostream & operator<< (std::ostream &os, const fmt &fmt)
 Output stream overload. More...
 
-

Constructor & Destructor Documentation

- -

◆ fmt() [1/19]

- -
-
- - - - - -
- - - - - - - -
clutchlog::fmt::fmt ()
-
-inline
-
- -

Empty constructor, only useful for a no-op formatter.

- -

Definition at line 711 of file clutchlog.h.

- -
-
- -

◆ fmt() [2/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (fg f,
bg b = bg::none,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 715 of file clutchlog.h.

- -
-
- -

◆ fmt() [3/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (fg f,
typo s,
bg b = bg::none 
)
-
-inlineexplicit
-
- -

Definition at line 716 of file clutchlog.h.

- -
-
- -

◆ fmt() [4/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (bg b,
fg f = fg::none,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 717 of file clutchlog.h.

- -
-
- -

◆ fmt() [5/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (bg b,
typo s,
fg f = fg::none 
)
-
-inlineexplicit
-
- -

Definition at line 718 of file clutchlog.h.

- -
-
- -

◆ fmt() [6/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (typo s,
fg f = fg::none,
bg b = bg::none 
)
-
-inlineexplicit
-
- -

Definition at line 719 of file clutchlog.h.

- -
-
- -

◆ fmt() [7/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (typo s,
bg b,
fg f = fg::none 
)
-
-inlineexplicit
-
- -

Definition at line 720 of file clutchlog.h.

- -
-
- -

◆ fmt() [8/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const short f,
const short b,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 725 of file clutchlog.h.

- -
-
- -

◆ fmt() [9/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const short f,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 726 of file clutchlog.h.

- -
-
- -

◆ fmt() [10/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (fg ,
const short b,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 727 of file clutchlog.h.

- -
-
- -

◆ fmt() [11/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const short f,
bg ,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 728 of file clutchlog.h.

- -
-
- -

◆ fmt() [12/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const short fr,
const short fg,
const short fb,
const short gr,
const short gg,
const short gb,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 733 of file clutchlog.h.

- -
-
- -

◆ fmt() [13/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (fg ,
const short gr,
const short gg,
const short gb,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 737 of file clutchlog.h.

- -
-
- -

◆ fmt() [14/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const short fr,
const short fg,
const short fb,
bg ,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 741 of file clutchlog.h.

- -
-
- -

◆ fmt() [15/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const short fr,
const short fg,
const short fb,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 744 of file clutchlog.h.

- -
-
- -

◆ fmt() [16/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const std::string & f,
const std::string & b,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 748 of file clutchlog.h.

- -
-
- -

◆ fmt() [17/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (fg ,
const std::string & b,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 750 of file clutchlog.h.

- -
-
- -

◆ fmt() [18/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const std::string & f,
bg ,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 752 of file clutchlog.h.

- -
-
- -

◆ fmt() [19/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
clutchlog::fmt::fmt (const std::string & f,
typo s = typo::none 
)
-
-inlineexplicit
-
- -

Definition at line 754 of file clutchlog.h.

- -
-

Member Function Documentation

- -

◆ print_on()

- -
-
- - - - - -
- - - - - - - - -
std::ostream & clutchlog::fmt::print_on (std::ostream & os) const
-
-inlineprotected
-
- -

Print the currently encoded format escape code on the given output stream.

- -

Definition at line 761 of file clutchlog.h.

- -

References back, back_16M, back_256, colors_16, colors_16M, colors_256, fore, fore_16M, fore_256, mode, and style.

- -

Referenced by operator()(), and str().

- -
-
- +

◆ operator()()

@@ -1287,89 +239,19 @@ Friends
- - - - -
- - - - - - - -
std::string clutchlog::fmt::str () const
-
-inline
-
- -

Return the formatting code as a string.

- -

Definition at line 822 of file clutchlog.h.

- -

References print_on().

- -
-
- -

◆ hash()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static fmt clutchlog::fmt::hash (const std::string & str,
const std::vector< fmtdomain = {} 
)
-
-inlinestatic
-
- -

Definition at line 829 of file clutchlog.h.

+

References print_on().

Friends And Related Function Documentation

- -

◆ operator<<

+ +

◆ operator<<

@@ -1378,7 +260,7 @@ Friends - + @@ -1403,73 +285,12 @@ Friends

Output stream overload.

-

Allow to use a formatter as a tag within a stream:

clutchlog::fmt end(clutchlog::fmt::typo::reset);
-
clutchlog::fmt error(clutchlog::fmt::fg::red, clutchlog::fmt::typo::bold);
+

Allow to use a formatter as a tag within a stream:

clutchlog::fmt end(clutchlog::fmt::typo::reset);
+
clutchlog::fmt error(clutchlog::fmt::fg::red, clutchlog::fmt::typo::bold);
std::cout << error << "ERROR" << end << std::endl;
Note
An formatter called this way will NOT output a reset escape code.
-

Definition at line 795 of file clutchlog.h.

- -
-
-

Member Enumeration Documentation

- -

◆ ansi

- -
-
-
std::ostream & operator<< std::ostream& operator<< ( std::ostream &  os,
- - - - -
- - - - -
enum class clutchlog::fmt::ansi
-
-strong
-
- -

ANSI code configuring the available number of colors.

- - - - -
Enumerator
colors_16 

16 colors mode.

-
colors_256 

256 colors mode.

-
colors_16M 

16 millions ("true") colors mode.

-
- -

Definition at line 383 of file clutchlog.h.

- -
-
- -

◆ typo

- -
-
- - - - - -
- - - - -
enum class clutchlog::fmt::typo
-
-strong
-
- -

Typographic style codes.

- -

Definition at line 393 of file clutchlog.h.

+

Definition at line 396 of file clutchlog.h.

@@ -1478,11 +299,14 @@ Friends
+
Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:314
diff --git a/docs/classclutchlog_1_1fmt__coll__graph.map b/docs/classclutchlog_1_1fmt__coll__graph.map deleted file mode 100644 index 48e46b0..0000000 --- a/docs/classclutchlog_1_1fmt__coll__graph.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docs/classclutchlog_1_1fmt__coll__graph.md5 b/docs/classclutchlog_1_1fmt__coll__graph.md5 deleted file mode 100644 index b5b2654..0000000 --- a/docs/classclutchlog_1_1fmt__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3ff946c726514befbbadcc19be50a61a \ No newline at end of file diff --git a/docs/classclutchlog_1_1fmt__coll__graph.svg b/docs/classclutchlog_1_1fmt__coll__graph.svg deleted file mode 100644 index 32c2783..0000000 --- a/docs/classclutchlog_1_1fmt__coll__graph.svg +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -clutchlog::fmt - - - -Node1 - - -clutchlog::fmt - - - - - -Node2 - - -clutchlog::fmt::fg_256 - - - - - -Node2->Node1 - - - fore_256 - - - -Node3 - - -clutchlog::fmt::color_256 - - - - - -Node3->Node2 - - - - - -Node5 - - -clutchlog::fmt::bg_256 - - - - - -Node3->Node5 - - - - - -Node4 - - -clutchlog::fmt::color - - - - - -Node4->Node3 - - - - - -Node7 - - -clutchlog::fmt::color_16M - - - - - -Node4->Node7 - - - - - -Node5->Node1 - - - back_256 - - - -Node6 - - -clutchlog::fmt::fg_16M - - - - - -Node6->Node1 - - - fore_16M - - - -Node7->Node6 - - - - - -Node8 - - -clutchlog::fmt::bg_16M - - - - - -Node7->Node8 - - - - - -Node8->Node1 - - - back_16M - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/classclutchlog_1_1fmt__coll__graph_org.svg b/docs/classclutchlog_1_1fmt__coll__graph_org.svg deleted file mode 100644 index d98e772..0000000 --- a/docs/classclutchlog_1_1fmt__coll__graph_org.svg +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -clutchlog::fmt - - - -Node1 - - -clutchlog::fmt - - - - - -Node2 - - -clutchlog::fmt::fg_256 - - - - - -Node2->Node1 - - - fore_256 - - - -Node3 - - -clutchlog::fmt::color_256 - - - - - -Node3->Node2 - - - - - -Node5 - - -clutchlog::fmt::bg_256 - - - - - -Node3->Node5 - - - - - -Node4 - - -clutchlog::fmt::color - - - - - -Node4->Node3 - - - - - -Node7 - - -clutchlog::fmt::color_16M - - - - - -Node4->Node7 - - - - - -Node5->Node1 - - - back_256 - - - -Node6 - - -clutchlog::fmt::fg_16M - - - - - -Node6->Node1 - - - fore_16M - - - -Node7->Node6 - - - - - -Node8 - - -clutchlog::fmt::bg_16M - - - - - -Node7->Node8 - - - - - -Node8->Node1 - - - back_16M - - - diff --git a/docs/classes.html b/docs/classes.html index 5a229d0..f0d92a6 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class Index @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,30 +84,35 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
-
Class Index
+
+
Class Index
diff --git a/docs/clutchlog_8h.html b/docs/clutchlog_8h.html index ed21ecf..cef3212 100644 --- a/docs/clutchlog_8h.html +++ b/docs/clutchlog_8h.html @@ -2,8 +2,8 @@ - - + + clutchlog: clutchlog.h File Reference @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -87,12 +87,12 @@ $(document).ready(function(){initNavTree('clutchlog_8h.html',''); initResizable( -
clutchlog.h File Reference
+
+
clutchlog.h File Reference
#include <ciso646>
#include <filesystem>
-#include <iterator>
#include <iostream>
#include <sstream>
#include <fstream>
@@ -114,12 +114,12 @@ $(document).ready(function(){initNavTree('clutchlog_8h.html',''); initResizable(

Go to the source code of this file.

- @@ -127,55 +127,37 @@ Classes - - - - - - - - - - - - - - - - - - - - -

+

Classes

class  clutchlog
 The single class which holds everything. More...
class  clutchlog::fmt
 Color and style formatter for ANSI terminal escape sequences. More...
 
struct  clutchlog::fmt::color
 Interface class for colors representation. More...
 
struct  clutchlog::fmt::color_256
 Abstract base class for 256 colors objects (8-bits ANSI). More...
 
struct  clutchlog::fmt::fg_256
 Foreground in 256-colors mode. More...
 
struct  clutchlog::fmt::bg_256
 Background in 256-colors mode. More...
 
struct  clutchlog::fmt::color_16M
 Abstract base class for 16M colors objects (24-bits ANSI). More...
 
struct  clutchlog::fmt::fg_16M
 Foreground in 256-colors mode. More...
 
struct  clutchlog::fmt::bg_16M
 background in 256-colors mode. More...
 
struct  clutchlog::scope_t
 Structure holding a location matching. More...
 
- - - + + - - + + - - + + - - + + - - + + - - + + - - - - + @@ -188,104 +170,40 @@ Macros - + + - - + + - - + + - - + + - - + + - - + +

+

Macros

#define CLUTCHLOG_H
 Header guard. More...
+#define CLUTCHLOG_H
 Header guard.
 
#define CLUTCHLOG_HAVE_UNIX_SYSINFO   0
 True if POSIX headers necessary for stack depth management are available. More...
+#define CLUTCHLOG_HAVE_UNIX_SYSINFO   0
 True if POSIX headers necessary for stack depth management are available.
 
#define CLUTCHLOG_HAVE_UNIX_SYSIOCTL   0
 True if the system can handle the hfill feature. More...
+#define CLUTCHLOG_HAVE_UNIX_SYSIOCTL   0
 True if the system can handle the hfill feature.
 
#define WITH_CLUTCHLOG
 Actually enable clutchlog features. More...
+#define WITH_CLUTCHLOG
 Actually enable clutchlog features.
 
#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG   clutchlog::level::progress
 Default level over which calls to the logger are optimized out when NDEBUG is defined. More...
+#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG   clutchlog::level::progress
 Default level over which calls to the logger are optimized out when NDEBUG is defined.
 
#define CLUTCHLOC   __FILE__, __FUNCTION__, __LINE__
 Handy shortcuts to location. More...
+#define CLUTCHLOC   __FILE__, __FUNCTION__, __LINE__
 Handy shortcuts to location.
 
#define CLUTCHLOGD(LEVEL, WHAT, DEPTH_DELTA)
 Log a message at the given level and with a given depth delta. More...
 
#define CLUTCHLOG(LEVEL, WHAT)    CLUTCHLOGD(LEVEL, WHAT, 0)
#define CLUTCHLOG(LEVEL, WHAT)
 Log a message at the given level. More...
 
#define CLUTCHDUMP(LEVEL, CONTAINER, FILENAME)
 Run any code if the scope matches. More...
 
Default configuration members
#define CLUTCHLOG_DEFAULT_FORMAT   "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
+#define CLUTCHLOG_DEFAULT_FORMAT   "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
 Compile-time default format of the messages (debug mode: with absolute location).
 
#define CLUTCHDUMP_DEFAULT_FORMAT   "# {level} in {func} @ {file}:{line}"
 Compile-time default format of the comment line in file dump. More...
+#define CLUTCHDUMP_DEFAULT_FORMAT   "# {level} in {func} @ {file}:{line}"
 Compile-time default format of the comment line in file dump.
 
#define CLUTCHDUMP_DEFAULT_SEP   "\n"
 Compile-time default item separator for dump. More...
+#define CLUTCHDUMP_DEFAULT_SEP   "\n"
 Compile-time default item separator for dump.
 
#define CLUTCHLOG_DEFAULT_DEPTH_MARK   ">"
 Compile-time default mark for stack depth. More...
+#define CLUTCHLOG_DEFAULT_DEPTH_MARK   ">"
 Compile-time default mark for stack depth.
 
#define CLUTCHLOG_STRIP_CALLS   5
 Compile-time number of call stack levels to remove from depth display by default. More...
+#define CLUTCHLOG_STRIP_CALLS   5
 Compile-time number of call stack levels to remove from depth display by default.
 
#define CLUTCHLOG_DEFAULT_HFILL_MARK   '.'
 Character used as a filling for right-align the right part of messages with "{hfill}". More...
+#define CLUTCHLOG_DEFAULT_HFILL_MARK   '.'
 Character used as a filling for right-align the right part of messages with "{hfill}".
 
-

Macro Definition Documentation

- -

◆ CLUTCHLOG_H

- -
-
- - - - -
#define CLUTCHLOG_H
-
- -

Header guard.

- -

Definition at line 4 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOG_HAVE_UNIX_SYSINFO

- -
-
- - - - -
#define CLUTCHLOG_HAVE_UNIX_SYSINFO   0
-
- -

True if POSIX headers necessary for stack depth management are available.

- -

Definition at line 34 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOG_HAVE_UNIX_SYSIOCTL

- -
-
- - - - -
#define CLUTCHLOG_HAVE_UNIX_SYSIOCTL   0
-
- -

True if the system can handle the hfill feature.

- -

Definition at line 44 of file clutchlog.h.

- -
-
- -

◆ WITH_CLUTCHLOG

- -
-
- - - - -
#define WITH_CLUTCHLOG
-
- -

Actually enable clutchlog features.

- -

Definition at line 54 of file clutchlog.h.

- -
-
diff --git a/docs/clutchlog_8h.js b/docs/clutchlog_8h.js index cfcd61b..05cb530 100644 --- a/docs/clutchlog_8h.js +++ b/docs/clutchlog_8h.js @@ -1,13 +1,12 @@ var clutchlog_8h = [ - [ "clutchlog::scope_t", "structclutchlog_1_1scope__t.html", "structclutchlog_1_1scope__t" ], + [ "scope_t", "structclutchlog_1_1scope__t.html", "structclutchlog_1_1scope__t" ], [ "CLUTCHLOG_H", "clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16", null ], [ "CLUTCHLOG_HAVE_UNIX_SYSINFO", "clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb", null ], [ "CLUTCHLOG_HAVE_UNIX_SYSIOCTL", "clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817", null ], [ "WITH_CLUTCHLOG", "clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4", null ], [ "CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG", "group___default_config.html#ga8564be479b948ee3052b61783c66d415", null ], [ "CLUTCHLOC", "group___use_macros.html#gae8911119d726a43b77f5781cb5a72813", null ], - [ "CLUTCHLOGD", "group___use_macros.html#ga369d365b7c25ec270596c3ca6839cf2c", null ], [ "CLUTCHLOG", "group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d", null ], [ "CLUTCHDUMP", "group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2", null ], [ "CLUTCHFUNC", "group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae", null ], diff --git a/docs/clutchlog_8h__dep__incl.map b/docs/clutchlog_8h__dep__incl.map index e10fd2c..f881e9b 100644 --- a/docs/clutchlog_8h__dep__incl.map +++ b/docs/clutchlog_8h__dep__incl.map @@ -1,16 +1,9 @@ - + - - - - - - - - - - - + + + + diff --git a/docs/clutchlog_8h__dep__incl.md5 b/docs/clutchlog_8h__dep__incl.md5 index 015ab32..e459537 100644 --- a/docs/clutchlog_8h__dep__incl.md5 +++ b/docs/clutchlog_8h__dep__incl.md5 @@ -1 +1 @@ -550462ca9e6ab61c5ef8a484a81dbeed \ No newline at end of file +14cb45843b5774232b14fc381bb80084 \ No newline at end of file diff --git a/docs/clutchlog_8h__dep__incl.svg b/docs/clutchlog_8h__dep__incl.svg index aa0df7a..4916a62 100644 --- a/docs/clutchlog_8h__dep__incl.svg +++ b/docs/clutchlog_8h__dep__incl.svg @@ -4,63 +4,17 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + clutchlog.h - + Node1 - -clutchlog.h + +clutchlog.h @@ -76,8 +30,8 @@ var sectionId = 'dynsection-1'; Node1->Node2 - - + + @@ -91,215 +45,68 @@ var sectionId = 'dynsection-1'; Node1->Node3 - - + + Node4 - - -t-color16M.cpp + + +t-demo.cpp Node1->Node4 - - + + Node5 - - -t-color256.cpp + + +t-dump.cpp Node1->Node5 - - + + Node6 - - -t-demo.cpp + + +t-log.cpp Node1->Node6 - - + + Node7 - - -t-depth-delta.cpp + + +t-one-line-if.cpp Node1->Node7 - - - - - -Node8 - - -t-dump.cpp - - - - - -Node1->Node8 - - - - - -Node9 - - -t-extra.cpp - - - - - -Node1->Node9 - - - - - -Node10 - - -t-filename.cpp - - - - - -Node1->Node10 - - - - - -Node11 - - -t-fmt-constructors.cpp - - - - - -Node1->Node11 - - - - - -Node12 - - -t-hash-color.cpp - - - - - -Node1->Node12 - - - - - -Node13 - - -t-log.cpp - - - - - -Node1->Node13 - - - - - -Node14 - - -t-one-line-if.cpp - - - - - -Node1->Node14 - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/clutchlog_8h__dep__incl_org.svg b/docs/clutchlog_8h__dep__incl_org.svg deleted file mode 100644 index 3ac13a5..0000000 --- a/docs/clutchlog_8h__dep__incl_org.svg +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - -clutchlog.h - - - -Node1 - - -clutchlog.h - - - - - -Node2 - - -t-assert.cpp - - - - - -Node1->Node2 - - - - - -Node3 - - -t-color.cpp - - - - - -Node1->Node3 - - - - - -Node4 - - -t-color16M.cpp - - - - - -Node1->Node4 - - - - - -Node5 - - -t-color256.cpp - - - - - -Node1->Node5 - - - - - -Node6 - - -t-demo.cpp - - - - - -Node1->Node6 - - - - - -Node7 - - -t-depth-delta.cpp - - - - - -Node1->Node7 - - - - - -Node8 - - -t-dump.cpp - - - - - -Node1->Node8 - - - - - -Node9 - - -t-extra.cpp - - - - - -Node1->Node9 - - - - - -Node10 - - -t-filename.cpp - - - - - -Node1->Node10 - - - - - -Node11 - - -t-fmt-constructors.cpp - - - - - -Node1->Node11 - - - - - -Node12 - - -t-hash-color.cpp - - - - - -Node1->Node12 - - - - - -Node13 - - -t-log.cpp - - - - - -Node1->Node13 - - - - - -Node14 - - -t-one-line-if.cpp - - - - - -Node1->Node14 - - - - - diff --git a/docs/clutchlog_8h__incl.map b/docs/clutchlog_8h__incl.map index 36226b5..528ccc6 100644 --- a/docs/clutchlog_8h__incl.map +++ b/docs/clutchlog_8h__incl.map @@ -1,15 +1,14 @@ - + - - - - - - - - - - + + + + + + + + + diff --git a/docs/clutchlog_8h__incl.md5 b/docs/clutchlog_8h__incl.md5 index 3f79c82..8672821 100644 --- a/docs/clutchlog_8h__incl.md5 +++ b/docs/clutchlog_8h__incl.md5 @@ -1 +1 @@ -abe9435b0abe9059d00d25f6afdb3928 \ No newline at end of file +128ca966338fdda6dfe848c977a3a290 \ No newline at end of file diff --git a/docs/clutchlog_8h__incl.svg b/docs/clutchlog_8h__incl.svg index 57ecb9c..40ad16e 100644 --- a/docs/clutchlog_8h__incl.svg +++ b/docs/clutchlog_8h__incl.svg @@ -46,7 +46,7 @@ if (edges && edges.length) { @@ -54,13 +54,13 @@ var sectionId = 'dynsection-0'; clutchlog.h - + Node1 - -clutchlog.h + +clutchlog.h @@ -76,8 +76,8 @@ var sectionId = 'dynsection-0'; Node1->Node2 - - + + @@ -91,158 +91,143 @@ var sectionId = 'dynsection-0'; Node1->Node3 - - + + Node4 - -iterator + +iostream Node1->Node4 - - + + Node5 - -iostream + +sstream Node1->Node5 - - + + Node6 - -sstream + +fstream Node1->Node6 - - + + Node7 - -fstream + +cassert Node1->Node7 - - + + Node8 - -cassert + +cstdlib Node1->Node8 - - + + Node9 - -cstdlib + +string Node1->Node9 - - + + Node10 - -string + +limits Node1->Node10 - - + + Node11 - -limits + +regex Node1->Node11 - - + + Node12 - -regex + +map Node1->Node12 - - - - - -Node13 - - -map - - - - - -Node1->Node13 - - + + diff --git a/docs/clutchlog_8h__incl_org.svg b/docs/clutchlog_8h__incl_org.svg index c1dffb0..bd41c98 100644 --- a/docs/clutchlog_8h__incl_org.svg +++ b/docs/clutchlog_8h__incl_org.svg @@ -4,17 +4,17 @@ - + clutchlog.h - + Node1 - -clutchlog.h + +clutchlog.h @@ -30,8 +30,8 @@ Node1->Node2 - - + + @@ -45,158 +45,143 @@ Node1->Node3 - - + + Node4 - -iterator + +iostream Node1->Node4 - - + + Node5 - -iostream + +sstream Node1->Node5 - - + + Node6 - -sstream + +fstream Node1->Node6 - - + + Node7 - -fstream + +cassert Node1->Node7 - - + + Node8 - -cassert + +cstdlib Node1->Node8 - - + + Node9 - -cstdlib + +string Node1->Node9 - - + + Node10 - -string + +limits Node1->Node10 - - + + Node11 - -limits + +regex Node1->Node11 - - + + Node12 - -regex + +map Node1->Node12 - - - - - -Node13 - - -map - - - - - -Node1->Node13 - - + + diff --git a/docs/clutchlog_8h_source.html b/docs/clutchlog_8h_source.html index 3e17425..a58c8ef 100644 --- a/docs/clutchlog_8h_source.html +++ b/docs/clutchlog_8h_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: clutchlog.h Source File @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,1477 +84,1038 @@ $(document).ready(function(){initNavTree('clutchlog_8h_source.html',''); initRes
-
clutchlog.h
+
+
clutchlog.h
-Go to the documentation of this file.
1#pragma once
-
2#ifndef CLUTCHLOG_H
-
4#define CLUTCHLOG_H
-
5
-
7#include <ciso646>
-
8 #ifdef FSEXPERIMENTAL
-
9 #include <experimental/filesystem>
-
10 namespace fs = std::experimental::filesystem;
-
11#else
-
12 #include <filesystem>
-
13 namespace fs = std::filesystem;
-
14#endif
-
15
-
16#include <iterator>
-
17#include <iostream>
-
18#include <sstream>
-
19#include <fstream>
-
20#include <cassert>
-
21#include <cstdlib>
-
22#include <string>
-
23#include <limits>
-
24#include <regex>
-
25#include <map>
-
26
-
28#if __has_include(<execinfo.h>) && __has_include(<stdlib.h>) && __has_include(<libgen.h>)
-
29 #include <execinfo.h> // execinfo
-
30 #include <stdlib.h> // getenv
-
31 #include <libgen.h> // basename
-
32 #define CLUTCHLOG_HAVE_UNIX_SYSINFO 1
-
33#else
-
34 #define CLUTCHLOG_HAVE_UNIX_SYSINFO 0
-
35#endif
-
36
-
38#if __has_include(<sys/ioctl.h>) && __has_include(<stdio.h>) && __has_include(<unistd.h>)
-
39 #include <sys/ioctl.h>
-
40 #include <stdio.h>
-
41 #include <unistd.h>
-
42 #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 1
-
43#else
-
44 #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 0
-
45#endif
-
46
-
47
-
48/**********************************************************************
-
49 * Enable by default in Debug builds.
-
50 **********************************************************************/
-
51#ifndef WITH_CLUTCHLOG
-
52 #ifndef NDEBUG
-
54 #define WITH_CLUTCHLOG
-
55 #endif
-
56#endif
-
57
-
58/**********************************************************************
-
59 * Macros definitions
-
60 **********************************************************************/
-
61#ifdef WITH_CLUTCHLOG
-
62
-
66#ifndef CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG
-
68 #define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG clutchlog::level::progress
-
69#endif // CLUTCHLOG_DEFAULT_DEPTH_BUILT
-
70
-
78#define CLUTCHLOC __FILE__, __FUNCTION__, __LINE__
-
79
-
81#ifndef NDEBUG
-
82 #define CLUTCHLOGD( LEVEL, WHAT, DEPTH_DELTA ) do { \
-
83 auto& clutchlog__logger = clutchlog::logger(); \
-
84 std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \
-
85 clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC, DEPTH_DELTA); \
-
86 } while(0)
-
87#else // not Debug build.
-
88 #define CLUTCHLOGD( LEVEL, WHAT, DEPTH_DELTA ) do { \
-
89 if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
-
90 auto& clutchlog__logger = clutchlog::logger(); \
-
91 std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \
-
92 clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC, DEPTH_DELTA); \
-
93 } \
-
94 } while(0)
-
95#endif // NDEBUG
-
96
-
98#ifndef NDEBUG
-
99 #define CLUTCHLOG( LEVEL, WHAT ) \
-
100 CLUTCHLOGD(LEVEL, WHAT, 0)
-
101#else // not Debug build.
-
102 #define CLUTCHLOG( LEVEL, WHAT ) \
-
103 CLUTCHLOGD(LEVEL, WHAT, 0)
-
104#endif // NDEBUG
-
105
-
107#ifndef NDEBUG
-
108 #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do { \
-
109 auto& clutchlog__logger = clutchlog::logger(); \
-
110 clutchlog__logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
-
111 CLUTCHLOC, FILENAME, CLUTCHDUMP_DEFAULT_SEP); \
-
112 } while(0)
-
113#else // not Debug build.
-
114 #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do { \
-
115 if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
-
116 auto& clutchlog__logger = clutchlog::logger(); \
-
117 clutchlog__logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
-
118 CLUTCHLOC, FILENAME, CLUTCHDUMP_DEFAULT_SEP); \
-
119 } \
-
120 } while(0)
-
121#endif // NDEBUG
-
122
-
124#ifndef NDEBUG
-
125 #define CLUTCHFUNC( LEVEL, FUNC, ... ) do { \
-
126 auto& clutchlog__logger = clutchlog::logger(); \
-
127 clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
-
128 if(clutchlog__scope.matches) { \
-
129 FUNC(__VA_ARGS__); \
-
130 } \
-
131 } while(0)
-
132#else // not Debug build.
-
133 #define CLUTCHFUNC( LEVEL, FUNC, ... ) do { \
-
134 if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
-
135 auto& clutchlog__logger = clutchlog::logger(); \
-
136 clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
-
137 if(clutchlog__scope.matches) { \
-
138 FUNC(__VA_ARGS__); \
-
139 } \
-
140 } \
-
141 } while(0)
-
142#endif // NDEBUG
-
143
-
145#ifndef NDEBUG
-
146 #define CLUTCHCODE( LEVEL, ... ) do { \
-
147 auto& clutchlog__logger = clutchlog::logger(); \
-
148 clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
-
149 if(clutchlog__scope.matches) { \
-
150 __VA_ARGS__ \
-
151 } \
-
152 } while(0)
-
153#else // not Debug build.
-
154 #define CLUTCHCODE( LEVEL, CODE ) do { \
-
155 if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
-
156 auto& clutchlog__logger = clutchlog::logger(); \
-
157 clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
-
158 if(clutchlog__scope.matches) { \
-
159 CODE \
-
160 } \
-
161 } \
-
162 } while(0)
-
163#endif // NDEBUG
-
164
-
167#else // not WITH_CLUTCHLOG
-
168 // Disabled macros can still be called in Release builds.
-
169 #define CLUTCHLOG( LEVEL, WHAT ) do {/*nothing*/} while(0)
-
170 #define CLUTCHLOGD( LEVEL, WHAT, DEPTH_DELTA ) do {/*nothing*/} while(0)
-
171 #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do {/*nothing*/} while(0)
-
172 #define CLUTCHFUNC( LEVEL, FUNC, ... ) do {/*nothing*/} while(0)
-
173 #define CLUTCHCODE( LEVEL, CODE ) do {/*nothing*/} while(0)
-
174#endif // WITH_CLUTCHLOG
-
175
-
176/**********************************************************************
-
177 * Implementation
-
178 **********************************************************************/
-
179
-
180#ifdef WITH_CLUTCHLOG
- -
189{
-
190 protected:
-
191
-
196 #ifndef NDEBUG
-
197 #ifndef CLUTCHLOG_DEFAULT_FORMAT
-
199 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 // Enables: name, depth and depth_marks
-
200 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1 // Enables: hfill
-
201 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n"
-
202 #else
-
203 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
-
204 #endif
-
205 #else
-
206 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
-
207 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg} {hfill} {func} @ {file}:{line}\n"
-
208 #else
-
209 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
-
210 #endif
-
211 #endif
-
212 #endif
-
213 #else
-
214 #ifndef CLUTCHLOG_DEFAULT_FORMAT
-
216 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
217 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func}\n"
-
218 #else
-
219 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\t\t\t\t\t{func}\n"
-
220 #endif
-
221 #endif
-
222 #endif
-
224 static inline std::string default_format = CLUTCHLOG_DEFAULT_FORMAT;
-
225
-
226 #ifndef NDEBUG
-
227 #ifndef CLUTCHDUMP_DEFAULT_FORMAT
-
229 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
230 #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}"
-
231 #else
-
232 #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func} @ {file}:{line}"
-
233 #endif
-
234 #endif // CLUTCHDUMP_DEFAULT_FORMAT
-
235 #else
-
236 #ifndef CLUTCHDUMP_DEFAULT_FORMAT
-
238 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
239 #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth})"
-
240 #else
-
241 #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func}"
-
242 #endif
-
243 #endif // CLUTCHDUMP_DEFAULT_FORMAT
-
244 #endif
- -
247
-
248 #ifndef CLUTCHDUMP_DEFAULT_SEP
-
250 #define CLUTCHDUMP_DEFAULT_SEP "\n"
-
251 #endif // CLUTCHDUMP_DEFAULT_SEP
-
253 static inline std::string dump_default_sep = CLUTCHDUMP_DEFAULT_SEP;
-
254
-
255 #ifndef CLUTCHLOG_DEFAULT_DEPTH_MARK
-
257 #define CLUTCHLOG_DEFAULT_DEPTH_MARK ">"
-
258 #endif // CLUTCHLOG_DEFAULT_DEPTH_MARK
-
260 static inline std::string default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK;
-
261
-
262 #ifndef CLUTCHLOG_STRIP_CALLS
-
264 #define CLUTCHLOG_STRIP_CALLS 5
-
265 #endif // CLUTCHLOG_STRIP_CALLS
-
267 static inline unsigned int default_strip_calls = CLUTCHLOG_STRIP_CALLS;
-
268
-
269 #ifndef CLUTCHLOG_DEFAULT_HFILL_MARK
-
271 #define CLUTCHLOG_DEFAULT_HFILL_MARK '.'
-
272 #endif // CLUTCHLOG_DEFAULT_HFILL_MARK
-
274 static inline char default_hfill_char = CLUTCHLOG_DEFAULT_HFILL_MARK;
-
275
-
276
-
277 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
-
278 #ifndef CLUTCHLOG_DEFAULT_HFILL_MAX
-
279 #define CLUTCHLOG_DEFAULT_HFILL_MAX 300
-
280 #endif
-
281 #ifndef CLUTCHLOG_DEFAULT_HFILL_MIN
-
282 #define CLUTCHLOG_DEFAULT_HFILL_MIN 150
-
283 #endif
-
284 #endif
-
286 static inline size_t default_hfill_max = CLUTCHLOG_DEFAULT_HFILL_MAX;
-
288 static inline size_t default_hfill_min = CLUTCHLOG_DEFAULT_HFILL_MIN;
-
289
-
290 // NOTE: there is no CLUTCHLOG_HFILL_STYLE for defaulting,
-
291 // but you can still set `hfill_style(...)` on the logger singleton.
-
292 /* @} DefaultConfig */
-
293 /* @} */
-
294
-
295
-
296 public:
-
297
- -
308 {
-
309 static clutchlog instance;
-
310 return instance;
-
311 }
-
312
-
314 enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
-
315
-
317 enum filename {path, base, dir, dirbase, stem, dirstem};
-
318
-
380 class fmt {
-
381 public:
-
383 enum class ansi {
-
385 colors_16 = -1, // Not supposed to be casted.
-
387 colors_256 = 5, // Casted as short in color::operator<<.
-
389 colors_16M = 2 // Casted as short in color::operator<<
- -
391
-
393 enum class typo {
-
394 reset = 0,
-
395 bold = 1,
-
396 underline = 4,
-
397 inverse = 7,
-
398 none = -1
- -
400
-
404 enum class fg {
-
405 black = 30,
-
406 red = 31,
-
407 green = 32,
-
408 yellow = 33,
-
409 blue = 34,
-
410 magenta = 35,
-
411 cyan = 36,
-
412 white = 37,
-
413 bright_black = 90,
-
414 bright_red = 91,
-
415 bright_green = 92,
-
416 bright_yellow = 93,
-
417 bright_blue = 94,
-
418 bright_magenta = 95,
-
419 bright_cyan = 96,
-
420 bright_white = 97,
-
421 none = -1
- -
423
-
425 enum class bg {
-
426 black = 40,
-
427 red = 41,
-
428 green = 42,
-
429 yellow = 43,
-
430 blue = 44,
-
431 magenta = 45,
-
432 cyan = 46,
-
433 white = 47,
-
434 bright_black = 100,
-
435 bright_red = 101,
-
436 bright_green = 102,
-
437 bright_yellow = 103,
-
438 bright_blue = 104,
-
439 bright_magenta = 105,
-
440 bright_cyan = 106,
-
441 bright_white = 107,
-
442 none = -1
- -
444
-
445 protected:
-
447 friend std::ostream& operator<<(std::ostream& os, const std::tuple<fg,bg,typo>& fbs)
-
448 {
-
449 auto [f,b,s] = fbs;
-
450 std::vector<short> codes; codes.reserve(3);
-
451 if(f != fg::none) { codes.push_back(static_cast<short>(f));}
-
452 if(b != bg::none) { codes.push_back(static_cast<short>(b));}
-
453 if(s != typo::none) { codes.push_back(static_cast<short>(s));}
-
454 if(codes.size() == 0) {
-
455 return os;
-
456
-
457 } else {
-
458 os << "\033[";
-
459 os << codes[0];
-
460 for(size_t i=1; i < codes.size(); ++i) {
-
461 os << ";" << codes[i];
-
462 }
-
463 os << "m";
-
464 }
-
465 return os;
-
466 }
-
467
-
469 friend std::ostream& operator<<(std::ostream& os, const typo& s)
-
470 {
-
471 if(s != typo::none) {
-
472 os << "\033[" << static_cast<short>(s) << "m";
-
473 }
-
474 return os;
-
475 }
-
476
-
479 protected:
-
484 struct color {
-
485 ansi mode; // Not const to allow for the implicit copy assignemnt operator.
-
486
-
488 enum class ground { // idem.
-
489 fore = 38,
-
490 back = 48
- -
492
-
498 color(ansi a, ground g) : mode(a), type(g) {}
-
499
-
501 virtual bool is_set() const = 0;
-
502
-
504 virtual std::ostream& print_on( std::ostream& os) const = 0;
-
505
-
507 friend std::ostream& operator<<(std::ostream& os, const color& c)
-
508 {
-
509 if(c.is_set()) {
-
510 os << "\033[" << static_cast<short>(c.type) << ";" << static_cast<short>(c.mode) << ";";
-
511 c.print_on(os);
-
512 os << "m";
-
513 }
-
514 return os;
-
515 }
-
516 };
-
517
-
518 // There is no color_16 because it would be the same as color_256, only with different indices,
-
519 // hence making it more complicated for the user to select the right constructor.
-
520 // Here, we just use enum for 16 colors, and indices for 256 colors.
-
521
-
523 struct color_256 : public color {
-
527 short index;
-
528
-
532 color_256(ground t) : color(ansi::colors_256, t), index(-1) {}
-
533
-
539 color_256(ground t, const short i) : color(ansi::colors_256, t), index(i) {assert(-1 <= i and i <= 255);}
-
540
-
542 bool is_set() const {return index > -1;}
-
543
-
545 std::ostream& print_on( std::ostream& os) const
-
546 {
-
547 os << index;
-
548 return os;
-
549 }
-
550 };
-
551
-
553 struct fg_256 : public color_256 {
-
555 fg_256() : color_256(ground::fore) {}
-
556
-
560 fg_256(const short f) : color_256(ground::fore, f) {}
-
561
-
565 fg_256(const fg&) : color_256(ground::fore, -1) {}
-
566
- -
568
-
570 struct bg_256 : public color_256 {
-
572 bg_256() : color_256(ground::back) {}
-
573
-
577 bg_256(const short b) : color_256(ground::back, b) {}
-
578
-
582 bg_256(const bg&) : color_256(ground::back, -1) {}
-
583
- -
585
-
587 struct color_16M : public color {
-
591 short red, green, blue;
-
592
-
596 color_16M(ground t) : color(ansi::colors_16M, t), red(-1), green(-1), blue(-1) {}
-
597
-
605 color_16M(ground t, short r, short g, short b)
-
606 : color(ansi::colors_16M, t), red(r), green(g), blue(b) {}
-
607
-
615 color_16M(ground t, const std::string& srgb) : color(ansi::colors_16M, t)
-
616 {
-
617 assert(srgb.size() == 7);
-
618 if(srgb.size() != 7) {
-
619 red = -1;
-
620 green = -1;
-
621 blue = -1;
-
622 } else {
-
623 char i = 0;
-
624 if(srgb.at(0) == '#') {
-
625 i = 1;
-
626 }
-
627 std::istringstream(srgb.substr(0+i,2)) >> std::hex >> red;
-
628 std::istringstream(srgb.substr(2+i,2)) >> std::hex >> green;
-
629 std::istringstream(srgb.substr(4+i,2)) >> std::hex >> blue;
-
630 }
-
631 assert(-1 <= red and red <= 255);
-
632 assert(-1 <= green and green <= 255);
-
633 assert(-1 <= blue and blue <= 255);
-
634 }
-
635
-
637 bool is_set() const {return red > -1 and green > -1 and blue > -1;}
-
638
-
640 std::ostream& print_on( std::ostream& os) const
-
641 {
-
642 os << red << ";" << green << ";" << blue;
-
643 return os;
-
644 }
-
645 };
-
646
-
648 struct fg_16M : public color_16M {
-
650 fg_16M() : color_16M(ground::fore) {}
-
651
-
660 fg_16M(short r, short g, short b) : color_16M(ground::fore, r,g,b) {}
-
661
-
668 fg_16M(const std::string& srgb) : color_16M(ground::fore, srgb) {}
-
669
-
673 fg_16M(const fg&) : color_16M(ground::fore, -1,-1,-1) {}
-
674
- -
676
-
678 struct bg_16M : public color_16M {
-
680 bg_16M() : color_16M(ground::back) {}
-
681
-
690 bg_16M(short r, short g, short b) : color_16M(ground::back, r,g,b) {}
-
691
-
698 bg_16M(const std::string& srgb) : color_16M(ground::back, srgb) {}
-
699
-
703 bg_16M(const bg&) : color_16M(ground::back, -1,-1,-1) {}
-
704
- -
706
-
709 public:
-
711 fmt() : mode(ansi::colors_16), style(typo::none), fore(fg::none), back(bg::none) {}
-
712
-
715 explicit fmt( fg f, bg b = bg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
716 explicit fmt( fg f, typo s , bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
717 explicit fmt( bg b, fg f = fg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
718 explicit fmt( bg b, typo s , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
719 explicit fmt(typo s, fg f = fg::none, bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
720 explicit fmt(typo s, bg b , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
725 explicit fmt(const short f, const short b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(b) {}
-
726 explicit fmt(const short f, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(bg::none) {}
-
727 explicit fmt(fg, const short b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(fg::none), back_256(b) {}
-
728 explicit fmt(const short f, bg, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(bg::none) {}
-
733 explicit fmt(const short fr, const short fg, const short fb,
-
734 const short gr, const short gg, const short gb,
-
735 typo s = typo::none)
-
736 : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(gr,gg,gb) {}
-
737 explicit fmt(fg,
-
738 const short gr, const short gg, const short gb,
-
739 typo s = typo::none)
-
740 : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(gr,gg,gb) {}
-
741 explicit fmt(const short fr, const short fg, const short fb,
-
742 bg, typo s = typo::none)
-
743 : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {}
-
744 explicit fmt(const short fr, const short fg, const short fb,
-
745 typo s = typo::none)
-
746 : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {}
-
747
-
748 explicit fmt(const std::string& f, const std::string& b, typo s = typo::none)
-
749 : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(b) {}
-
750 explicit fmt(fg, const std::string& b, typo s = typo::none)
-
751 : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(b) {}
-
752 explicit fmt(const std::string& f, bg, typo s = typo::none)
-
753 : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {}
-
754 explicit fmt(const std::string& f, typo s = typo::none)
-
755 : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {}
-
758 protected:
-
759
-
761 std::ostream& print_on( std::ostream& os) const
-
762 {
-
763 if(mode == ansi::colors_16) {
-
764 // Print all in a single escape.
-
765 os << std::make_tuple(fore,back,style);
-
766
-
767 } else {
-
768 // 256 or 16M: always print separated escapes for foreground/background.
-
769 if(mode == ansi::colors_256) {
-
770 os << fore_256;
-
771 os << back_256;
-
772
-
773 } else if(mode == ansi::colors_16M) {
-
774 os << fore_16M;
-
775 os << back_16M;
-
776 }
-
777 // In any case, print the style separately.
-
778 os << style;
-
779 }
-
780 return os;
-
781 }
-
782
-
783 public:
-
795 friend std::ostream& operator<<(std::ostream& os, const fmt& fmt)
-
796 {
-
797 return fmt.print_on(os);
-
798 }
-
799
-
810 std::string operator()( const std::string& msg ) const
-
811 {
-
812 std::ostringstream os;
-
813 this->print_on(os);
-
814 fmt reset(fmt::typo::reset);
-
815 os << msg;
-
816 reset.print_on(os);
-
817 return os.str();
-
818 }
-
819
-
822 std::string str() const
-
823 {
-
824 std::ostringstream os;
-
825 this->print_on(os);
-
826 return os.str();
-
827 }
-
828
-
829 static fmt hash( const std::string& str, const std::vector<fmt> domain = {})
-
830 {
-
831 size_t h = std::hash<std::string>{}(str);
-
832 if(domain.size() == 0) {
-
833 return fmt(static_cast<short>(h % 256));
-
834 } else {
-
835 return domain[h % domain.size()];
-
836 }
-
837 }
-
838 }; // fmt class
-
839
-
845 public:
-
846 clutchlog(clutchlog const&) = delete;
-
847 void operator=(clutchlog const&) = delete;
-
848
-
849 private:
-
850 clutchlog() :
-
851 // system, main, log
- - -
854 {level::critical,"Critical"},
-
855 {level::error ,"Error"},
-
856 {level::warning ,"Warning"},
-
857 {level::progress,"Progress"},
-
858 {level::note ,"Note"},
-
859 {level::info ,"Info"},
-
860 {level::debug ,"Debug"},
-
861 {level::xdebug ,"XDebug"}
-
862 }),
- -
864 {level::critical, "Crit"},
-
865 {level::error , "Erro"},
-
866 {level::warning , "Warn"},
-
867 {level::progress, "Prog"},
-
868 {level::note , "Note"},
-
869 {level::info , "Info"},
-
870 {level::debug , "Dbug"},
-
871 {level::xdebug , "XDbg"}
-
872 }),
-
873 _level_fmt({
-
874 {level::critical,fmt(fmt::fg::red, fmt::typo::underline)},
-
875 {level::error ,fmt(fmt::fg::red, fmt::typo::bold)},
-
876 {level::warning ,fmt(fmt::fg::magenta, fmt::typo::bold)},
-
877 {level::progress,fmt()},
-
878 {level::note ,fmt()},
-
879 {level::info ,fmt()},
-
880 {level::debug ,fmt()},
-
881 {level::xdebug ,fmt()}
-
882 }),
- - -
885 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
- -
887 _hfill_fmt(fmt::fg::none),
- - -
890 #endif
-
891 _out(&std::clog),
-
892 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
893 _depth(std::numeric_limits<size_t>::max() - _strip_calls),
- -
895 #endif
-
896 _stage(level::error),
-
897 _in_file(".*"),
-
898 _in_func(".*"),
-
899 _in_line(".*"),
-
900 // Empty vectors by default:
-
901 // _filehash_fmts
-
902 // _funchash_fmts
-
903 // _depth_fmts
-
904 _filename(filename::path)
-
905 {
-
906 // Reverse the level->word map into a word->level map.
-
907 for(auto& lw : _level_word) {
-
908 _word_level[lw.second] = lw.first;
-
909 }
-
910#if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
-
911 struct winsize w;
-
912 ioctl(STDERR_FILENO, TIOCGWINSZ, &w);
-
913 _nb_columns = std::max(std::min((size_t)w.ws_col, default_hfill_max), default_hfill_min);
-
914#endif
-
915 }
-
916
-
917 protected:
- -
921 const std::map<level,std::string> _level_word;
-
923 std::map<std::string,level> _word_level;
-
925 std::map<level,std::string> _level_short;
-
927 std::map<level,fmt> _level_fmt;
-
929 std::string _format_log;
-
931 std::string _format_dump;
-
932 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
-
934 char _hfill_char;
-
936 fmt _hfill_fmt;
-
938 size_t _hfill_max;
-
940 size_t _hfill_min;
-
941 #endif
-
943 std::ostream* _out;
-
944 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
946 size_t _depth;
-
948 std::string _depth_mark;
-
949 #endif
- -
953 std::regex _in_file;
-
955 std::regex _in_func;
-
957 std::regex _in_line;
-
958
-
960 std::vector<fmt> _filehash_fmts;
-
962 std::vector<fmt> _funchash_fmts;
-
963
-
964#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
966 static const size_t _max_buffer = 4096;
-
968 std::vector<fmt> _depth_fmts;
-
969#endif
-
970
-
971#if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
-
973 size_t _nb_columns;
-
974#endif
-
975
- -
980 public:
-
981
-
986 void format(const std::string& format) {_format_log = format;}
-
988 std::string format() const {return _format_log;}
-
989
-
991 void format_comment(const std::string& format) {_format_dump = format;}
-
993 std::string format_comment() const {return _format_dump;}
-
994
-
996 void out(std::ostream& out) {_out = &out;}
-
998 std::ostream& out() {return *_out;}
-
999
-
1000#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1002 void depth(size_t d) {_depth = d;}
-
1004 size_t depth() const {return _depth;}
-
1005
-
1007 void depth_mark(const std::string mark) {_depth_mark = mark;}
-
1009 std::string depth_mark() const {return _depth_mark;}
-
1010
-
1012 void strip_calls(const size_t n) {_strip_calls = n;}
-
1014 size_t strip_calls() const {return _strip_calls;}
-
1015#endif
-
1016#if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
-
1018 void hfill_mark(const char mark) {_hfill_char = mark;}
-
1020 char hfill_mark() const {return _hfill_char;}
-
1022 void hfill_style(fmt style) {_hfill_fmt = style;}
-
1027 template<class ... FMT>
-
1028 void hfill_style(FMT... styles) { this->hfill_style(fmt(styles...)); }
-
1030 fmt hfill_style() const {return _hfill_fmt;}
-
1032 void hfill_max(const size_t nmax) {_hfill_max = nmax;}
-
1034 size_t hfill_max() {return _hfill_max;}
-
1036 void hfill_min(const size_t nmin) {_hfill_min = nmin;}
-
1038 size_t hfill_min() {return _hfill_min;}
-
1039#endif
-
1047 void filehash_styles(std::vector<fmt> styles) {_filehash_fmts = styles;}
-
1055 void funchash_styles(std::vector<fmt> styles) {_funchash_fmts = styles;}
-
1064 void depth_styles(std::vector<fmt> styles) {_depth_fmts = styles;}
-
1065
-
1067 void threshold(level l) {_stage = l;}
-
1069 void threshold(const std::string& l) {_stage = this->level_of(l);}
-
1071 level threshold() const {return _stage;}
-
1073 const std::map<std::string,level>& levels() const { return _word_level;}
-
1074
-
1079 level level_of(const std::string name)
-
1080 {
-
1081 const auto ilevel = _word_level.find(name);
-
1082 if( ilevel != std::end(_word_level)) {
-
1083 return ilevel->second;
-
1084 } else {
-
1085 throw std::out_of_range("'" + name + "' is not a valid log level name");
-
1086 }
-
1087 }
-
1088
-
1090 void file(std::string file) {_in_file = file;}
-
1092 void func(std::string func) {_in_func = func;}
-
1094 void line(std::string line) {_in_line = line;}
-
1095
- -
1098 const std::string& in_file,
-
1099 const std::string& in_function=".*",
-
1100 const std::string& in_line=".*"
-
1101 )
-
1102 {
-
1103 file(in_file);
-
1104 func(in_function);
-
1105 line(in_line);
-
1106 }
-
1107
-
1112 template<class ... FMT>
-
1113 void style(level stage, FMT... styles) { this->style(stage,fmt(styles...)); }
-
1115 void style(level stage, fmt style) { _level_fmt.at(stage) = style; }
-
1117 fmt style(level stage) const { return _level_fmt.at(stage); }
-
1118
- -
1121
-
1124 public:
-
1125
-
1130 struct scope_t {
- - -
1135#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1137 size_t depth;
-
1138#endif
-
1140 bool there;
- -
1143 matches(false),
-
1144 stage(level::xdebug),
- -
1146 depth(0),
-
1147#endif
-
1148 there(false)
-
1149 {}
-
1150 }; // scope_t
-
1151
-
1152
- -
1155 const level& stage,
-
1156 const std::string& file,
-
1157 const std::string& func,
-
1158 const size_t line
-
1159 ) const
-
1160 {
-
1161 scope_t scope; // False scope by default.
-
1162
-
1163 /***** Log level stage *****/
-
1164 // Test stage first, because it's fastest.
-
1165 scope.stage = stage;
-
1166 if(not (scope.stage <= _stage)) {
-
1167 // Bypass useless computations if no match
-
1168 // because of the stage.
-
1169 return scope;
-
1170 }
-
1171#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1172 /***** Stack depth *****/
-
1173 // Backtrace in second, quite fast.
-
1174 size_t stack_depth;
-
1175 void *buffer[_max_buffer];
-
1176 stack_depth = backtrace(buffer, _max_buffer);
-
1177 scope.depth = stack_depth;
-
1178 if(not (scope.depth <= _depth + _strip_calls)) {
-
1179 // Bypass if no match.
-
1180 return scope;
-
1181 }
-
1182#endif
-
1183
-
1184 /***** Location *****/
-
1185 // Location last, slowest.
-
1186 std::ostringstream sline; sline << line;
-
1187 scope.there =
-
1188 std::regex_search(file, _in_file)
-
1189 and std::regex_search(func, _in_func)
-
1190 and std::regex_search(sline.str(), _in_line);
-
1191
-
1192 // No need to retest stage and depth, which are true here.
-
1193 scope.matches = scope.there;
-
1194
-
1195 return scope;
-
1196 } // locate
-
1197
-
1205 std::string replace(
-
1206 const std::string& form,
-
1207 const std::string& mark,
-
1208 const std::string& tag
-
1209 ) const
-
1210 {
-
1211 // Useless debug code, unless something fancy would be done with name tags.
-
1212 // std::regex re;
-
1213 // try {
-
1214 // re = std::regex(mark);
-
1215 //
-
1216 // } catch(const std::regex_error& e) {
-
1217 // std::cerr << "ERROR with a regular expression \"" << mark << "\": ";
-
1218 // switch(e.code()) {
-
1219 // case std::regex_constants::error_collate:
-
1220 // std::cerr << "the expression contains an invalid collating element name";
-
1221 // break;
-
1222 // case std::regex_constants::error_ctype:
-
1223 // std::cerr << "the expression contains an invalid character class name";
-
1224 // break;
-
1225 // case std::regex_constants::error_escape:
-
1226 // std::cerr << "the expression contains an invalid escaped character or a trailing escape";
-
1227 // break;
-
1228 // case std::regex_constants::error_backref:
-
1229 // std::cerr << "the expression contains an invalid back reference";
-
1230 // break;
-
1231 // case std::regex_constants::error_brack:
-
1232 // std::cerr << "the expression contains mismatched square brackets ('[' and ']')";
-
1233 // break;
-
1234 // case std::regex_constants::error_paren:
-
1235 // std::cerr << "the expression contains mismatched parentheses ('(' and ')')";
-
1236 // break;
-
1237 // case std::regex_constants::error_brace:
-
1238 // std::cerr << "the expression contains mismatched curly braces ('{' and '}')";
-
1239 // break;
-
1240 // case std::regex_constants::error_badbrace:
-
1241 // std::cerr << "the expression contains an invalid range in a {} expression";
-
1242 // break;
-
1243 // case std::regex_constants::error_range:
-
1244 // std::cerr << "the expression contains an invalid character range (e.g. [b-a])";
-
1245 // break;
-
1246 // case std::regex_constants::error_space:
-
1247 // std::cerr << "there was not enough memory to convert the expression into a finite state machine";
-
1248 // break;
-
1249 // case std::regex_constants::error_badrepeat:
-
1250 // std::cerr << "one of *?+{ was not preceded by a valid regular expression";
-
1251 // break;
-
1252 // case std::regex_constants::error_complexity:
-
1253 // std::cerr << "the complexity of an attempted match exceeded a predefined level";
-
1254 // break;
-
1255 // case std::regex_constants::error_stack:
-
1256 // std::cerr << "there was not enough memory to perform a match";
-
1257 // break;
-
1258 // default:
-
1259 // std::cerr << "unknown error";
-
1260 // }
-
1261 // std::cerr << std::endl;
-
1262 // throw;
-
1263 // } // catch
-
1264
-
1265 const std::regex re(mark);
-
1266 return std::regex_replace(form, re, tag);
-
1267 }
-
1268
-
1270 std::string replace(
-
1271 const std::string& form,
-
1272 const std::string& mark,
-
1273 const size_t tag
-
1274 ) const
-
1275 {
-
1276 std::ostringstream stag; stag << tag;
-
1277 return replace(form, mark, stag.str());
-
1278 }
-
1279
-
1281 std::string format(
-
1282 std::string row,
-
1283 const std::string& what,
- -
1285 const std::string& name,
-
1286#endif
-
1287 const level& stage,
-
1288 const std::string& file,
-
1289 const std::string& func,
-
1290 const size_t line
- -
1292 ,
-
1293 const size_t depth
-
1294#endif
-
1295 ) const
-
1296 {
-
1297 row = replace(row, "\\{msg\\}", what);
-
1298
-
1299 const std::filesystem::path filepath(file);
-
1300 std::string filename;
-
1301 std::filesystem::path::iterator ip = filepath.end();
-
1302 std::advance(ip, -2);
-
1303 switch(_filename) {
-
1304 case filename::base:
-
1305 filename = filepath.filename().string();
-
1306 break;
-
1307 case filename::dir:
-
1308 filename = ip->string();
-
1309 break;
-
1310 case filename::dirbase:
-
1311 filename = (*ip / filepath.filename()).string();
-
1312 break;
-
1313 case filename::stem:
-
1314 filename = filepath.stem().string();
-
1315 break;
-
1316 case filename::dirstem:
-
1317 filename = (*ip / filepath.stem()).string();
-
1318 break;
-
1319 case filename::path:
-
1320 default:
-
1321 filename = file;
-
1322 break;
-
1323 }
-
1324 row = replace(row, "\\{file\\}", filename);
-
1325
-
1326
-
1327 row = replace(row, "\\{func\\}", func);
-
1328 row = replace(row, "\\{line\\}", line);
-
1329
-
1330 row = replace(row, "\\{level\\}", _level_word.at(stage));
-
1331 std::string letter(1, _level_word.at(stage).at(0)); // char -> string
-
1332 row = replace(row, "\\{level_letter\\}", letter);
-
1333 row = replace(row, "\\{level_short\\}", _level_short.at(stage));
-
1334
-
1335#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1336 size_t actual_depth = depth - _strip_calls;
-
1337 row = replace(row, "\\{name\\}", name);
-
1338 row = replace(row, "\\{depth\\}", actual_depth);
-
1339
-
1340 if(_depth_fmts.size() == 0) {
-
1341 row = replace(row, "\\{depth_fmt\\}", fmt(actual_depth % 256).str() );
-
1342
-
1343 std::ostringstream chevrons;
-
1344 for(size_t i = 0; i < actual_depth; ++i) {
-
1345 chevrons << _depth_mark;
-
1346 }
-
1347 row = replace(row, "\\{depth_marks\\}", chevrons.str());
-
1348
-
1349 } else {
-
1350 row = replace(row, "\\{depth_fmt\\}",
-
1351 _depth_fmts[std::min(actual_depth,_depth_fmts.size()-1)].str() );
-
1352
-
1353 std::ostringstream chevrons;
-
1354 for(size_t i = 0; i < actual_depth; ++i) {
-
1355 chevrons << _depth_fmts[std::min(i+1,_depth_fmts.size()-1)].str()
-
1356 << _depth_mark;
-
1357 }
-
1358 row = replace(row, "\\{depth_marks\\}", chevrons.str());
-
1359 }
-
1360#endif
-
1361 row = replace(row, "\\{level_fmt\\}", _level_fmt.at(stage).str());
-
1362 row = replace(row, "\\{filehash_fmt\\}", fmt::hash(file, _filehash_fmts).str() );
-
1363 row = replace(row, "\\{funchash_fmt\\}", fmt::hash(func, _funchash_fmts).str() );
-
1364
-
1365#if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
-
1366 // hfill is replaced last to allow for correct line width estimation.
-
1367 const std::string raw_row = replace(row, "(\\x9B|\\x1B\\[)[0-?]*[ -\\/]*[@-~]", "");
-
1368 const std::string hfill_tag = "{hfill}";
-
1369 const size_t hfill_pos = row.find(hfill_tag);
-
1370 const size_t raw_hfill_pos = raw_row.find(hfill_tag);
-
1371 const size_t nb_columns = std::max(std::min((size_t)_nb_columns, _hfill_max), _hfill_min);
-
1372 if(hfill_pos != std::string::npos) {
-
1373 assert(raw_hfill_pos != std::string::npos);
-
1374 if(nb_columns > 0) {
-
1375 const size_t left_len = raw_hfill_pos;
-
1376 const size_t right_len = raw_row.size() - raw_hfill_pos - hfill_tag.size();
-
1377 if(right_len+left_len > nb_columns) {
-
1378 // The right part would go over the terminal width: add a new row.
-
1379 if(right_len < nb_columns) {
-
1380 // There is room for the right part on a new line.
-
1381 const std::string hfill(std::max((size_t)0, nb_columns-right_len), _hfill_char);
-
1382 const std::string hfill_styled = _hfill_fmt(hfill);
-
1383 row = replace(row, "\\{hfill\\}", "\n"+hfill_styled);
-
1384 } else {
-
1385 // Right part still goes over columns: let it go.
-
1386 const std::string hfill(1, _hfill_char);
-
1387 const std::string hfill_styled = _hfill_fmt(hfill);
-
1388 row = replace(row, "\\{hfill\\}", "\n"+hfill_styled);
-
1389 }
-
1390 } else {
-
1391 // There is some space in between left and right parts.
-
1392 const std::string hfill(std::max((size_t)0, nb_columns - (right_len+left_len)), _hfill_char);
-
1393 const std::string hfill_styled = _hfill_fmt(hfill);
-
1394 row = replace(row, "\\{hfill\\}", hfill_styled);
-
1395 }
-
1396 } else {
-
1397 // We don't know the terminal width.
-
1398 const std::string hfill(1, _hfill_char);
-
1399 const std::string hfill_styled = _hfill_fmt(hfill);
-
1400 row = replace(row, "\\{hfill\\}", hfill_styled);
-
1401 }
-
1402 }
-
1403#else
-
1404 // We cannot know the terminal width.
-
1405 const std::string hfill(1, _hfill_char);
-
1406 const std::string hfill_styled = _hfill_fmt(hfill);
-
1407 row = replace(row, "\\{hfill\\}", hfill_styled);
-
1408#endif
-
1409 return _level_fmt.at(stage)(row);
-
1410 }
-
1411
-
1413 void log(
-
1414 const level& stage,
-
1415 const std::string& what,
-
1416 const std::string& file, const std::string& func, const size_t line,
-
1417 const size_t depth_delta = 0
-
1418 ) const
-
1419 {
-
1420 scope_t scope = locate(stage, file, func, line);
-
1421
-
1422 if(scope.matches) {
-
1423#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1424 *_out << format(_format_log, what, basename(getenv("_")),
-
1425 stage, file, func,
-
1426 line, scope.depth + depth_delta );
-
1427#else
-
1428 *_out << format(_format_log, what,
-
1429 stage, file, func,
-
1430 line );
-
1431#endif
-
1432 _out->flush();
-
1433 } // if scopes.matches
-
1434 }
-
1435
-
1437 template<class In>
-
1438 void dump(
-
1439 const level& stage,
-
1440 const In container_begin, const In container_end,
-
1441 const std::string& file, const std::string& func, const size_t line,
-
1442 const std::string& filename_template = "dump_{n}.dat",
-
1443 const std::string sep = dump_default_sep
-
1444 ) const
-
1445 {
-
1446 scope_t scope = locate(stage, file, func, line);
-
1447
-
1448 if(scope.matches) {
-
1449 const std::string tag = "\\{n\\}";
-
1450 const std::regex re(tag);
-
1451 std::string outfile = "";
-
1452
-
1453 // If the file name template has the {n} tag.
-
1454 if(std::regex_search(filename_template, re)) {
-
1455 // Increment n until a free one is found.
-
1456 size_t n = 0;
-
1457 do {
-
1458 outfile = replace(filename_template, tag, n);
-
1459 n++;
-
1460 } while( fs::exists( outfile ) );
-
1461
-
1462 } else {
-
1463 // Use the parameter as is.
-
1464 outfile = filename_template;
-
1465 }
-
1466
-
1467 std::ofstream fd(outfile);
-
1468
-
1469 if(_format_dump.size() > 0) {
-
1470#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1471 fd << format(_format_dump, "", basename(getenv("_")),
-
1472 stage, file, func,
-
1473 line, scope.depth );
-
1474#else
-
1475 fd << format(_format_dump, "",
-
1476 stage, file, func,
-
1477 line );
-
1478#endif
-
1479 fd << sep; // sep after comment line.
-
1480 }
-
1481
-
1482 std::copy(container_begin, container_end,
-
1483 std::ostream_iterator<typename In::value_type>(fd, sep.c_str()));
-
1484
-
1485 fd.close();
-
1486 } // if scopes.matches
-
1487 }
-
1488
-
1490};
-
1491
-
1494#else // not WITH_CLUTCHLOG
-
1495
-
1496
-
1497/**********************************************************************
-
1498 * Fake implementation
-
1499 **********************************************************************/
-
1500
-
1501// Equivalent class with empty methods, will be optimized out
-
1502// while allowing to actually have calls implemented without WITH_CLUTCHLOG guards.
-
1503#pragma GCC diagnostic push
-
1504#pragma GCC diagnostic ignored "-Wreturn-type"
-
1505class clutchlog
-
1506{
-
1507 public:
-
1508 static clutchlog& logger() {
-
1509 static clutchlog instance;
-
1510 return instance;
-
1511 }
-
1512 enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
-
1513 enum filename {path, base, dir, dirbase, stem, dirstem};
-
1514 class fmt {
-
1515 public:
-
1516 enum class ansi { colors_16, colors_256, colors_16M} mode;
-
1517 enum class typo { reset, bold, underline, inverse, none} style;
-
1518 enum class fg { black, red, green, yellow, blue, magenta, cyan, white, bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white, none} fore;
-
1519 enum class bg { black, red, green, yellow, blue, magenta, cyan, white, bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white, none } back;
-
1520 protected:
-
1521 friend std::ostream& operator<<(std::ostream&, const std::tuple<fg,bg,typo>&) {}
-
1522 friend std::ostream& operator<<(std::ostream&, const typo&) {}
-
1523 protected:
-
1524 struct color {
-
1525 ansi mode;
-
1526 enum class ground { fore, back } type;
-
1527 color(ansi a, ground g) : mode(a), type(g) {}
-
1528 virtual bool is_set() const = 0;
-
1529 virtual std::ostream& print_on( std::ostream&) const = 0;
-
1530 friend std::ostream& operator<<(std::ostream&, const color&) {}
-
1531 };
-
1532 struct color_256 : public color {
-
1533 short index;
-
1534 color_256(ground t) : color(ansi::colors_256, t), index(-1) {}
-
1535 color_256(ground t, const short i) : color(ansi::colors_256, t), index(i) {}
-
1536 bool is_set() const {}
-
1537 std::ostream& print_on( std::ostream&) const {}
-
1538 };
-
1539 struct fg_256 : public color_256 {
-
1540 fg_256() : color_256(ground::fore) {}
-
1541 fg_256(const short f) : color_256(ground::fore, f) {}
-
1542 fg_256(const fg&) : color_256(ground::fore, -1) {}
-
1543 } fore_256;
-
1544 struct bg_256 : public color_256 {
-
1545 bg_256() : color_256(ground::back) {}
-
1546 bg_256(const short b) : color_256(ground::back, b) {}
-
1547 bg_256(const bg&) : color_256(ground::back, -1) {}
-
1548 } back_256;
-
1549 struct color_16M : public color {
-
1550 short red, green, blue;
-
1551 color_16M(ground t) : color(ansi::colors_16M, t), red(-1), green(-1), blue(-1) {}
-
1552 color_16M(ground t, short r, short g, short b) : color(ansi::colors_16M, t), red(r), green(g), blue(b) {}
-
1553 color_16M(ground t, const std::string&) : color(ansi::colors_16M, t) {}
-
1554 bool is_set() const {return red > -1 and green > -1 and blue > -1;}
-
1555 std::ostream& print_on( std::ostream&) const {}
-
1556 };
-
1557 struct fg_16M : public color_16M {
-
1558 fg_16M() : color_16M(ground::fore) {}
-
1559 fg_16M(short r, short g, short b) : color_16M(ground::fore, r,g,b) {}
-
1560 fg_16M(const std::string& srgb) : color_16M(ground::fore, srgb) {}
-
1561 fg_16M(const fg&) : color_16M(ground::fore, -1,-1,-1) {}
-
1562 } fore_16M;
-
1563 struct bg_16M : public color_16M {
-
1564 bg_16M() : color_16M(ground::back) {}
-
1565 bg_16M(short r, short g, short b) : color_16M(ground::back, r,g,b) {}
-
1566 bg_16M(const std::string& srgb) : color_16M(ground::back, srgb) {}
-
1567 bg_16M(const bg&) : color_16M(ground::back, -1,-1,-1) {}
-
1568 } back_16M;
-
1569 public:
-
1570 fmt() : mode(ansi::colors_16), style(typo::none), fore(fg::none), back(bg::none) {}
-
1571 fmt( fg f, bg b = bg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
1572 fmt( fg f, typo s , bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
1573 fmt( bg b, fg f = fg::none, typo s = typo::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
1574 fmt( bg b, typo s , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
1575 fmt(typo s, fg f = fg::none, bg b = bg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
1576 fmt(typo s, bg b , fg f = fg::none) : mode(ansi::colors_16), style(s), fore(f), back(b) {}
-
1577 fmt(fg_256 f, bg_256 b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(b) {}
-
1578 fmt(fg_256 f, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(f), back_256(bg::none) {}
-
1579 fmt(fg, bg_256 b, typo s = typo::none) : mode(ansi::colors_256), style(s), fore_256(fg::none), back_256(b) {}
-
1580 fmt(const short fr, const short fg, const short fb,
-
1581 const short gr, const short gg, const short gb,
-
1582 typo s = typo::none)
-
1583 : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(gr,gg,gb) {}
-
1584 fmt(fg,
-
1585 const short gr, const short gg, const short gb,
-
1586 typo s = typo::none)
-
1587 : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(gr,gg,gb) {}
-
1588 fmt(const short fr, const short fg, const short fb,
-
1589 bg, typo s = typo::none)
-
1590 : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {}
-
1591 fmt(const short fr, const short fg, const short fb,
-
1592 typo s = typo::none)
-
1593 : mode(ansi::colors_16M), style(s), fore_16M(fr,fg,fb), back_16M(bg::none) {}
-
1594
-
1595 fmt(const std::string& f, const std::string& b, typo s = typo::none)
-
1596 : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(b) {}
-
1597 fmt(fg, const std::string& b, typo s = typo::none)
-
1598 : mode(ansi::colors_16M), style(s), fore_16M(fg::none), back_16M(b) {}
-
1599 fmt(const std::string& f, bg, typo s = typo::none)
-
1600 : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {}
-
1601 fmt(const std::string& f, typo s = typo::none)
-
1602 : mode(ansi::colors_16M), style(s), fore_16M(f), back_16M(bg::none) {}
-
1603 protected:
-
1604 std::ostream& print_on( std::ostream&) const {}
-
1605 public:
-
1606 friend std::ostream& operator<<(std::ostream& os, const fmt&) { return os; }
-
1607 std::string operator()( const std::string& msg) const { return msg; }
-
1608 std::string str() const { return ""; }
-
1609 static fmt hash( const std::string&, const std::vector<fmt>) {}
-
1610 };
-
1611 public:
-
1612 clutchlog(clutchlog const&) = delete;
-
1613 void operator=(clutchlog const&) = delete;
-
1614 private:
-
1615 clutchlog() {}
-
1616 protected:
-
1617 struct scope_t {};
-
1618 scope_t locate(
-
1619 const level&,
-
1620 const std::string&,
-
1621 const std::string&,
-
1622 const size_t
-
1623 ) const
-
1624 {}
-
1625 public:
-
1626 void format(const std::string&) {}
-
1627 std::string format() const { return ""; }
-
1628
-
1629 void format_comment(const std::string&) {}
-
1630 std::string format_comment() const { return ""; }
-
1631
-
1632 void out(std::ostream&) {}
-
1633 std::ostream& out() {}
-
1634
-
1635#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
1636 void depth(size_t) {}
-
1637 size_t depth() const { return 0; }
-
1638
-
1639 void depth_mark(const std::string) {}
-
1640 std::string depth_mark() const { return ""; }
-
1641 void strip_calls(const size_t) {}
-
1642 size_t strip_calls() const { return 0; }
-
1643#endif
-
1644#if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
-
1645 void hfill_mark(const char) {}
-
1646 char hfill_mark() const { return '\0'; }
-
1647 void hfill_fmt(fmt) {}
-
1648 fmt hfill_fmt() const { return fmt(); }
-
1649 void hfill_min(const size_t) {}
-
1650 size_t hfill_min() { return 0; }
-
1651 void hfill_max(const size_t) {}
-
1652 size_t hfill_max() { return 0; }
-
1653#endif
-
1654 void filehash_styles(std::vector<fmt> ) {}
-
1655 void funchash_styles(std::vector<fmt> ) {}
-
1656 void depth_styles(std::vector<fmt>) {}
-
1657
-
1658 void threshold(level) {}
-
1659 void threshold(const std::string&) {}
-
1660 level threshold() const { return level::error; }
-
1661 const std::map<std::string,level> levels() const {}
-
1662 level level_of(const std::string) { return level::error; }
-
1663
-
1664 void file(std::string) {}
-
1665 void func(std::string) {}
-
1666 void line(std::string) {}
-
1667
-
1668#pragma GCC diagnostic push
-
1669#pragma GCC diagnostic ignored "-Wunused-parameter"
-
1670 void location(
-
1671 const std::string&,
-
1672 const std::string& in_function=".*",
-
1673 const std::string& in_line=".*"
-
1674 )
-
1675 {}
-
1676#pragma GCC diagnostic pop
-
1677 template<class ... FMT>
-
1678 void style(level, FMT...) {}
-
1679 void style(level, fmt) {}
-
1680 fmt style(level) const { return fmt(); }
-
1681 void filename(filename) {}
-
1682 public:
-
1683 std::string replace(
-
1684 const std::string& form,
-
1685 const std::string&,
-
1686 const std::string&
-
1687 ) const
-
1688 {
-
1689 return form;
-
1690 }
-
1691
-
1692 std::string replace(
-
1693 const std::string& form,
-
1694 const std::string&,
-
1695 const size_t
-
1696 ) const
-
1697 {
-
1698 return form;
-
1699 }
-
1700
-
1701 std::string format(
-
1702 std::string row,
-
1703 const std::string&,
- -
1705 const std::string&,
-
1706#endif
-
1707 const level&,
-
1708 const std::string&,
-
1709 const std::string&,
-
1710 const size_t
- -
1712 ,
-
1713 const size_t
-
1714#endif
-
1715 ) const
-
1716 {
-
1717 return row;
-
1718 }
-
1719
-
1720 void log(
-
1721 const level&,
-
1722 const std::string&,
-
1723 const std::string&, const std::string&, size_t
-
1724 ) const
-
1725 {}
-
1726
-
1727 template<class In>
-
1728 void dump(
-
1729 const level&,
-
1730 const In, const In,
-
1731 const std::string&, const std::string&, size_t,
-
1732 const std::string&,
-
1733 const std::string
-
1734 ) const
-
1735 {}
-
1736};
-
1737#pragma GCC diagnostic pop
-
1738#endif // WITH_CLUTCHLOG
-
1739
-
1740#endif // CLUTCHLOG_H
-
Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:380
-
enum clutchlog::fmt::ansi mode
Current ANSI color mode.
-
friend std::ostream & operator<<(std::ostream &os, const fmt &fmt)
Output stream overload.
Definition: clutchlog.h:795
-
enum clutchlog::fmt::typo style
Typographic style.
-
fmt()
Empty constructor, only useful for a no-op formatter.
Definition: clutchlog.h:711
-
ansi
ANSI code configuring the available number of colors.
Definition: clutchlog.h:383
-
@ colors_16M
16 millions ("true") colors mode.
-
@ colors_16
16 colors mode.
-
@ colors_256
256 colors mode.
-
typo
Typographic style codes.
Definition: clutchlog.h:393
-
std::string str() const
Return the formatting code as a string.
Definition: clutchlog.h:822
-
std::ostream & print_on(std::ostream &os) const
Print the currently encoded format escape code on the given output stream.
Definition: clutchlog.h:761
-
std::string operator()(const std::string &msg) const
Format the given string with the currently encoded format.
Definition: clutchlog.h:810
-
The single class which holds everything.
Definition: clutchlog.h:189
-
filename _filename
Filename rendering method.
Definition: clutchlog.h:977
-
void depth_styles(std::vector< fmt > styles)
Set the styles for value-dependant depth formatting.
Definition: clutchlog.h:1064
-
std::map< level, std::string > _level_short
dictionary of level identifier to their 4-letters representation.
Definition: clutchlog.h:925
-
std::vector< fmt > _funchash_fmts
List of candidate format objects for value-dependant function name styling.
Definition: clutchlog.h:962
-
static std::string default_format
Default format of the messages.
Definition: clutchlog.h:224
-
void file(std::string file)
Set the regular expression filtering the file location.
Definition: clutchlog.h:1090
-
level
Available log levels.
Definition: clutchlog.h:314
-
std::regex _in_func
Current function location filter.
Definition: clutchlog.h:955
-
void log(const level &stage, const std::string &what, const std::string &file, const std::string &func, const size_t line, const size_t depth_delta=0) const
Print a log message IF the location matches the given one.
Definition: clutchlog.h:1413
-
std::ostream * _out
Standard output.
Definition: clutchlog.h:943
-
static unsigned int default_strip_calls
Number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:267
-
void format_comment(const std::string &format)
Set the template string for dumps.
Definition: clutchlog.h:991
-
static std::string default_depth_mark
Default mark for stack depth.
Definition: clutchlog.h:260
-
std::vector< fmt > _filehash_fmts
List of candidate format objects for value-dependant file name styling.
Definition: clutchlog.h:960
-
size_t _strip_calls
Current number of call stack levels to remove from depth display.
Definition: clutchlog.h:919
-
void threshold(level l)
Set the log level (below which logs are not printed) with an identifier.
Definition: clutchlog.h:1067
-
std::regex _in_line
Current line location filter.
Definition: clutchlog.h:957
-
fmt style(level stage) const
Get the configured fmt instance of the given log level.
Definition: clutchlog.h:1117
-
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.
Definition: clutchlog.h:1154
-
static size_t default_hfill_min
Default minimum width (number of characters) at which to fill for right-aligning the right part of me...
Definition: clutchlog.h:288
-
std::string _format_dump
Current format of the file output.
Definition: clutchlog.h:931
-
void format(const std::string &format)
Set the template string.
Definition: clutchlog.h:986
-
void location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
Set the regular expressions filtering the location.
Definition: clutchlog.h:1097
-
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:307
-
static char default_hfill_char
Default character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:274
-
void threshold(const std::string &l)
Set the log level (below which logs are not printed) with a string.
Definition: clutchlog.h:1069
-
std::string _format_log
Current format of the standard output.
Definition: clutchlog.h:929
-
void out(std::ostream &out)
Set the output stream on which to print.
Definition: clutchlog.h:996
-
filename
Available filename rendering methods.
Definition: clutchlog.h:317
-
void filename(filename f)
Sets the file naming scheme. *‍/.
Definition: clutchlog.h:1120
-
const std::map< std::string, level > & levels() const
Get the map of available log levels string representations toward their identifier....
Definition: clutchlog.h:1073
-
std::string replace(const std::string &form, const std::string &mark, const std::string &tag) const
Replace mark by tag in form.
Definition: clutchlog.h:1205
-
void line(std::string line)
Set the regular expression filtering the line location.
Definition: clutchlog.h:1094
-
std::string format_comment() const
Get the template string for dumps.
Definition: clutchlog.h:993
-
const std::map< level, std::string > _level_word
Dictionary of level identifier to their string representation.
Definition: clutchlog.h:921
-
level threshold() const
Get the log level below which logs are not printed.
Definition: clutchlog.h:1071
-
void dump(const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, const size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=dump_default_sep) const
Dump a serializable container after a comment line with log information.
Definition: clutchlog.h:1438
-
std::ostream & out()
Get the output stream on which to print.
Definition: clutchlog.h:998
-
std::map< level, fmt > _level_fmt
Dictionary of level identifier to their format.
Definition: clutchlog.h:927
-
std::map< std::string, level > _word_level
Dictionary of level string to their identifier.
Definition: clutchlog.h:923
-
std::string format(std::string row, 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 corre...
Definition: clutchlog.h:1281
-
void style(level stage, FMT... styles)
Set the style (color and typo) of the given log level.
Definition: clutchlog.h:1113
-
static size_t default_hfill_max
Default maximum width (number of characters) for which to fill for right-aligning the right part of m...
Definition: clutchlog.h:286
-
void funchash_styles(std::vector< fmt > styles)
Set the candidate styles for value-dependant function name formatting.
Definition: clutchlog.h:1055
-
static std::string dump_default_format
Default format of the comment line in file dump.
Definition: clutchlog.h:246
-
level level_of(const std::string name)
Return the log level tag corresponding to the given pre-configured name.
Definition: clutchlog.h:1079
-
void style(level stage, fmt style)
Set the style (color and typo) of the given log level, passing a fmt instance.
Definition: clutchlog.h:1115
-
void func(std::string func)
Set the regular expression filtering the function location.
Definition: clutchlog.h:1092
-
std::regex _in_file
Current file location filter.
Definition: clutchlog.h:953
-
void filehash_styles(std::vector< fmt > styles)
Set the candidate styles for value-dependant file name formatting.
Definition: clutchlog.h:1047
-
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.
Definition: clutchlog.h:1270
-
level _stage
Current log level.
Definition: clutchlog.h:951
-
static std::string dump_default_sep
Default item separator for dump.
Definition: clutchlog.h:253
-
std::string format() const
Get the template string.
Definition: clutchlog.h:988
-
#define CLUTCHLOG_HAVE_UNIX_SYSINFO
True if POSIX headers necessary for stack depth management are available.
Definition: clutchlog.h:34
-
#define CLUTCHDUMP_DEFAULT_FORMAT
Compile-time default format of the comment line in file dump.
Definition: clutchlog.h:232
-
#define CLUTCHLOG_DEFAULT_FORMAT
Definition: clutchlog.h:209
-
bg
Background color codes.
Definition: clutchlog.h:425
-
fg
Foreground color codes.
Definition: clutchlog.h:404
-
enum clutchlog::fmt::fg fore
Foreground color.
-
enum clutchlog::fmt::bg back
Background color.
-
friend std::ostream & operator<<(std::ostream &os, const typo &s)
Output stream operator for a typo tag alone, in 16-colors mode.
Definition: clutchlog.h:469
-
friend std::ostream & operator<<(std::ostream &os, const std::tuple< fg, bg, typo > &fbs)
Output stream operator for a 3-tuple of 16-colors mode tags.
Definition: clutchlog.h:447
-
clutchlog::fmt::bg_256 back_256
Current background in 256-colors mode.
-
clutchlog::fmt::fg_16M fore_16M
Current foreground in 16M-colors mode.
-
clutchlog::fmt::bg_16M back_16M
Current background in 16M-colors mode.
-
clutchlog::fmt::fg_256 fore_256
Current foreground in 256-colors mode.
-
background in 256-colors mode.
Definition: clutchlog.h:678
-
bg_16M()
Empty constructor: no color.
Definition: clutchlog.h:680
-
bg_16M(const bg &)
Conversion constructor from 16-colors mode.
Definition: clutchlog.h:703
-
bg_16M(short r, short g, short b)
Numeric triplet constructor.
Definition: clutchlog.h:690
-
bg_16M(const std::string &srgb)
Hex triplet string constructor.
Definition: clutchlog.h:698
-
Background in 256-colors mode.
Definition: clutchlog.h:570
-
bg_256(const bg &)
Conversion constructor from 16-colors mode.
Definition: clutchlog.h:582
-
bg_256()
Empty constructor: no color.
Definition: clutchlog.h:572
-
bg_256(const short b)
Constructor.
Definition: clutchlog.h:577
-
Abstract base class for 16M colors objects (24-bits ANSI).
Definition: clutchlog.h:587
-
short red
The encoded RGB indices.
Definition: clutchlog.h:591
-
color_16M(ground t, short r, short g, short b)
Numeric triplet constructor.
Definition: clutchlog.h:605
-
color_16M(ground t, const std::string &srgb)
Hex triplet string constructor.
Definition: clutchlog.h:615
-
bool is_set() const
Returns true if the underying representation encodes an existing color.
Definition: clutchlog.h:637
-
std::ostream & print_on(std::ostream &os) const
Print the color RGB triplet on the given stream.
Definition: clutchlog.h:640
-
color_16M(ground t)
Constructor.
Definition: clutchlog.h:596
-
Abstract base class for 256 colors objects (8-bits ANSI).
Definition: clutchlog.h:523
-
color_256(ground t)
Constructor.
Definition: clutchlog.h:532
-
color_256(ground t, const short i)
Constructor.
Definition: clutchlog.h:539
-
short index
The encoded color index in 4-bits ANSI.
Definition: clutchlog.h:527
-
std::ostream & print_on(std::ostream &os) const
Print the color index on the given stream.
Definition: clutchlog.h:545
-
bool is_set() const
Returns true if the underying representation encodes an existing color.
Definition: clutchlog.h:542
-
Interface class for colors representation.
Definition: clutchlog.h:484
-
virtual std::ostream & print_on(std::ostream &os) const =0
Should print the underlying representation on the given stream.
-
enum clutchlog::fmt::color::ground type
Type of color (foreground or background).
-
friend std::ostream & operator<<(std::ostream &os, const color &c)
Print the actually encoded escaped color sequence on the given stream.
Definition: clutchlog.h:507
-
color(ansi a, ground g)
Constructor.
Definition: clutchlog.h:498
-
virtual bool is_set() const =0
Should return true if the underying representation encodes an existing color.
-
ground
Codes for representing foreground or background.
Definition: clutchlog.h:488
-
Foreground in 256-colors mode.
Definition: clutchlog.h:648
-
fg_16M(short r, short g, short b)
Numeric triplet constructor.
Definition: clutchlog.h:660
-
fg_16M()
Empty constructor: no color.
Definition: clutchlog.h:650
-
fg_16M(const fg &)
Conversion constructor from 16-colors mode.
Definition: clutchlog.h:673
-
fg_16M(const std::string &srgb)
Hex triplet string constructor.
Definition: clutchlog.h:668
-
Foreground in 256-colors mode.
Definition: clutchlog.h:553
-
fg_256(const fg &)
Conversion constructor from 16-colors mode.
Definition: clutchlog.h:565
-
fg_256(const short f)
Constructor.
Definition: clutchlog.h:560
-
fg_256()
Empty constructor: no color.
Definition: clutchlog.h:555
-
Structure holding a location matching.
Definition: clutchlog.h:1130
-
scope_t()
Constructor.
Definition: clutchlog.h:1142
-
bool there
Location is compatible.
Definition: clutchlog.h:1140
-
level stage
Current log level.
Definition: clutchlog.h:1134
-
bool matches
Everything is compatible.
Definition: clutchlog.h:1132
+Go to the documentation of this file.
1 #pragma once
+
2 #ifndef CLUTCHLOG_H
+
3 #define CLUTCHLOG_H
+
5 
+
7 #include <ciso646>
+
8  #ifdef FSEXPERIMENTAL
+
9  #include <experimental/filesystem>
+
10  namespace fs = std::experimental::filesystem;
+
11 #else
+
12  #include <filesystem>
+
13  namespace fs = std::filesystem;
+
14 #endif
+
15 
+
16 #include <iostream>
+
17 #include <sstream>
+
18 #include <fstream>
+
19 #include <cassert>
+
20 #include <cstdlib>
+
21 #include <string>
+
22 #include <limits>
+
23 #include <regex>
+
24 #include <map>
+
25 
+
27 #if __has_include(<execinfo.h>) && __has_include(<stdlib.h>) && __has_include(<libgen.h>)
+
28  #include <execinfo.h> // execinfo
+
29  #include <stdlib.h> // getenv
+
30  #include <libgen.h> // basename
+
31  #define CLUTCHLOG_HAVE_UNIX_SYSINFO 1
+
32 #else
+
33  #define CLUTCHLOG_HAVE_UNIX_SYSINFO 0
+
34 #endif
+
35 
+
37 #if __has_include(<sys/ioctl.h>) && __has_include(<stdio.h>) && __has_include(<unistd.h>)
+
38  #include <sys/ioctl.h>
+
39  #include <stdio.h>
+
40  #include <unistd.h>
+
41  #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 1
+
42 #else
+
43  #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 0
+
44 #endif
+
45 
+
46 
+
47 /**********************************************************************
+
48  * Enable by default in Debug builds.
+
49  **********************************************************************/
+
50 #ifndef WITH_CLUTCHLOG
+
51  #ifndef NDEBUG
+
52  #define WITH_CLUTCHLOG
+
54  #endif
+
55 #endif
+
56 
+
57 /**********************************************************************
+
58  * Macros definitions
+
59  **********************************************************************/
+
60 #ifdef WITH_CLUTCHLOG
+
61 
+
65 #ifndef CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG
+
66  #define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG clutchlog::level::progress
+
68 #endif // CLUTCHLOG_DEFAULT_DEPTH_BUILT
+
69 
+
76 #define CLUTCHLOC __FILE__, __FUNCTION__, __LINE__
+
78 
+
80 #ifndef NDEBUG
+
81  #define CLUTCHLOG( LEVEL, WHAT ) do { \
+
82  auto& clutchlog__logger = clutchlog::logger(); \
+
83  std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \
+
84  clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC); \
+
85  } while(0)
+
86 #else // not Debug build.
+
87  #define CLUTCHLOG( LEVEL, WHAT ) do { \
+
88  if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
+
89  auto& clutchlog__logger = clutchlog::logger(); \
+
90  std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \
+
91  clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC); \
+
92  } \
+
93  } while(0)
+
94 #endif // NDEBUG
+
95 
+
97 #ifndef NDEBUG
+
98  #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do { \
+
99  auto& clutchlog__logger = clutchlog::logger(); \
+
100  clutchlog__logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
+
101  CLUTCHLOC, FILENAME, CLUTCHDUMP_DEFAULT_SEP); \
+
102  } while(0)
+
103 #else // not Debug build.
+
104  #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do { \
+
105  if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
+
106  auto& clutchlog__logger = clutchlog::logger(); \
+
107  clutchlog__logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
+
108  CLUTCHLOC, FILENAME, CLUTCHDUMP_DEFAULT_SEP); \
+
109  } \
+
110  } while(0)
+
111 #endif // NDEBUG
+
112 
+
114 #ifndef NDEBUG
+
115  #define CLUTCHFUNC( LEVEL, FUNC, ... ) do { \
+
116  auto& clutchlog__logger = clutchlog::logger(); \
+
117  clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
+
118  if(clutchlog__scope.matches) { \
+
119  FUNC(__VA_ARGS__); \
+
120  } \
+
121  } while(0)
+
122 #else // not Debug build.
+
123  #define CLUTCHFUNC( LEVEL, FUNC, ... ) do { \
+
124  if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
+
125  auto& clutchlog__logger = clutchlog::logger(); \
+
126  clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
+
127  if(clutchlog__scope.matches) { \
+
128  FUNC(__VA_ARGS__); \
+
129  } \
+
130  } \
+
131  } while(0)
+
132 #endif // NDEBUG
+
133 
+
135 #ifndef NDEBUG
+
136  #define CLUTCHCODE( LEVEL, ... ) do { \
+
137  auto& clutchlog__logger = clutchlog::logger(); \
+
138  clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
+
139  if(clutchlog__scope.matches) { \
+
140  __VA_ARGS__ \
+
141  } \
+
142  } while(0)
+
143 #else // not Debug build.
+
144  #define CLUTCHCODE( LEVEL, CODE ) do { \
+
145  if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
+
146  auto& clutchlog__logger = clutchlog::logger(); \
+
147  clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
+
148  if(clutchlog__scope.matches) { \
+
149  CODE \
+
150  } \
+
151  } \
+
152  } while(0)
+
153 #endif // NDEBUG
+
154 
+
157 #else // not WITH_CLUTCHLOG
+
158  // Disabled macros can still be called in Release builds.
+
159  #define CLUTCHLOG( LEVEL, WHAT ) do {/*nothing*/} while(0)
+
160  #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do {/*nothing*/} while(0)
+
161  #define CLUTCHFUNC( LEVEL, FUNC, ... ) do {/*nothing*/} while(0)
+
162  #define CLUTCHCODE( LEVEL, CODE ) do {/*nothing*/} while(0)
+
163 #endif // WITH_CLUTCHLOG
+
164 
+
165 /**********************************************************************
+
166  * Implementation
+
167  **********************************************************************/
+
168 
+
169 #ifdef WITH_CLUTCHLOG
+
170 
+ +
178 {
+
179  protected:
+
180 
+
185  #ifndef NDEBUG
+
186  #ifndef CLUTCHLOG_DEFAULT_FORMAT
+
187  #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 // Enables: name, depth and depth_marks
+
189  #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1 // Enables: hfill
+
190  #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n"
+
191  #else
+
192  #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
+
193  #endif
+
194  #else
+
195  #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+
196  #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg} {hfill} {func} @ {file}:{line}\n"
+
197  #else
+
198  #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
+
199  #endif
+
200  #endif
+
201  #endif
+
202  #else
+
203  #ifndef CLUTCHLOG_DEFAULT_FORMAT
+
204  #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
206  #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func}\n"
+
207  #else
+
208  #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\t\t\t\t\t{func}\n"
+
209  #endif
+
210  #endif
+
211  #endif
+
212  static inline std::string default_format = CLUTCHLOG_DEFAULT_FORMAT;
+
214 
+
215  #ifndef NDEBUG
+
216  #ifndef CLUTCHDUMP_DEFAULT_FORMAT
+
217  #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
219  #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}"
+
220  #else
+
221  #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func} @ {file}:{line}"
+
222  #endif
+
223  #endif // CLUTCHDUMP_DEFAULT_FORMAT
+
224  #else
+
225  #ifndef CLUTCHDUMP_DEFAULT_FORMAT
+
226  #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
228  #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth})"
+
229  #else
+
230  #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func}"
+
231  #endif
+
232  #endif // CLUTCHDUMP_DEFAULT_FORMAT
+
233  #endif
+
234  static inline std::string dump_default_format = CLUTCHDUMP_DEFAULT_FORMAT;
+
236 
+
237  #ifndef CLUTCHDUMP_DEFAULT_SEP
+
238  #define CLUTCHDUMP_DEFAULT_SEP "\n"
+
240  #endif // CLUTCHDUMP_DEFAULT_SEP
+
241  static inline std::string dump_default_sep = CLUTCHDUMP_DEFAULT_SEP;
+
243 
+
244  #ifndef CLUTCHLOG_DEFAULT_DEPTH_MARK
+
245  #define CLUTCHLOG_DEFAULT_DEPTH_MARK ">"
+
247  #endif // CLUTCHLOG_DEFAULT_DEPTH_MARK
+
248  static inline std::string default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK;
+
250 
+
251  #ifndef CLUTCHLOG_STRIP_CALLS
+
252  #define CLUTCHLOG_STRIP_CALLS 5
+
254  #endif // CLUTCHLOG_STRIP_CALLS
+
255  static inline unsigned int default_strip_calls = CLUTCHLOG_STRIP_CALLS;
+
257 
+
258  #ifndef CLUTCHLOG_DEFAULT_HFILL_MARK
+
259  #define CLUTCHLOG_DEFAULT_HFILL_MARK '.'
+
261  #endif // CLUTCHLOG_DEFAULT_HFILL_MARK
+ +
264 
+
265 
+
266  #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+
267  #ifndef CLUTCHLOG_DEFAULT_HFILL_MAX
+
268  #define CLUTCHLOG_DEFAULT_HFILL_MAX 300
+
269  #endif
+
270  #ifndef CLUTCHLOG_DEFAULT_HFILL_MIN
+
271  #define CLUTCHLOG_DEFAULT_HFILL_MIN 150
+
272  #endif
+
273  #endif
+
274  static inline size_t default_hfill_max = CLUTCHLOG_DEFAULT_HFILL_MAX;
+
277  static inline size_t default_hfill_min = CLUTCHLOG_DEFAULT_HFILL_MIN;
+
278 
+
279  // NOTE: there is no CLUTCHLOG_HFILL_STYLE for defaulting,
+
280  // but you can still set `hfill_style(...)` on the logger singleton.
+
281  /* @} DefaultConfig */
+
282  /* @} */
+
283 
+
284 
+
285  public:
+
286 
+
296  static clutchlog& logger()
+
297  {
+
298  static clutchlog instance;
+
299  return instance;
+
300  }
+
301 
+
303  enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
+
304 
+
314  class fmt {
+
315  public:
+
317  enum class fg {
+
318  black = 30,
+
319  red = 31,
+
320  green = 32,
+
321  yellow = 33,
+
322  blue = 34,
+
323  magenta = 35,
+
324  cyan = 36,
+
325  white = 37,
+
326  none
+
327  } fore;
+
328 
+
330  enum class bg {
+
331  black = 40,
+
332  red = 41,
+
333  green = 42,
+
334  yellow = 43,
+
335  blue = 44,
+
336  magenta = 45,
+
337  cyan = 46,
+
338  white = 47,
+
339  none
+
340  } back;
+
341 
+
343  enum class typo {
+
344  reset = 0,
+
345  bold = 1,
+
346  underline = 4,
+
347  inverse = 7,
+
348  none
+
349  } style;
+
350 
+
352  fmt() : fore(fg::none), back(bg::none), style(typo::none) {}
+
353 
+
356  fmt( fg f, bg b = bg::none, typo s = typo::none) : fore(f), back(b), style(s) {}
+
357  fmt( fg f, typo s , bg b = bg::none) : fore(f), back(b), style(s) {}
+
358  fmt( bg b, fg f = fg::none, typo s = typo::none) : fore(f), back(b), style(s) {}
+
359  fmt( bg b, typo s , fg f = fg::none) : fore(f), back(b), style(s) {}
+
360  fmt(typo s, fg f = fg::none, bg b = bg::none) : fore(f), back(b), style(s) {}
+
361  fmt(typo s, bg b , fg f = fg::none) : fore(f), back(b), style(s) {}
+
364  protected:
+
366  std::ostream& print_on( std::ostream& os) const
+
367  {
+
368  std::vector<int> codes; codes.reserve(3);
+
369  if(this->fore != fg::none) { codes.push_back(static_cast<int>(this->fore ));}
+
370  if(this->back != bg::none) { codes.push_back(static_cast<int>(this->back ));}
+
371  if(this->style != typo::none) { codes.push_back(static_cast<int>(this->style));}
+
372  if(codes.size() == 0) {return os;}
+
373 
+
374  os << "\033[";
+
375  assert(codes.size() > 0);
+
376  os << codes[0];
+
377  for(size_t i=1; i < codes.size(); ++i) {
+
378  os << ";" << codes[i];
+
379  }
+
380  os << "m";
+
381  return os;
+
382  }
+
383 
+
384  public:
+
396  friend std::ostream& operator<<(std::ostream& os, const fmt& fmt)
+
397  {
+
398  return fmt.print_on(os);
+
399  }
+
400 
+
411  std::string operator()( const std::string& msg ) const
+
412  {
+
413  std::ostringstream os;
+
414  this->print_on(os);
+
415  fmt reset(fmt::typo::reset);
+
416  os << msg;
+
417  reset.print_on(os);
+
418  return os.str();
+
419  }
+
420 
+
423  std::string str() const
+
424  {
+
425  std::ostringstream os;
+
426  this->print_on(os);
+
427  return os.str();
+
428  }
+
429  }; // fmt class
+
430 
+
436  public:
+
437  clutchlog(clutchlog const&) = delete;
+
438  void operator=(clutchlog const&) = delete;
+
439 
+
440  private:
+
441  clutchlog() :
+
442  // system, main, log
+ +
444  _level_word({
+
445  {level::critical,"Critical"},
+
446  {level::error ,"Error"},
+
447  {level::warning ,"Warning"},
+
448  {level::progress,"Progress"},
+
449  {level::note ,"Note"},
+
450  {level::info ,"Info"},
+
451  {level::debug ,"Debug"},
+
452  {level::xdebug ,"XDebug"}
+
453  }),
+
454  _level_fmt({
+
455  {level::critical,fmt(fmt::fg::red, fmt::typo::underline)},
+
456  {level::error ,fmt(fmt::fg::red, fmt::typo::bold)},
+
457  {level::warning ,fmt(fmt::fg::magenta, fmt::typo::bold)},
+
458  {level::progress,fmt()},
+
459  {level::note ,fmt()},
+
460  {level::info ,fmt()},
+
461  {level::debug ,fmt()},
+
462  {level::xdebug ,fmt()}
+
463  }),
+ + +
466  #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
467  _hfill_char(clutchlog::default_hfill_char),
+
468  _hfill_fmt(fmt::fg::none),
+
469  _hfill_max(clutchlog::default_hfill_max),
+
470  _hfill_min(clutchlog::default_hfill_min),
+
471  #endif
+
472  _out(&std::clog),
+
473  #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
474  _depth(std::numeric_limits<size_t>::max() - _strip_calls),
+
475  _depth_mark(clutchlog::default_depth_mark),
+
476  #endif
+
477  _stage(level::error),
+
478  _in_file(".*"),
+
479  _in_func(".*"),
+
480  _in_line(".*")
+
481  {
+
482  // Reverse the level->word map into a word->level map.
+
483  for(auto& lw : _level_word) {
+
484  _word_level[lw.second] = lw.first;
+
485  }
+
486 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
487  struct winsize w;
+
488  ioctl(STDERR_FILENO, TIOCGWINSZ, &w);
+
489  _nb_columns = std::max(std::min((size_t)w.ws_col, default_hfill_max), default_hfill_min);
+
490 #endif
+
491  }
+
492 
+
493  protected:
+
495  size_t _strip_calls;
+
497  const std::map<level,std::string> _level_word;
+
499  std::map<std::string,level> _word_level;
+
501  std::map<level,fmt> _level_fmt;
+
503  std::string _format_log;
+
505  std::string _format_dump;
+
506  #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
507 
+
508  char _hfill_char;
+
510  fmt _hfill_fmt;
+
512  size_t _hfill_max;
+
514  size_t _hfill_min;
+
515  #endif
+
516 
+
517  std::ostream* _out;
+
518  #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
519 
+
520  size_t _depth;
+
522  std::string _depth_mark;
+
523  #endif
+
524 
+ +
527  std::regex _in_file;
+
529  std::regex _in_func;
+
531  std::regex _in_line;
+
532 
+
533 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
534 
+
535  static const size_t _max_buffer = 4096;
+
536 #endif
+
537 
+
538 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
539 
+
540  size_t _nb_columns;
+
541 #endif
+
542 
+
544  public:
+
545 
+
549  void format(const std::string& format) {_format_log = format;}
+
552  std::string format() const {return _format_log;}
+
553 
+
555  void format_comment(const std::string& format) {_format_dump = format;}
+
557  std::string format_comment() const {return _format_dump;}
+
558 
+
560  void out(std::ostream& out) {_out = &out;}
+
562  std::ostream& out() {return *_out;}
+
563 
+
564 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
565  void depth(size_t d) {_depth = d;}
+
568  size_t depth() const {return _depth;}
+
569 
+
571  void depth_mark(const std::string mark) {_depth_mark = mark;}
+
573  std::string depth_mark() const {return _depth_mark;}
+
574 
+
576  void strip_calls(const size_t n) {_strip_calls = n;}
+
578  size_t strip_calls() const {return _strip_calls;}
+
579 #endif
+
580 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+
581  void hfill_mark(const char mark) {_hfill_char = mark;}
+
584  char hfill_mark() const {return _hfill_char;}
+
586  void hfill_style(fmt style) {_hfill_fmt = style;}
+
591  template<class ... FMT>
+
592  void hfill_style(FMT... styles) { this->hfill_style(fmt(styles...)); }
+
594  fmt hfill_style() const {return _hfill_fmt;}
+
596  void hfill_max(const size_t nmax) {_hfill_max = nmax;}
+
598  size_t hfill_max() {return _hfill_max;}
+
600  void hfill_min(const size_t nmin) {_hfill_min = nmin;}
+
602  size_t hfill_min() {return _hfill_min;}
+
603 #endif
+
604 
+
606  void threshold(level l) {_stage = l;}
+
608  void threshold(const std::string& l) {_stage = this->level_of(l);}
+
610  level threshold() const {return _stage;}
+
612  const std::map<std::string,level>& levels() const { return _word_level;}
+
613 
+
618  level level_of(const std::string name)
+
619  {
+
620  const auto ilevel = _word_level.find(name);
+
621  if( ilevel != std::end(_word_level)) {
+
622  return ilevel->second;
+
623  } else {
+
624  throw std::out_of_range("'" + name + "' is not a valid log level name");
+
625  }
+
626  }
+
627 
+
629  void file(std::string file) {_in_file = file;}
+
631  void func(std::string func) {_in_func = func;}
+
633  void line(std::string line) {_in_line = line;}
+
634 
+
636  void location(
+
637  const std::string& in_file,
+
638  const std::string& in_function=".*",
+
639  const std::string& in_line=".*"
+
640  )
+
641  {
+
642  file(in_file);
+
643  func(in_function);
+
644  line(in_line);
+
645  }
+
646 
+
651  template<class ... FMT>
+
652  void style(level stage, FMT... styles) { this->style(stage,fmt(styles...)); }
+
654  void style(level stage, fmt style) { _level_fmt.at(stage) = style; }
+
656  fmt style(level stage) const { return _level_fmt.at(stage); }
+
657 
+
660  public:
+
661 
+
665  struct scope_t {
+
668  bool matches;
+ +
671 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
672 
+
673  size_t depth;
+
674 #endif
+
675 
+
676  bool there;
+ +
679  matches(false),
+
680  stage(level::xdebug),
+ +
682  depth(0),
+
683 #endif
+
684  there(false)
+
685  {}
+
686  }; // scope_t
+
687 
+
688 
+ +
691  const level& stage,
+
692  const std::string& file,
+
693  const std::string& func,
+
694  const size_t line
+
695  ) const
+
696  {
+
697  scope_t scope; // False scope by default.
+
698 
+
699  /***** Log level stage *****/
+
700  // Test stage first, because it's fastest.
+
701  scope.stage = stage;
+
702  if(not (scope.stage <= _stage)) {
+
703  // Bypass useless computations if no match
+
704  // because of the stage.
+
705  return scope;
+
706  }
+
707 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
708  /***** Stack depth *****/
+
709  // Backtrace in second, quite fast.
+
710  size_t stack_depth;
+
711  void *buffer[_max_buffer];
+
712  stack_depth = backtrace(buffer, _max_buffer);
+
713  scope.depth = stack_depth;
+
714  if(not (scope.depth <= _depth + _strip_calls)) {
+
715  // Bypass if no match.
+
716  return scope;
+
717  }
+
718 #endif
+
719 
+
720  /***** Location *****/
+
721  // Location last, slowest.
+
722  std::ostringstream sline; sline << line;
+
723  scope.there =
+
724  std::regex_search(file, _in_file)
+
725  and std::regex_search(func, _in_func)
+
726  and std::regex_search(sline.str(), _in_line);
+
727 
+
728  // No need to retest stage and depth, which are true here.
+
729  scope.matches = scope.there;
+
730 
+
731  return scope;
+
732  } // locate
+
733 
+
741  std::string replace(
+
742  const std::string& form,
+
743  const std::string& mark,
+
744  const std::string& tag
+
745  ) const
+
746  {
+
747  // Useless debug code, unless something fancy would be done with name tags.
+
748  // std::regex re;
+
749  // try {
+
750  // re = std::regex(mark);
+
751  //
+
752  // } catch(const std::regex_error& e) {
+
753  // std::cerr << "ERROR with a regular expression \"" << mark << "\": ";
+
754  // switch(e.code()) {
+
755  // case std::regex_constants::error_collate:
+
756  // std::cerr << "the expression contains an invalid collating element name";
+
757  // break;
+
758  // case std::regex_constants::error_ctype:
+
759  // std::cerr << "the expression contains an invalid character class name";
+
760  // break;
+
761  // case std::regex_constants::error_escape:
+
762  // std::cerr << "the expression contains an invalid escaped character or a trailing escape";
+
763  // break;
+
764  // case std::regex_constants::error_backref:
+
765  // std::cerr << "the expression contains an invalid back reference";
+
766  // break;
+
767  // case std::regex_constants::error_brack:
+
768  // std::cerr << "the expression contains mismatched square brackets ('[' and ']')";
+
769  // break;
+
770  // case std::regex_constants::error_paren:
+
771  // std::cerr << "the expression contains mismatched parentheses ('(' and ')')";
+
772  // break;
+
773  // case std::regex_constants::error_brace:
+
774  // std::cerr << "the expression contains mismatched curly braces ('{' and '}')";
+
775  // break;
+
776  // case std::regex_constants::error_badbrace:
+
777  // std::cerr << "the expression contains an invalid range in a {} expression";
+
778  // break;
+
779  // case std::regex_constants::error_range:
+
780  // std::cerr << "the expression contains an invalid character range (e.g. [b-a])";
+
781  // break;
+
782  // case std::regex_constants::error_space:
+
783  // std::cerr << "there was not enough memory to convert the expression into a finite state machine";
+
784  // break;
+
785  // case std::regex_constants::error_badrepeat:
+
786  // std::cerr << "one of *?+{ was not preceded by a valid regular expression";
+
787  // break;
+
788  // case std::regex_constants::error_complexity:
+
789  // std::cerr << "the complexity of an attempted match exceeded a predefined level";
+
790  // break;
+
791  // case std::regex_constants::error_stack:
+
792  // std::cerr << "there was not enough memory to perform a match";
+
793  // break;
+
794  // default:
+
795  // std::cerr << "unknown error";
+
796  // }
+
797  // std::cerr << std::endl;
+
798  // throw;
+
799  // } // catch
+
800 
+
801  const std::regex re(mark);
+
802  return std::regex_replace(form, re, tag);
+
803  }
+
804 
+
806  std::string replace(
+
807  const std::string& form,
+
808  const std::string& mark,
+
809  const size_t tag
+
810  ) const
+
811  {
+
812  std::ostringstream stag; stag << tag;
+
813  return replace(form, mark, stag.str());
+
814  }
+
815 
+
817  std::string format(
+
818  std::string row,
+
819  const std::string& what,
+ +
821  const std::string& name,
+
822 #endif
+
823  const level& stage,
+
824  const std::string& file,
+
825  const std::string& func,
+
826  const size_t line
+ +
828  ,
+
829  const size_t depth
+
830 #endif
+
831  ) const
+
832  {
+
833  row = replace(row, "\\{msg\\}", what);
+
834  row = replace(row, "\\{file\\}", file);
+
835  row = replace(row, "\\{func\\}", func);
+
836  row = replace(row, "\\{line\\}", line);
+
837 
+
838  row = replace(row, "\\{level\\}", _level_word.at(stage));
+
839  std::string letter(1, _level_word.at(stage).at(0)); // char -> string
+
840  row = replace(row, "\\{level_letter\\}", letter);
+
841 
+
842 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
843  row = replace(row, "\\{name\\}", name);
+
844  row = replace(row, "\\{depth\\}", depth - _strip_calls);
+
845 
+
846  std::ostringstream chevrons;
+
847  for(size_t i = _strip_calls; i < depth; ++i) {
+
848  chevrons << _depth_mark;
+
849  }
+
850  row = replace(row, "\\{depth_marks\\}", chevrons.str());
+
851 #endif
+
852 
+
853  row = replace(row, "\\{level_fmt\\}", _level_fmt.at(stage).str());
+
854 
+
855 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
856  // hfill is replaced last to allow for correct line width estimation.
+
857  const std::string raw_row = replace(row, "\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]", "");
+
858  const std::string hfill_tag = "{hfill}";
+
859  const size_t hfill_pos = row.find(hfill_tag);
+
860  const size_t raw_hfill_pos = raw_row.find(hfill_tag);
+
861  const size_t nb_columns = std::max(std::min((size_t)_nb_columns, _hfill_max), _hfill_min);
+
862  if(hfill_pos != std::string::npos) {
+
863  assert(raw_hfill_pos != std::string::npos);
+
864  if(nb_columns > 0) {
+
865  const size_t left_len = raw_hfill_pos;
+
866  const size_t right_len = raw_row.size() - raw_hfill_pos - hfill_tag.size();
+
867  if(right_len+left_len > nb_columns) {
+
868  // The right part would go over the terminal width: add a new row.
+
869  if(right_len < nb_columns) {
+
870  // There is room for the right part on a new line.
+
871  const std::string hfill(std::max((size_t)0, nb_columns-right_len), _hfill_char);
+
872  const std::string hfill_styled = _hfill_fmt(hfill);
+
873  row = replace(row, "\\{hfill\\}", "\n"+hfill_styled);
+
874  } else {
+
875  // Right part still goes over columns: let it go.
+
876  const std::string hfill(1, _hfill_char);
+
877  const std::string hfill_styled = _hfill_fmt(hfill);
+
878  row = replace(row, "\\{hfill\\}", "\n"+hfill_styled);
+
879  }
+
880  } else {
+
881  // There is some space in between left and right parts.
+
882  const std::string hfill(std::max((size_t)0, nb_columns - (right_len+left_len)), _hfill_char);
+
883  const std::string hfill_styled = _hfill_fmt(hfill);
+
884  row = replace(row, "\\{hfill\\}", hfill_styled);
+
885  }
+
886  } else {
+
887  // We don't know the terminal width.
+
888  const std::string hfill(1, _hfill_char);
+
889  const std::string hfill_styled = _hfill_fmt(hfill);
+
890  row = replace(row, "\\{hfill\\}", hfill_styled);
+
891  }
+
892  }
+
893 #else
+
894  // We cannot know the terminal width.
+
895  const std::string hfill(1, _hfill_char);
+
896  const std::string hfill_styled = _hfill_fmt(hfill);
+
897  row = replace(row, "\\{hfill\\}", hfill_styled);
+
898 #endif
+
899  return _level_fmt.at(stage)(row);
+
900  }
+
901 
+
903  void log(
+
904  const level& stage,
+
905  const std::string& what,
+
906  const std::string& file, const std::string& func, size_t line
+
907  ) const
+
908  {
+
909  scope_t scope = locate(stage, file, func, line);
+
910 
+
911  if(scope.matches) {
+
912 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
913  *_out << format(_format_log, what, basename(getenv("_")),
+
914  stage, file, func,
+
915  line, scope.depth );
+
916 #else
+
917  *_out << format(_format_log, what,
+
918  stage, file, func,
+
919  line );
+
920 
+
921 #endif
+
922  _out->flush();
+
923  } // if scopes.matches
+
924  }
+
925 
+
927  template<class In>
+
928  void dump(
+
929  const level& stage,
+
930  const In container_begin, const In container_end,
+
931  const std::string& file, const std::string& func, size_t line,
+
932  const std::string& filename_template = "dump_{n}.dat",
+
933  const std::string sep = dump_default_sep
+
934  ) const
+
935  {
+
936  scope_t scope = locate(stage, file, func, line);
+
937 
+
938  if(scope.matches) {
+
939  const std::string tag = "\\{n\\}";
+
940  const std::regex re(tag);
+
941  std::string outfile = "";
+
942 
+
943  // If the file name template has the {n} tag.
+
944  if(std::regex_search(filename_template, re)) {
+
945  // Increment n until a free one is found.
+
946  size_t n = 0;
+
947  do {
+
948  outfile = replace(filename_template, tag, n);
+
949  n++;
+
950  } while( fs::exists( outfile ) );
+
951 
+
952  } else {
+
953  // Use the parameter as is.
+
954  outfile = filename_template;
+
955  }
+
956 
+
957  std::ofstream fd(outfile);
+
958 
+
959  if(_format_dump.size() > 0) {
+
960 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
961  fd << format(_format_dump, "", basename(getenv("_")),
+
962  stage, file, func,
+
963  line, scope.depth );
+
964 #else
+
965  fd << format(_format_dump, "",
+
966  stage, file, func,
+
967  line );
+
968 #endif
+
969  fd << sep; // sep after comment line.
+
970  }
+
971 
+
972  std::copy(container_begin, container_end,
+
973  std::ostream_iterator<typename In::value_type>(fd, sep.c_str()));
+
974 
+
975  fd.close();
+
976  } // if scopes.matches
+
977  }
+
978 
+
980 };
+
981 
+
984 #else // not WITH_CLUTCHLOG
+
985 
+
986 
+
987 /**********************************************************************
+
988  * Fake implementation
+
989  **********************************************************************/
+
990 
+
991 // Equivalent class with empty methods, will be optimized out
+
992 // while allowing to actually have calls implemented without WITH_CLUTCHLOG guards.
+
993 #pragma GCC diagnostic push
+
994 #pragma GCC diagnostic ignored "-Wreturn-type"
+
995 class clutchlog
+
996 {
+
997  public:
+
998  static clutchlog& logger() {}
+
999  enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
+
1000  class fmt {
+
1001  public:
+
1002  enum class fg { black, red, green, yellow, blue, magenta, cyan, white, none } fore;
+
1003  enum class bg { black, red, green, yellow, blue, magenta, cyan, white, none } back;
+
1004  enum class typo { reset, bold, underline, inverse, none } style;
+
1005  fmt() : fore(fg::none), back(bg::none), style(typo::none) {}
+
1006  fmt( fg f, bg b = bg::none, typo s = typo::none) : fore(f), back(b), style(s) {}
+
1007  fmt( fg f, typo s , bg b = bg::none) : fore(f), back(b), style(s) {}
+
1008  fmt( bg b, fg f = fg::none, typo s = typo::none) : fore(f), back(b), style(s) {}
+
1009  fmt( bg b, typo s , fg f = fg::none) : fore(f), back(b), style(s) {}
+
1010  fmt(typo s, fg f = fg::none, bg b = bg::none) : fore(f), back(b), style(s) {}
+
1011  fmt(typo s, bg b , fg f = fg::none) : fore(f), back(b), style(s) {}
+
1012  protected:
+
1013  std::ostream& print_on(std::ostream&) const {}
+
1014  public:
+
1015  friend std::ostream& operator<<(std::ostream&, const fmt&) {}
+
1016  std::string operator()(const std::string&) const {}
+
1017  };
+
1018  public:
+
1019  clutchlog(clutchlog const&) = delete;
+
1020  void operator=(clutchlog const&) = delete;
+
1021  private:
+
1022  clutchlog() {}
+
1023  protected:
+
1024  struct scope_t {};
+
1025  scope_t locate(
+
1026  const level&,
+
1027  const std::string&,
+
1028  const std::string&,
+
1029  const size_t
+
1030  ) const
+
1031  {}
+
1032  public:
+
1033  void format(const std::string&) {}
+
1034  std::string format() const {}
+
1035 
+
1036  void format_comment(const std::string&) {}
+
1037  std::string format_comment() const {}
+
1038 
+
1039  void out(std::ostream&) {}
+
1040  std::ostream& out() {}
+
1041 
+
1042 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
1043  void depth(size_t) {}
+
1044  size_t depth() const {}
+
1045 
+
1046  void depth_mark(const std::string) {}
+
1047  std::string depth_mark() const {}
+
1048  void strip_calls(const size_t) {}
+
1049  size_t strip_calls() const {}
+
1050 #endif
+
1051 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+
1052  void hfill_mark(const char) {}
+
1053  char hfill_mark() const {}
+
1054  void hfill_fmt(fmt) {}
+
1055  fmt hfill_fmt() const {}
+
1056  void hfill_min(const size_t) {}
+
1057  size_t hfill_min() {}
+
1058  void hfill_max(const size_t) {}
+
1059  size_t hfill_max() {}
+
1060 #endif
+
1061 
+
1062  void threshold(level) {}
+
1063  void threshold(const std::string&) {}
+
1064  level threshold() const {}
+
1065  const std::map<std::string,level> levels() const {}
+
1066  level level_of(const std::string) {}
+
1067 
+
1068  void file(std::string) {}
+
1069  void func(std::string) {}
+
1070  void line(std::string) {}
+
1071 
+
1072 #pragma GCC diagnostic push
+
1073 #pragma GCC diagnostic ignored "-Wunused-parameter"
+
1074  void location(
+
1075  const std::string&,
+
1076  const std::string& in_function=".*",
+
1077  const std::string& in_line=".*"
+
1078  )
+
1079  {}
+
1080 #pragma GCC diagnostic pop
+
1081  template<class ... FMT>
+
1082  void style(level, FMT...) {}
+
1083  void style(level, fmt) {}
+
1084  fmt style(level) const {}
+
1085  public:
+
1086  std::string replace(
+
1087  const std::string&,
+
1088  const std::string&,
+
1089  const std::string&
+
1090  ) const
+
1091  {}
+
1092 
+
1093  std::string replace(
+
1094  const std::string&,
+
1095  const std::string&,
+
1096  const size_t
+
1097  ) const
+
1098  {}
+
1099 
+
1100  std::string format(
+
1101  std::string,
+
1102  const std::string&,
+ +
1104  const std::string&,
+
1105 #endif
+
1106  const level&,
+
1107  const std::string&,
+
1108  const std::string&,
+
1109  const size_t
+ +
1111  ,
+
1112  const size_t
+
1113 #endif
+
1114  ) const
+
1115  {}
+
1116 
+
1117  void log(
+
1118  const level&,
+
1119  const std::string&,
+
1120  const std::string&, const std::string&, size_t
+
1121  ) const
+
1122  {}
+
1123 
+
1124  template<class In>
+
1125  void dump(
+
1126  const level&,
+
1127  const In, const In,
+
1128  const std::string&, const std::string&, size_t,
+
1129  const std::string&,
+
1130  const std::string
+
1131  ) const
+
1132  {}
+
1133 };
+
1134 #pragma GCC diagnostic pop
+
1135 #endif // WITH_CLUTCHLOG
+
1136 
+
1137 #endif // CLUTCHLOG_H
+
static std::string default_depth_mark
Default mark for stack depth.
Definition: clutchlog.h:249
+
std::string _format_log
Current format of the standard output.
Definition: clutchlog.h:503
+
std::map< level, fmt > _level_fmt
Dictionary of level identifier to their format.
Definition: clutchlog.h:501
+
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.
Definition: clutchlog.h:903
+
std::string str() const
Return the formatting code as a string.
Definition: clutchlog.h:423
+
void line(std::string line)
Set the regular expression filtering the line location.
Definition: clutchlog.h:633
+
static std::string dump_default_format
Default format of the comment line in file dump.
Definition: clutchlog.h:235
+
void out(std::ostream &out)
Set the output stream on which to print.
Definition: clutchlog.h:560
+
static std::string dump_default_sep
Default item separator for dump.
Definition: clutchlog.h:242
+
std::string format(std::string row, 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 corre...
Definition: clutchlog.h:817
+
#define CLUTCHLOG_DEFAULT_DEPTH_MARK
Compile-time default mark for stack depth.
Definition: clutchlog.h:246
+
static unsigned int default_strip_calls
Number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:256
+
static size_t default_hfill_min
Default minimum width (number of characters) at which to fill for right-aligning the right part of me...
Definition: clutchlog.h:277
+
std::string replace(const std::string &form, const std::string &mark, const std::string &tag) const
Replace mark by tag in form.
Definition: clutchlog.h:741
+
enum clutchlog::fmt::bg back
Background color.
+
fg
Foreground color codes.
Definition: clutchlog.h:317
+
enum clutchlog::fmt::fg fore
Foreground color.
+
static char default_hfill_char
Default character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:263
+
bool matches
Everything is compatible.
Definition: clutchlog.h:668
+
enum clutchlog::fmt::typo style
Typographic style.
+
void format_comment(const std::string &format)
Set the template string for dumps.
Definition: clutchlog.h:555
+
void file(std::string file)
Set the regular expression filtering the file location.
Definition: clutchlog.h:629
+
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.
Definition: clutchlog.h:690
+
fmt()
&#160;Empty constructor, only useful for a no-op formatter.
Definition: clutchlog.h:352
+
void style(level stage, fmt style)
Set the style (color and typo) of the given log level, passing a fmt instance.
Definition: clutchlog.h:654
+
void threshold(level l)
Set the log level (below which logs are not printed) with an identifier.
Definition: clutchlog.h:606
+
level threshold() const
Get the log level below which logs are not printed.
Definition: clutchlog.h:610
+
level
Available log levels.
Definition: clutchlog.h:303
+
static size_t default_hfill_max
Default maximum width (number of characters) for which to fill for right-aligning the right part of m...
Definition: clutchlog.h:275
+
scope_t()
Constructor.
Definition: clutchlog.h:678
+
std::regex _in_func
Current function location filter.
Definition: clutchlog.h:529
+
bg
Background color codes.
Definition: clutchlog.h:330
+
static std::string default_format
Default format of the messages.
Definition: clutchlog.h:213
+
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:296
+
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=dump_default_sep) const
Dump a serializable container after a comment line with log information.
Definition: clutchlog.h:928
+
Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:314
+
void func(std::string func)
Set the regular expression filtering the function location.
Definition: clutchlog.h:631
+
std::string format() const
Get the template string.
Definition: clutchlog.h:552
+
std::regex _in_file
Current file location filter.
Definition: clutchlog.h:527
+
void style(level stage, FMT... styles)
Set the style (color and typo) of the given log level.
Definition: clutchlog.h:652
+
level level_of(const std::string name)
Return the log level tag corresponding to the given pre-configured name.
Definition: clutchlog.h:618
+
const std::map< level, std::string > _level_word
Dictionary of level identifier to their string representation.
Definition: clutchlog.h:497
+
std::string operator()(const std::string &msg) const
Format the given string with the currently encoded format.
Definition: clutchlog.h:411
+
#define CLUTCHLOG_DEFAULT_FORMAT
Compile-time default format of the messages (debug mode: with absolute location).
Definition: clutchlog.h:198
+
std::regex _in_line
Current line location filter.
Definition: clutchlog.h:531
+
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.
Definition: clutchlog.h:806
+
std::string format_comment() const
Get the template string for dumps.
Definition: clutchlog.h:557
+
std::string _format_dump
Current format of the file output.
Definition: clutchlog.h:505
+
#define CLUTCHDUMP_DEFAULT_SEP
Compile-time default item separator for dump.
Definition: clutchlog.h:239
+
Structure holding a location matching.
Definition: clutchlog.h:666
+
#define CLUTCHLOG_DEFAULT_HFILL_MARK
Character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:260
+
std::ostream & print_on(std::ostream &os) const
Print the currently encoded format escape code on the given output stream.
Definition: clutchlog.h:366
+
std::ostream * _out
Standard output.
Definition: clutchlog.h:517
+
std::ostream & out()
Get the output stream on which to print.
Definition: clutchlog.h:562
+
void threshold(const std::string &l)
Set the log level (below which logs are not printed) with a string.
Definition: clutchlog.h:608
+
const std::map< std::string, level > & levels() const
Get the map of available log levels string representations toward their identifier....
Definition: clutchlog.h:612
+
size_t _strip_calls
Current number of call stack levels to remove from depth display.
Definition: clutchlog.h:495
+
level stage
Current log level.
Definition: clutchlog.h:670
+
bool there
Location is compatible.
Definition: clutchlog.h:676
+
#define CLUTCHLOG_STRIP_CALLS
Compile-time number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:253
+
friend std::ostream & operator<<(std::ostream &os, const fmt &fmt)
Output stream overload.
Definition: clutchlog.h:396
+
std::map< std::string, level > _word_level
Dictionary of level string to their identifier.
Definition: clutchlog.h:499
+
level _stage
Current log level.
Definition: clutchlog.h:525
+
fmt style(level stage) const
Get the configured fmt instance of the given log level.
Definition: clutchlog.h:656
+
typo
Typographic style codes.
Definition: clutchlog.h:343
+
void location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
Set the regular expressions filtering the location.
Definition: clutchlog.h:636
+
#define CLUTCHLOG_HAVE_UNIX_SYSINFO
True if POSIX headers necessary for stack depth management are available.
Definition: clutchlog.h:33
+
The single class which holds everything.
Definition: clutchlog.h:177
+
#define CLUTCHDUMP_DEFAULT_FORMAT
Compile-time default format of the comment line in file dump.
Definition: clutchlog.h:221
diff --git a/docs/clutchlog_logo.png b/docs/clutchlog_logo.png index 3ef7e33..841a245 100644 Binary files a/docs/clutchlog_logo.png and b/docs/clutchlog_logo.png differ diff --git a/docs/clutchlog_logo.svg b/docs/clutchlog_logo.svg index 0a7aed8..f06c5e1 100644 --- a/docs/clutchlog_logo.svg +++ b/docs/clutchlog_logo.svg @@ -35,8 +35,8 @@ showgrid="false" showguides="false" inkscape:zoom="0.3724553" - inkscape:cx="170.49026" - inkscape:cy="800.09601" + inkscape:cx="387.96602" + inkscape:cy="1388.086" inkscape:current-layer="layer1"> v0.17 + y="457.33154">v0.12 - - + + clutchlog: tests -> clutchlog Relation @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,13 +84,15 @@ $(document).ready(function(){initNavTree('dir_59425e443f801f1f2fd8bbe4959a3ccf.h
-

tests → clutchlog Relation

File in testsIncludes file in clutchlog
t-assert.cppclutchlog.h
t-color.cppclutchlog.h
t-color16M.cppclutchlog.h
t-color256.cppclutchlog.h
t-demo.cppclutchlog.h
t-depth-delta.cppclutchlog.h
t-dump.cppclutchlog.h
t-extra.cppclutchlog.h
t-filename.cppclutchlog.h
t-fmt-constructors.cppclutchlog.h
t-hash-color.cppclutchlog.h
t-log.cppclutchlog.h
t-one-line-if.cppclutchlog.h
+

tests → clutchlog Relation

File in testsIncludes file in clutchlog
t-assert.cppclutchlog.h
t-color.cppclutchlog.h
t-demo.cppclutchlog.h
t-dump.cppclutchlog.h
t-log.cppclutchlog.h
t-one-line-if.cppclutchlog.h
diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html index aed8097..37e51e0 100644 --- a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html +++ b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html @@ -2,8 +2,8 @@ - - + + clutchlog: tests Directory Reference @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,7 +84,8 @@ $(document).ready(function(){initNavTree('dir_59425e443f801f1f2fd8bbe4959a3ccf.h
-
tests Directory Reference
+
+
tests Directory Reference
@@ -94,43 +95,15 @@ $(document).ready(function(){initNavTree('dir_59425e443f801f1f2fd8bbe4959a3ccf.h - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  t-assert.cpp [code]
 
file  t-color.cpp [code]
 
file  t-color16M.cpp [code]
 
file  t-color256.cpp [code]
 
file  t-demo.cpp [code]
 
file  t-depth-delta.cpp [code]
 
file  t-dump.cpp [code]
 
file  t-extra.cpp [code]
 
file  t-filename.cpp [code]
 
file  t-fmt-constructors.cpp [code]
 
file  t-hash-color.cpp [code]
 
file  t-log.cpp [code]
 
file  t-one-line-if.cpp [code]
 
diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.js b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.js deleted file mode 100644 index d9ec44d..0000000 --- a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.js +++ /dev/null @@ -1,16 +0,0 @@ -var dir_59425e443f801f1f2fd8bbe4959a3ccf = -[ - [ "t-assert.cpp", "t-assert_8cpp_source.html", null ], - [ "t-color.cpp", "t-color_8cpp_source.html", null ], - [ "t-color16M.cpp", "t-color16_m_8cpp_source.html", null ], - [ "t-color256.cpp", "t-color256_8cpp_source.html", null ], - [ "t-demo.cpp", "t-demo_8cpp_source.html", null ], - [ "t-depth-delta.cpp", "t-depth-delta_8cpp_source.html", null ], - [ "t-dump.cpp", "t-dump_8cpp_source.html", null ], - [ "t-extra.cpp", "t-extra_8cpp_source.html", null ], - [ "t-filename.cpp", "t-filename_8cpp_source.html", null ], - [ "t-fmt-constructors.cpp", "t-fmt-constructors_8cpp_source.html", null ], - [ "t-hash-color.cpp", "t-hash-color_8cpp_source.html", null ], - [ "t-log.cpp", "t-log_8cpp_source.html", null ], - [ "t-one-line-if.cpp", "t-one-line-if_8cpp_source.html", null ] -]; \ No newline at end of file diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.map b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.map index 6526efa..a637538 100644 --- a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.map +++ b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.map @@ -1,5 +1,5 @@ - + diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.md5 b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.md5 index a315169..a67e851 100644 --- a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.md5 +++ b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.md5 @@ -1 +1 @@ -bdf89988b998d4aeafd5521fdb410fa7 \ No newline at end of file +3ef33e4b41f965850dea69a8e439659b \ No newline at end of file diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.svg b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.svg index b0bf5e9..cc3f867 100644 --- a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.svg +++ b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.svg @@ -13,7 +13,7 @@ dir_59425e443f801f1f2fd8bbe4959a3ccf - + tests @@ -22,7 +22,7 @@ dir_c318bd5cf14aaa5601e6029e0b5b4048 - + clutchlog @@ -32,8 +32,8 @@ dir_59425e443f801f1f2fd8bbe4959a3ccf->dir_c318bd5cf14aaa5601e6029e0b5b4048 - -13 + +6 diff --git a/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html index 8af587f..5c58c79 100644 --- a/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html +++ b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html @@ -2,8 +2,8 @@ - - + + clutchlog: clutchlog Directory Reference @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,13 +84,14 @@ $(document).ready(function(){initNavTree('dir_c318bd5cf14aaa5601e6029e0b5b4048.h
-
clutchlog Directory Reference
+
+
clutchlog Directory Reference
- - +

+

Files

file  clutchlog.h [code]
file  clutchlog.h [code]
 
@@ -99,7 +100,9 @@ Files diff --git a/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.js b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.js deleted file mode 100644 index 3a7dc2e..0000000 --- a/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.js +++ /dev/null @@ -1,4 +0,0 @@ -var dir_c318bd5cf14aaa5601e6029e0b5b4048 = -[ - [ "clutchlog.h", "clutchlog_8h.html", "clutchlog_8h" ] -]; \ No newline at end of file diff --git a/docs/doxygen.css b/docs/doxygen.css index 2010785..73ecbb2 100644 --- a/docs/doxygen.css +++ b/docs/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.9.4 */ +/* The standard CSS for doxygen 1.8.17 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; @@ -66,7 +66,7 @@ p.startli, p.startdd { margin-top: 2px; } -th p.starttd, th p.intertd, th p.endtd { +th p.starttd, p.intertd, p.endtd { font-size: 100%; font-weight: 700; } @@ -103,96 +103,30 @@ caption { } span.legend { - font-size: 70%; - text-align: center; + font-size: 70%; + text-align: center; } h3.version { - font-size: 90%; + 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 { - border-right: 1px solid #A3B4D7; - padding-right: 15px; - text-align: right; - line-height: 110%; + margin-right: 15px; } -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} -td.navtabHL { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: #A0A0A0; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: black; -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.odd { - background-color: #F8F9FC; -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - /* @group Link Styling */ a { @@ -209,6 +143,17 @@ 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; } @@ -228,33 +173,6 @@ a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { color: #4665A2; } -a.code.hl_class { /* style for links to class names in code snippets */ } -a.code.hl_struct { /* style for links to struct names in code snippets */ } -a.code.hl_union { /* style for links to union names in code snippets */ } -a.code.hl_interface { /* style for links to interface names in code snippets */ } -a.code.hl_protocol { /* style for links to protocol names in code snippets */ } -a.code.hl_category { /* style for links to category names in code snippets */ } -a.code.hl_exception { /* style for links to exception names in code snippets */ } -a.code.hl_service { /* style for links to service names in code snippets */ } -a.code.hl_singleton { /* style for links to singleton names in code snippets */ } -a.code.hl_concept { /* style for links to concept names in code snippets */ } -a.code.hl_namespace { /* style for links to namespace names in code snippets */ } -a.code.hl_package { /* style for links to package names in code snippets */ } -a.code.hl_define { /* style for links to macro names in code snippets */ } -a.code.hl_function { /* style for links to function names in code snippets */ } -a.code.hl_variable { /* style for links to variable names in code snippets */ } -a.code.hl_typedef { /* style for links to typedef names in code snippets */ } -a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } -a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } -a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } -a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } -a.code.hl_friend { /* style for links to friend names in code snippets */ } -a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } -a.code.hl_property { /* style for links to property names in code snippets */ } -a.code.hl_event { /* style for links to event names in code snippets */ } -a.code.hl_sequence { /* style for links to sequence names in code snippets */ } -a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } - /* @end */ dl.el { @@ -262,7 +180,7 @@ dl.el { } ul { - overflow: visible; + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ } #side-nav ul { @@ -340,7 +258,6 @@ div.line.glow { span.lineno { padding-right: 4px; - margin-right: 9px; text-align: right; border-right: 2px solid #0F0; background-color: #E8E8E8; @@ -467,12 +384,6 @@ img.footer { vertical-align: middle; } -.compoundTemplParams { - color: #4665A2; - font-size: 80%; - line-height: 120%; -} - /* @group Code Colorization */ span.keyword { @@ -1356,11 +1267,6 @@ dl.section dd { } -#projectrow -{ - height: 56px; -} - #projectlogo { text-align: center; @@ -1376,19 +1282,18 @@ dl.section dd { #projectalign { vertical-align: middle; - padding-left: 0.5em; } #projectname { - font: 200% Tahoma, Arial,sans-serif; + font: 300% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } #projectbrief { - font: 90% Tahoma, Arial,sans-serif; + font: 120% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } @@ -1453,12 +1358,10 @@ dl.citelist dt { font-weight:bold; margin-right:10px; padding:5px; - text-align:right; - width:52px; } dl.citelist dd { - margin:2px 0 2px 72px; + margin:2px 0; padding:5px 0; } @@ -1521,16 +1424,6 @@ div.toc li.level4 { margin-left: 45px; } -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -span.obfuscator { - display: none; -} - .PageDocRTL-title div.toc li.level1 { margin-left: 0 !important; margin-right: 0; @@ -1585,7 +1478,7 @@ tr.heading h2 { #powerTip { cursor: default; - /*white-space: nowrap;*/ + white-space: nowrap; background-color: white; border: 1px solid gray; border-radius: 4px 4px 4px 4px; @@ -1768,6 +1661,47 @@ tr.heading h2 { /* @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; @@ -1824,10 +1758,6 @@ table.DocNodeLTR { margin-left: 0; } -code.JavaDocCode { - direction:ltr; -} - tt, code, kbd, samp { display: inline-block; diff --git a/docs/doxygen.svg b/docs/doxygen.svg deleted file mode 100644 index d42dad5..0000000 --- a/docs/doxygen.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/dynsections.js b/docs/dynsections.js index 7906639..c8e84aa 100644 --- a/docs/dynsections.js +++ b/docs/dynsections.js @@ -1,26 +1,25 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. + @licstart The following is the entire license notice for the + JavaScript code in this file. - The MIT License (MIT) + Copyright (C) 1997-2017 by Dimitri van Heesch - Copyright (C) 1997-2020 by Dimitri van Heesch + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file + @licend The above is the entire license notice + for the JavaScript code in this file */ function toggleVisibility(linkObj) { @@ -119,10 +118,10 @@ function toggleInherit(id) } } /* @license-end */ + $(document).ready(function() { $('.code,.codeRef').each(function() { $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); - $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); }); }); diff --git a/docs/files.html b/docs/files.html index bcafe0e..4f64eb8 100644 --- a/docs/files.html +++ b/docs/files.html @@ -2,8 +2,8 @@ - - + + clutchlog: File List @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,27 +84,19 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });
-
File List
+
+
File List
Here is a list of all documented files with brief descriptions:
-
[detail level 12]
- - - - - - - - - - - - - - - - +
  clutchlog
 clutchlog.h
  tests
 t-assert.cpp
 t-color.cpp
 t-color16M.cpp
 t-color256.cpp
 t-demo.cpp
 t-depth-delta.cpp
 t-dump.cpp
 t-extra.cpp
 t-filename.cpp
 t-fmt-constructors.cpp
 t-hash-color.cpp
 t-log.cpp
 t-one-line-if.cpp
+ + + + + + +
 clutchlog.h
 t-assert.cpp
 t-color.cpp
 t-demo.cpp
 t-dump.cpp
 t-log.cpp
 t-one-line-if.cpp
@@ -112,7 +104,9 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); }); diff --git a/docs/files_dup.js b/docs/files_dup.js index 214fd05..21fd2bb 100644 --- a/docs/files_dup.js +++ b/docs/files_dup.js @@ -1,5 +1,10 @@ var files_dup = [ - [ "clutchlog", "dir_c318bd5cf14aaa5601e6029e0b5b4048.html", "dir_c318bd5cf14aaa5601e6029e0b5b4048" ], - [ "tests", "dir_59425e443f801f1f2fd8bbe4959a3ccf.html", "dir_59425e443f801f1f2fd8bbe4959a3ccf" ] + [ "clutchlog.h", "clutchlog_8h.html", "clutchlog_8h" ], + [ "t-assert.cpp", "t-assert_8cpp_source.html", null ], + [ "t-color.cpp", "t-color_8cpp_source.html", null ], + [ "t-demo.cpp", "t-demo_8cpp_source.html", null ], + [ "t-dump.cpp", "t-dump_8cpp_source.html", null ], + [ "t-log.cpp", "t-log_8cpp_source.html", null ], + [ "t-one-line-if.cpp", "t-one-line-if_8cpp_source.html", null ] ]; \ No newline at end of file diff --git a/docs/functions.html b/docs/functions.html index 2780889..1177343 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class Members @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -86,146 +86,207 @@ $(document).ready(function(){initNavTree('functions.html',''); initResizable();
Here is a list of all documented class members with links to the class documentation for each member:
-

- _ -

diff --git a/docs/functions_enum.html b/docs/functions_enum.html index 9f32d21..87885b9 100644 --- a/docs/functions_enum.html +++ b/docs/functions_enum.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class Members - Enumerations @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -85,20 +85,27 @@ $(document).ready(function(){initNavTree('functions_enum.html',''); initResizabl
 
diff --git a/docs/functions_func.html b/docs/functions_func.html index 5039945..957c09a 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class Members - Functions @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,89 +84,79 @@ $(document).ready(function(){initNavTree('functions_func.html',''); initResizabl
-  - -

- b -

- - -

- c -

- - -

- d -

- - -

- f -

- - -

- i -

- - -

- l -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

diff --git a/docs/functions_rela.html b/docs/functions_rela.html index 039fac1..ea7f4e0 100644 --- a/docs/functions_rela.html +++ b/docs/functions_rela.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class Members - Related Functions @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -85,14 +85,18 @@ $(document).ready(function(){initNavTree('functions_rela.html',''); initResizabl
 
diff --git a/docs/functions_vars.html b/docs/functions_vars.html index 90d9e8a..6248325 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -2,8 +2,8 @@ - - + + clutchlog: Class Members - Variables @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,85 +84,91 @@ $(document).ready(function(){initNavTree('functions_vars.html',''); initResizabl
-  - -

- _ -

- - -

- b -

- - -

- d -

- - -

- f -

- - -

- i -

- - -

- m -

- - -

- r -

- - -

- s -

- - -

- t -

diff --git a/docs/globals.html b/docs/globals.html index 4216408..12bc633 100644 --- a/docs/globals.html +++ b/docs/globals.html @@ -2,8 +2,8 @@ - - + + clutchlog: File Members @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -85,30 +85,63 @@ $(document).ready(function(){initNavTree('globals.html',''); initResizable(); })
Here is a list of all documented file members with links to the documentation:
diff --git a/docs/globals_defs.html b/docs/globals_defs.html index b68e55e..0dce76c 100644 --- a/docs/globals_defs.html +++ b/docs/globals_defs.html @@ -2,8 +2,8 @@ - - + + clutchlog: File Members @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -85,30 +85,63 @@ $(document).ready(function(){initNavTree('globals_defs.html',''); initResizable(
 
diff --git a/docs/graph_legend.html b/docs/graph_legend.html index 16bcdc0..3a72dae 100644 --- a/docs/graph_legend.html +++ b/docs/graph_legend.html @@ -2,8 +2,8 @@ - - + + clutchlog: Graph Legend @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -84,11 +84,12 @@ $(document).ready(function(){initNavTree('graph_legend.html',''); initResizable(
-
Graph Legend
+
+
Graph Legend
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
@@ -123,7 +124,7 @@ $(document).ready(function(){initNavTree('graph_legend.html',''); initResizable(
Used *m_usedClass;
};

This will result in the following graph:

-

The boxes in the above graph have the following meaning:

+

The boxes in the above graph have the following meaning:

  • A filled gray box represents the struct or class for which the graph is generated.
  • @@ -134,7 +135,7 @@ A box with a gray border denotes an undocumented struct or class.
  • A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
-

The arrows have the following meaning:

+

The arrows have the following meaning:

  • A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • @@ -152,7 +153,9 @@ A yellow dashed arrow denotes a relation between a template instance and the tem diff --git a/docs/group___default_config.html b/docs/group___default_config.html index c5e3bb9..61727bf 100644 --- a/docs/group___default_config.html +++ b/docs/group___default_config.html @@ -2,8 +2,8 @@ - - + + clutchlog: Default configuration management @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -86,168 +86,54 @@ $(document).ready(function(){initNavTree('group___default_config.html',''); init
-
Default configuration management
+
+
Default configuration management

Detailed Description

- - - + +

+

Macros

#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG   clutchlog::level::progress
 Default level over which calls to the logger are optimized out when NDEBUG is defined. More...
+#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG   clutchlog::level::progress
 Default level over which calls to the logger are optimized out when NDEBUG is defined.
 
- - + + + - - + + - - + + - - + + - - + + - - + +

Default configuration members

#define CLUTCHLOG_DEFAULT_FORMAT   "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"

+Default configuration members

+#define CLUTCHLOG_DEFAULT_FORMAT   "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
 Compile-time default format of the messages (debug mode: with absolute location).
 
#define CLUTCHDUMP_DEFAULT_FORMAT   "# {level} in {func} @ {file}:{line}"
 Compile-time default format of the comment line in file dump. More...
+#define CLUTCHDUMP_DEFAULT_FORMAT   "# {level} in {func} @ {file}:{line}"
 Compile-time default format of the comment line in file dump.
 
#define CLUTCHDUMP_DEFAULT_SEP   "\n"
 Compile-time default item separator for dump. More...
+#define CLUTCHDUMP_DEFAULT_SEP   "\n"
 Compile-time default item separator for dump.
 
#define CLUTCHLOG_DEFAULT_DEPTH_MARK   ">"
 Compile-time default mark for stack depth. More...
+#define CLUTCHLOG_DEFAULT_DEPTH_MARK   ">"
 Compile-time default mark for stack depth.
 
#define CLUTCHLOG_STRIP_CALLS   5
 Compile-time number of call stack levels to remove from depth display by default. More...
+#define CLUTCHLOG_STRIP_CALLS   5
 Compile-time number of call stack levels to remove from depth display by default.
 
#define CLUTCHLOG_DEFAULT_HFILL_MARK   '.'
 Character used as a filling for right-align the right part of messages with "{hfill}". More...
+#define CLUTCHLOG_DEFAULT_HFILL_MARK   '.'
 Character used as a filling for right-align the right part of messages with "{hfill}".
 
-

Macro Definition Documentation

- -

◆ CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG

- -
-
- - - - -
#define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG   clutchlog::level::progress
-
- -

Default level over which calls to the logger are optimized out when NDEBUG is defined.

- -

Definition at line 68 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOG_DEFAULT_FORMAT

- -
-
- - - - -
#define CLUTCHLOG_DEFAULT_FORMAT   "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
-
-

Compile-time default format of the messages (debug mode: with absolute location).

- -

Definition at line 209 of file clutchlog.h.

- -
-
- -

◆ CLUTCHDUMP_DEFAULT_FORMAT

- -
-
- - - - -
#define CLUTCHDUMP_DEFAULT_FORMAT   "# {level} in {func} @ {file}:{line}"
-
- -

Compile-time default format of the comment line in file dump.

- -

Definition at line 232 of file clutchlog.h.

- -
-
- -

◆ CLUTCHDUMP_DEFAULT_SEP

- -
-
- - - - -
#define CLUTCHDUMP_DEFAULT_SEP   "\n"
-
- -

Compile-time default item separator for dump.

- -

Definition at line 250 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOG_DEFAULT_DEPTH_MARK

- -
-
- - - - -
#define CLUTCHLOG_DEFAULT_DEPTH_MARK   ">"
-
- -

Compile-time default mark for stack depth.

- -

Definition at line 257 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOG_STRIP_CALLS

- -
-
- - - - -
#define CLUTCHLOG_STRIP_CALLS   5
-
- -

Compile-time number of call stack levels to remove from depth display by default.

- -

Definition at line 264 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOG_DEFAULT_HFILL_MARK

- -
-
- - - - -
#define CLUTCHLOG_DEFAULT_HFILL_MARK   '.'
-
- -

Character used as a filling for right-align the right part of messages with "{hfill}".

- -

Definition at line 271 of file clutchlog.h.

- -
-
diff --git a/docs/group___formating.html b/docs/group___formating.html index 693e752..5883b58 100644 --- a/docs/group___formating.html +++ b/docs/group___formating.html @@ -2,8 +2,8 @@ - - + + clutchlog: Formating tools @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -86,12 +86,13 @@ $(document).ready(function(){initNavTree('group___formating.html',''); initResiz
-
Formating tools
+
+
Formating tools

Detailed Description

- @@ -102,7 +103,9 @@ Classes diff --git a/docs/group___formating.js b/docs/group___formating.js index 0226961..4c17423 100644 --- a/docs/group___formating.js +++ b/docs/group___formating.js @@ -1,25 +1,41 @@ var group___formating = [ - [ "clutchlog::fmt", "classclutchlog_1_1fmt.html", [ + [ "fmt", "classclutchlog_1_1fmt.html", [ [ "fmt", "classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959", null ], - [ "print_on", "classclutchlog_1_1fmt.html#ad754c64eb6fd8730a616d113cb9f9129", null ], + [ "fmt", "classclutchlog_1_1fmt.html#a6cc6126d113fc0647ed3acbf29cdc425", null ], + [ "fmt", "classclutchlog_1_1fmt.html#ac69e6d3b7ddaec908c429ac61f354267", null ], + [ "fmt", "classclutchlog_1_1fmt.html#a13453c0b5dbc19d9b510dcdc0352b443", null ], + [ "fmt", "classclutchlog_1_1fmt.html#a65856874070ec0865b3a5b9aeb0e4f3d", null ], + [ "fmt", "classclutchlog_1_1fmt.html#a99b3a05ddf6fa341cee6cb1e5dffc159", null ], + [ "fmt", "classclutchlog_1_1fmt.html#aeea73b0239bf73ebc8ee84c1e6d278e2", null ], + [ "print_on", "classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0", null ], [ "operator()", "classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c", null ], [ "str", "classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b", null ], - [ "operator<<", "group__colors16.html#gac00a2f504f5308207f7a94915fe9a9c5", null ], - [ "operator<<", "group__colors16.html#ga93d498671d8dc2e796978c4f4de51241", null ], - [ "operator<<", "classclutchlog_1_1fmt.html#a24568f7a157d50e3075a74a619719c84", null ], - [ "mode", "classclutchlog_1_1fmt.html#a0aa57cdd56ccc79c7750921ab534b205", null ], + [ "operator<<", "classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da", null ], + [ "fore", "classclutchlog_1_1fmt.html#a8307a848fcf9ed929435b3e1f2b53401", null ], + [ "back", "classclutchlog_1_1fmt.html#a86696b20e5b31c96ba592926efb324f3", null ], [ "style", "classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b", null ], - [ "fore", "group__colors16.html#ga8307a848fcf9ed929435b3e1f2b53401", null ], - [ "back", "group__colors16.html#ga86696b20e5b31c96ba592926efb324f3", null ], - [ "fore_256", "group__colors256__16_m.html#gad98fbe84ef338ded8425d56955825a2c", null ], - [ "back_256", "group__colors256__16_m.html#ga1d687af385957846034568c3a62d4ef0", null ], - [ "fore_16M", "group__colors256__16_m.html#ga626c99eb11d1718d7a2a8bb3f079e6de", null ], - [ "back_16M", "group__colors256__16_m.html#gaa2fcbb402dc2426d3720b8bc78a80ec0", null ], - [ "ansi", "classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502", [ - [ "colors_16", "classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1e7cced329549fc4c2393381f068062e", null ], - [ "colors_256", "classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a7a3c32a8827eb17435511b4c7a429749", null ], - [ "colors_16M", "classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1844e5aae3a3eefc500c545e3c35bcfa", null ] + [ "fg", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0", [ + [ "black", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a1ffd9e753c8054cc61456ac7fac1ac89", null ], + [ "red", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0abda9643ac6601722a28f238714274da4", null ], + [ "green", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a9f27410725ab8cc8854a2769c7a516b8", null ], + [ "yellow", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0ad487dd0b55dfcacdd920ccbdaeafa351", null ], + [ "blue", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a48d6215903dff56238e52e8891380c8f", null ], + [ "magenta", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a4c2a4a7078da0ac6733464eacfd00f86", null ], + [ "cyan", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a6411532ba4971f378391776a9db629d3", null ], + [ "white", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0ad508fe45cecaf653904a0e774084bb5c", null ], + [ "none", "classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a334c4a4c42fdb79d7ebc3e73b517e6f8", null ] + ] ], + [ "bg", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1e", [ + [ "black", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea1ffd9e753c8054cc61456ac7fac1ac89", null ], + [ "red", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1eabda9643ac6601722a28f238714274da4", null ], + [ "green", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea9f27410725ab8cc8854a2769c7a516b8", null ], + [ "yellow", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ead487dd0b55dfcacdd920ccbdaeafa351", null ], + [ "blue", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea48d6215903dff56238e52e8891380c8f", null ], + [ "magenta", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea4c2a4a7078da0ac6733464eacfd00f86", null ], + [ "cyan", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea6411532ba4971f378391776a9db629d3", null ], + [ "white", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ead508fe45cecaf653904a0e774084bb5c", null ], + [ "none", "classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea334c4a4c42fdb79d7ebc3e73b517e6f8", null ] ] ], [ "typo", "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89", [ [ "reset", "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a86266ee937d97f812a8e57d22b62ee29", null ], @@ -27,44 +43,6 @@ var group___formating = [ "underline", "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a6dc7b4483f8c2c701a48e42db552806d", null ], [ "inverse", "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89aa91c78e040f7b9d158f381e197f8beb4", null ], [ "none", "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a334c4a4c42fdb79d7ebc3e73b517e6f8", null ] - ] ], - [ "fg", "group__colors16.html#ga4662a3ec3577c6a575a2c734636ed8a0", [ - [ "black", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a1ffd9e753c8054cc61456ac7fac1ac89", null ], - [ "red", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0abda9643ac6601722a28f238714274da4", null ], - [ "green", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a9f27410725ab8cc8854a2769c7a516b8", null ], - [ "yellow", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0ad487dd0b55dfcacdd920ccbdaeafa351", null ], - [ "blue", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a48d6215903dff56238e52e8891380c8f", null ], - [ "magenta", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a4c2a4a7078da0ac6733464eacfd00f86", null ], - [ "cyan", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a6411532ba4971f378391776a9db629d3", null ], - [ "white", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0ad508fe45cecaf653904a0e774084bb5c", null ], - [ "bright_black", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a74474ae20bf3ef3bce6fd679194ce383", null ], - [ "bright_red", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a8b84c6e788e91a3a45b9dabedb160590", null ], - [ "bright_green", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0abd5b4652dffd84bab66529361d0c4974", null ], - [ "bright_yellow", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a75dd76d162b9554ec8b63736bc22d93e", null ], - [ "bright_blue", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0ac5b47880b4b2ec37179078d63a85def3", null ], - [ "bright_magenta", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a37553b57ad1d7f61b0c51f5a535f72bf", null ], - [ "bright_cyan", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0acc69f9955c2bf916bb9a83f38141432f", null ], - [ "bright_white", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0ada7527acf78cb4e7b582e8163a1f642a", null ], - [ "none", "group__colors16.html#gga4662a3ec3577c6a575a2c734636ed8a0a334c4a4c42fdb79d7ebc3e73b517e6f8", null ] - ] ], - [ "bg", "group__colors16.html#ga1cf3e27e4041250ffea0a6d58010da1e", [ - [ "black", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea1ffd9e753c8054cc61456ac7fac1ac89", null ], - [ "red", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1eabda9643ac6601722a28f238714274da4", null ], - [ "green", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea9f27410725ab8cc8854a2769c7a516b8", null ], - [ "yellow", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ead487dd0b55dfcacdd920ccbdaeafa351", null ], - [ "blue", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea48d6215903dff56238e52e8891380c8f", null ], - [ "magenta", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea4c2a4a7078da0ac6733464eacfd00f86", null ], - [ "cyan", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea6411532ba4971f378391776a9db629d3", null ], - [ "white", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ead508fe45cecaf653904a0e774084bb5c", null ], - [ "bright_black", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea74474ae20bf3ef3bce6fd679194ce383", null ], - [ "bright_red", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea8b84c6e788e91a3a45b9dabedb160590", null ], - [ "bright_green", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1eabd5b4652dffd84bab66529361d0c4974", null ], - [ "bright_yellow", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea75dd76d162b9554ec8b63736bc22d93e", null ], - [ "bright_blue", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1eac5b47880b4b2ec37179078d63a85def3", null ], - [ "bright_magenta", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea37553b57ad1d7f61b0c51f5a535f72bf", null ], - [ "bright_cyan", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1eacc69f9955c2bf916bb9a83f38141432f", null ], - [ "bright_white", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1eada7527acf78cb4e7b582e8163a1f642a", null ], - [ "none", "group__colors16.html#gga1cf3e27e4041250ffea0a6d58010da1ea334c4a4c42fdb79d7ebc3e73b517e6f8", null ] ] ] ] ] ]; \ No newline at end of file diff --git a/docs/group___main.html b/docs/group___main.html index 0840712..1d2cd7b 100644 --- a/docs/group___main.html +++ b/docs/group___main.html @@ -2,8 +2,8 @@ - - + +clutchlog: Main class @@ -24,10 +24,11 @@

+

Classes

class  clutchlog::fmt
 Color and style formatter for ANSI terminal escape sequences. More...
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -86,12 +86,13 @@ $(document).ready(function(){initNavTree('group___main.html',''); initResizable(
-
Main class
+
+
Main class

Detailed Description

- @@ -102,7 +103,9 @@ Classes diff --git a/docs/group___main.js b/docs/group___main.js index b5fa18d..06f185d 100644 --- a/docs/group___main.js +++ b/docs/group___main.js @@ -1,26 +1,31 @@ var group___main = [ [ "clutchlog", "classclutchlog.html", [ + [ "System-dependent stack depth", "index.html#autotoc_md22", null ], + [ "System-dependent horizontal fill", "index.html#autotoc_md23", null ], + [ "Dependencies", "index.html#autotoc_md24", null ], + [ "Variable names within the CLUTCHLOG macro", "index.html#autotoc_md25", null ], + [ "Features", "index.html#autotoc_md26", null ], [ "scope_t", "structclutchlog_1_1scope__t.html", [ [ "scope_t", "structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572", null ], [ "matches", "structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9", null ], [ "stage", "structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744", null ], [ "there", "structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff", null ] ] ], - [ "logger", "classclutchlog.html#a6e2a5e98fa9f722d90ba6515895543ac", null ], + [ "clutchlog", "classclutchlog.html#a0906d74275cedcd403da94879764815e", null ], + [ "clutchlog", "classclutchlog.html#a03b145e36f15435a640bb5a885d9f642", null ], + [ "logger", "classclutchlog.html#acfaceb77da01503b432644a3efaee4fa", null ], + [ "operator=", "classclutchlog.html#aef653a9744a72a889ca8163269bb781e", null ], [ "format", "classclutchlog.html#a656c277e074b64728cca871f2b484d1c", null ], [ "format", "classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80", null ], [ "format_comment", "classclutchlog.html#a2144abe4ec6f630126b6490908b5f924", null ], [ "format_comment", "classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5", null ], [ "out", "classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d", null ], - [ "out", "classclutchlog.html#ab7773f031a00a05b8c83c1936406cb98", null ], - [ "filehash_styles", "classclutchlog.html#ae17db5808155fbc6dc48b4727d0c3abf", null ], - [ "funchash_styles", "classclutchlog.html#acbb50f6306ebb3c8b0d1a52e7f327416", null ], - [ "depth_styles", "classclutchlog.html#a08310b92e86687349e70f56f9ac1d656", null ], + [ "out", "classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266", null ], [ "threshold", "classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4", null ], [ "threshold", "classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9", null ], [ "threshold", "classclutchlog.html#ab45287cc9c14217904a13aff49573732", null ], - [ "levels", "classclutchlog.html#a8d206443dea964f77965450a83693d98", null ], + [ "levels", "classclutchlog.html#aff3aa09fb60f7d6dc688c028d3834d8a", null ], [ "level_of", "classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd", null ], [ "file", "classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c", null ], [ "func", "classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447", null ], @@ -29,13 +34,12 @@ var group___main = [ "style", "classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591", null ], [ "style", "classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6", null ], [ "style", "classclutchlog.html#a4831f44fd5ade102e57320632095934d", null ], - [ "filename", "classclutchlog.html#a82b9375728af2d962831a743d95f4ae7", null ], [ "locate", "classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96", null ], [ "replace", "classclutchlog.html#a972f895c70edc335f3018a2c8971d59e", null ], [ "replace", "classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2", null ], [ "format", "classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761", null ], - [ "log", "classclutchlog.html#a14c19e17c54d6353ba34c0dc3371094a", null ], - [ "dump", "classclutchlog.html#ab72a0adc9ff287270afe09c9da825fdb", null ], + [ "log", "classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a", null ], + [ "dump", "classclutchlog.html#a63308e8deae3cfec6801318203494143", null ], [ "default_format", "classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc", null ], [ "dump_default_format", "classclutchlog.html#ace879554298e6e6e36dafef330c27be8", null ], [ "dump_default_sep", "classclutchlog.html#af898bffe23b125245e338d7495c76d45", null ], @@ -47,7 +51,6 @@ var group___main = [ "_strip_calls", "classclutchlog.html#a356df86455409193792b6ed550dfd09e", null ], [ "_level_word", "classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f", null ], [ "_word_level", "classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888", null ], - [ "_level_short", "classclutchlog.html#a08e8a817a75a4e9f0159231c941e0dae", null ], [ "_level_fmt", "classclutchlog.html#ab805ac5c33885459f9f752518a4aa735", null ], [ "_format_log", "classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e", null ], [ "_format_dump", "classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5", null ], @@ -56,9 +59,6 @@ var group___main = [ "_in_file", "classclutchlog.html#aded03528f34d9000f618419c482c5042", null ], [ "_in_func", "classclutchlog.html#a130c4f12eacbd2028102838fe16b734e", null ], [ "_in_line", "classclutchlog.html#a41757198b29862832a14472a9e5e24c6", null ], - [ "_filehash_fmts", "classclutchlog.html#a2a334e009533744b52f01ef240a59e9d", null ], - [ "_funchash_fmts", "classclutchlog.html#a095e1545a2085ac623e4af19364fea7f", null ], - [ "_filename", "classclutchlog.html#a0431616914dbbecb908a794f5b46dada", null ], [ "level", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928", [ [ "critical", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928af332f31a368c931f79b9b64d55fc7701", null ], [ "error", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928a023c3e8a55ddfd140d3e3268dd6221e9", null ], @@ -68,14 +68,6 @@ var group___main = [ "info", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928aa1ea607f2bfe5db06f1cf2bd991f7dc1", null ], [ "debug", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928a911f5ef324f37061f68a239577e0d0bd", null ], [ "xdebug", "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928abba74b810831c7753777e6dcc0c0f4e2", null ] - ] ], - [ "filename", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20e", [ - [ "path", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea19ebb39c0f117afbe6658bbc9bea68a4", null ], - [ "base", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ead79ddc78294d362c22ba917cba2cd3ef", null ], - [ "dir", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea35cf5f272267d9656cfcfe52243f4841", null ], - [ "dirbase", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea9534ecbf6a632833ca32ea5bb33f7eea", null ], - [ "stem", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea04548b133168127416623d51dd3b9338", null ], - [ "dirstem", "classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea5b96778dd84a50c1b288b31a5200df4d", null ] ] ] ] ] ]; \ No newline at end of file diff --git a/docs/group___use_macros.html b/docs/group___use_macros.html index 43410bc..cab543f 100644 --- a/docs/group___use_macros.html +++ b/docs/group___use_macros.html @@ -2,8 +2,8 @@ - - + +clutchlog: High-level API macros @@ -24,10 +24,11 @@

+

Classes

class  clutchlog
 The single class which holds everything. More...
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -86,20 +86,19 @@ $(document).ready(function(){initNavTree('group___use_macros.html',''); initResi
-
High-level API macros
+
+
High-level API macros

Detailed Description

- - - + + - - - - + @@ -113,70 +112,7 @@ Macros

+

Macros

#define CLUTCHLOC   __FILE__, __FUNCTION__, __LINE__
 Handy shortcuts to location. More...
+#define CLUTCHLOC   __FILE__, __FUNCTION__, __LINE__
 Handy shortcuts to location.
 
#define CLUTCHLOGD(LEVEL, WHAT, DEPTH_DELTA)
 Log a message at the given level and with a given depth delta. More...
 
#define CLUTCHLOG(LEVEL, WHAT)    CLUTCHLOGD(LEVEL, WHAT, 0)
#define CLUTCHLOG(LEVEL, WHAT)
 Log a message at the given level. More...
 
#define CLUTCHDUMP(LEVEL, CONTAINER, FILENAME)
 

Macro Definition Documentation

- -

◆ CLUTCHLOC

- -
-
- - - - -
#define CLUTCHLOC   __FILE__, __FUNCTION__, __LINE__
-
- -

Handy shortcuts to location.

- -

Definition at line 78 of file clutchlog.h.

- -
-
- -

◆ CLUTCHLOGD

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define CLUTCHLOGD( LEVEL,
 WHAT,
 DEPTH_DELTA 
)
-
-Value:
do { \
-
auto& clutchlog__logger = clutchlog::logger(); \
-
std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \
-
clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC, DEPTH_DELTA); \
-
} while(0)
-
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:307
-
#define CLUTCHLOC
Handy shortcuts to location.
Definition: clutchlog.h:78
-
-

Log a message at the given level and with a given depth delta.

- -

Definition at line 82 of file clutchlog.h.

- -
-
- +

◆ CLUTCHLOG

@@ -197,18 +133,23 @@ Macros ) -     CLUTCHLOGD(LEVEL, WHAT, 0) +
- +Value:
do { \
+
auto& clutchlog__logger = clutchlog::logger(); \
+
std::ostringstream clutchlog__msg ; clutchlog__msg << WHAT; \
+
clutchlog__logger.log(clutchlog::level::LEVEL, clutchlog__msg.str(), CLUTCHLOC); \
+
} while(0)
+

Log a message at the given level.

-

Definition at line 99 of file clutchlog.h.

+

Definition at line 81 of file clutchlog.h.

- +

◆ CLUTCHDUMP

@@ -240,19 +181,18 @@ Macros
Value:
do { \
-
auto& clutchlog__logger = clutchlog::logger(); \
+
auto& clutchlog__logger = clutchlog::logger(); \
clutchlog__logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
- +
} while(0)
-
#define CLUTCHDUMP_DEFAULT_SEP
Compile-time default item separator for dump.
Definition: clutchlog.h:250

Dump the given container.

-

Definition at line 108 of file clutchlog.h.

+

Definition at line 98 of file clutchlog.h.

- +

◆ CLUTCHFUNC

@@ -284,8 +224,8 @@ Macros
Value:
do { \
-
auto& clutchlog__logger = clutchlog::logger(); \
-
clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
+
auto& clutchlog__logger = clutchlog::logger(); \
+
clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
if(clutchlog__scope.matches) { \
FUNC(__VA_ARGS__); \
} \
@@ -293,11 +233,11 @@ Macros

Call any function if the scope matches.

-

Definition at line 125 of file clutchlog.h.

+

Definition at line 115 of file clutchlog.h.

- +

◆ CLUTCHCODE

@@ -323,8 +263,8 @@ Macros
Value:
do { \
-
auto& clutchlog__logger = clutchlog::logger(); \
-
clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
+
auto& clutchlog__logger = clutchlog::logger(); \
+
clutchlog::scope_t clutchlog__scope = clutchlog__logger.locate(clutchlog::level::LEVEL, CLUTCHLOC); \
if(clutchlog__scope.matches) { \
__VA_ARGS__ \
} \
@@ -332,16 +272,21 @@ Macros

Run any code if the scope matches.

-

Definition at line 146 of file clutchlog.h.

+

Definition at line 136 of file clutchlog.h.

+
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:296
+
#define CLUTCHLOC
Handy shortcuts to location.
Definition: clutchlog.h:77
+
#define CLUTCHDUMP_DEFAULT_SEP
Compile-time default item separator for dump.
Definition: clutchlog.h:239
diff --git a/docs/group___use_macros.js b/docs/group___use_macros.js index 3f72ab3..8015e49 100644 --- a/docs/group___use_macros.js +++ b/docs/group___use_macros.js @@ -1,7 +1,6 @@ var group___use_macros = [ [ "CLUTCHLOC", "group___use_macros.html#gae8911119d726a43b77f5781cb5a72813", null ], - [ "CLUTCHLOGD", "group___use_macros.html#ga369d365b7c25ec270596c3ca6839cf2c", null ], [ "CLUTCHLOG", "group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d", null ], [ "CLUTCHDUMP", "group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2", null ], [ "CLUTCHFUNC", "group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae", null ], diff --git a/docs/group__colors16.html b/docs/group__colors16.html deleted file mode 100644 index f8df5c5..0000000 --- a/docs/group__colors16.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - -clutchlog: Colors management in 16 colors mode (4-bits ANSI). - - - - - - - - - - - - - - -
-
- - - - - - - -
-
clutchlog 0.17 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
Colors management in 16 colors mode (4-bits ANSI).
-
-
-

Detailed Description

- - - - - - - - -

-Enumerations

enum class  clutchlog::fmt::fg {
-  black = 30 -, red = 31 -, green = 32 -, yellow = 33 -,
-  blue = 34 -, magenta = 35 -, cyan = 36 -, white = 37 -,
-  bright_black = 90 -, bright_red = 91 -, bright_green = 92 -, bright_yellow = 93 -,
-  bright_blue = 94 -, bright_magenta = 95 -, bright_cyan = 96 -, bright_white = 97 -,
-  none = -1 -
- }
 Foreground color codes. More...
 
enum class  clutchlog::fmt::bg {
-  black = 40 -, red = 41 -, green = 42 -, yellow = 43 -,
-  blue = 44 -, magenta = 45 -, cyan = 46 -, white = 47 -,
-  bright_black = 100 -, bright_red = 101 -, bright_green = 102 -, bright_yellow = 103 -,
-  bright_blue = 104 -, bright_magenta = 105 -, bright_cyan = 106 -, bright_white = 107 -,
-  none = -1 -
- }
 Background color codes. More...
 
- - - - - - - -

-Variables

-enum clutchlog::fmt::fg clutchlog::fmt::fore
 Foreground color.
 
-enum clutchlog::fmt::bg clutchlog::fmt::back
 Background color.
 
- - - - - - - -

-Friends

std::ostream & clutchlog::fmt::operator<< (std::ostream &os, const std::tuple< fg, bg, typo > &fbs)
 Output stream operator for a 3-tuple of 16-colors mode tags. More...
 
std::ostream & clutchlog::fmt::operator<< (std::ostream &os, const typo &s)
 Output stream operator for a typo tag alone, in 16-colors mode. More...
 
-

Enumeration Type Documentation

- -

◆ fg

- -
-
- - - - - -
- - - - -
enum class clutchlog::fmt::fg
-
-strong
-
- -

Foreground color codes.

- -

Definition at line 404 of file clutchlog.h.

- -
-
- -

◆ bg

- -
-
- - - - - -
- - - - -
enum class clutchlog::fmt::bg
-
-strong
-
- -

Background color codes.

- -

Definition at line 425 of file clutchlog.h.

- -
-
-

Friends

- -

◆ operator<< [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream & operator<< (std::ostream & os,
const std::tuple< fg, bg, typo > & fbs 
)
-
-friend
-
- -

Output stream operator for a 3-tuple of 16-colors mode tags.

- -

Definition at line 447 of file clutchlog.h.

- -
-
- -

◆ operator<< [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream & operator<< (std::ostream & os,
const typos 
)
-
-friend
-
- -

Output stream operator for a typo tag alone, in 16-colors mode.

- -

Definition at line 469 of file clutchlog.h.

- -
-
-
-
- - - - diff --git a/docs/group__colors16.js b/docs/group__colors16.js deleted file mode 100644 index 61ae8aa..0000000 --- a/docs/group__colors16.js +++ /dev/null @@ -1,9 +0,0 @@ -var group__colors16 = -[ - [ "clutchlog::fmt::fg", "group__colors16.html#ga4662a3ec3577c6a575a2c734636ed8a0", null ], - [ "clutchlog::fmt::bg", "group__colors16.html#ga1cf3e27e4041250ffea0a6d58010da1e", null ], - [ "clutchlog::fmt::fore", "group__colors16.html#ga8307a848fcf9ed929435b3e1f2b53401", null ], - [ "clutchlog::fmt::back", "group__colors16.html#ga86696b20e5b31c96ba592926efb324f3", null ], - [ "clutchlog::fmt::operator<<", "group__colors16.html#gac00a2f504f5308207f7a94915fe9a9c5", null ], - [ "clutchlog::fmt::operator<<", "group__colors16.html#ga93d498671d8dc2e796978c4f4de51241", null ] -]; \ No newline at end of file diff --git a/docs/group__colors256__16_m.html b/docs/group__colors256__16_m.html deleted file mode 100644 index 1e99eb5..0000000 --- a/docs/group__colors256__16_m.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -clutchlog: Internal colors management in 256 and 16M colors modes. - - - - - - - - - - - - - - -
-
- - - - - - - -
-
clutchlog 0.17 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
Internal colors management in 256 and 16M colors modes.
-
-
-

Detailed Description

- - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  clutchlog::fmt::color
 Interface class for colors representation. More...
 
struct  clutchlog::fmt::color_256
 Abstract base class for 256 colors objects (8-bits ANSI). More...
 
struct  clutchlog::fmt::fg_256
 Foreground in 256-colors mode. More...
 
struct  clutchlog::fmt::bg_256
 Background in 256-colors mode. More...
 
struct  clutchlog::fmt::color_16M
 Abstract base class for 16M colors objects (24-bits ANSI). More...
 
struct  clutchlog::fmt::fg_16M
 Foreground in 256-colors mode. More...
 
struct  clutchlog::fmt::bg_16M
 background in 256-colors mode. More...
 
- - - - - - - - - - - - - -

-Variables

-clutchlog::fmt::fg_256 clutchlog::fmt::fore_256
 Current foreground in 256-colors mode.
 
-clutchlog::fmt::bg_256 clutchlog::fmt::back_256
 Current background in 256-colors mode.
 
-clutchlog::fmt::fg_16M clutchlog::fmt::fore_16M
 Current foreground in 16M-colors mode.
 
-clutchlog::fmt::bg_16M clutchlog::fmt::back_16M
 Current background in 16M-colors mode.
 
-
-
- - - - diff --git a/docs/group__colors256__16_m.js b/docs/group__colors256__16_m.js deleted file mode 100644 index bc1dc38..0000000 --- a/docs/group__colors256__16_m.js +++ /dev/null @@ -1,55 +0,0 @@ -var group__colors256__16_m = -[ - [ "clutchlog::fmt::color", "structclutchlog_1_1fmt_1_1color.html", [ - [ "color", "structclutchlog_1_1fmt_1_1color.html#a741d0165287350d8fcacb1f472ce5dac", null ], - [ "is_set", "structclutchlog_1_1fmt_1_1color.html#a96d7161ef1e7cc631ae670cd3f364603", null ], - [ "print_on", "structclutchlog_1_1fmt_1_1color.html#a121619a01bf48e53b3478d23989c0c59", null ], - [ "operator<<", "structclutchlog_1_1fmt_1_1color.html#a4860c13958d21118a564920fa78e6720", null ], - [ "type", "structclutchlog_1_1fmt_1_1color.html#a3fd18c290567bd5c4971663a1aed12ae", null ], - [ "ground", "structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0", [ - [ "fore", "structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0ae64e4c4fee28f9ca7301e4c7ff598e67", null ], - [ "back", "structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0a469bba0a564235dfceede42db14f17b0", null ] - ] ] - ] ], - [ "clutchlog::fmt::color_256", "structclutchlog_1_1fmt_1_1color__256.html", [ - [ "color_256", "structclutchlog_1_1fmt_1_1color__256.html#a12fdff3c5c4edbf952aaa31519f0171c", null ], - [ "color_256", "structclutchlog_1_1fmt_1_1color__256.html#a1b68065b35141c018b33c3f2c45f5726", null ], - [ "is_set", "structclutchlog_1_1fmt_1_1color__256.html#ad79557682cec1c053dda258581972111", null ], - [ "print_on", "structclutchlog_1_1fmt_1_1color__256.html#ad4e941accf566378e0007ec881096fb0", null ], - [ "index", "structclutchlog_1_1fmt_1_1color__256.html#a8e0b13d6bad87c83c3465524a5d33988", null ] - ] ], - [ "clutchlog::fmt::fg_256", "structclutchlog_1_1fmt_1_1fg__256.html", [ - [ "fg_256", "structclutchlog_1_1fmt_1_1fg__256.html#a97c241e9f80c63d269953cc525a72c7a", null ], - [ "fg_256", "structclutchlog_1_1fmt_1_1fg__256.html#a6df3d848db0e55c79709fb4565cbfd59", null ], - [ "fg_256", "structclutchlog_1_1fmt_1_1fg__256.html#a501fff36520f20ba4973ba3848fb9c23", null ] - ] ], - [ "clutchlog::fmt::bg_256", "structclutchlog_1_1fmt_1_1bg__256.html", [ - [ "bg_256", "structclutchlog_1_1fmt_1_1bg__256.html#a0d244a542b6b98a373f8b1f9e92a6a90", null ], - [ "bg_256", "structclutchlog_1_1fmt_1_1bg__256.html#a83c663b1a9f00ba7ba7649c9c5605fad", null ], - [ "bg_256", "structclutchlog_1_1fmt_1_1bg__256.html#a096d302be7373acaaf225644683408bd", null ] - ] ], - [ "clutchlog::fmt::color_16M", "structclutchlog_1_1fmt_1_1color__16_m.html", [ - [ "color_16M", "structclutchlog_1_1fmt_1_1color__16_m.html#aea10e881fb9b570267f5751fb67c4282", null ], - [ "color_16M", "structclutchlog_1_1fmt_1_1color__16_m.html#a36d9cf42044fec34b7858142d86137d3", null ], - [ "color_16M", "structclutchlog_1_1fmt_1_1color__16_m.html#a55e39e7eb3ced3095c00914eff52470c", null ], - [ "is_set", "structclutchlog_1_1fmt_1_1color__16_m.html#a780c11e42bb140732ffd37cf4eef9e1d", null ], - [ "print_on", "structclutchlog_1_1fmt_1_1color__16_m.html#ac6a4b8650ea7e9171fc76d6226015005", null ], - [ "red", "structclutchlog_1_1fmt_1_1color__16_m.html#a19e1517a9afb75a4e6224f718ed11c61", null ] - ] ], - [ "clutchlog::fmt::fg_16M", "structclutchlog_1_1fmt_1_1fg__16_m.html", [ - [ "fg_16M", "structclutchlog_1_1fmt_1_1fg__16_m.html#a984525f33eb86b7f8b3e5d0874611194", null ], - [ "fg_16M", "structclutchlog_1_1fmt_1_1fg__16_m.html#a531b717b8d78a0a5929fa90d0a01d7e5", null ], - [ "fg_16M", "structclutchlog_1_1fmt_1_1fg__16_m.html#abc768d6b7c2139c14f210755108006d3", null ], - [ "fg_16M", "structclutchlog_1_1fmt_1_1fg__16_m.html#a9da40a4a7ff3b80f028f26322f59eba8", null ] - ] ], - [ "clutchlog::fmt::bg_16M", "structclutchlog_1_1fmt_1_1bg__16_m.html", [ - [ "bg_16M", "structclutchlog_1_1fmt_1_1bg__16_m.html#a363c314ab6a8aa22951b5500d7a78ad0", null ], - [ "bg_16M", "structclutchlog_1_1fmt_1_1bg__16_m.html#ace018922ae99f32b48bf5cacaec91501", null ], - [ "bg_16M", "structclutchlog_1_1fmt_1_1bg__16_m.html#adcd5bd1e69e76e3b36015cf687693c97", null ], - [ "bg_16M", "structclutchlog_1_1fmt_1_1bg__16_m.html#a68f8cb4ab78a1cfb3b7b8e1e95bee11d", null ] - ] ], - [ "clutchlog::fmt::fore_256", "group__colors256__16_m.html#gad98fbe84ef338ded8425d56955825a2c", null ], - [ "clutchlog::fmt::back_256", "group__colors256__16_m.html#ga1d687af385957846034568c3a62d4ef0", null ], - [ "clutchlog::fmt::fore_16M", "group__colors256__16_m.html#ga626c99eb11d1718d7a2a8bb3f079e6de", null ], - [ "clutchlog::fmt::back_16M", "group__colors256__16_m.html#gaa2fcbb402dc2426d3720b8bc78a80ec0", null ] -]; \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html deleted file mode 100644 index 1f30351..0000000 --- a/docs/hierarchy.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -clutchlog: Class Hierarchy - - - - - - - - - - - - - - -
-
- - - - - - - -
-
clutchlog 0.17 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 123]
- - - - - - - - - - -
 CclutchlogThe single class which holds everything
 Cclutchlog::fmt::colorInterface class for colors representation
 Cclutchlog::fmt::color_16MAbstract base class for 16M colors objects (24-bits ANSI)
 Cclutchlog::fmt::bg_16MBackground in 256-colors mode
 Cclutchlog::fmt::fg_16MForeground in 256-colors mode
 Cclutchlog::fmt::color_256Abstract base class for 256 colors objects (8-bits ANSI)
 Cclutchlog::fmt::bg_256Background in 256-colors mode
 Cclutchlog::fmt::fg_256Foreground in 256-colors mode
 Cclutchlog::fmtColor and style formatter for ANSI terminal escape sequences
 Cclutchlog::scope_tStructure holding a location matching
-
-
-
- - - - diff --git a/docs/hierarchy.js b/docs/hierarchy.js deleted file mode 100644 index b5046c4..0000000 --- a/docs/hierarchy.js +++ /dev/null @@ -1,16 +0,0 @@ -var hierarchy = -[ - [ "clutchlog", "classclutchlog.html", null ], - [ "clutchlog::fmt::color", "structclutchlog_1_1fmt_1_1color.html", [ - [ "clutchlog::fmt::color_16M", "structclutchlog_1_1fmt_1_1color__16_m.html", [ - [ "clutchlog::fmt::bg_16M", "structclutchlog_1_1fmt_1_1bg__16_m.html", null ], - [ "clutchlog::fmt::fg_16M", "structclutchlog_1_1fmt_1_1fg__16_m.html", null ] - ] ], - [ "clutchlog::fmt::color_256", "structclutchlog_1_1fmt_1_1color__256.html", [ - [ "clutchlog::fmt::bg_256", "structclutchlog_1_1fmt_1_1bg__256.html", null ], - [ "clutchlog::fmt::fg_256", "structclutchlog_1_1fmt_1_1fg__256.html", null ] - ] ] - ] ], - [ "clutchlog::fmt", "classclutchlog_1_1fmt.html", null ], - [ "clutchlog::scope_t", "structclutchlog_1_1scope__t.html", null ] -]; \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 74a91a2..b954dc8 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2,10 +2,10 @@ - - + + -clutchlog: Clutchlog — versatile (de)clutchable spatial logging +clutchlog: Clutchlog — versatile (de)clutchable logging @@ -24,10 +24,11 @@
- + - @@ -35,22 +36,21 @@
-
clutchlog 0.17 +
+
clutchlog +  0.12
- + +/* @license-end */
@@ -64,7 +64,7 @@ $(function() {
@@ -83,8 +83,9 @@ $(document).ready(function(){initNavTree('index.html',''); initResizable(); }); -
-
Clutchlog — versatile (de)clutchable spatial logging
+
+
+
Clutchlog — versatile (de)clutchable logging
-

-

Clutchlog is a spatial logging system that targets versatile debugging. It allows to (de)clutch messages for a given: log level, source code location or call stack depth.

+

Clutchlog is a logging system that targets versatile debugging. It allows to (de)clutch messages for a given: log level, source code location or call stack depth.

-

-

<img alt"Clutchlog logo" src="https://raw.githubusercontent.com/nojhan/clutchlog/master/docs/clutchlog_logo.svg" width="400" />

+

+

<img alt"Clutchlog logo" src="https://raw.githubusercontent.com/nojhan/clutchlog/master/docs/clutchlog_logo.svg" width="400" />

Features

-

Clutchlog allows to select which log messages will be displayed, based on their locations:

+

Clutchlog allows to select which log messages will be displayed, based on their locations:

  • Classical log levels: each message has a given detail level and it is displayed if you ask for a at least the same one.
  • Call stack depth: you can ask to display messages within functions that are called up to a given stack depth.
  • Source code location: you can ask to display messages called from given files, functions and line number, all based on regular expressions.
-

Additionally, Clutchlog will do its best to allow the compiler to optimize out calls, for instance debug messages in "Release" builds.

-

Additional features:

+

Additionally, Clutchlog will do its best to allow the compiler to optimize out calls, for instance debug messages in "Release" builds.

+

Additional features:

  • Templated log format, to easily design your own format.
  • -
  • Powerful Styling. Clutchlog comes with many options to color its output, for example by using colors with a semantic meaning, so that visually parse the logs is easy.
  • +
  • Colored log. By default only important ones are colored (critical and error in red, warning in magenta).
  • Macro to dump the content of a container in a file with automatic naming (yes, it is useful for fast debugging).
  • Generic clutching wrapper, to wrap any function call. Useful to (de)clutch asserts for example.

Example

-

Adding a message is a simple as calling a macro (which is declutched in Debug build type, when NDEBUG is not defined):

CLUTCHLOG(info, "matrix size: " << m << "x" << n);
-
#define CLUTCHLOG(LEVEL, WHAT)
Log a message at the given level.
Definition: clutchlog.h:99
-

To configure the display, you indicate the three types of locations, for example in your main function:

auto& log = clutchlog::logger();
+

Adding a message is a simple as calling a macro (which is declutched in Debug build type, when NDEBUG is not defined):

CLUTCHLOG(info, "matrix size: " << m << "x" << n);
+

To configure the display, you indicate the three types of locations, for example in your main function:

auto& log = clutchlog::logger();
log.depth(2); // Log functions called from "main" but not below.
log.threshold("Info"); // Log only "info", "warning", "error" or "critical" messages.
log.file("algebra/.*"); // Will match any file in the "algebra" directory.
log.func("(mul|add|sub|div)"); // Will match "multiply", for instance.
-
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:307
-

Example of a real-life log session (as seen in the frictionlesser software):

-

A log screen capture with full details, showing colored messages and location.

-

Demo showing fancy styling:

-

A log screen capture showing fancy coloring of text lines.

-

For more detailled examples, see the "Usage" sections below and the tests directory.

+

For more detailled examples, see the "Usage" sections below and the tests directory.

Rationale

-

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 that displays all appropriate data (with ad-hoc fancy hooks).

-

To solve this problem, Clutchlog allows to disengage at runtime your debug log messages in various parts of the program, allowing for the fast tracking of a bug across the execution.

+

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 that displays all appropriate data (with ad-hoc fancy hooks).

+

To solve this problem, Clutchlog allows to disengage at runtime your debug log messages in various parts of the program, allowing for the fast tracking of a bug across the execution.

Basic Usage

Calls

-

The main entrypoint is the CLUTCHLOG macro, which takes the desired log level and message. The message can be anything that can be output in an ostringstream.

// Simple string:
-
CLUTCHLOG(info, "hello world");
+

The main entrypoint is the CLUTCHLOG macro, which takes the desired log level and message. The message can be anything that can be output in an ostringstream.

// Simple string:
+
CLUTCHLOG(info, "hello world");
// Serialisable variable:
double value = 0;
-
CLUTCHLOG(error, value);
+
CLUTCHLOG(error, value);
// passed using inline output stream operators:
-
CLUTCHLOG(debug, "hello " << value << " world");
-

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.

std::vector<int> v(10);
+
CLUTCHLOG(debug, "hello " << value << " world");
+

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.

std::vector<int> v(10);
std::generate(v.begin(), v.end(), std::rand);
-
CLUTCHDUMP(debug, vec, "test_{n}.dat");
+
CLUTCHDUMP(debug, vec, "test_{n}.dat");
/* Will output in cat "rand_0.dat"
* # [t-dump] Info in main (at depth 5) @ /home/nojhan/code/clutchlog/tests/t-dump.cpp:22
* 1804289383
* 846930886
* 1681692777
*/
-
#define CLUTCHDUMP(LEVEL, CONTAINER, FILENAME)
Dump the given container.
Definition: clutchlog.h:108
-

Note that if you pass a file name without the {n} tag, the file will be overwritten as is.

+

Note that if you pass a file name without the {n} tag, the file will be overwritten as is.

Log level semantics

-

Log levels use a classical semantics for a human skilled in the art, in decreasing order of importance:

+

Log levels use a classical semantics for a human skilled in the art, in decreasing order of importance:

  • Critical: an error that cannot be recovered. For instance, something which will make a server stop right here.
  • Error: an error that invalidates a function, but may still be recovered. For example, a bad user input that will make a server reset its state, but not crash.
  • @@ -213,106 +199,62 @@ Log level semantics
  • Debug: data that would help debugging the program if there was a bug later on.
  • XDebug: debugging information that 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 clutchlog::threshold or clutchlog::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 clutchlog::threshold or clutchlog::level_of).

Location filtering

-

To configure the global behaviour of the logger, you must first get a reference on its (singleton) instance:

auto& log = clutchlog::logger();
-

One can configure the location(s) at which messages should actually be logged:

log.depth(3); // Depth of the call stack, defaults to the maximum possible value.
+

To configure the global behaviour of the logger, you must first get a reference on its (singleton) instance:

auto& log = clutchlog::logger();
+

One can configure the location(s) at which messages should actually be logged:

log.depth(3); // Depth of the call stack, defaults to the maximum possible value.
log.threshold(clutchlog::level::error); // Log level, defaults to error.
-

Current levels are defined in an enumeration as clutchlog::level:

enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
-

File, function and line filters are indicated using (ECMAScript) regular expressions:

log.file(".*"); // File location, defaults to any.
+

Current levels are defined in an enumeration as clutchlog::level:

enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
+

File, function and line filters are indicated using (ECMAScript) regular expressions:

log.file(".*"); // File location, defaults to any.
log.func(".*"); // Function location, defaults to any.
log.line(".*"); // Line location, defaults to any.
-

A shortcut function can be used to filter all at once:

log.location(file, func, line); // Defaults to any, second and last parameters being optional.
-

Strings may be used to set up the threshold:

log.threshold("Error"); // You have to know the exact —case sensitive— string.
-

Note that the case of the log levels strings matters (see below).

+

A shortcut function can be used to filter all at once:

log.location(file, func, line); // Defaults to any, second and last parameters being optional.
+

Strings may be used to set up the threshold:

log.threshold("Error"); // You have to know the exact —case sensitive— string.
+

Note that the case of the log levels strings matters (see below).

Output Configuration

-

The output stream can be configured using the clutchlog::out method:

log.out(std::clog); // Defaults to clog.
-

The format of the messages can be defined with the clutchlog::format method, passing a string with standardized tags surrounded by {}:

log.format("{msg}");
-

Available tags are:

+

The output stream can be configured using the clutchlog::out method:

log.out(std::clog); // Defaults to clog.
+

The format of the messages can be defined with the clutchlog::format method, passing a string with standardized tags surrounded by {}:

log.format("{msg}");
+

Available tags are:

  • {msg}: the logged message,
  • {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,
  • -
  • {level_short}: the current log level, printed in only four letters,
  • -
  • {file}: the current file name,
  • +
  • {file}: the current file (absolute path),
  • {func}: the current function,
  • {line}: the current line number,
  • -
  • {level_fmt}: the style of the current level (i.e. configured with clutchlog::style),
  • -
  • {filehash_fmt}: a style for file names, which is value-dependant (see clutchlog::filehash_styles),
  • -
  • {funchash_fmt}: a style for function names, which is value-dependant (see clutchlog::funchash_styles).
  • +
  • {level_fmt}: the format of the current level (i.e. configured with clutchlog::style).
-

Some tags are only available on POSIX operating systems as of now:

    +

    Some tags are only available on POSIX operating systems as of now:

    • {name}: the name of the current binary,
    • {depth}: the current depth of the call stack,
    • {depth_marks}: as many chevrons > as there is calls in the stack,
    • -
    • {depth_fmt}: a style depending on the current depth value (see clutchlog::depth_styles),
    • {hfill}: Inserts a sequence of characters that will stretch to fill the space available in the current terminal, between the rightmost and leftmost part of the log message.

    Log Format

    -

    The default log format is "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n", it can be overriden at compile time by defining the CLUTCHLOG_DEFAULT_FORMAT macro.

    -

    By default, and if CLUTCHLOG_DEFAULT_FORMAT is not defined, clutchlog will not put the location-related tags in the message formats (i.e. {name}, {func}, and {line}) when not in Debug builds.

    +

    The default log format is "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n", it can be overriden at compile time by defining the CLUTCHLOG_DEFAULT_FORMAT macro.

    +

    By default, and if CLUTCHLOG_DEFAULT_FORMAT is not defined, clutchlog will not put the location-related tags in the message formats (i.e. {name}, {func}, and {line}) when not in Debug builds.

    -Output Styling

    -

    Output lines can be styled differently depending on their content.

    -

    For example, output lines can be colored differently depending on the log level.

    // Print error messages in bold red:
    -
    log.style(level::error, // First, the log level.
    -
    fmt::fg::red, // Then the styles, in any order...
    -
    fmt::typo::bold);
    -

    Or, if you want to declare some semantics beforehand:

    // Print warning messages in bold magenta:
    -
    using fmt = clutchlog::fmt;
    +Output style +

    Output lines can be colored differently depending on the log level.

    // Print error messages in bold red:
    +
    log.style(clutchlog::level::error, // First, the log level.
    +
    clutchlog::fmt::fg::red, // Then the styles, in any order...
    +
    clutchlog::fmt::typo::bold);
    +

    Or, if you want to declare some semantics beforehand:

    // Print warning messages in bold magenta:
    +
    using fmt = clutchlog::fmt;
    fmt warn(fmt::fg::magenta, fmt::typo::bold);
    -
    log.style(level::warning, warn);
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -

    Note: this inserts a style marker at the very beginning of the line. If you add other styles later on the line, they will take precedence.

    -

    Colors can be specified in several different ways. The ANSI color mode will be automatically detected, depending on the types of arguments passed to styling functions:

      -
    • named tags from clutchlog::fmt::fg or clutchlog::fmt::bg will encode a 16-colors mode,
    • -
    • integers will encode a 256-colors mode,
    • -
    • numeric triplets or web hex strings will encode a 16 million ("true") colors mode,
    • -
    • clutchlog::fg::none and clutchlog::bg::none can be passed in all modes.
    • -
    -

    For example, all the following lines encode a bright red foreground for the critical level (see the "Colors" section below):

    log.style(level:critical,
    -
    fmt::fg::red); // 16-colors mode.
    -
    log.style(level:critical,
    -
    255); // 256-colors mode.
    -
    log.style(level:critical,
    -
    255,0,0); // 16M-colors mode.
    -
    log.style(level:critical,
    -
    "#ff0000"); // 16M-colors mode again.
    -

    You may use styling within the format message template itself, to add even more colors:

    using fmt = clutchlog::fmt;
    -
    std::ostringstream format;
    -
    fmt discreet(fmt::fg::blue);
    -
    format << "{level}: "
    -
    << discreet("{file}:") // Used as a function (inserts a reset at the end).
    -
    << fmt(fmt::fg::yellow) << "{line}" // Used as a tag (no reset inserted).
    -
    << fmt(fmt::typo::reset) << " {msg}" << std::endl; // This is a reset.
    -
    log.format(format.str());
    -

    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.

    -

    The horizontal filling line (the {hfill} tag) can be configured separately with clutchlog::hfill_style, for example:

    log.hfill_style(fmt::fg::black);
    -

    Note: this will actually reset any styling after the hfill, disabling any style you would have set for the whole message using clutchlog::format for the remaining of the message.

    -

    -Typographic Style

    -

    Available typographies:

    +
    log.style(clutchlog::level::warning, warn);
    +

    Note: this inserts a style marker at the very beginning of the line. If you add other styles later on the line, they will take precedence.

    +

    Using the clutchlog::fmt class, you can style:

    -

    Typographic styles are always passed with the named tag (see clutchlog::fmt::typo), whatever the color mode.

    -

    -Colors

    -

    16-colors mode

    -

    Using the clutchlog::fmt class, you can style:

    - -

    In 16-colors mode, any of the arguments may be passed, in any order, if an argument is omitted, it defaults to no color/style.

    -

    Available colors are:

    +

    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:

    • black,
    • red,
    • @@ -322,126 +264,79 @@ Colors
    • magenta,
    • cyan,
    • white,
    • -
    • bright_black,
    • -
    • bright_red,
    • -
    • bright_green,
    • -
    • bright_yellow,
    • -
    • bright_blue,
    • -
    • bright_magenta,
    • -
    • bright_cyan,
    • -
    • bright_white,
    • none.
    -

    Note: some terminals allow the user to configure the actual encoding of those colors. You may thus notice some difference with the expected rendering of the same colors encoded in the other modes. Use the other color modes if you want to fully control the actual color rendering.

    -

    256-colors mode

    -

    For 256-colors mode, colors are expected to be passed as integers in [-1,255] or the fg::none and bg::none tags.

    -

    In 256-colors mode, if you want to only encode the background color, you cannot just omit the foreground color, you have to bass a fg::none tag as first argument.

    -
    log.style(level::info, fg::none, 52); // No color over dark red.
    -
    log.style(level::info, fg::none, 52, typo::bold); // No color over bold dark red.
    -

    16 million colors mode (RGB)

    -

    For 16M-colors mode, colors can be encoded as:

      -
    • three integer arguments,
    • -
    • a "web color" hexadecimal triplet string, starting with a leading number sign (e.g. "#0055ff").
    • -
    • the fg::none and bg::none tags.
    • +

      Available typographies:

      +
        +
      • reset (remove any style),
      • +
      • bold,
      • +
      • underline,
      • +
      • inverse,
      • +
      • none.
      -

      In 16M-colors mode, if you want to only encode the background color, you cannot just omit the foreground color, you have to pass a fg::none tag as first argument.

      -
      log.style(level::info, fg::none, 100,0,0); // No color over dark red.
      -
      log.style(level::info, fg::none, 100,0,0, typo::bold); // No color over bold dark red.
      -

      -Value-dependant Format Tags

      -

      Some tags can be used to change the style of (part of) the output line,

      -

      depending on its content. The {filehash_fmt} and {funchash_fmt} will introduce a styling sequence which depends on the current file name, and function name respectively. The chosen style is chosen at random among the candidate ones, but will always be the same for each value.

      -

      The set of candidate styles can be configured with clutchlog::filehash_styles and clutchlog::funchash_styles, which both take a vector of clutchlog::fmt objects as argument:

      // Either one or the other color for filenames:
      -
      log.filehash_styles( { fmt(fg::red), fmt(fg::yellow) } );
      -
      // This would fix the function name style to a single one:
      -
      log.funchash_styles( { fmt(typo::bold) } );
      -
      // Works with any `fmt` constructor
      -
      // (here, shades of blues in 256-colors mode):
      -
      log.funchash_styles( { fmt(33), fmt(27), fmt(39), fmt(45) } );
      -

      The same idea applies to {depth_fmt}. However, if clutchlog::depth_styles is configured, then the styles are chosen in order. That is, a depth of 1 would lead to the first style being chosen. If the current depth of the stack is larger than the number of configured styles, then the last one is used. For example:

      // Increasingly darker depth level colors (using the 256-colors mode).
      -
      log.depth_styles({ fmt(255), fmt(250), fmt(245), fmt(240), fmt(235) });
      -

      If clutchlog::depth_styles is set, the {depth_marks} template tag will render with each mark having each own style corresponding to its depth. Note: a depth of zero showing no mark, the first style in the list is never applied to marks.

      -

      +

      You may use styling within the format message template itself, to add even more colors:

      using fmt = clutchlog::fmt;
      +
      std::ostringstream format;
      +
      fmt discreet(fmt::fg::blue);
      +
      format << "{level}: "
      +
      << discreet("{file}:") // Used as a function (inserts a reset at the end).
      +
      << fmt(fmt::fg::yellow) << "{line}" // Used as a tag (no reset inserted).
      +
      << fmt(fmt::typo::reset) << " {msg}" << std::endl; // This is a reset.
      +
      log.format(format.str());
      +

      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.

      +

      The horizontal filling line (the {hfill} tag) can be configured separately with clutchlog::hfill_style, for example:

      log.hfill_style(clutchlog::fmt::fg::black);
      +

      Note: this will actually reset any styling after the hfill, disabling any style you would have set for the whole message using clutchlog::format for the remaining of the message.

      +

      Advanced Usage

      -

      +

      More Output Configuration

      -

      +

      Dump Format

      -

      The default format of the first line of 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.

      -

      By default, and if CLUTCHDUMP_DEFAULT_FORMAT is not defined, clutchlog will not put the location-related tags in the message formats (i.e. {file} and {line}) when not in Debug builds.

      -

      +

      The default format of the first line of 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.

      +

      By default, and if CLUTCHDUMP_DEFAULT_FORMAT is not defined, clutchlog will not put the location-related tags in the message formats (i.e. {file} and {line}) when not in Debug builds.

      +

      Stack Depth Mark

      -

      The mark used with the {depth_marks} tag can be configured with the clutchlog::depth_mark method, and its default with the CLUTCHLOG_DEFAULT_DEPTH_MARK macro:

      log.depth_mark(CLUTCHLOG_DEFAULT_DEPTH_MARK); // Defaults to ">".
      -
      #define CLUTCHLOG_DEFAULT_DEPTH_MARK
      Compile-time default mark for stack depth.
      Definition: clutchlog.h:257
      -

      +

      The mark used with the {depth_marks} tag can be configured with the clutchlog::depth_mark method, and its default with the CLUTCHLOG_DEFAULT_DEPTH_MARK macro:

      log.depth_mark(CLUTCHLOG_DEFAULT_DEPTH_MARK); // Defaults to ">".
      +

      Horizontal Filling

      -

      The character used with the {hfill} tag can be configured wth the clutchlog::hfill_mark method, and its default with the CLUTCHLOG_DEFAULT_HFILL_MARK macro:

      log.hfill_mark(CLUTCHLOG_DEFAULT_HFILL_MARK); // Defaults to '.'.
      -
      #define CLUTCHLOG_DEFAULT_HFILL_MARK
      Character used as a filling for right-align the right part of messages with "{hfill}".
      Definition: clutchlog.h:271
      -

      Clutchlog measures the width of the standard error channel. If it is redirected, it may be measured as very large (or very small). Thus, the clutchlog::hfill_min clutchlog::hfill_max accessors allow to set a minimum and a maximum width (in number of characters).

      log.hfill_max(CLUTCHLOG_DEFAULT_HFILL_MAX); // Defaults to 300.
      -
      log.hfill_min(CLUTCHLOG_DEFAULT_HFILL_MIN); // Defaults to 150.
      -

      Note: clutchlog will use the measured width, unless it goes out of [clutchlog::hfill_min,clutchlog::hfill_max], in which case it will be caped to those bounds.

      -

      +

      The character used with the {hfill} tag can be configured wth the clutchlog::hfill_mark method, and its default with the CLUTCHLOG_DEFAULT_HFILL_MARK macro:

      log.hfill_mark(CLUTCHLOG_DEFAULT_HFILL_MARK); // Defaults to '.'.
      +

      Clutchlog measures the width of the standard error channel. If it is redirected, it may be measured as very large (or very small). Thus, the clutchlog::hfill_min clutchlog::hfill_max accessors allow to set a minimum and a maximum width (in number of characters).

      log.hfill_max(CLUTCHLOG_DEFAULT_HFILL_MAX); // Defaults to 300.
      +
      log.hfill_max(CLUTCHLOG_DEFAULT_HFILL_MIN); // Defaults to 150.
      +

      Note: clutchlog will use the measured width, unless it goes out of [clutchlog::hfill_min,clutchlog::hfill_max], in which case it will be caped to those bounds.

      +

      Stack Depth

      -

      By default, clutchlog removes 5 levels of the calls stack, so that your main entrypoint corresponds to a depth of zero. You can change this behaviour by defining the CLUTCHLOG_STRIP_CALLS macro, or calling clutchlog::strip_calls.

      log.strip_calls(CLUTCHLOG_STRIP_CALLS); // Defaults to 5.
      -
      #define CLUTCHLOG_STRIP_CALLS
      Compile-time number of call stack levels to remove from depth display by default.
      Definition: clutchlog.h:264
      -

      -Filename

      -

      By default, the {file} template tag is rendered as the absolute path (which is usualy handy if your terminal detects paths and allows to run a command on click).

      -

      You can change this behavior to display shorter names, using clutchlog::filename, and passing one of the following the shortening method:

        -
      • clutchlog::filename::base: the file name itself,
      • -
      • clutchlog::filename::dir: the name of the single last directory containing the file,
      • -
      • clutchlog::filename::dirbase: the last directory and the file names,
      • -
      • clutchlog::filename::stem: the file name without its extension,
      • -
      • clutchlog::filename::dirstem: the last directory and the file without extension.
      • -
      • clutchlog::filename::path: the absolute path (the default).
      • -
      -

      Example:

      log.filename(clutchlog::filename::path) // /home/nojhan/code/clutchlog/tests/t-filename.cpp
      -
      log.filename(clutchlog::filename::base) // t-filename.cpp
      -
      log.filename(clutchlog::filename::dir) // tests
      -
      log.filename(clutchlog::filename::dirbase) // tests/t-filename.cpp
      -
      log.filename(clutchlog::filename::stem) // t-filename
      -
      log.filename(clutchlog::filename::dirstem) // tests/t-filename
      -

      +

      By default, clutchlog removes 5 levels of the calls stack, so that your main entrypoint corresponds to a depth of zero. You can change this behaviour by defining the CLUTCHLOG_STRIP_CALLS macro, or calling clutchlog::strip_calls.

      log.strip_calls(CLUTCHLOG_STRIP_CALLS); // Defaults to 5.
      +

      Disabled calls

      -

      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 that are under 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:

      // Will always allow to log everything even in Release mode.
      +

      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 that are under 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:

      // Will always allow to log everything even in Release mode.
      #define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG clutchlog::level::xdebug
      -

      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.

      -

      +

      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.

      +

      Low-level API

      -

      All configuration setters have a getters counterpart, with the same name but taking no parameter, for example:

      std::string mark = log.depth_mark();
      -

      To control more precisely the logging, one can use the low-level clutchlog::log method:

      log.log(clutchlog::level::xdebug, "hello world", "main.cpp", "main", 122);
      -

      A helper macro can helps to fill in the location with the actual one, as seen by the compiler:

      log.log(clutchlog::level::xdebug, "hello world", CLUTCHLOC);
      -
      #define CLUTCHLOC
      Handy shortcuts to location.
      Definition: clutchlog.h:78
      -

      A similar dump method exists:

      log.dump(clutchlog::level::xdebug, cont.begin(), cont.end(), CLUTCHLOC, "dumped_{n}.dat", "\n");
      +

      All configuration setters have a getters counterpart, with the same name but taking no parameter, for example:

      std::string mark = log.depth_mark();
      +

      To control more precisely the logging, one can use the low-level clutchlog::log method:

      log.log(clutchlog::level::xdebug, "hello world", "main.cpp", "main", 122);
      +

      A helper macro can helps to fill in the location with the actual one, as seen by the compiler:

      log.log(clutchlog::level::xdebug, "hello world", CLUTCHLOC);
      +

      A similar dump method exists:

      log.dump(clutchlog::level::xdebug, cont.begin(), cont.end(), CLUTCHLOC, "dumped_{n}.dat", "\n");
      log.dump(clutchlog::level::xdebug, cont.begin(), cont.end(), "main.cpp", "main", 122, "dumped.dat", "\n\n");
      -

      You can access the identifier of log levels with clutchlog::level_of:

      log.threshold( log.level_of("XDebug") ); // You have to know the exact string.
      -

      +

      You can access the identifier of log levels with clutchlog::level_of:

      log.threshold( log.level_of("XDebug") ); // You have to know the exact string.
      +

      (De)clutch any function call

      -

      The CLUTHFUNC macro allows to wrap any function within the current logger.

      -

      For instance, this can be useful if you want to (de)clutch calls to asserts. To do that, just declare your own macro:

      #define ASSERT(...) { CLUTCHFUNC(error, assert, __VA_ARGS__) }
      -

      Thus, any call like ASSERT(x > 3); will be declutchable with the same configuration than a call to CLUTCHLOG.

      -

      +

      The CLUTHFUNC macro allows to wrap any function within the current logger.

      +

      For instance, this can be useful if you want to (de)clutch calls to asserts. To do that, just declare your own macro:

      #define ASSERT(...) { CLUTCHFUNC(error, assert, __VA_ARGS__) }
      +

      Thus, any call like ASSERT(x > 3); will be declutchable with the same configuration than a call to CLUTCHLOG.

      +

      (De)clutch any code section

      -

      The CLUTCHCODE macro allows to wrap any code within the current logger.

      -

      For instance:

      +

      The CLUTCHCODE macro allows to wrap any code within the current logger.

      +

      For instance:

      std::clog << "We are clutched!\n";
      );
      -
      #define CLUTCHCODE(LEVEL,...)
      Run any code if the scope matches.
      Definition: clutchlog.h:146
      -

      -Manually Increase Stack Depth

      -

      You may want to manually increase the stack depth for a given logging call, for instance to subdivise a single function in sections. To do so, you can use the CLUTCHLOGD macro, which take an additional argument, in the form of the number of additional (fake) stack depths you want:

      CLUTCHLOG( debug, "Call"); // Regular macro.
      -
      CLUTCHLOGD(debug, "Sub call", 1); // Adds an additional (fake) stack depth.
      -
      CLUTCHLOGD(debug, "Sub sub!", 2); // Adds two additional (fake) stack depths.
      -
      #define CLUTCHLOGD(LEVEL, WHAT, DEPTH_DELTA)
      Log a message at the given level and with a given depth delta.
      Definition: clutchlog.h:82
      -

      That way, the depth will be rendered to the actual depth, plus the additional depth delta. Note that the displayed function will stay the same. Any filtering on the stack depth will take into account the fake depth and not the real one.

      -

      +

      Examples

      -

      Here what you would do to setup clutchlog with the default configuration:

      auto& log = clutchlog::logger();
      +

      Here what you would do to setup clutchlog with the default configuration:

      auto& log = clutchlog::logger();
      log.out(std::clog);
      // Location filtering.
      log.depth(std::numeric_limits<size_t>::max());
      @@ -450,13 +345,13 @@ Examples
      log.func(".*");
      log.line(".*");
      // Colors of the 3 firsts levels.
      -
      log.style(clutchlog::level::critical, clutchlog::fmt(
      +
      log.style(clutchlog::level::critical, clutchlog::fmt(
      clutchlog::fmt::fg::red,
      clutchlog::fmt::typo::underline);
      -
      log.style(clutchlog::level::error, clutchlog::fmt(
      +
      log.style(clutchlog::level::error, clutchlog::fmt(
      clutchlog::fmt::fg::red,
      clutchlog::fmt::typo::bold);
      -
      log.style(clutchlog::level::warning, clutchlog::fmt(
      +
      log.style(clutchlog::level::warning, clutchlog::fmt(
      clutchlog::fmt::fg::magenta,
      clutchlog::fmt::typo::bold);
      // Assuming you are on a POSIX system.
      @@ -466,83 +361,55 @@ Examples
      log.hfill_char('.');
      log.hfill_max(300);
      log.hfill_style(clutchlog::fmt::fg::none);
      -
      enum clutchlog::fmt::typo style
      Typographic style.
      -

      And here are all the functions you may call to log something:

      // Basic message.
      -
      CLUTCHLOG(debug, "x = " << x);
      +

      And here are all the functions you may call to log something:

      // Basic message.
      +
      CLUTCHLOG(debug, "x = " << x);
      // Any code section.
      -
      CLUTCHCODE(xdebug,
      +
      CLUTCHCODE(xdebug,
      if(x < 0) std::cerr << "WTF?" << std::endl;
      );
      // Container to a file.
      -
      CLUTCHDUMP(note, my_vector, "my_vector.dat");
      +
      CLUTCHDUMP(note, my_vector, "my_vector.dat");
      // Container to a numbered file.
      -
      CLUTCHDUMP(note, my_list, "my_list_{n}.dat");
      +
      CLUTCHDUMP(note, my_list, "my_list_{n}.dat");
      // Function call.
      -
      CLUTCHFUNC(warning, my_check, x, y); // Calls: my_check(x,y);
      +
      CLUTCHFUNC(warning, my_check, x, y); // Calls: my_check(x,y);
      // Declutchable asserts.
      #define ASSERT(...) { CLUTCHFUNC(critical, assert, __VA_ARGS__) }
      -
      ASSERT(x>0);
      -
      #define CLUTCHFUNC(LEVEL, FUNC,...)
      Call any function if the scope matches.
      Definition: clutchlog.h:125
      -

      Here what you would do to setup clutchlog with the default configuration using 16M-colors mode:

      auto& log = clutchlog::logger();
      -
      log.out(std::clog);
      -
      // Location filtering.
      -
      log.depth(std::numeric_limits<size_t>::max());
      -
      log.threshold("Error");
      -
      log.file(".*");
      -
      log.func(".*");
      -
      log.line(".*");
      -
      // Colors of the 3 firsts levels.
      -
      log.style(clutchlog::level::critical, clutchlog::fmt(
      -
      "#ff0000",
      -
      clutchlog::fmt::typo::underline);
      -
      log.style(clutchlog::level::error, clutchlog::fmt(
      -
      "#ff0000",
      -
      clutchlog::fmt::typo::bold);
      -
      log.style(clutchlog::level::warning, clutchlog::fmt(
      -
      "#ff00ff",
      -
      clutchlog::fmt::typo::bold);
      -
      // Assuming you are on a POSIX system.
      -
      log.format("[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n");
      -
      log.depth_mark(">");
      -
      log.strip_calls(5);
      -
      log.hfill_char('.');
      -
      log.hfill_max(300);
      -
      log.hfill_style(clutchlog::fmt::fg::none);
      -

      +
      ASSERT(x>0);
      +

      Limitations

      -

      +

      System-dependent stack depth

      -

      Because access to the call stack depth and program name 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).

      -

      Clutchlog sets the CLUTCHLOG_HAVE_UNIX_SYSINFO to 1 if the headers are available, and to 0 if they are not. You can make portable code using something like:

      #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
      +

      Because access to the call stack depth and program name 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).

      +

      Clutchlog sets the CLUTCHLOG_HAVE_UNIX_SYSINFO to 1 if the headers are available, and to 0 if they are not. You can make portable code using something like:

      #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
      log.depth( x );
      #endif
      -

      +

      System-dependent horizontal fill

      -

      Because access to the current terminal width is system-dependent, the {hfill} format tag feature is only available for operating systems having the following headers: sys/ioctl.h, stdio.h and unistd.h (so far, tested with Linux).

      -

      Clutchlog sets the CLUTCHLOG_HAVE_UNIX_SYSIOCTL to 1 if the headers are available, and to 0 if they are not. You can make portable code using something like:

      #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
      +

      Because access to the current terminal width is system-dependent, the {hfill} format tag feature is only available for operating systems having the following headers: sys/ioctl.h, stdio.h and unistd.h (so far, tested with Linux).

      +

      Clutchlog sets the CLUTCHLOG_HAVE_UNIX_SYSIOCTL to 1 if the headers are available, and to 0 if they are not. You can make portable code using something like:

      #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
      log.hfill_mark( '_' );
      #endif
      -

      If you use unicode characters in your template, the horizontal width will not be computed properly, resulting in incorrectly right-aligned lines. Solving this would require the use of third-party libraries, making portability more difficult.

      -

      +

      Dependencies

      -

      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 some compilers.

      -

      +

      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 some compilers.

      +

      Variable names within the CLUTCHLOG macro

      -

      Calling the CLUTCHLOG macro with a message using a variable named clutchlog__msg will end in an error.

      -

      +

      Calling the CLUTCHLOG macro with a message using a variable named clutchlog__msg will end in an error.

      +

      Features

      -

      What Clutchlog do not provide at the moment (but may in a near future):

      +

      What Clutchlog do not provide at the moment (but may in a near future):

      • Super fast log writing.
      • Thread safety.
      -

      What Clutchlog will most certainly never provide:

      +

      What Clutchlog will most certainly never provide:

      • Round-robin log managers.
      • Duplicated messages management.
      • @@ -551,30 +418,36 @@ Features
      • Automatic argument parser (please, use a dedicated lib).
      • Signal handling (WTF would you do that, anyway?).
      -

      +

      Build and tests

      -

      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:

      mkdir build
      +

      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:

      mkdir build
      cd build
      cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_CLUTCHLOG=ON ..
      make
      ctest
      -

      There's a script that tests all the build types combinations: ./build_all.sh.

      -

      -Usage as a Git submodule

      -

      If you are using Git and CMake, it is easy to include Clutchlog as a dependency.

      -

      First, add Clutchlog as a submodule of your repository:

      git submodule add git@github.com:nojhan/clutchlog.git external/
      -
      git commit -m "Add clutchlog as a submodule dependency"
      -

      Then, in your CMakeLists.txt file, add:

      include_directories(external/clutchlog)
      -

      And that's it.

      +

      There's a script that tests all the build types combinations: ./build_all.sh.

+
#define CLUTCHLOG_DEFAULT_DEPTH_MARK
Compile-time default mark for stack depth.
Definition: clutchlog.h:246
+
enum clutchlog::fmt::typo style
Typographic style.
+
#define CLUTCHDUMP(LEVEL, CONTAINER, FILENAME)
Dump the given container.
Definition: clutchlog.h:98
+
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:296
+
Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:314
+
#define CLUTCHLOC
Handy shortcuts to location.
Definition: clutchlog.h:77
+
#define CLUTCHLOG_DEFAULT_HFILL_MARK
Character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:260
+
#define CLUTCHLOG(LEVEL, WHAT)
Log a message at the given level.
Definition: clutchlog.h:81
+
#define CLUTCHFUNC(LEVEL, FUNC,...)
Call any function if the scope matches.
Definition: clutchlog.h:115
+
#define CLUTCHLOG_STRIP_CALLS
Compile-time number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:253
+
#define CLUTCHCODE(LEVEL,...)
Run any code if the scope matches.
Definition: clutchlog.h:136
diff --git a/docs/inherit_graph_0.map b/docs/inherit_graph_0.map deleted file mode 100644 index dbeb31c..0000000 --- a/docs/inherit_graph_0.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_0.md5 b/docs/inherit_graph_0.md5 deleted file mode 100644 index 4b5469e..0000000 --- a/docs/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -9a02f8e2a3eef4f094beaffe602d13af \ No newline at end of file diff --git a/docs/inherit_graph_0.svg b/docs/inherit_graph_0.svg deleted file mode 100644 index c021691..0000000 --- a/docs/inherit_graph_0.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Graphical Class Hierarchy - - - -Node0 - - -clutchlog - - - - - diff --git a/docs/inherit_graph_1.map b/docs/inherit_graph_1.map deleted file mode 100644 index 269dc09..0000000 --- a/docs/inherit_graph_1.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_1.md5 b/docs/inherit_graph_1.md5 deleted file mode 100644 index 9a3cfce..0000000 --- a/docs/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -509a5f8902ca8da90966c100c09ae253 \ No newline at end of file diff --git a/docs/inherit_graph_1.svg b/docs/inherit_graph_1.svg deleted file mode 100644 index 05259cc..0000000 --- a/docs/inherit_graph_1.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Graphical Class Hierarchy - - - -Node0 - - -clutchlog::fmt - - - - - diff --git a/docs/inherit_graph_2.map b/docs/inherit_graph_2.map deleted file mode 100644 index e6a5dcf..0000000 --- a/docs/inherit_graph_2.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/inherit_graph_2.md5 b/docs/inherit_graph_2.md5 deleted file mode 100644 index abb1835..0000000 --- a/docs/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -fcd84f58a5479d3ddbec10d930728f7d \ No newline at end of file diff --git a/docs/inherit_graph_2.svg b/docs/inherit_graph_2.svg deleted file mode 100644 index 3845d63..0000000 --- a/docs/inherit_graph_2.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - -Graphical Class Hierarchy - - - -Node0 - - -clutchlog::fmt::color - - - - - -Node1 - - -clutchlog::fmt::color_16M - - - - - -Node0->Node1 - - - - - -Node4 - - -clutchlog::fmt::color_256 - - - - - -Node0->Node4 - - - - - -Node2 - - -clutchlog::fmt::bg_16M - - - - - -Node1->Node2 - - - - - -Node3 - - -clutchlog::fmt::fg_16M - - - - - -Node1->Node3 - - - - - -Node5 - - -clutchlog::fmt::bg_256 - - - - - -Node4->Node5 - - - - - -Node6 - - -clutchlog::fmt::fg_256 - - - - - -Node4->Node6 - - - - - diff --git a/docs/inherit_graph_3.map b/docs/inherit_graph_3.map deleted file mode 100644 index f01e8e1..0000000 --- a/docs/inherit_graph_3.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_3.md5 b/docs/inherit_graph_3.md5 deleted file mode 100644 index 1610d9a..0000000 --- a/docs/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -1d06d42137c2e4fefcf9e485cd034e37 \ No newline at end of file diff --git a/docs/inherit_graph_3.svg b/docs/inherit_graph_3.svg deleted file mode 100644 index 7c61ba1..0000000 --- a/docs/inherit_graph_3.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Graphical Class Hierarchy - - - -Node0 - - -clutchlog::scope_t - - - - - diff --git a/docs/inherits.html b/docs/inherits.html deleted file mode 100644 index edf74a2..0000000 --- a/docs/inherits.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -clutchlog: Class Hierarchy - - - - - - - - - - - - - - -
-
- - - - - - - -
-
clutchlog 0.17 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
Class Hierarchy
-
-
- - - - - -
-
-
- - - - diff --git a/docs/jquery.js b/docs/jquery.js index c9ed3d9..103c32d 100644 --- a/docs/jquery.js +++ b/docs/jquery.js @@ -1,5 +1,5 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0'+ + result+='
  • '+ data.children[i].text+''+ makeTree(data.children[i],relPath)+'
  • '; } @@ -44,91 +35,15 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - var searchBox; - if (searchEnabled) { - if (serverSide) { - searchBox='
    '+ - '
    '+ - '
    '+ - ''+ - '
    '+ - '
    '+ - '
    '+ - '
    '; - } else { - searchBox='
    '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '' - '' - '
    '; - } - } - $('#main-nav').before('
    '+ - ''+ - ''+ - '
    '); $('#main-nav').append(makeTree(menudata,relPath)); $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchBox) { - $('#main-menu').append('
  • '); - } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; - if ($mainMenuState.length) { - function initResizableIfExists() { - if (typeof initResizable==='function') initResizable(); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); } - // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; - if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; - $menu.hide().slideDown(options); - } else { - options['complete'] = function() { $menu.css('display', 'none') }; - $menu.show().slideUp(options); - } - }); - // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBox); - $('#searchBoxPos2').hide(); - } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBox); - $('#searchBoxPos2').show(); - } - prevWidth = newWidth; - } - } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); } $('#main-menu').smartmenus(); } diff --git a/docs/menudata.js b/docs/menudata.js index 31d3754..afd4f6c 100644 --- a/docs/menudata.js +++ b/docs/menudata.js @@ -1,26 +1,24 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. +@licstart The following is the entire license notice for the +JavaScript code in this file. - The MIT License (MIT) +Copyright (C) 1997-2019 by Dimitri van Heesch - Copyright (C) 1997-2020 by Dimitri van Heesch +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file +@licend The above is the entire license notice +for the JavaScript code in this file */ var menudata={children:[ {text:"Main Page",url:"index.html"}, @@ -28,17 +26,12 @@ var menudata={children:[ {text:"Classes",url:"annotated.html",children:[ {text:"Class List",url:"annotated.html"}, {text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, {text:"Class Members",url:"functions.html",children:[ {text:"All",url:"functions.html",children:[ {text:"_",url:"functions.html#index__5F"}, -{text:"a",url:"functions.html#index_a"}, {text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, {text:"d",url:"functions.html#index_d"}, {text:"f",url:"functions.html#index_f"}, -{text:"g",url:"functions.html#index_g"}, -{text:"i",url:"functions.html#index_i"}, {text:"l",url:"functions.html#index_l"}, {text:"m",url:"functions.html#index_m"}, {text:"o",url:"functions.html#index_o"}, @@ -46,28 +39,8 @@ var menudata={children:[ {text:"r",url:"functions.html#index_r"}, {text:"s",url:"functions.html#index_s"}, {text:"t",url:"functions.html#index_t"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"b",url:"functions_func.html#index_b"}, -{text:"c",url:"functions_func.html#index_c"}, -{text:"d",url:"functions_func.html#index_d"}, -{text:"f",url:"functions_func.html#index_f"}, -{text:"i",url:"functions_func.html#index_i"}, -{text:"l",url:"functions_func.html#index_l"}, -{text:"o",url:"functions_func.html#index_o"}, -{text:"p",url:"functions_func.html#index_p"}, -{text:"r",url:"functions_func.html#index_r"}, -{text:"s",url:"functions_func.html#index_s"}, -{text:"t",url:"functions_func.html#index_t"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"_",url:"functions_vars.html#index__5F"}, -{text:"b",url:"functions_vars.html#index_b"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"f",url:"functions_vars.html#index_f"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}]}, +{text:"Functions",url:"functions_func.html"}, +{text:"Variables",url:"functions_vars.html"}, {text:"Enumerations",url:"functions_enum.html"}, {text:"Related Functions",url:"functions_rela.html"}]}]}, {text:"Files",url:"files.html",children:[ diff --git a/docs/modules.html b/docs/modules.html index 2b45905..ae2bb82 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -2,8 +2,8 @@ - - + + clutchlog: Modules @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,7 +84,8 @@ $(document).ready(function(){initNavTree('modules.html',''); initResizable(); })
    -
    Modules
    +
    +
    Modules
    Here is a list of all modules:
    @@ -93,8 +94,6 @@ $(document).ready(function(){initNavTree('modules.html',''); initResizable(); })  High-level API macros  Main class  Formating tools - Colors management in 16 colors mode (4-bits ANSI). - Internal colors management in 256 and 16M colors modes.
    @@ -102,7 +101,9 @@ $(document).ready(function(){initNavTree('modules.html',''); initResizable(); }) diff --git a/docs/modules.js b/docs/modules.js index 5348adc..8e76bc3 100644 --- a/docs/modules.js +++ b/docs/modules.js @@ -3,7 +3,5 @@ var modules = [ "Default configuration management", "group___default_config.html", "group___default_config" ], [ "High-level API macros", "group___use_macros.html", "group___use_macros" ], [ "Main class", "group___main.html", "group___main" ], - [ "Formating tools", "group___formating.html", "group___formating" ], - [ "Colors management in 16 colors mode (4-bits ANSI).", "group__colors16.html", "group__colors16" ], - [ "Internal colors management in 256 and 16M colors modes.", "group__colors256__16_m.html", "group__colors256__16_m" ] + [ "Formating tools", "group___formating.html", "group___formating" ] ]; \ No newline at end of file diff --git a/docs/navtree.css b/docs/navtree.css index d8a311a..33341a6 100644 --- a/docs/navtree.css +++ b/docs/navtree.css @@ -87,7 +87,6 @@ position: absolute; left: 0px; width: 250px; - overflow : hidden; } .ui-resizable .ui-resizable-handle { diff --git a/docs/navtree.js b/docs/navtree.js index 2798368..edc31ef 100644 --- a/docs/navtree.js +++ b/docs/navtree.js @@ -1,26 +1,24 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. + @licstart The following is the entire license notice for the + JavaScript code in this file. - The MIT License (MIT) + Copyright (C) 1997-2019 by Dimitri van Heesch - Copyright (C) 1997-2020 by Dimitri van Heesch + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License as + published by the Free Software Foundation. - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file + @licend The above is the entire license notice + for the JavaScript code in this file */ var navTreeSubIndices = new Array(); var arrowDown = '▼'; @@ -325,14 +323,11 @@ function selectAndHighlight(hash,n) $(n.itemDiv).addClass('selected'); $(n.itemDiv).attr('id','selected'); } - var topOffset=5; - if (typeof page_layout!=='undefined' && page_layout==1) { - topOffset+=$('#top').outerHeight(); - } if ($('#nav-tree-contents .item:first').hasClass('selected')) { - topOffset+=25; + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); } - $('#nav-sync').css('top',topOffset+'px'); showRoot(); } diff --git a/docs/navtreedata.js b/docs/navtreedata.js index 9313055..a6a4108 100644 --- a/docs/navtreedata.js +++ b/docs/navtreedata.js @@ -1,31 +1,29 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. +@licstart The following is the entire license notice for the +JavaScript code in this file. - The MIT License (MIT) +Copyright (C) 1997-2019 by Dimitri van Heesch - Copyright (C) 1997-2020 by Dimitri van Heesch +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file +@licend The above is the entire license notice +for the JavaScript code in this file */ var NAVTREE = [ [ "clutchlog", "index.html", [ - [ "Clutchlog — versatile (de)clutchable spatial logging", "index.html", [ + [ "Clutchlog — versatile (de)clutchable logging", "index.html", [ [ "Features", "index.html#autotoc_md0", null ], [ "Example", "index.html#autotoc_md1", null ], [ "Rationale", "index.html#autotoc_md2", null ], @@ -36,36 +34,28 @@ var NAVTREE = [ "Output Configuration", "index.html#autotoc_md7", [ [ "Log Format", "index.html#autotoc_md8", null ] ] ], - [ "Output Styling", "index.html#autotoc_md9", [ - [ "Typographic Style", "index.html#autotoc_md10", null ], - [ "Colors", "index.html#autotoc_md11", null ], - [ "Value-dependant Format Tags", "index.html#autotoc_md12", null ] - ] ] + [ "Output style", "index.html#autotoc_md9", null ] ] ], - [ "Advanced Usage", "index.html#autotoc_md13", [ - [ "More Output Configuration", "index.html#autotoc_md14", [ - [ "Dump Format", "index.html#autotoc_md15", null ], - [ "Stack Depth Mark", "index.html#autotoc_md16", null ], - [ "Horizontal Filling", "index.html#autotoc_md17", null ], - [ "Stack Depth", "index.html#autotoc_md18", null ], - [ "Filename", "index.html#autotoc_md19", null ] + [ "Advanced Usage", "index.html#autotoc_md10", [ + [ "More Output Configuration", "index.html#autotoc_md11", [ + [ "Dump Format", "index.html#autotoc_md12", null ], + [ "Stack Depth Mark", "index.html#autotoc_md13", null ], + [ "Horizontal Filling", "index.html#autotoc_md14", null ], + [ "Stack Depth", "index.html#autotoc_md15", null ] ] ], - [ "Disabled calls", "index.html#autotoc_md20", null ], - [ "Low-level API", "index.html#autotoc_md21", null ], - [ "(De)clutch any function call", "index.html#autotoc_md22", null ], - [ "(De)clutch any code section", "index.html#autotoc_md23", null ], - [ "Manually Increase Stack Depth", "index.html#autotoc_md24", null ] + [ "Disabled calls", "index.html#autotoc_md16", null ], + [ "Low-level API", "index.html#autotoc_md17", null ], + [ "(De)clutch any function call", "index.html#autotoc_md18", null ], + [ "(De)clutch any code section", "index.html#autotoc_md19", null ] ] ], - [ "Examples", "index.html#autotoc_md25", null ], - [ "Limitations", "index.html#autotoc_md26", null ], - [ "Build and tests", "index.html#autotoc_md32", null ], - [ "Usage as a Git submodule", "index.html#autotoc_md33", null ] + [ "Examples", "index.html#autotoc_md20", null ], + [ "Limitations", "index.html#autotoc_md21", null ], + [ "Build and tests", "index.html#autotoc_md27", null ] ] ], [ "Modules", "modules.html", "modules" ], [ "Classes", "annotated.html", [ [ "Class List", "annotated.html", "annotated_dup" ], [ "Class Index", "classes.html", null ], - [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], [ "Class Members", "functions.html", [ [ "All", "functions.html", null ], [ "Functions", "functions_func.html", null ], diff --git a/docs/navtreeindex0.js b/docs/navtreeindex0.js index eda67d6..14e4bc0 100644 --- a/docs/navtreeindex0.js +++ b/docs/navtreeindex0.js @@ -2,12 +2,10 @@ var NAVTREEINDEX0 = { "annotated.html":[2,0], "classclutchlog.html":[1,2,0], -"classclutchlog.html#a0431616914dbbecb908a794f5b46dada":[1,2,0,52], -"classclutchlog.html#a08310b92e86687349e70f56f9ac1d656":[1,2,0,10], -"classclutchlog.html#a08e8a817a75a4e9f0159231c941e0dae":[1,2,0,41], -"classclutchlog.html#a095e1545a2085ac623e4af19364fea7f":[1,2,0,51], -"classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc":[1,2,0,30], -"classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c":[1,2,0,16], +"classclutchlog.html#a03b145e36f15435a640bb5a885d9f642":[1,2,0,7], +"classclutchlog.html#a0906d74275cedcd403da94879764815e":[1,2,0,6], +"classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc":[1,2,0,34], +"classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c":[1,2,0,21], "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928":[1,2,0,53], "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928a023c3e8a55ddfd140d3e3268dd6221e9":[1,2,0,53,1], "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928a6efd7b28f876c0473c6dfeae82fc8e05":[1,2,0,53,3], @@ -17,149 +15,157 @@ var NAVTREEINDEX0 = "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928abba74b810831c7753777e6dcc0c0f4e2":[1,2,0,53,7], "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928af332f31a368c931f79b9b64d55fc7701":[1,2,0,53,0], "classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928af89a12aab2a73ea31e19b04ecadbdc0d":[1,2,0,53,4], -"classclutchlog.html#a130c4f12eacbd2028102838fe16b734e":[1,2,0,48], -"classclutchlog.html#a14c19e17c54d6353ba34c0dc3371094a":[1,2,0,28], -"classclutchlog.html#a1896f6c4b8597e3e76ff93970bd85167":[1,2,0,45], -"classclutchlog.html#a1a8cb6411726133208f5a2f2cb42d468":[1,2,0,34], -"classclutchlog.html#a2144abe4ec6f630126b6490908b5f924":[1,2,0,4], -"classclutchlog.html#a229fd61519f1245282440120f2d45fb5":[1,2,0,33], -"classclutchlog.html#a2a334e009533744b52f01ef240a59e9d":[1,2,0,50], -"classclutchlog.html#a356df86455409193792b6ed550dfd09e":[1,2,0,38], -"classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4":[1,2,0,11], -"classclutchlog.html#a41757198b29862832a14472a9e5e24c6":[1,2,0,49], -"classclutchlog.html#a4831f44fd5ade102e57320632095934d":[1,2,0,22], -"classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96":[1,2,0,24], -"classclutchlog.html#a5a9a98c3528117223ceff22bc6bee5f7":[1,2,0,37], -"classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5":[1,2,0,44], -"classclutchlog.html#a656c277e074b64728cca871f2b484d1c":[1,2,0,2], -"classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3":[1,2,0,19], -"classclutchlog.html#a6e2a5e98fa9f722d90ba6515895543ac":[1,2,0,1], -"classclutchlog.html#a76eb34537b634aadb75e255f7887eeb6":[1,2,0,35], -"classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9":[1,2,0,12], -"classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e":[1,2,0,43], -"classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d":[1,2,0,6], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20e":[1,2,0,54], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea04548b133168127416623d51dd3b9338":[1,2,0,54,4], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea19ebb39c0f117afbe6658bbc9bea68a4":[1,2,0,54,0], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea35cf5f272267d9656cfcfe52243f4841":[1,2,0,54,2], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea5b96778dd84a50c1b288b31a5200df4d":[1,2,0,54,5], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ea9534ecbf6a632833ca32ea5bb33f7eea":[1,2,0,54,3], -"classclutchlog.html#a822062ffa857bd16ff488f9c749ff20ead79ddc78294d362c22ba917cba2cd3ef":[1,2,0,54,1], -"classclutchlog.html#a82b9375728af2d962831a743d95f4ae7":[1,2,0,23], -"classclutchlog.html#a8d206443dea964f77965450a83693d98":[1,2,0,14], -"classclutchlog.html#a972f895c70edc335f3018a2c8971d59e":[1,2,0,25], -"classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9":[1,2,0,18], -"classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5":[1,2,0,5], -"classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f":[1,2,0,39], -"classclutchlog.html#ab45287cc9c14217904a13aff49573732":[1,2,0,13], -"classclutchlog.html#ab72a0adc9ff287270afe09c9da825fdb":[1,2,0,29], -"classclutchlog.html#ab7773f031a00a05b8c83c1936406cb98":[1,2,0,7], -"classclutchlog.html#ab805ac5c33885459f9f752518a4aa735":[1,2,0,42], -"classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888":[1,2,0,40], -"classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761":[1,2,0,27], -"classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591":[1,2,0,20], -"classclutchlog.html#ac95630bfe9cf547d2b7c4b3430eaedc1":[1,2,0,36], -"classclutchlog.html#acbb50f6306ebb3c8b0d1a52e7f327416":[1,2,0,9], -"classclutchlog.html#ace879554298e6e6e36dafef330c27be8":[1,2,0,31], -"classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd":[1,2,0,15], -"classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6":[1,2,0,21], -"classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447":[1,2,0,17], -"classclutchlog.html#aded03528f34d9000f618419c482c5042":[1,2,0,47], -"classclutchlog.html#ae17db5808155fbc6dc48b4727d0c3abf":[1,2,0,8], -"classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2":[1,2,0,26], -"classclutchlog.html#aeb60684c89bcef5aa9273075c21cc993":[1,2,0,46], -"classclutchlog.html#af898bffe23b125245e338d7495c76d45":[1,2,0,32], -"classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80":[1,2,0,3], +"classclutchlog.html#a130c4f12eacbd2028102838fe16b734e":[1,2,0,51], +"classclutchlog.html#a1896f6c4b8597e3e76ff93970bd85167":[1,2,0,48], +"classclutchlog.html#a1a8cb6411726133208f5a2f2cb42d468":[1,2,0,38], +"classclutchlog.html#a2144abe4ec6f630126b6490908b5f924":[1,2,0,12], +"classclutchlog.html#a229fd61519f1245282440120f2d45fb5":[1,2,0,37], +"classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a":[1,2,0,32], +"classclutchlog.html#a356df86455409193792b6ed550dfd09e":[1,2,0,42], +"classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4":[1,2,0,16], +"classclutchlog.html#a41757198b29862832a14472a9e5e24c6":[1,2,0,52], +"classclutchlog.html#a4831f44fd5ade102e57320632095934d":[1,2,0,27], +"classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96":[1,2,0,28], +"classclutchlog.html#a5a9a98c3528117223ceff22bc6bee5f7":[1,2,0,41], +"classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5":[1,2,0,47], +"classclutchlog.html#a63308e8deae3cfec6801318203494143":[1,2,0,33], +"classclutchlog.html#a656c277e074b64728cca871f2b484d1c":[1,2,0,10], +"classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3":[1,2,0,24], +"classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266":[1,2,0,15], +"classclutchlog.html#a76eb34537b634aadb75e255f7887eeb6":[1,2,0,39], +"classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9":[1,2,0,17], +"classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e":[1,2,0,46], +"classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d":[1,2,0,14], +"classclutchlog.html#a972f895c70edc335f3018a2c8971d59e":[1,2,0,29], +"classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9":[1,2,0,23], +"classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5":[1,2,0,13], +"classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f":[1,2,0,43], +"classclutchlog.html#ab45287cc9c14217904a13aff49573732":[1,2,0,18], +"classclutchlog.html#ab805ac5c33885459f9f752518a4aa735":[1,2,0,45], +"classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888":[1,2,0,44], +"classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761":[1,2,0,31], +"classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591":[1,2,0,25], +"classclutchlog.html#ac95630bfe9cf547d2b7c4b3430eaedc1":[1,2,0,40], +"classclutchlog.html#ace879554298e6e6e36dafef330c27be8":[1,2,0,35], +"classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd":[1,2,0,20], +"classclutchlog.html#acfaceb77da01503b432644a3efaee4fa":[1,2,0,8], +"classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6":[1,2,0,26], +"classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447":[1,2,0,22], +"classclutchlog.html#aded03528f34d9000f618419c482c5042":[1,2,0,50], +"classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2":[1,2,0,30], +"classclutchlog.html#aeb60684c89bcef5aa9273075c21cc993":[1,2,0,49], +"classclutchlog.html#aef653a9744a72a889ca8163269bb781e":[1,2,0,9], +"classclutchlog.html#af898bffe23b125245e338d7495c76d45":[1,2,0,36], +"classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80":[1,2,0,11], +"classclutchlog.html#aff3aa09fb60f7d6dc688c028d3834d8a":[1,2,0,19], "classclutchlog_1_1fmt.html":[1,3,0], -"classclutchlog_1_1fmt.html#a0aa57cdd56ccc79c7750921ab534b205":[1,3,0,7], -"classclutchlog_1_1fmt.html#a24568f7a157d50e3075a74a619719c84":[1,3,0,6], -"classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b":[1,3,0,8], +"classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0":[1,3,0,7], +"classclutchlog_1_1fmt.html#a13453c0b5dbc19d9b510dcdc0352b443":[1,3,0,3], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1e":[1,3,0,15], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea1ffd9e753c8054cc61456ac7fac1ac89":[1,3,0,15,0], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea334c4a4c42fdb79d7ebc3e73b517e6f8":[1,3,0,15,8], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea48d6215903dff56238e52e8891380c8f":[1,3,0,15,4], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea4c2a4a7078da0ac6733464eacfd00f86":[1,3,0,15,5], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea6411532ba4971f378391776a9db629d3":[1,3,0,15,6], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ea9f27410725ab8cc8854a2769c7a516b8":[1,3,0,15,2], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1eabda9643ac6601722a28f238714274da4":[1,3,0,15,1], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ead487dd0b55dfcacdd920ccbdaeafa351":[1,3,0,15,3], +"classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1ead508fe45cecaf653904a0e774084bb5c":[1,3,0,15,7], +"classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b":[1,3,0,13], "classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959":[1,3,0,0], -"classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502":[1,3,0,15], -"classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1844e5aae3a3eefc500c545e3c35bcfa":[1,3,0,15,2], -"classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1e7cced329549fc4c2393381f068062e":[1,3,0,15,0], -"classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a7a3c32a8827eb17435511b4c7a429749":[1,3,0,15,1], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0":[1,3,0,14], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a1ffd9e753c8054cc61456ac7fac1ac89":[1,3,0,14,0], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a334c4a4c42fdb79d7ebc3e73b517e6f8":[1,3,0,14,8], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a48d6215903dff56238e52e8891380c8f":[1,3,0,14,4], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a4c2a4a7078da0ac6733464eacfd00f86":[1,3,0,14,5], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a6411532ba4971f378391776a9db629d3":[1,3,0,14,6], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0a9f27410725ab8cc8854a2769c7a516b8":[1,3,0,14,2], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0abda9643ac6601722a28f238714274da4":[1,3,0,14,1], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0ad487dd0b55dfcacdd920ccbdaeafa351":[1,3,0,14,3], +"classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0ad508fe45cecaf653904a0e774084bb5c":[1,3,0,14,7], +"classclutchlog_1_1fmt.html#a65856874070ec0865b3a5b9aeb0e4f3d":[1,3,0,4], +"classclutchlog_1_1fmt.html#a6cc6126d113fc0647ed3acbf29cdc425":[1,3,0,1], +"classclutchlog_1_1fmt.html#a8307a848fcf9ed929435b3e1f2b53401":[1,3,0,11], +"classclutchlog_1_1fmt.html#a86696b20e5b31c96ba592926efb324f3":[1,3,0,12], "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89":[1,3,0,16], "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a334c4a4c42fdb79d7ebc3e73b517e6f8":[1,3,0,16,4], "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a69dcab4a73aeec2113f69b61e6263da8":[1,3,0,16,1], "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a6dc7b4483f8c2c701a48e42db552806d":[1,3,0,16,2], "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89a86266ee937d97f812a8e57d22b62ee29":[1,3,0,16,0], "classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89aa91c78e040f7b9d158f381e197f8beb4":[1,3,0,16,3], -"classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b":[1,3,0,3], -"classclutchlog_1_1fmt.html#ad754c64eb6fd8730a616d113cb9f9129":[1,3,0,1], -"classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c":[1,3,0,2], +"classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da":[1,3,0,10], +"classclutchlog_1_1fmt.html#a99b3a05ddf6fa341cee6cb1e5dffc159":[1,3,0,5], +"classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b":[1,3,0,9], +"classclutchlog_1_1fmt.html#ac69e6d3b7ddaec908c429ac61f354267":[1,3,0,2], +"classclutchlog_1_1fmt.html#aeea73b0239bf73ebc8ee84c1e6d278e2":[1,3,0,6], +"classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c":[1,3,0,8], "classes.html":[2,1], -"clutchlog_8h.html":[3,0,0,0], -"clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16":[3,0,0,0,1], -"clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4":[3,0,0,0,4], -"clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb":[3,0,0,0,2], -"clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817":[3,0,0,0,3], -"clutchlog_8h_source.html":[3,0,0,0], -"dir_59425e443f801f1f2fd8bbe4959a3ccf.html":[3,0,1], -"dir_c318bd5cf14aaa5601e6029e0b5b4048.html":[3,0,0], +"clutchlog_8h.html":[3,0,0], +"clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16":[3,0,0,1], +"clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4":[3,0,0,4], +"clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb":[3,0,0,2], +"clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817":[3,0,0,3], +"clutchlog_8h_source.html":[3,0,0], "files.html":[3,0], -"functions.html":[2,3,0], -"functions_enum.html":[2,3,3], -"functions_func.html":[2,3,1], -"functions_rela.html":[2,3,4], -"functions_vars.html":[2,3,2], +"functions.html":[2,2,0], +"functions_enum.html":[2,2,3], +"functions_func.html":[2,2,1], +"functions_rela.html":[2,2,4], +"functions_vars.html":[2,2,2], "globals.html":[3,1,0], "globals_defs.html":[3,1,1], "group___default_config.html":[1,0], +"group___default_config.html#ga27b613c6727857a7cbcd0165d862034e":[3,0,0,12], "group___default_config.html#ga27b613c6727857a7cbcd0165d862034e":[1,0,2], +"group___default_config.html#ga45c4c964fad4ad1641d5c9c28c4645b9":[3,0,0,14], "group___default_config.html#ga45c4c964fad4ad1641d5c9c28c4645b9":[1,0,4], +"group___default_config.html#ga4eda0c1bfded5df89351b8ce8b9c2805":[3,0,0,16], "group___default_config.html#ga4eda0c1bfded5df89351b8ce8b9c2805":[1,0,6], +"group___default_config.html#ga524c16f280d92ee8ab683162c9ce01fa":[3,0,0,11], "group___default_config.html#ga524c16f280d92ee8ab683162c9ce01fa":[1,0,1], "group___default_config.html#ga54d29e956575e1c731eab5406135c5df":[1,0,3], +"group___default_config.html#ga54d29e956575e1c731eab5406135c5df":[3,0,0,13], "group___default_config.html#ga8564be479b948ee3052b61783c66d415":[1,0,0], +"group___default_config.html#ga8564be479b948ee3052b61783c66d415":[3,0,0,5], +"group___default_config.html#ga98f30d814d4913a8a7c93a8793f49adf":[3,0,0,15], "group___default_config.html#ga98f30d814d4913a8a7c93a8793f49adf":[1,0,5], "group___formating.html":[1,3], "group___main.html":[1,2], "group___use_macros.html":[1,1], -"group___use_macros.html#ga369d365b7c25ec270596c3ca6839cf2c":[1,1,1], -"group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2":[1,1,3], -"group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d":[1,1,2], -"group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae":[1,1,4], -"group___use_macros.html#gaaf2e85e1153e6c88b458dd49e3c37c73":[1,1,5], +"group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2":[1,1,2], +"group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2":[3,0,0,8], +"group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d":[1,1,1], +"group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d":[3,0,0,7], +"group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae":[3,0,0,9], +"group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae":[1,1,3], +"group___use_macros.html#gaaf2e85e1153e6c88b458dd49e3c37c73":[3,0,0,10], +"group___use_macros.html#gaaf2e85e1153e6c88b458dd49e3c37c73":[1,1,4], "group___use_macros.html#gae8911119d726a43b77f5781cb5a72813":[1,1,0], -"group__colors16.html":[1,4], -"group__colors16.html#ga1cf3e27e4041250ffea0a6d58010da1e":[1,4,1], -"group__colors16.html#ga4662a3ec3577c6a575a2c734636ed8a0":[1,4,0], -"group__colors16.html#ga8307a848fcf9ed929435b3e1f2b53401":[1,4,2], -"group__colors16.html#ga86696b20e5b31c96ba592926efb324f3":[1,4,3], -"group__colors16.html#ga93d498671d8dc2e796978c4f4de51241":[1,4,5], -"group__colors16.html#gac00a2f504f5308207f7a94915fe9a9c5":[1,4,4], -"group__colors256__16_m.html":[1,5], -"group__colors256__16_m.html#ga1d687af385957846034568c3a62d4ef0":[1,5,8], -"group__colors256__16_m.html#ga626c99eb11d1718d7a2a8bb3f079e6de":[1,5,9], -"group__colors256__16_m.html#gaa2fcbb402dc2426d3720b8bc78a80ec0":[1,5,10], -"group__colors256__16_m.html#gad98fbe84ef338ded8425d56955825a2c":[1,5,7], -"hierarchy.html":[2,2], -"index.html":[0], +"group___use_macros.html#gae8911119d726a43b77f5781cb5a72813":[3,0,0,6], "index.html":[], +"index.html":[0], "index.html#autotoc_md0":[0,0], "index.html#autotoc_md1":[0,1], -"index.html#autotoc_md10":[0,3,4,0], -"index.html#autotoc_md11":[0,3,4,1], -"index.html#autotoc_md12":[0,3,4,2], -"index.html#autotoc_md13":[0,4], -"index.html#autotoc_md14":[0,4,0], -"index.html#autotoc_md15":[0,4,0,0], -"index.html#autotoc_md16":[0,4,0,1], -"index.html#autotoc_md17":[0,4,0,2], -"index.html#autotoc_md18":[0,4,0,3], -"index.html#autotoc_md19":[0,4,0,4], +"index.html#autotoc_md10":[0,4], +"index.html#autotoc_md11":[0,4,0], +"index.html#autotoc_md12":[0,4,0,0], +"index.html#autotoc_md13":[0,4,0,1], +"index.html#autotoc_md14":[0,4,0,2], +"index.html#autotoc_md15":[0,4,0,3], +"index.html#autotoc_md16":[0,4,1], +"index.html#autotoc_md17":[0,4,2], +"index.html#autotoc_md18":[0,4,3], +"index.html#autotoc_md19":[0,4,4], "index.html#autotoc_md2":[0,2], -"index.html#autotoc_md20":[0,4,1], -"index.html#autotoc_md21":[0,4,2], -"index.html#autotoc_md22":[0,4,3], -"index.html#autotoc_md23":[0,4,4], -"index.html#autotoc_md24":[0,4,5], -"index.html#autotoc_md25":[0,5], -"index.html#autotoc_md26":[0,6], +"index.html#autotoc_md20":[0,5], +"index.html#autotoc_md21":[0,6], +"index.html#autotoc_md22":[0], +"index.html#autotoc_md23":[1], +"index.html#autotoc_md24":[2], +"index.html#autotoc_md25":[3], +"index.html#autotoc_md26":[4], +"index.html#autotoc_md27":[0,7], "index.html#autotoc_md3":[0,3], -"index.html#autotoc_md32":[0,7], -"index.html#autotoc_md33":[0,8], "index.html#autotoc_md4":[0,3,0], "index.html#autotoc_md5":[0,3,1], "index.html#autotoc_md6":[0,3,2], @@ -168,62 +174,15 @@ var NAVTREEINDEX0 = "index.html#autotoc_md9":[0,3,4], "modules.html":[1], "pages.html":[], -"structclutchlog_1_1fmt_1_1bg__16_m.html":[1,5,6], -"structclutchlog_1_1fmt_1_1bg__16_m.html#a363c314ab6a8aa22951b5500d7a78ad0":[1,5,6,0], -"structclutchlog_1_1fmt_1_1bg__16_m.html#a68f8cb4ab78a1cfb3b7b8e1e95bee11d":[1,5,6,3], -"structclutchlog_1_1fmt_1_1bg__16_m.html#ace018922ae99f32b48bf5cacaec91501":[1,5,6,1], -"structclutchlog_1_1fmt_1_1bg__16_m.html#adcd5bd1e69e76e3b36015cf687693c97":[1,5,6,2], -"structclutchlog_1_1fmt_1_1bg__256.html":[1,5,3], -"structclutchlog_1_1fmt_1_1bg__256.html#a096d302be7373acaaf225644683408bd":[1,5,3,2], -"structclutchlog_1_1fmt_1_1bg__256.html#a0d244a542b6b98a373f8b1f9e92a6a90":[1,5,3,0], -"structclutchlog_1_1fmt_1_1bg__256.html#a83c663b1a9f00ba7ba7649c9c5605fad":[1,5,3,1], -"structclutchlog_1_1fmt_1_1color.html":[1,5,0], -"structclutchlog_1_1fmt_1_1color.html#a121619a01bf48e53b3478d23989c0c59":[1,5,0,2], -"structclutchlog_1_1fmt_1_1color.html#a3fd18c290567bd5c4971663a1aed12ae":[1,5,0,4], -"structclutchlog_1_1fmt_1_1color.html#a4860c13958d21118a564920fa78e6720":[1,5,0,3], -"structclutchlog_1_1fmt_1_1color.html#a741d0165287350d8fcacb1f472ce5dac":[1,5,0,0], -"structclutchlog_1_1fmt_1_1color.html#a96d7161ef1e7cc631ae670cd3f364603":[1,5,0,1], -"structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0":[1,5,0,5], -"structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0a469bba0a564235dfceede42db14f17b0":[1,5,0,5,1], -"structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0ae64e4c4fee28f9ca7301e4c7ff598e67":[1,5,0,5,0], -"structclutchlog_1_1fmt_1_1color__16_m.html":[1,5,4], -"structclutchlog_1_1fmt_1_1color__16_m.html#a19e1517a9afb75a4e6224f718ed11c61":[1,5,4,5], -"structclutchlog_1_1fmt_1_1color__16_m.html#a36d9cf42044fec34b7858142d86137d3":[1,5,4,1], -"structclutchlog_1_1fmt_1_1color__16_m.html#a55e39e7eb3ced3095c00914eff52470c":[1,5,4,2], -"structclutchlog_1_1fmt_1_1color__16_m.html#a780c11e42bb140732ffd37cf4eef9e1d":[1,5,4,3], -"structclutchlog_1_1fmt_1_1color__16_m.html#ac6a4b8650ea7e9171fc76d6226015005":[1,5,4,4], -"structclutchlog_1_1fmt_1_1color__16_m.html#aea10e881fb9b570267f5751fb67c4282":[1,5,4,0], -"structclutchlog_1_1fmt_1_1color__256.html":[1,5,1], -"structclutchlog_1_1fmt_1_1color__256.html#a12fdff3c5c4edbf952aaa31519f0171c":[1,5,1,0], -"structclutchlog_1_1fmt_1_1color__256.html#a1b68065b35141c018b33c3f2c45f5726":[1,5,1,1], -"structclutchlog_1_1fmt_1_1color__256.html#a8e0b13d6bad87c83c3465524a5d33988":[1,5,1,4], -"structclutchlog_1_1fmt_1_1color__256.html#ad4e941accf566378e0007ec881096fb0":[1,5,1,3], -"structclutchlog_1_1fmt_1_1color__256.html#ad79557682cec1c053dda258581972111":[1,5,1,2], -"structclutchlog_1_1fmt_1_1fg__16_m.html":[1,5,5], -"structclutchlog_1_1fmt_1_1fg__16_m.html#a531b717b8d78a0a5929fa90d0a01d7e5":[1,5,5,1], -"structclutchlog_1_1fmt_1_1fg__16_m.html#a984525f33eb86b7f8b3e5d0874611194":[1,5,5,0], -"structclutchlog_1_1fmt_1_1fg__16_m.html#a9da40a4a7ff3b80f028f26322f59eba8":[1,5,5,3], -"structclutchlog_1_1fmt_1_1fg__16_m.html#abc768d6b7c2139c14f210755108006d3":[1,5,5,2], -"structclutchlog_1_1fmt_1_1fg__256.html":[1,5,2], -"structclutchlog_1_1fmt_1_1fg__256.html#a501fff36520f20ba4973ba3848fb9c23":[1,5,2,2], -"structclutchlog_1_1fmt_1_1fg__256.html#a6df3d848db0e55c79709fb4565cbfd59":[1,5,2,1], -"structclutchlog_1_1fmt_1_1fg__256.html#a97c241e9f80c63d269953cc525a72c7a":[1,5,2,0], -"structclutchlog_1_1scope__t.html":[1,2,0,0], -"structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572":[1,2,0,0,0], -"structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff":[1,2,0,0,3], -"structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744":[1,2,0,0,2], -"structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9":[1,2,0,0,1], -"t-assert_8cpp_source.html":[3,0,1,0], -"t-color16_m_8cpp_source.html":[3,0,1,2], -"t-color256_8cpp_source.html":[3,0,1,3], -"t-color_8cpp_source.html":[3,0,1,1], -"t-demo_8cpp_source.html":[3,0,1,4], -"t-depth-delta_8cpp_source.html":[3,0,1,5], -"t-dump_8cpp_source.html":[3,0,1,6], -"t-extra_8cpp_source.html":[3,0,1,7], -"t-filename_8cpp_source.html":[3,0,1,8], -"t-fmt-constructors_8cpp_source.html":[3,0,1,9], -"t-hash-color_8cpp_source.html":[3,0,1,10], -"t-log_8cpp_source.html":[3,0,1,11], -"t-one-line-if_8cpp_source.html":[3,0,1,12] +"structclutchlog_1_1scope__t.html":[1,2,0,5], +"structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572":[1,2,0,5,0], +"structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff":[1,2,0,5,3], +"structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744":[1,2,0,5,2], +"structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9":[1,2,0,5,1], +"t-assert_8cpp_source.html":[3,0,1], +"t-color_8cpp_source.html":[3,0,2], +"t-demo_8cpp_source.html":[3,0,3], +"t-dump_8cpp_source.html":[3,0,4], +"t-log_8cpp_source.html":[3,0,5], +"t-one-line-if_8cpp_source.html":[3,0,6] }; diff --git a/docs/navtreeindex1.js b/docs/navtreeindex1.js deleted file mode 100644 index c6d0f2d..0000000 --- a/docs/navtreeindex1.js +++ /dev/null @@ -1,62 +0,0 @@ -var NAVTREEINDEX1 = -{ -"structclutchlog_1_1fmt_1_1bg__16_m.html#a68f8cb4ab78a1cfb3b7b8e1e95bee11d":[1,5,6,3], -"structclutchlog_1_1fmt_1_1bg__16_m.html#ace018922ae99f32b48bf5cacaec91501":[1,5,6,1], -"structclutchlog_1_1fmt_1_1bg__16_m.html#adcd5bd1e69e76e3b36015cf687693c97":[1,5,6,2], -"structclutchlog_1_1fmt_1_1bg__256.html":[1,5,3], -"structclutchlog_1_1fmt_1_1bg__256.html#a096d302be7373acaaf225644683408bd":[1,5,3,2], -"structclutchlog_1_1fmt_1_1bg__256.html#a0d244a542b6b98a373f8b1f9e92a6a90":[1,5,3,0], -"structclutchlog_1_1fmt_1_1bg__256.html#a83c663b1a9f00ba7ba7649c9c5605fad":[1,5,3,1], -"structclutchlog_1_1fmt_1_1color.html":[1,5,0], -"structclutchlog_1_1fmt_1_1color.html#a3fd18c290567bd5c4971663a1aed12ae":[1,5,0,5], -"structclutchlog_1_1fmt_1_1color.html#a741d0165287350d8fcacb1f472ce5dac":[1,5,0,0], -"structclutchlog_1_1fmt_1_1color.html#a826e3d3eba925608442439d6bc3a95a6":[1,5,0,3], -"structclutchlog_1_1fmt_1_1color.html#a96d7161ef1e7cc631ae670cd3f364603":[1,5,0,1], -"structclutchlog_1_1fmt_1_1color.html#aa75e958436afe333924b6db3e5f0821f":[1,5,0,2], -"structclutchlog_1_1fmt_1_1color.html#aacbc3cd9447fdb7d51e02b29b5028a6b":[1,5,0,4], -"structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0":[1,5,0,6], -"structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0a469bba0a564235dfceede42db14f17b0":[1,5,0,6,1], -"structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0ae64e4c4fee28f9ca7301e4c7ff598e67":[1,5,0,6,0], -"structclutchlog_1_1fmt_1_1color__16_m.html":[1,5,4], -"structclutchlog_1_1fmt_1_1color__16_m.html#a19e1517a9afb75a4e6224f718ed11c61":[1,5,4,5], -"structclutchlog_1_1fmt_1_1color__16_m.html#a36d9cf42044fec34b7858142d86137d3":[1,5,4,1], -"structclutchlog_1_1fmt_1_1color__16_m.html#a55e39e7eb3ced3095c00914eff52470c":[1,5,4,2], -"structclutchlog_1_1fmt_1_1color__16_m.html#a674910195e7bb14d78f0cf56c308a47e":[1,5,4,4], -"structclutchlog_1_1fmt_1_1color__16_m.html#a780c11e42bb140732ffd37cf4eef9e1d":[1,5,4,3], -"structclutchlog_1_1fmt_1_1color__16_m.html#ac94eaa04e4f5de4ca6cfe7105ec1c4d4":[1,5,4,6], -"structclutchlog_1_1fmt_1_1color__16_m.html#aea10e881fb9b570267f5751fb67c4282":[1,5,4,0], -"structclutchlog_1_1fmt_1_1color__16_m.html#aedcfa3e0597d9dd883b1783e931bb9af":[1,5,4,7], -"structclutchlog_1_1fmt_1_1color__256.html":[1,5,1], -"structclutchlog_1_1fmt_1_1color__256.html#a12fdff3c5c4edbf952aaa31519f0171c":[1,5,1,0], -"structclutchlog_1_1fmt_1_1color__256.html#a1b68065b35141c018b33c3f2c45f5726":[1,5,1,1], -"structclutchlog_1_1fmt_1_1color__256.html#a8e0b13d6bad87c83c3465524a5d33988":[1,5,1,4], -"structclutchlog_1_1fmt_1_1color__256.html#aaae6106a11eddade981172324a43df68":[1,5,1,3], -"structclutchlog_1_1fmt_1_1color__256.html#ad79557682cec1c053dda258581972111":[1,5,1,2], -"structclutchlog_1_1fmt_1_1fg__16_m.html":[1,5,5], -"structclutchlog_1_1fmt_1_1fg__16_m.html#a531b717b8d78a0a5929fa90d0a01d7e5":[1,5,5,1], -"structclutchlog_1_1fmt_1_1fg__16_m.html#a984525f33eb86b7f8b3e5d0874611194":[1,5,5,0], -"structclutchlog_1_1fmt_1_1fg__16_m.html#a9da40a4a7ff3b80f028f26322f59eba8":[1,5,5,3], -"structclutchlog_1_1fmt_1_1fg__16_m.html#abc768d6b7c2139c14f210755108006d3":[1,5,5,2], -"structclutchlog_1_1fmt_1_1fg__256.html":[1,5,2], -"structclutchlog_1_1fmt_1_1fg__256.html#a501fff36520f20ba4973ba3848fb9c23":[1,5,2,2], -"structclutchlog_1_1fmt_1_1fg__256.html#a6df3d848db0e55c79709fb4565cbfd59":[1,5,2,1], -"structclutchlog_1_1fmt_1_1fg__256.html#a97c241e9f80c63d269953cc525a72c7a":[1,5,2,0], -"structclutchlog_1_1scope__t.html":[1,2,0,5], -"structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572":[1,2,0,5,0], -"structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff":[1,2,0,5,3], -"structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744":[1,2,0,5,2], -"structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9":[1,2,0,5,1], -"t-assert_8cpp_source.html":[3,0,1], -"t-color16_m_8cpp_source.html":[3,0,3], -"t-color256_8cpp_source.html":[3,0,4], -"t-color_8cpp_source.html":[3,0,2], -"t-demo-extravagant_8cpp_source.html":[3,0,5], -"t-demo_8cpp_source.html":[3,0,6], -"t-depth-delta_8cpp_source.html":[3,0,7], -"t-dump_8cpp_source.html":[3,0,8], -"t-filename_8cpp_source.html":[3,0,9], -"t-fmt-constructors_8cpp_source.html":[3,0,10], -"t-hash-color_8cpp_source.html":[3,0,11], -"t-log_8cpp_source.html":[3,0,12], -"t-one-line-if_8cpp_source.html":[3,0,13] -}; diff --git a/docs/resize.js b/docs/resize.js index 7fe30d1..a0bb5f4 100644 --- a/docs/resize.js +++ b/docs/resize.js @@ -1,26 +1,25 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. + @licstart The following is the entire license notice for the + JavaScript code in this file. - The MIT License (MIT) + Copyright (C) 1997-2017 by Dimitri van Heesch - Copyright (C) 1997-2020 by Dimitri van Heesch + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file + @licend The above is the entire license notice + for the JavaScript code in this file */ function initResizable() { @@ -53,7 +52,7 @@ function initResizable() date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week expiration = date.toGMTString(); } - document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; } function resizeWidth() @@ -75,20 +74,10 @@ function initResizable() { var headerHeight = header.outerHeight(); var footerHeight = footer.outerHeight(); - var windowHeight = $(window).height(); - var contentHeight,navtreeHeight,sideNavHeight; - if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ - contentHeight = windowHeight - headerHeight - footerHeight; - navtreeHeight = contentHeight; - sideNavHeight = contentHeight; - } else if (page_layout==1) { /* DISABLE_INDEX=YES */ - contentHeight = windowHeight - footerHeight; - navtreeHeight = windowHeight - headerHeight; - sideNavHeight = windowHeight; - } - content.css({height:contentHeight + "px"}); - navtree.css({height:navtreeHeight + "px"}); - sidenav.css({height:sideNavHeight + "px"}); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); var width=$(window).width(); if (width!=collapsedWidth) { if (width=desktop_vp) { @@ -102,9 +91,7 @@ function initResizable() } collapsedWidth=width; } - if (location.hash.slice(1)) { - (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); - } + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); } function collapseExpand() diff --git a/docs/search/all_0.html b/docs/search/all_0.html index bb9e364..26dd244 100644 --- a/docs/search/all_0.html +++ b/docs/search/all_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_0.js b/docs/search/all_0.js index 4cb16ca..285176d 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -1,18 +1,14 @@ var searchData= [ - ['_5ffilehash_5ffmts_0',['_filehash_fmts',['../classclutchlog.html#a2a334e009533744b52f01ef240a59e9d',1,'clutchlog']]], - ['_5ffilename_1',['_filename',['../classclutchlog.html#a0431616914dbbecb908a794f5b46dada',1,'clutchlog']]], - ['_5fformat_5fdump_2',['_format_dump',['../classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5',1,'clutchlog']]], - ['_5fformat_5flog_3',['_format_log',['../classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e',1,'clutchlog']]], - ['_5ffunchash_5ffmts_4',['_funchash_fmts',['../classclutchlog.html#a095e1545a2085ac623e4af19364fea7f',1,'clutchlog']]], - ['_5fin_5ffile_5',['_in_file',['../classclutchlog.html#aded03528f34d9000f618419c482c5042',1,'clutchlog']]], - ['_5fin_5ffunc_6',['_in_func',['../classclutchlog.html#a130c4f12eacbd2028102838fe16b734e',1,'clutchlog']]], - ['_5fin_5fline_7',['_in_line',['../classclutchlog.html#a41757198b29862832a14472a9e5e24c6',1,'clutchlog']]], - ['_5flevel_5ffmt_8',['_level_fmt',['../classclutchlog.html#ab805ac5c33885459f9f752518a4aa735',1,'clutchlog']]], - ['_5flevel_5fshort_9',['_level_short',['../classclutchlog.html#a08e8a817a75a4e9f0159231c941e0dae',1,'clutchlog']]], - ['_5flevel_5fword_10',['_level_word',['../classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f',1,'clutchlog']]], - ['_5fout_11',['_out',['../classclutchlog.html#a1896f6c4b8597e3e76ff93970bd85167',1,'clutchlog']]], - ['_5fstage_12',['_stage',['../classclutchlog.html#aeb60684c89bcef5aa9273075c21cc993',1,'clutchlog']]], - ['_5fstrip_5fcalls_13',['_strip_calls',['../classclutchlog.html#a356df86455409193792b6ed550dfd09e',1,'clutchlog']]], - ['_5fword_5flevel_14',['_word_level',['../classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888',1,'clutchlog']]] + ['_5fformat_5fdump_0',['_format_dump',['../classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5',1,'clutchlog']]], + ['_5fformat_5flog_1',['_format_log',['../classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e',1,'clutchlog']]], + ['_5fin_5ffile_2',['_in_file',['../classclutchlog.html#aded03528f34d9000f618419c482c5042',1,'clutchlog']]], + ['_5fin_5ffunc_3',['_in_func',['../classclutchlog.html#a130c4f12eacbd2028102838fe16b734e',1,'clutchlog']]], + ['_5fin_5fline_4',['_in_line',['../classclutchlog.html#a41757198b29862832a14472a9e5e24c6',1,'clutchlog']]], + ['_5flevel_5ffmt_5',['_level_fmt',['../classclutchlog.html#ab805ac5c33885459f9f752518a4aa735',1,'clutchlog']]], + ['_5flevel_5fword_6',['_level_word',['../classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f',1,'clutchlog']]], + ['_5fout_7',['_out',['../classclutchlog.html#a1896f6c4b8597e3e76ff93970bd85167',1,'clutchlog']]], + ['_5fstage_8',['_stage',['../classclutchlog.html#aeb60684c89bcef5aa9273075c21cc993',1,'clutchlog']]], + ['_5fstrip_5fcalls_9',['_strip_calls',['../classclutchlog.html#a356df86455409193792b6ed550dfd09e',1,'clutchlog']]], + ['_5fword_5flevel_10',['_word_level',['../classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888',1,'clutchlog']]] ]; diff --git a/docs/search/all_1.html b/docs/search/all_1.html index 8989416..8eb215b 100644 --- a/docs/search/all_1.html +++ b/docs/search/all_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_1.js b/docs/search/all_1.js index ab5d8c9..4cd6e1a 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -1,4 +1,5 @@ var searchData= [ - ['ansi_0',['ansi',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502',1,'clutchlog::fmt']]] + ['back_11',['back',['../classclutchlog_1_1fmt.html#a86696b20e5b31c96ba592926efb324f3',1,'clutchlog::fmt']]], + ['bg_12',['bg',['../classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/all_10.html b/docs/search/all_10.html deleted file mode 100644 index a7c1f9c..0000000 --- a/docs/search/all_10.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/all_10.js b/docs/search/all_10.js deleted file mode 100644 index 7298532..0000000 --- a/docs/search/all_10.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['with_5fclutchlog_0',['WITH_CLUTCHLOG',['../clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4',1,'clutchlog.h']]] -]; diff --git a/docs/search/all_2.html b/docs/search/all_2.html index 98e648c..b26d916 100644 --- a/docs/search/all_2.html +++ b/docs/search/all_2.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_2.js b/docs/search/all_2.js index 1e2731f..4c82b73 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -1,9 +1,20 @@ var searchData= [ - ['back_0',['back',['../group__colors16.html#ga86696b20e5b31c96ba592926efb324f3',1,'clutchlog::fmt']]], - ['back_5f16m_1',['back_16M',['../group__colors256__16_m.html#gaa2fcbb402dc2426d3720b8bc78a80ec0',1,'clutchlog::fmt']]], - ['back_5f256_2',['back_256',['../group__colors256__16_m.html#ga1d687af385957846034568c3a62d4ef0',1,'clutchlog::fmt']]], - ['bg_3',['bg',['../group__colors16.html#ga1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]], - ['bg_5f16m_4',['bg_16M',['../structclutchlog_1_1fmt_1_1bg__16_m.html#a363c314ab6a8aa22951b5500d7a78ad0',1,'clutchlog::fmt::bg_16M::bg_16M()'],['../structclutchlog_1_1fmt_1_1bg__16_m.html#ace018922ae99f32b48bf5cacaec91501',1,'clutchlog::fmt::bg_16M::bg_16M(short r, short g, short b)'],['../structclutchlog_1_1fmt_1_1bg__16_m.html#adcd5bd1e69e76e3b36015cf687693c97',1,'clutchlog::fmt::bg_16M::bg_16M(const std::string &srgb)'],['../structclutchlog_1_1fmt_1_1bg__16_m.html#a68f8cb4ab78a1cfb3b7b8e1e95bee11d',1,'clutchlog::fmt::bg_16M::bg_16M(const bg &)'],['../structclutchlog_1_1fmt_1_1bg__16_m.html',1,'clutchlog::fmt::bg_16M']]], - ['bg_5f256_5',['bg_256',['../structclutchlog_1_1fmt_1_1bg__256.html#a0d244a542b6b98a373f8b1f9e92a6a90',1,'clutchlog::fmt::bg_256::bg_256()'],['../structclutchlog_1_1fmt_1_1bg__256.html#a83c663b1a9f00ba7ba7649c9c5605fad',1,'clutchlog::fmt::bg_256::bg_256(const short b)'],['../structclutchlog_1_1fmt_1_1bg__256.html#a096d302be7373acaaf225644683408bd',1,'clutchlog::fmt::bg_256::bg_256(const bg &)'],['../structclutchlog_1_1fmt_1_1bg__256.html',1,'clutchlog::fmt::bg_256']]] + ['clutchcode_13',['CLUTCHCODE',['../group___use_macros.html#gaaf2e85e1153e6c88b458dd49e3c37c73',1,'clutchlog.h']]], + ['clutchdump_14',['CLUTCHDUMP',['../group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2',1,'clutchlog.h']]], + ['clutchdump_5fdefault_5fformat_15',['CLUTCHDUMP_DEFAULT_FORMAT',['../group___default_config.html#ga27b613c6727857a7cbcd0165d862034e',1,'clutchlog.h']]], + ['clutchdump_5fdefault_5fsep_16',['CLUTCHDUMP_DEFAULT_SEP',['../group___default_config.html#ga54d29e956575e1c731eab5406135c5df',1,'clutchlog.h']]], + ['clutchfunc_17',['CLUTCHFUNC',['../group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae',1,'clutchlog.h']]], + ['clutchloc_18',['CLUTCHLOC',['../group___use_macros.html#gae8911119d726a43b77f5781cb5a72813',1,'clutchlog.h']]], + ['clutchlog_19',['clutchlog',['../classclutchlog.html',1,'clutchlog'],['../group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d',1,'CLUTCHLOG(): clutchlog.h']]], + ['clutchlog_2eh_20',['clutchlog.h',['../clutchlog_8h.html',1,'']]], + ['clutchlog_5fdefault_5fdepth_5fbuilt_5fnodebug_21',['CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG',['../group___default_config.html#ga8564be479b948ee3052b61783c66d415',1,'clutchlog.h']]], + ['clutchlog_5fdefault_5fdepth_5fmark_22',['CLUTCHLOG_DEFAULT_DEPTH_MARK',['../group___default_config.html#ga45c4c964fad4ad1641d5c9c28c4645b9',1,'clutchlog.h']]], + ['clutchlog_5fdefault_5fformat_23',['CLUTCHLOG_DEFAULT_FORMAT',['../group___default_config.html#ga524c16f280d92ee8ab683162c9ce01fa',1,'clutchlog.h']]], + ['clutchlog_5fdefault_5fhfill_5fmark_24',['CLUTCHLOG_DEFAULT_HFILL_MARK',['../group___default_config.html#ga4eda0c1bfded5df89351b8ce8b9c2805',1,'clutchlog.h']]], + ['clutchlog_5fh_25',['CLUTCHLOG_H',['../clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16',1,'clutchlog.h']]], + ['clutchlog_5fhave_5funix_5fsysinfo_26',['CLUTCHLOG_HAVE_UNIX_SYSINFO',['../clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb',1,'clutchlog.h']]], + ['clutchlog_5fhave_5funix_5fsysioctl_27',['CLUTCHLOG_HAVE_UNIX_SYSIOCTL',['../clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817',1,'clutchlog.h']]], + ['clutchlog_5fstrip_5fcalls_28',['CLUTCHLOG_STRIP_CALLS',['../group___default_config.html#ga98f30d814d4913a8a7c93a8793f49adf',1,'clutchlog.h']]], + ['clutchlog_20—_20versatile_20_28de_29clutchable_20logging_29',['Clutchlog — versatile (de)clutchable logging',['../index.html',1,'']]] ]; diff --git a/docs/search/all_3.html b/docs/search/all_3.html index f4e8da7..b61b96f 100644 --- a/docs/search/all_3.html +++ b/docs/search/all_3.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_3.js b/docs/search/all_3.js index 388a551..6003d4c 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -1,29 +1,13 @@ var searchData= [ - ['clutchcode_0',['CLUTCHCODE',['../group___use_macros.html#gaaf2e85e1153e6c88b458dd49e3c37c73',1,'clutchlog.h']]], - ['clutchdump_1',['CLUTCHDUMP',['../group___use_macros.html#ga572e3aa19d8b39e3ed0b9e91961104c2',1,'clutchlog.h']]], - ['clutchdump_5fdefault_5fformat_2',['CLUTCHDUMP_DEFAULT_FORMAT',['../group___default_config.html#ga27b613c6727857a7cbcd0165d862034e',1,'clutchlog.h']]], - ['clutchdump_5fdefault_5fsep_3',['CLUTCHDUMP_DEFAULT_SEP',['../group___default_config.html#ga54d29e956575e1c731eab5406135c5df',1,'clutchlog.h']]], - ['clutchfunc_4',['CLUTCHFUNC',['../group___use_macros.html#ga9f77cee4f853e582262930c9c17f90ae',1,'clutchlog.h']]], - ['clutchloc_5',['CLUTCHLOC',['../group___use_macros.html#gae8911119d726a43b77f5781cb5a72813',1,'clutchlog.h']]], - ['clutchlog_6',['clutchlog',['../classclutchlog.html',1,'']]], - ['clutchlog_7',['CLUTCHLOG',['../group___use_macros.html#ga6f86187e2b35e7e1907d688f504a197d',1,'clutchlog.h']]], - ['clutchlog_20—_20versatile_20_28de_29clutchable_20spatial_20logging_8',['Clutchlog — versatile (de)clutchable spatial logging',['../index.html',1,'']]], - ['clutchlog_2eh_9',['clutchlog.h',['../clutchlog_8h.html',1,'']]], - ['clutchlog_5fdefault_5fdepth_5fbuilt_5fnodebug_10',['CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG',['../group___default_config.html#ga8564be479b948ee3052b61783c66d415',1,'clutchlog.h']]], - ['clutchlog_5fdefault_5fdepth_5fmark_11',['CLUTCHLOG_DEFAULT_DEPTH_MARK',['../group___default_config.html#ga45c4c964fad4ad1641d5c9c28c4645b9',1,'clutchlog.h']]], - ['clutchlog_5fdefault_5fformat_12',['CLUTCHLOG_DEFAULT_FORMAT',['../group___default_config.html#ga524c16f280d92ee8ab683162c9ce01fa',1,'clutchlog.h']]], - ['clutchlog_5fdefault_5fhfill_5fmark_13',['CLUTCHLOG_DEFAULT_HFILL_MARK',['../group___default_config.html#ga4eda0c1bfded5df89351b8ce8b9c2805',1,'clutchlog.h']]], - ['clutchlog_5fh_14',['CLUTCHLOG_H',['../clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16',1,'clutchlog.h']]], - ['clutchlog_5fhave_5funix_5fsysinfo_15',['CLUTCHLOG_HAVE_UNIX_SYSINFO',['../clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb',1,'clutchlog.h']]], - ['clutchlog_5fhave_5funix_5fsysioctl_16',['CLUTCHLOG_HAVE_UNIX_SYSIOCTL',['../clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817',1,'clutchlog.h']]], - ['clutchlog_5fstrip_5fcalls_17',['CLUTCHLOG_STRIP_CALLS',['../group___default_config.html#ga98f30d814d4913a8a7c93a8793f49adf',1,'clutchlog.h']]], - ['clutchlogd_18',['CLUTCHLOGD',['../group___use_macros.html#ga369d365b7c25ec270596c3ca6839cf2c',1,'clutchlog.h']]], - ['color_19',['color',['../structclutchlog_1_1fmt_1_1color.html',1,'clutchlog::fmt::color'],['../structclutchlog_1_1fmt_1_1color.html#a741d0165287350d8fcacb1f472ce5dac',1,'clutchlog::fmt::color::color()']]], - ['color_5f16m_20',['color_16M',['../structclutchlog_1_1fmt_1_1color__16_m.html',1,'clutchlog::fmt::color_16M'],['../structclutchlog_1_1fmt_1_1color__16_m.html#aea10e881fb9b570267f5751fb67c4282',1,'clutchlog::fmt::color_16M::color_16M(ground t)'],['../structclutchlog_1_1fmt_1_1color__16_m.html#a36d9cf42044fec34b7858142d86137d3',1,'clutchlog::fmt::color_16M::color_16M(ground t, short r, short g, short b)'],['../structclutchlog_1_1fmt_1_1color__16_m.html#a55e39e7eb3ced3095c00914eff52470c',1,'clutchlog::fmt::color_16M::color_16M(ground t, const std::string &srgb)']]], - ['color_5f256_21',['color_256',['../structclutchlog_1_1fmt_1_1color__256.html',1,'clutchlog::fmt::color_256'],['../structclutchlog_1_1fmt_1_1color__256.html#a12fdff3c5c4edbf952aaa31519f0171c',1,'clutchlog::fmt::color_256::color_256(ground t)'],['../structclutchlog_1_1fmt_1_1color__256.html#a1b68065b35141c018b33c3f2c45f5726',1,'clutchlog::fmt::color_256::color_256(ground t, const short i)']]], - ['colors_20management_20in_2016_20colors_20mode_20_284_2dbits_20ansi_29_2e_22',['Colors management in 16 colors mode (4-bits ANSI).',['../group__colors16.html',1,'']]], - ['colors_5f16_23',['colors_16',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1e7cced329549fc4c2393381f068062e',1,'clutchlog::fmt']]], - ['colors_5f16m_24',['colors_16M',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1844e5aae3a3eefc500c545e3c35bcfa',1,'clutchlog::fmt']]], - ['colors_5f256_25',['colors_256',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a7a3c32a8827eb17435511b4c7a429749',1,'clutchlog::fmt']]] + ['default_5fdepth_5fmark_30',['default_depth_mark',['../classclutchlog.html#a229fd61519f1245282440120f2d45fb5',1,'clutchlog']]], + ['default_5fformat_31',['default_format',['../classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc',1,'clutchlog']]], + ['default_5fhfill_5fchar_32',['default_hfill_char',['../classclutchlog.html#a76eb34537b634aadb75e255f7887eeb6',1,'clutchlog']]], + ['default_5fhfill_5fmax_33',['default_hfill_max',['../classclutchlog.html#ac95630bfe9cf547d2b7c4b3430eaedc1',1,'clutchlog']]], + ['default_5fhfill_5fmin_34',['default_hfill_min',['../classclutchlog.html#a5a9a98c3528117223ceff22bc6bee5f7',1,'clutchlog']]], + ['default_5fstrip_5fcalls_35',['default_strip_calls',['../classclutchlog.html#a1a8cb6411726133208f5a2f2cb42d468',1,'clutchlog']]], + ['default_20configuration_20management_36',['Default configuration management',['../group___default_config.html',1,'']]], + ['dump_37',['dump',['../classclutchlog.html#a63308e8deae3cfec6801318203494143',1,'clutchlog']]], + ['dump_5fdefault_5fformat_38',['dump_default_format',['../classclutchlog.html#ace879554298e6e6e36dafef330c27be8',1,'clutchlog']]], + ['dump_5fdefault_5fsep_39',['dump_default_sep',['../classclutchlog.html#af898bffe23b125245e338d7495c76d45',1,'clutchlog']]] ]; diff --git a/docs/search/all_4.html b/docs/search/all_4.html index 678d3a2..06de155 100644 --- a/docs/search/all_4.html +++ b/docs/search/all_4.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_4.js b/docs/search/all_4.js index ea749bf..3f71f0d 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -1,14 +1,11 @@ var searchData= [ - ['default_20configuration_20management_0',['Default configuration management',['../group___default_config.html',1,'']]], - ['default_5fdepth_5fmark_1',['default_depth_mark',['../classclutchlog.html#a229fd61519f1245282440120f2d45fb5',1,'clutchlog']]], - ['default_5fformat_2',['default_format',['../classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc',1,'clutchlog']]], - ['default_5fhfill_5fchar_3',['default_hfill_char',['../classclutchlog.html#a76eb34537b634aadb75e255f7887eeb6',1,'clutchlog']]], - ['default_5fhfill_5fmax_4',['default_hfill_max',['../classclutchlog.html#ac95630bfe9cf547d2b7c4b3430eaedc1',1,'clutchlog']]], - ['default_5fhfill_5fmin_5',['default_hfill_min',['../classclutchlog.html#a5a9a98c3528117223ceff22bc6bee5f7',1,'clutchlog']]], - ['default_5fstrip_5fcalls_6',['default_strip_calls',['../classclutchlog.html#a1a8cb6411726133208f5a2f2cb42d468',1,'clutchlog']]], - ['depth_5fstyles_7',['depth_styles',['../classclutchlog.html#a08310b92e86687349e70f56f9ac1d656',1,'clutchlog']]], - ['dump_8',['dump',['../classclutchlog.html#ab72a0adc9ff287270afe09c9da825fdb',1,'clutchlog']]], - ['dump_5fdefault_5fformat_9',['dump_default_format',['../classclutchlog.html#ace879554298e6e6e36dafef330c27be8',1,'clutchlog']]], - ['dump_5fdefault_5fsep_10',['dump_default_sep',['../classclutchlog.html#af898bffe23b125245e338d7495c76d45',1,'clutchlog']]] + ['fg_40',['fg',['../classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]], + ['file_41',['file',['../classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]], + ['fmt_42',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog::fmt'],['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt::fmt()']]], + ['fore_43',['fore',['../classclutchlog_1_1fmt.html#a8307a848fcf9ed929435b3e1f2b53401',1,'clutchlog::fmt']]], + ['format_44',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761',1,'clutchlog::format(std::string row, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const']]], + ['format_5fcomment_45',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]], + ['formating_20tools_46',['Formating tools',['../group___formating.html',1,'']]], + ['func_47',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]] ]; diff --git a/docs/search/all_5.html b/docs/search/all_5.html index aa9af78..2544c4e 100644 --- a/docs/search/all_5.html +++ b/docs/search/all_5.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_5.js b/docs/search/all_5.js index f91ba4b..4f4b3dc 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -1,18 +1,4 @@ var searchData= [ - ['fg_0',['fg',['../group__colors16.html#ga4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]], - ['fg_5f16m_1',['fg_16M',['../structclutchlog_1_1fmt_1_1fg__16_m.html',1,'clutchlog::fmt::fg_16M'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#a984525f33eb86b7f8b3e5d0874611194',1,'clutchlog::fmt::fg_16M::fg_16M()'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#a531b717b8d78a0a5929fa90d0a01d7e5',1,'clutchlog::fmt::fg_16M::fg_16M(short r, short g, short b)'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#abc768d6b7c2139c14f210755108006d3',1,'clutchlog::fmt::fg_16M::fg_16M(const std::string &srgb)'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#a9da40a4a7ff3b80f028f26322f59eba8',1,'clutchlog::fmt::fg_16M::fg_16M(const fg &)']]], - ['fg_5f256_2',['fg_256',['../structclutchlog_1_1fmt_1_1fg__256.html',1,'clutchlog::fmt::fg_256'],['../structclutchlog_1_1fmt_1_1fg__256.html#a97c241e9f80c63d269953cc525a72c7a',1,'clutchlog::fmt::fg_256::fg_256()'],['../structclutchlog_1_1fmt_1_1fg__256.html#a6df3d848db0e55c79709fb4565cbfd59',1,'clutchlog::fmt::fg_256::fg_256(const short f)'],['../structclutchlog_1_1fmt_1_1fg__256.html#a501fff36520f20ba4973ba3848fb9c23',1,'clutchlog::fmt::fg_256::fg_256(const fg &)']]], - ['file_3',['file',['../classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]], - ['filehash_5fstyles_4',['filehash_styles',['../classclutchlog.html#ae17db5808155fbc6dc48b4727d0c3abf',1,'clutchlog']]], - ['filename_5',['filename',['../classclutchlog.html#a822062ffa857bd16ff488f9c749ff20e',1,'clutchlog::filename()'],['../classclutchlog.html#a82b9375728af2d962831a743d95f4ae7',1,'clutchlog::filename(filename f)']]], - ['fmt_6',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog::fmt'],['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt::fmt()']]], - ['fore_7',['fore',['../group__colors16.html#ga8307a848fcf9ed929435b3e1f2b53401',1,'clutchlog::fmt']]], - ['fore_5f16m_8',['fore_16M',['../group__colors256__16_m.html#ga626c99eb11d1718d7a2a8bb3f079e6de',1,'clutchlog::fmt']]], - ['fore_5f256_9',['fore_256',['../group__colors256__16_m.html#gad98fbe84ef338ded8425d56955825a2c',1,'clutchlog::fmt']]], - ['format_10',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761',1,'clutchlog::format(std::string row, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const']]], - ['format_5fcomment_11',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]], - ['formating_20tools_12',['Formating tools',['../group___formating.html',1,'']]], - ['func_13',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]], - ['funchash_5fstyles_14',['funchash_styles',['../classclutchlog.html#acbb50f6306ebb3c8b0d1a52e7f327416',1,'clutchlog']]] + ['high_2dlevel_20api_20macros_48',['High-level API macros',['../group___use_macros.html',1,'']]] ]; diff --git a/docs/search/all_6.html b/docs/search/all_6.html index d3026a7..43f14ea 100644 --- a/docs/search/all_6.html +++ b/docs/search/all_6.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_6.js b/docs/search/all_6.js index 51dd231..f4056a9 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -1,4 +1,11 @@ var searchData= [ - ['ground_0',['ground',['../structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0',1,'clutchlog::fmt::color']]] + ['level_49',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]], + ['level_5fof_50',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]], + ['levels_51',['levels',['../classclutchlog.html#aff3aa09fb60f7d6dc688c028d3834d8a',1,'clutchlog']]], + ['line_52',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]], + ['locate_53',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]], + ['location_54',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]], + ['log_55',['log',['../classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]], + ['logger_56',['logger',['../classclutchlog.html#acfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]] ]; diff --git a/docs/search/all_7.html b/docs/search/all_7.html index b2ee042..af52f82 100644 --- a/docs/search/all_7.html +++ b/docs/search/all_7.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 8c144e7..e54916c 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -1,4 +1,5 @@ var searchData= [ - ['high_2dlevel_20api_20macros_0',['High-level API macros',['../group___use_macros.html',1,'']]] + ['main_20class_57',['Main class',['../group___main.html',1,'']]], + ['matches_58',['matches',['../structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9',1,'clutchlog::scope_t']]] ]; diff --git a/docs/search/all_8.html b/docs/search/all_8.html index 40a0b3f..cf2b5df 100644 --- a/docs/search/all_8.html +++ b/docs/search/all_8.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_8.js b/docs/search/all_8.js index f672c72..09957da 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -1,6 +1,6 @@ var searchData= [ - ['index_0',['index',['../structclutchlog_1_1fmt_1_1color__256.html#a8e0b13d6bad87c83c3465524a5d33988',1,'clutchlog::fmt::color_256']]], - ['internal_20colors_20management_20in_20256_20and_2016m_20colors_20modes_2e_1',['Internal colors management in 256 and 16M colors modes.',['../group__colors256__16_m.html',1,'']]], - ['is_5fset_2',['is_set',['../structclutchlog_1_1fmt_1_1color.html#a96d7161ef1e7cc631ae670cd3f364603',1,'clutchlog::fmt::color::is_set()'],['../structclutchlog_1_1fmt_1_1color__256.html#ad79557682cec1c053dda258581972111',1,'clutchlog::fmt::color_256::is_set()'],['../structclutchlog_1_1fmt_1_1color__16_m.html#a780c11e42bb140732ffd37cf4eef9e1d',1,'clutchlog::fmt::color_16M::is_set()']]] + ['operator_28_29_59',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]], + ['operator_3c_3c_60',['operator<<',['../classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]], + ['out_61',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &out)'],['../classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]] ]; diff --git a/docs/search/all_9.html b/docs/search/all_9.html index 7c49144..690785a 100644 --- a/docs/search/all_9.html +++ b/docs/search/all_9.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_9.js b/docs/search/all_9.js index 1b3652c..6a79c66 100644 --- a/docs/search/all_9.js +++ b/docs/search/all_9.js @@ -1,11 +1,4 @@ var searchData= [ - ['level_0',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]], - ['level_5fof_1',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]], - ['levels_2',['levels',['../classclutchlog.html#a8d206443dea964f77965450a83693d98',1,'clutchlog']]], - ['line_3',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]], - ['locate_4',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]], - ['location_5',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]], - ['log_6',['log',['../classclutchlog.html#a14c19e17c54d6353ba34c0dc3371094a',1,'clutchlog']]], - ['logger_7',['logger',['../classclutchlog.html#a6e2a5e98fa9f722d90ba6515895543ac',1,'clutchlog']]] + ['print_5fon_62',['print_on',['../classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/all_a.html b/docs/search/all_a.html index fc9d79c..f2f3d3a 100644 --- a/docs/search/all_a.html +++ b/docs/search/all_a.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_a.js b/docs/search/all_a.js index a8acf08..956811c 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -1,6 +1,4 @@ var searchData= [ - ['main_20class_0',['Main class',['../group___main.html',1,'']]], - ['matches_1',['matches',['../structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9',1,'clutchlog::scope_t']]], - ['mode_2',['mode',['../classclutchlog_1_1fmt.html#a0aa57cdd56ccc79c7750921ab534b205',1,'clutchlog::fmt']]] + ['replace_63',['replace',['../classclutchlog.html#a972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &form, const std::string &mark, const std::string &tag) const'],['../classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &form, const std::string &mark, const size_t tag) const']]] ]; diff --git a/docs/search/all_b.html b/docs/search/all_b.html index dafb1fa..14f3403 100644 --- a/docs/search/all_b.html +++ b/docs/search/all_b.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_b.js b/docs/search/all_b.js index d88c1e7..b118f25 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -1,6 +1,7 @@ var searchData= [ - ['operator_28_29_0',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]], - ['operator_3c_3c_1',['operator<<',['../group__colors16.html#gac00a2f504f5308207f7a94915fe9a9c5',1,'clutchlog::fmt::operator<<()'],['../group__colors16.html#ga93d498671d8dc2e796978c4f4de51241',1,'clutchlog::fmt::operator<<()'],['../structclutchlog_1_1fmt_1_1color.html#a4860c13958d21118a564920fa78e6720',1,'clutchlog::fmt::color::operator<<()'],['../classclutchlog_1_1fmt.html#a24568f7a157d50e3075a74a619719c84',1,'clutchlog::fmt::operator<<()']]], - ['out_2',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &out)'],['../classclutchlog.html#ab7773f031a00a05b8c83c1936406cb98',1,'clutchlog::out()']]] + ['scope_5ft_64',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog::scope_t'],['../structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t::scope_t()']]], + ['stage_65',['stage',['../structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744',1,'clutchlog::scope_t']]], + ['str_66',['str',['../classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b',1,'clutchlog::fmt']]], + ['style_67',['style',['../classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b',1,'clutchlog::fmt::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']]] ]; diff --git a/docs/search/all_c.html b/docs/search/all_c.html index 9df619d..da60ab8 100644 --- a/docs/search/all_c.html +++ b/docs/search/all_c.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_c.js b/docs/search/all_c.js index 3b88170..8d43d28 100644 --- a/docs/search/all_c.js +++ b/docs/search/all_c.js @@ -1,4 +1,6 @@ var searchData= [ - ['print_5fon_0',['print_on',['../structclutchlog_1_1fmt_1_1color.html#a121619a01bf48e53b3478d23989c0c59',1,'clutchlog::fmt::color::print_on()'],['../structclutchlog_1_1fmt_1_1color__256.html#ad4e941accf566378e0007ec881096fb0',1,'clutchlog::fmt::color_256::print_on()'],['../structclutchlog_1_1fmt_1_1color__16_m.html#ac6a4b8650ea7e9171fc76d6226015005',1,'clutchlog::fmt::color_16M::print_on()'],['../classclutchlog_1_1fmt.html#ad754c64eb6fd8730a616d113cb9f9129',1,'clutchlog::fmt::print_on()']]] + ['there_68',['there',['../structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff',1,'clutchlog::scope_t']]], + ['threshold_69',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9',1,'clutchlog::threshold(const std::string &l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]], + ['typo_70',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/all_d.html b/docs/search/all_d.html index 95d8eec..bc376fe 100644 --- a/docs/search/all_d.html +++ b/docs/search/all_d.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/all_d.js b/docs/search/all_d.js index 0a100cc..872ddfa 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -1,5 +1,4 @@ var searchData= [ - ['red_0',['red',['../structclutchlog_1_1fmt_1_1color__16_m.html#a19e1517a9afb75a4e6224f718ed11c61',1,'clutchlog::fmt::color_16M']]], - ['replace_1',['replace',['../classclutchlog.html#a972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &form, const std::string &mark, const std::string &tag) const'],['../classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &form, const std::string &mark, const size_t tag) const']]] + ['with_5fclutchlog_71',['WITH_CLUTCHLOG',['../clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4',1,'clutchlog.h']]] ]; diff --git a/docs/search/all_e.html b/docs/search/all_e.html deleted file mode 100644 index a54e120..0000000 --- a/docs/search/all_e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/all_e.js b/docs/search/all_e.js deleted file mode 100644 index e48732c..0000000 --- a/docs/search/all_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['scope_5ft_0',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog::scope_t'],['../structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t::scope_t()']]], - ['stage_1',['stage',['../structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744',1,'clutchlog::scope_t']]], - ['str_2',['str',['../classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b',1,'clutchlog::fmt']]], - ['style_3',['style',['../classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b',1,'clutchlog::fmt::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']]] -]; diff --git a/docs/search/all_f.html b/docs/search/all_f.html deleted file mode 100644 index 8d0aed3..0000000 --- a/docs/search/all_f.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/all_f.js b/docs/search/all_f.js deleted file mode 100644 index 8415699..0000000 --- a/docs/search/all_f.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['there_0',['there',['../structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff',1,'clutchlog::scope_t']]], - ['threshold_1',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9',1,'clutchlog::threshold(const std::string &l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]], - ['type_2',['type',['../structclutchlog_1_1fmt_1_1color.html#a3fd18c290567bd5c4971663a1aed12ae',1,'clutchlog::fmt::color']]], - ['typo_3',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] -]; diff --git a/docs/search/classes_0.html b/docs/search/classes_0.html index 9d4f871..f7e4c14 100644 --- a/docs/search/classes_0.html +++ b/docs/search/classes_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js index 97e4769..a42134b 100644 --- a/docs/search/classes_0.js +++ b/docs/search/classes_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['bg_5f16m_0',['bg_16M',['../structclutchlog_1_1fmt_1_1bg__16_m.html',1,'clutchlog::fmt']]], - ['bg_5f256_1',['bg_256',['../structclutchlog_1_1fmt_1_1bg__256.html',1,'clutchlog::fmt']]] + ['clutchlog_72',['clutchlog',['../classclutchlog.html',1,'']]] ]; diff --git a/docs/search/classes_1.html b/docs/search/classes_1.html index 0557f9f..c7ff4b3 100644 --- a/docs/search/classes_1.html +++ b/docs/search/classes_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js index 7dda7a6..ff398aa 100644 --- a/docs/search/classes_1.js +++ b/docs/search/classes_1.js @@ -1,7 +1,4 @@ var searchData= [ - ['clutchlog_0',['clutchlog',['../classclutchlog.html',1,'']]], - ['color_1',['color',['../structclutchlog_1_1fmt_1_1color.html',1,'clutchlog::fmt']]], - ['color_5f16m_2',['color_16M',['../structclutchlog_1_1fmt_1_1color__16_m.html',1,'clutchlog::fmt']]], - ['color_5f256_3',['color_256',['../structclutchlog_1_1fmt_1_1color__256.html',1,'clutchlog::fmt']]] + ['fmt_73',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog']]] ]; diff --git a/docs/search/classes_2.html b/docs/search/classes_2.html index fa20861..0d1e8a0 100644 --- a/docs/search/classes_2.html +++ b/docs/search/classes_2.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js index b04c1fa..25f3e6e 100644 --- a/docs/search/classes_2.js +++ b/docs/search/classes_2.js @@ -1,6 +1,4 @@ var searchData= [ - ['fg_5f16m_0',['fg_16M',['../structclutchlog_1_1fmt_1_1fg__16_m.html',1,'clutchlog::fmt']]], - ['fg_5f256_1',['fg_256',['../structclutchlog_1_1fmt_1_1fg__256.html',1,'clutchlog::fmt']]], - ['fmt_2',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog']]] + ['scope_5ft_74',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]] ]; diff --git a/docs/search/classes_3.html b/docs/search/classes_3.html deleted file mode 100644 index 98fbc87..0000000 --- a/docs/search/classes_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js deleted file mode 100644 index 13d8ac2..0000000 --- a/docs/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['scope_5ft_0',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]] -]; diff --git a/docs/search/close.svg b/docs/search/close.svg deleted file mode 100644 index a933eea..0000000 --- a/docs/search/close.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/docs/search/defines_0.html b/docs/search/defines_0.html index d0cf633..2deb369 100644 --- a/docs/search/defines_0.html +++ b/docs/search/defines_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/defines_0.js b/docs/search/defines_0.js index 5b63def..1f00a63 100644 --- a/docs/search/defines_0.js +++ b/docs/search/defines_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['clutchlog_5fh_0',['CLUTCHLOG_H',['../clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16',1,'clutchlog.h']]], - ['clutchlog_5fhave_5funix_5fsysinfo_1',['CLUTCHLOG_HAVE_UNIX_SYSINFO',['../clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb',1,'clutchlog.h']]], - ['clutchlog_5fhave_5funix_5fsysioctl_2',['CLUTCHLOG_HAVE_UNIX_SYSIOCTL',['../clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817',1,'clutchlog.h']]] + ['clutchlog_5fh_127',['CLUTCHLOG_H',['../clutchlog_8h.html#a0acf7d306292cdee864356f0b433cc16',1,'clutchlog.h']]], + ['clutchlog_5fhave_5funix_5fsysinfo_128',['CLUTCHLOG_HAVE_UNIX_SYSINFO',['../clutchlog_8h.html#a6bbcf13504687db4dbe0474931d867fb',1,'clutchlog.h']]], + ['clutchlog_5fhave_5funix_5fsysioctl_129',['CLUTCHLOG_HAVE_UNIX_SYSIOCTL',['../clutchlog_8h.html#a6bddd1e1be320823da0d6b1d5cef7817',1,'clutchlog.h']]] ]; diff --git a/docs/search/defines_1.html b/docs/search/defines_1.html index 4369011..e0d0b6d 100644 --- a/docs/search/defines_1.html +++ b/docs/search/defines_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/defines_1.js b/docs/search/defines_1.js index 7298532..8a29f38 100644 --- a/docs/search/defines_1.js +++ b/docs/search/defines_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['with_5fclutchlog_0',['WITH_CLUTCHLOG',['../clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4',1,'clutchlog.h']]] + ['with_5fclutchlog_130',['WITH_CLUTCHLOG',['../clutchlog_8h.html#a5c126962abcc7a40e504a6fc3abdfcc4',1,'clutchlog.h']]] ]; diff --git a/docs/search/enums_0.html b/docs/search/enums_0.html index ec25efd..9669700 100644 --- a/docs/search/enums_0.html +++ b/docs/search/enums_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/enums_0.js b/docs/search/enums_0.js index ab5d8c9..7de33f7 100644 --- a/docs/search/enums_0.js +++ b/docs/search/enums_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['ansi_0',['ansi',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502',1,'clutchlog::fmt']]] + ['bg_122',['bg',['../classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/enums_1.html b/docs/search/enums_1.html index cc99a33..dfec174 100644 --- a/docs/search/enums_1.html +++ b/docs/search/enums_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/enums_1.js b/docs/search/enums_1.js index 8e18bad..7d79fab 100644 --- a/docs/search/enums_1.js +++ b/docs/search/enums_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['bg_0',['bg',['../group__colors16.html#ga1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]] + ['fg_123',['fg',['../classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/enums_2.html b/docs/search/enums_2.html index cd5e771..db70c36 100644 --- a/docs/search/enums_2.html +++ b/docs/search/enums_2.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/enums_2.js b/docs/search/enums_2.js index 0db86de..29c82a5 100644 --- a/docs/search/enums_2.js +++ b/docs/search/enums_2.js @@ -1,5 +1,4 @@ var searchData= [ - ['fg_0',['fg',['../group__colors16.html#ga4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]], - ['filename_1',['filename',['../classclutchlog.html#a822062ffa857bd16ff488f9c749ff20e',1,'clutchlog']]] + ['level_124',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]] ]; diff --git a/docs/search/enums_3.html b/docs/search/enums_3.html index 007101d..fb7ec17 100644 --- a/docs/search/enums_3.html +++ b/docs/search/enums_3.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/enums_3.js b/docs/search/enums_3.js index 51dd231..859f70c 100644 --- a/docs/search/enums_3.js +++ b/docs/search/enums_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['ground_0',['ground',['../structclutchlog_1_1fmt_1_1color.html#ad4d10c015b3af3cc10d1cf40fe38e4f0',1,'clutchlog::fmt::color']]] + ['typo_125',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/enums_4.html b/docs/search/enums_4.html deleted file mode 100644 index b03e8b8..0000000 --- a/docs/search/enums_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/enums_4.js b/docs/search/enums_4.js deleted file mode 100644 index 1b85abd..0000000 --- a/docs/search/enums_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['level_0',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]] -]; diff --git a/docs/search/enums_5.html b/docs/search/enums_5.html deleted file mode 100644 index 9807152..0000000 --- a/docs/search/enums_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/enums_5.js b/docs/search/enums_5.js deleted file mode 100644 index ec88639..0000000 --- a/docs/search/enums_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['typo_0',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] -]; diff --git a/docs/search/enumvalues_0.html b/docs/search/enumvalues_0.html deleted file mode 100644 index 71e9b7c..0000000 --- a/docs/search/enumvalues_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/enumvalues_0.js b/docs/search/enumvalues_0.js deleted file mode 100644 index 9b5419e..0000000 --- a/docs/search/enumvalues_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['colors_5f16_0',['colors_16',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1e7cced329549fc4c2393381f068062e',1,'clutchlog::fmt']]], - ['colors_5f16m_1',['colors_16M',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a1844e5aae3a3eefc500c545e3c35bcfa',1,'clutchlog::fmt']]], - ['colors_5f256_2',['colors_256',['../classclutchlog_1_1fmt.html#a4d0b3c87ba935addf3581b000c0d7502a7a3c32a8827eb17435511b4c7a429749',1,'clutchlog::fmt']]] -]; diff --git a/docs/search/files_0.html b/docs/search/files_0.html index 2dbb4c2..737608e 100644 --- a/docs/search/files_0.html +++ b/docs/search/files_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/files_0.js b/docs/search/files_0.js index 8f6ceae..eb9ea7a 100644 --- a/docs/search/files_0.js +++ b/docs/search/files_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['clutchlog_2eh_0',['clutchlog.h',['../clutchlog_8h.html',1,'']]] + ['clutchlog_2eh_75',['clutchlog.h',['../clutchlog_8h.html',1,'']]] ]; diff --git a/docs/search/functions_0.html b/docs/search/functions_0.html index 3b739c7..e17c711 100644 --- a/docs/search/functions_0.html +++ b/docs/search/functions_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js index f14939e..86fb409 100644 --- a/docs/search/functions_0.js +++ b/docs/search/functions_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['bg_5f16m_0',['bg_16M',['../structclutchlog_1_1fmt_1_1bg__16_m.html#a363c314ab6a8aa22951b5500d7a78ad0',1,'clutchlog::fmt::bg_16M::bg_16M()'],['../structclutchlog_1_1fmt_1_1bg__16_m.html#ace018922ae99f32b48bf5cacaec91501',1,'clutchlog::fmt::bg_16M::bg_16M(short r, short g, short b)'],['../structclutchlog_1_1fmt_1_1bg__16_m.html#adcd5bd1e69e76e3b36015cf687693c97',1,'clutchlog::fmt::bg_16M::bg_16M(const std::string &srgb)'],['../structclutchlog_1_1fmt_1_1bg__16_m.html#a68f8cb4ab78a1cfb3b7b8e1e95bee11d',1,'clutchlog::fmt::bg_16M::bg_16M(const bg &)']]], - ['bg_5f256_1',['bg_256',['../structclutchlog_1_1fmt_1_1bg__256.html#a0d244a542b6b98a373f8b1f9e92a6a90',1,'clutchlog::fmt::bg_256::bg_256()'],['../structclutchlog_1_1fmt_1_1bg__256.html#a83c663b1a9f00ba7ba7649c9c5605fad',1,'clutchlog::fmt::bg_256::bg_256(const short b)'],['../structclutchlog_1_1fmt_1_1bg__256.html#a096d302be7373acaaf225644683408bd',1,'clutchlog::fmt::bg_256::bg_256(const bg &)']]] + ['dump_76',['dump',['../classclutchlog.html#a63308e8deae3cfec6801318203494143',1,'clutchlog']]] ]; diff --git a/docs/search/functions_1.html b/docs/search/functions_1.html index 2cef5e3..0ddac0a 100644 --- a/docs/search/functions_1.html +++ b/docs/search/functions_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index 75f22f6..34803e7 100644 --- a/docs/search/functions_1.js +++ b/docs/search/functions_1.js @@ -1,6 +1,8 @@ var searchData= [ - ['color_0',['color',['../structclutchlog_1_1fmt_1_1color.html#a741d0165287350d8fcacb1f472ce5dac',1,'clutchlog::fmt::color']]], - ['color_5f16m_1',['color_16M',['../structclutchlog_1_1fmt_1_1color__16_m.html#aea10e881fb9b570267f5751fb67c4282',1,'clutchlog::fmt::color_16M::color_16M(ground t)'],['../structclutchlog_1_1fmt_1_1color__16_m.html#a36d9cf42044fec34b7858142d86137d3',1,'clutchlog::fmt::color_16M::color_16M(ground t, short r, short g, short b)'],['../structclutchlog_1_1fmt_1_1color__16_m.html#a55e39e7eb3ced3095c00914eff52470c',1,'clutchlog::fmt::color_16M::color_16M(ground t, const std::string &srgb)']]], - ['color_5f256_2',['color_256',['../structclutchlog_1_1fmt_1_1color__256.html#a12fdff3c5c4edbf952aaa31519f0171c',1,'clutchlog::fmt::color_256::color_256(ground t)'],['../structclutchlog_1_1fmt_1_1color__256.html#a1b68065b35141c018b33c3f2c45f5726',1,'clutchlog::fmt::color_256::color_256(ground t, const short i)']]] + ['file_77',['file',['../classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]], + ['fmt_78',['fmt',['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt']]], + ['format_79',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761',1,'clutchlog::format(std::string row, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const']]], + ['format_5fcomment_80',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]], + ['func_81',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]] ]; diff --git a/docs/search/functions_2.html b/docs/search/functions_2.html index 3308c65..2737c5a 100644 --- a/docs/search/functions_2.html +++ b/docs/search/functions_2.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index 367ad58..956ed3b 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -1,5 +1,10 @@ var searchData= [ - ['depth_5fstyles_0',['depth_styles',['../classclutchlog.html#a08310b92e86687349e70f56f9ac1d656',1,'clutchlog']]], - ['dump_1',['dump',['../classclutchlog.html#ab72a0adc9ff287270afe09c9da825fdb',1,'clutchlog']]] + ['level_5fof_82',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]], + ['levels_83',['levels',['../classclutchlog.html#aff3aa09fb60f7d6dc688c028d3834d8a',1,'clutchlog']]], + ['line_84',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]], + ['locate_85',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]], + ['location_86',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]], + ['log_87',['log',['../classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]], + ['logger_88',['logger',['../classclutchlog.html#acfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]] ]; diff --git a/docs/search/functions_3.html b/docs/search/functions_3.html index 43ac697..6da86e7 100644 --- a/docs/search/functions_3.html +++ b/docs/search/functions_3.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js index 895c337..2e27115 100644 --- a/docs/search/functions_3.js +++ b/docs/search/functions_3.js @@ -1,13 +1,5 @@ var searchData= [ - ['fg_5f16m_0',['fg_16M',['../structclutchlog_1_1fmt_1_1fg__16_m.html#a531b717b8d78a0a5929fa90d0a01d7e5',1,'clutchlog::fmt::fg_16M::fg_16M(short r, short g, short b)'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#abc768d6b7c2139c14f210755108006d3',1,'clutchlog::fmt::fg_16M::fg_16M(const std::string &srgb)'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#a9da40a4a7ff3b80f028f26322f59eba8',1,'clutchlog::fmt::fg_16M::fg_16M(const fg &)'],['../structclutchlog_1_1fmt_1_1fg__16_m.html#a984525f33eb86b7f8b3e5d0874611194',1,'clutchlog::fmt::fg_16M::fg_16M()']]], - ['fg_5f256_1',['fg_256',['../structclutchlog_1_1fmt_1_1fg__256.html#a97c241e9f80c63d269953cc525a72c7a',1,'clutchlog::fmt::fg_256::fg_256()'],['../structclutchlog_1_1fmt_1_1fg__256.html#a6df3d848db0e55c79709fb4565cbfd59',1,'clutchlog::fmt::fg_256::fg_256(const short f)'],['../structclutchlog_1_1fmt_1_1fg__256.html#a501fff36520f20ba4973ba3848fb9c23',1,'clutchlog::fmt::fg_256::fg_256(const fg &)']]], - ['file_2',['file',['../classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]], - ['filehash_5fstyles_3',['filehash_styles',['../classclutchlog.html#ae17db5808155fbc6dc48b4727d0c3abf',1,'clutchlog']]], - ['filename_4',['filename',['../classclutchlog.html#a82b9375728af2d962831a743d95f4ae7',1,'clutchlog']]], - ['fmt_5',['fmt',['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt']]], - ['format_6',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#abd692cca9a2e772e7c9d6531bb3c7761',1,'clutchlog::format(std::string row, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const']]], - ['format_5fcomment_7',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]], - ['func_8',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]], - ['funchash_5fstyles_9',['funchash_styles',['../classclutchlog.html#acbb50f6306ebb3c8b0d1a52e7f327416',1,'clutchlog']]] + ['operator_28_29_89',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]], + ['out_90',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &out)'],['../classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]] ]; diff --git a/docs/search/functions_4.html b/docs/search/functions_4.html index d12c2df..911304e 100644 --- a/docs/search/functions_4.html +++ b/docs/search/functions_4.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js index 0a6fb8a..8a113d6 100644 --- a/docs/search/functions_4.js +++ b/docs/search/functions_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['is_5fset_0',['is_set',['../structclutchlog_1_1fmt_1_1color.html#a96d7161ef1e7cc631ae670cd3f364603',1,'clutchlog::fmt::color::is_set()'],['../structclutchlog_1_1fmt_1_1color__256.html#ad79557682cec1c053dda258581972111',1,'clutchlog::fmt::color_256::is_set()'],['../structclutchlog_1_1fmt_1_1color__16_m.html#a780c11e42bb140732ffd37cf4eef9e1d',1,'clutchlog::fmt::color_16M::is_set()']]] + ['print_5fon_91',['print_on',['../classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/functions_5.html b/docs/search/functions_5.html index 7266236..61b920d 100644 --- a/docs/search/functions_5.html +++ b/docs/search/functions_5.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js index f44f18a..23857dc 100644 --- a/docs/search/functions_5.js +++ b/docs/search/functions_5.js @@ -1,10 +1,4 @@ var searchData= [ - ['level_5fof_0',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]], - ['levels_1',['levels',['../classclutchlog.html#a8d206443dea964f77965450a83693d98',1,'clutchlog']]], - ['line_2',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]], - ['locate_3',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]], - ['location_4',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]], - ['log_5',['log',['../classclutchlog.html#a14c19e17c54d6353ba34c0dc3371094a',1,'clutchlog']]], - ['logger_6',['logger',['../classclutchlog.html#a6e2a5e98fa9f722d90ba6515895543ac',1,'clutchlog']]] + ['replace_92',['replace',['../classclutchlog.html#a972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &form, const std::string &mark, const std::string &tag) const'],['../classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &form, const std::string &mark, const size_t tag) const']]] ]; diff --git a/docs/search/functions_6.html b/docs/search/functions_6.html index 7f9fc45..dc70a4a 100644 --- a/docs/search/functions_6.html +++ b/docs/search/functions_6.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js index 75f87dd..1f7d8fb 100644 --- a/docs/search/functions_6.js +++ b/docs/search/functions_6.js @@ -1,5 +1,6 @@ var searchData= [ - ['operator_28_29_0',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]], - ['out_1',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &out)'],['../classclutchlog.html#ab7773f031a00a05b8c83c1936406cb98',1,'clutchlog::out()']]] + ['scope_5ft_93',['scope_t',['../structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t']]], + ['str_94',['str',['../classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b',1,'clutchlog::fmt']]], + ['style_95',['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']]] ]; diff --git a/docs/search/functions_7.html b/docs/search/functions_7.html index ad0f88b..7de3106 100644 --- a/docs/search/functions_7.html +++ b/docs/search/functions_7.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js index 3b88170..33dc3a2 100644 --- a/docs/search/functions_7.js +++ b/docs/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['print_5fon_0',['print_on',['../structclutchlog_1_1fmt_1_1color.html#a121619a01bf48e53b3478d23989c0c59',1,'clutchlog::fmt::color::print_on()'],['../structclutchlog_1_1fmt_1_1color__256.html#ad4e941accf566378e0007ec881096fb0',1,'clutchlog::fmt::color_256::print_on()'],['../structclutchlog_1_1fmt_1_1color__16_m.html#ac6a4b8650ea7e9171fc76d6226015005',1,'clutchlog::fmt::color_16M::print_on()'],['../classclutchlog_1_1fmt.html#ad754c64eb6fd8730a616d113cb9f9129',1,'clutchlog::fmt::print_on()']]] + ['threshold_96',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9',1,'clutchlog::threshold(const std::string &l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]] ]; diff --git a/docs/search/functions_8.html b/docs/search/functions_8.html index ea7fa74..b55f0e6 100644 --- a/docs/search/functions_8.html +++ b/docs/search/functions_8.html @@ -1,8 +1,7 @@ - - - + + - + @@ -11,27 +10,17 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js index 4ba282a..6df1e3c 100644 --- a/docs/search/functions_8.js +++ b/docs/search/functions_8.js @@ -1,4 +1,4 @@ var searchData= [ - ['replace_0',['replace',['../classclutchlog.html#a972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &form, const std::string &mark, const std::string &tag) const'],['../classclutchlog.html#ae90d5a1a428587ad67b38b2ea4ca9fa2',1,'clutchlog::replace(const std::string &form, const std::string &mark, const size_t tag) const']]] + ['threshold',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]] ]; diff --git a/docs/search/functions_9.html b/docs/search/functions_9.html deleted file mode 100644 index d831dc7..0000000 --- a/docs/search/functions_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js deleted file mode 100644 index 056f647..0000000 --- a/docs/search/functions_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['scope_5ft_0',['scope_t',['../structclutchlog_1_1scope__t.html#a0f1d865ffcf17f215e5559cdd2690572',1,'clutchlog::scope_t']]], - ['str_1',['str',['../classclutchlog_1_1fmt.html#ab588e04e982b0b26ec979773d51ad41b',1,'clutchlog::fmt']]], - ['style_2',['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']]] -]; diff --git a/docs/search/functions_a.html b/docs/search/functions_a.html deleted file mode 100644 index 7018fc6..0000000 --- a/docs/search/functions_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js deleted file mode 100644 index 5d57150..0000000 --- a/docs/search/functions_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['threshold_0',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#a7a7738eaad114bfa870121412fe23ad9',1,'clutchlog::threshold(const std::string &l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]] -]; diff --git a/docs/search/groups_0.html b/docs/search/groups_0.html index 76e992a..a2d9335 100644 --- a/docs/search/groups_0.html +++ b/docs/search/groups_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/groups_0.js b/docs/search/groups_0.js index 2b60b56..1a98981 100644 --- a/docs/search/groups_0.js +++ b/docs/search/groups_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['colors_20management_20in_2016_20colors_20mode_20_284_2dbits_20ansi_29_2e_0',['Colors management in 16 colors mode (4-bits ANSI).',['../group__colors16.html',1,'']]] + ['default_20configuration_20management_131',['Default configuration management',['../group___default_config.html',1,'']]] ]; diff --git a/docs/search/groups_1.html b/docs/search/groups_1.html index 38ad74b..aa06d65 100644 --- a/docs/search/groups_1.html +++ b/docs/search/groups_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/groups_1.js b/docs/search/groups_1.js index 3f14de6..f5bbe3d 100644 --- a/docs/search/groups_1.js +++ b/docs/search/groups_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['default_20configuration_20management_0',['Default configuration management',['../group___default_config.html',1,'']]] + ['formating_20tools_132',['Formating tools',['../group___formating.html',1,'']]] ]; diff --git a/docs/search/groups_2.html b/docs/search/groups_2.html index 8152426..a205d30 100644 --- a/docs/search/groups_2.html +++ b/docs/search/groups_2.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/groups_2.js b/docs/search/groups_2.js index ace62b7..b59b281 100644 --- a/docs/search/groups_2.js +++ b/docs/search/groups_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['formating_20tools_0',['Formating tools',['../group___formating.html',1,'']]] + ['high_2dlevel_20api_20macros_133',['High-level API macros',['../group___use_macros.html',1,'']]] ]; diff --git a/docs/search/groups_3.html b/docs/search/groups_3.html index c73a37c..4255bed 100644 --- a/docs/search/groups_3.html +++ b/docs/search/groups_3.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/groups_3.js b/docs/search/groups_3.js index 8c144e7..f8b7d67 100644 --- a/docs/search/groups_3.js +++ b/docs/search/groups_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['high_2dlevel_20api_20macros_0',['High-level API macros',['../group___use_macros.html',1,'']]] + ['main_20class_134',['Main class',['../group___main.html',1,'']]] ]; diff --git a/docs/search/groups_4.html b/docs/search/groups_4.html index d42aefb..e7abc74 100644 --- a/docs/search/groups_4.html +++ b/docs/search/groups_4.html @@ -1,8 +1,7 @@ - - - + + - + @@ -11,27 +10,17 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/groups_4.js b/docs/search/groups_4.js index 785e536..6384469 100644 --- a/docs/search/groups_4.js +++ b/docs/search/groups_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['internal_20colors_20management_20in_20256_20and_2016m_20colors_20modes_2e_0',['Internal colors management in 256 and 16M colors modes.',['../group__colors256__16_m.html',1,'']]] + ['internal_20details',['Internal details',['../group__Details.html',1,'']]] ]; diff --git a/docs/search/groups_5.html b/docs/search/groups_5.html index cf1d61a..edc563e 100644 --- a/docs/search/groups_5.html +++ b/docs/search/groups_5.html @@ -1,8 +1,7 @@ - - - + + - + @@ -11,27 +10,17 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/groups_5.js b/docs/search/groups_5.js index 050e0d2..507ee1c 100644 --- a/docs/search/groups_5.js +++ b/docs/search/groups_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['main_20class_0',['Main class',['../group___main.html',1,'']]] + ['low_2dlevel_20api',['Low-level API',['../group__LowAPI.html',1,'']]] ]; diff --git a/docs/search/mag_sel.svg b/docs/search/mag_sel.svg deleted file mode 100644 index 03626f6..0000000 --- a/docs/search/mag_sel.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/docs/search/nomatches.html b/docs/search/nomatches.html index 2b9360b..4377320 100644 --- a/docs/search/nomatches.html +++ b/docs/search/nomatches.html @@ -1,6 +1,5 @@ - - + diff --git a/docs/search/pages_0.html b/docs/search/pages_0.html index 1981712..9a6a29a 100644 --- a/docs/search/pages_0.html +++ b/docs/search/pages_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js index b139894..67456ad 100644 --- a/docs/search/pages_0.js +++ b/docs/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['clutchlog_20—_20versatile_20_28de_29clutchable_20spatial_20logging_0',['Clutchlog — versatile (de)clutchable spatial logging',['../index.html',1,'']]] + ['clutchlog_20—_20versatile_20_28de_29clutchable_20logging_135',['Clutchlog — versatile (de)clutchable logging',['../index.html',1,'']]] ]; diff --git a/docs/search/related_0.html b/docs/search/related_0.html index 9ec0fae..bbe15fa 100644 --- a/docs/search/related_0.html +++ b/docs/search/related_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/related_0.js b/docs/search/related_0.js index 9d76dc8..9d9e7aa 100644 --- a/docs/search/related_0.js +++ b/docs/search/related_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['operator_3c_3c_0',['operator<<',['../group__colors16.html#gac00a2f504f5308207f7a94915fe9a9c5',1,'clutchlog::fmt::operator<<()'],['../group__colors16.html#ga93d498671d8dc2e796978c4f4de51241',1,'clutchlog::fmt::operator<<()'],['../structclutchlog_1_1fmt_1_1color.html#a4860c13958d21118a564920fa78e6720',1,'clutchlog::fmt::color::operator<<()'],['../classclutchlog_1_1fmt.html#a24568f7a157d50e3075a74a619719c84',1,'clutchlog::fmt::operator<<()']]] + ['operator_3c_3c_126',['operator<<',['../classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/search.css b/docs/search/search.css index 648a792..3cf9df9 100644 --- a/docs/search/search.css +++ b/docs/search/search.css @@ -1,88 +1,98 @@ /*---------------- Search Box */ +#FSearchBox { + float: left; +} + #MSearchBox { white-space : nowrap; - background: white; - border-radius: 0.65em; - box-shadow: inset 0.5px 0.5px 3px 0px #555; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; z-index: 102; } -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; } #MSearchSelect { - display: inline-block; - vertical-align: middle; - height: 19px; - padding: 0 0 0 0.3em; - margin: 0; + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; } #MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 19px; - margin: 0 0.15em; - padding: 0; - line-height: 1em; + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; border:none; + width:115px; + margin-left:20px; + padding-left:4px; color: #909090; outline: none; - font-family: Arial, Verdana, sans-serif; + font: 9pt Arial, Verdana, sans-serif; -webkit-border-radius: 0px; - border-radius: 0px; - background: none; } -@media(hover: none) { - /* to avoid zooming on iOS */ - #MSearchField { - font-size: 16px; - } +#FSearchBox #MSearchField { + margin-left:15px; } #MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; } #MSearchClose { display: none; - font-size: inherit; + position: absolute; + top: 4px; background : none; border: none; - margin: 0; - padding: 0; + margin: 0px 4px 0px 0px; + padding: 0px 0px; outline: none; - } -#MSearchCloseImg { - height: 1.4em; - padding: 0.3em; - margin: 0; +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; } .MSearchBoxActive #MSearchField { color: #000000; } -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - /*---------------- Search filter selection */ #MSearchSelectWindow { @@ -144,7 +154,7 @@ a.SelectItem:hover { /*---------------- Search results window */ iframe#MSearchResults { - /*width: 60ex;*/ + width: 60ex; height: 15em; } @@ -210,21 +220,19 @@ a.SRScope:focus, a.SRScope:active { span.SRScope { padding-left: 4px; - font-family: Arial, Verdana, sans-serif; } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; - font-family: Arial, Verdana, sans-serif; } .SRResult { display: none; } -div.searchresults { +DIV.searchresults { margin-left: 10px; margin-right: 10px; } diff --git a/docs/search/search.js b/docs/search/search.js index 607f4e1..a554ab9 100644 --- a/docs/search/search.js +++ b/docs/search/search.js @@ -1,26 +1,25 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. + @licstart The following is the entire license notice for the + JavaScript code in this file. - The MIT License (MIT) + Copyright (C) 1997-2017 by Dimitri van Heesch - Copyright (C) 1997-2020 by Dimitri van Heesch + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file + @licend The above is the entire license notice + for the JavaScript code in this file */ function convertToId(search) { @@ -80,10 +79,9 @@ function getYPos(item) storing this instance. Is needed to be able to set timeouts. resultPath - path to use for external files */ -function SearchBox(name, resultsPath, label, extension) +function SearchBox(name, resultsPath, inFrame, label) { if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } - if (!extension || extension == "") { extension = ".html"; } // ---------- Instance variables this.name = name; @@ -96,8 +94,8 @@ function SearchBox(name, resultsPath, label, extension) this.hideTimeout = 0; this.searchIndex = 0; this.searchActive = false; + this.insideFrame = inFrame; this.searchLabel = label; - this.extension = extension; // ----------- DOM Elements @@ -135,14 +133,30 @@ function SearchBox(name, resultsPath, label, extension) var searchSelectWindow = this.DOMSearchSelectWindow(); var searchField = this.DOMSearchSelect(); - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; + if (this.insideFrame) + { + var left = getXPos(searchField); + var top = getYPos(searchField); + left += searchField.offsetWidth + 6; + top += searchField.offsetHeight; - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; + // show search selection popup + searchSelectWindow.style.display='block'; + left -= searchSelectWindow.offsetWidth; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + else + { + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } // stop selection hide timer if (this.hideTimeout) @@ -186,9 +200,10 @@ function SearchBox(name, resultsPath, label, extension) } return; } - else + else if (window.frames.MSearchResults.searchResults) { - window.frames.MSearchResults.postMessage("take_focus", "*"); + var elem = window.frames.MSearchResults.searchResults.NavNext(0); + if (elem) elem.focus(); } } else if (e.keyCode==27) // Escape out of the search field @@ -332,13 +347,13 @@ function SearchBox(name, resultsPath, label, extension) if (idx!=-1) { var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; resultsPageWithSearch = resultsPage+'?'+escape(searchValue); hasResultsPage = true; } else // nothing available for this search term { - resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPage = this.resultsPath + '/nomatches.html'; resultsPageWithSearch = resultsPage; hasResultsPage = false; } @@ -349,19 +364,26 @@ function SearchBox(name, resultsPath, label, extension) if (domPopupSearchResultsWindow.style.display!='block') { var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline-block'; - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var width = 400; - if (left<10) left=10; - if (width+left+8>maxWidth) width=maxWidth-left-8; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - domPopupSearchResultsWindow.style.width = width + 'px'; + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } } this.lastSearchValue = searchValue; @@ -417,12 +439,12 @@ function SearchResults(name) while (element && element!=parentElement) { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + if (element.nodeName == 'DIV' && element.className == 'SRChildren') { return element; } - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + if (element.nodeName == 'DIV' && element.hasChildNodes()) { element = element.firstChild; } @@ -740,15 +762,10 @@ function createResults() if (searchData[e][1].length==2) // single result { srLink.setAttribute('href',searchData[e][1][1][0]); - srLink.setAttribute('onclick','parent.searchBox.CloseResultsWindow()'); if (searchData[e][1][1][1]) { srLink.setAttribute('target','_parent'); } - else - { - srLink.setAttribute('target','_blank'); - } var srScope = document.createElement('span'); setClassAttr(srScope,'SRScope'); srScope.innerHTML = searchData[e][1][1][2]; @@ -766,15 +783,10 @@ function createResults() setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); setClassAttr(srChild,'SRScope'); srChild.setAttribute('href',searchData[e][1][c+1][0]); - srChild.setAttribute('onclick','parent.searchBox.CloseResultsWindow()'); if (searchData[e][1][c+1][1]) { srChild.setAttribute('target','_parent'); } - else - { - srChild.setAttribute('target','_blank'); - } srChild.innerHTML = searchData[e][1][c+1][2]; srChildren.appendChild(srChild); } diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js index 8637eaf..e8c4886 100644 --- a/docs/search/searchdata.js +++ b/docs/search/searchdata.js @@ -1,16 +1,15 @@ var indexSectionsWithContent = { - 0: "_abcdfghilmoprstw", - 1: "bcfs", + 0: "_bcdfhlmoprstw", + 1: "cfs", 2: "c", - 3: "bcdfiloprst", - 4: "_bdfimrst", - 5: "abfglt", - 6: "c", - 7: "o", - 8: "cw", - 9: "cdfhim", - 10: "c" + 3: "dfloprst", + 4: "_bdfmst", + 5: "bflt", + 6: "o", + 7: "cw", + 8: "dfhm", + 9: "c" }; var indexSectionNames = @@ -21,11 +20,10 @@ var indexSectionNames = 3: "functions", 4: "variables", 5: "enums", - 6: "enumvalues", - 7: "related", - 8: "defines", - 9: "groups", - 10: "pages" + 6: "related", + 7: "defines", + 8: "groups", + 9: "pages" }; var indexSectionLabels = @@ -36,10 +34,9 @@ var indexSectionLabels = 3: "Functions", 4: "Variables", 5: "Enumerations", - 6: "Enumerator", - 7: "Friends", - 8: "Macros", - 9: "Modules", - 10: "Pages" + 6: "Friends", + 7: "Macros", + 8: "Modules", + 9: "Pages" }; diff --git a/docs/search/variables_0.html b/docs/search/variables_0.html index fd893a6..bf3eba5 100644 --- a/docs/search/variables_0.html +++ b/docs/search/variables_0.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_0.js b/docs/search/variables_0.js index 4cb16ca..e1bb76b 100644 --- a/docs/search/variables_0.js +++ b/docs/search/variables_0.js @@ -1,18 +1,14 @@ var searchData= [ - ['_5ffilehash_5ffmts_0',['_filehash_fmts',['../classclutchlog.html#a2a334e009533744b52f01ef240a59e9d',1,'clutchlog']]], - ['_5ffilename_1',['_filename',['../classclutchlog.html#a0431616914dbbecb908a794f5b46dada',1,'clutchlog']]], - ['_5fformat_5fdump_2',['_format_dump',['../classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5',1,'clutchlog']]], - ['_5fformat_5flog_3',['_format_log',['../classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e',1,'clutchlog']]], - ['_5ffunchash_5ffmts_4',['_funchash_fmts',['../classclutchlog.html#a095e1545a2085ac623e4af19364fea7f',1,'clutchlog']]], - ['_5fin_5ffile_5',['_in_file',['../classclutchlog.html#aded03528f34d9000f618419c482c5042',1,'clutchlog']]], - ['_5fin_5ffunc_6',['_in_func',['../classclutchlog.html#a130c4f12eacbd2028102838fe16b734e',1,'clutchlog']]], - ['_5fin_5fline_7',['_in_line',['../classclutchlog.html#a41757198b29862832a14472a9e5e24c6',1,'clutchlog']]], - ['_5flevel_5ffmt_8',['_level_fmt',['../classclutchlog.html#ab805ac5c33885459f9f752518a4aa735',1,'clutchlog']]], - ['_5flevel_5fshort_9',['_level_short',['../classclutchlog.html#a08e8a817a75a4e9f0159231c941e0dae',1,'clutchlog']]], - ['_5flevel_5fword_10',['_level_word',['../classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f',1,'clutchlog']]], - ['_5fout_11',['_out',['../classclutchlog.html#a1896f6c4b8597e3e76ff93970bd85167',1,'clutchlog']]], - ['_5fstage_12',['_stage',['../classclutchlog.html#aeb60684c89bcef5aa9273075c21cc993',1,'clutchlog']]], - ['_5fstrip_5fcalls_13',['_strip_calls',['../classclutchlog.html#a356df86455409193792b6ed550dfd09e',1,'clutchlog']]], - ['_5fword_5flevel_14',['_word_level',['../classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888',1,'clutchlog']]] + ['_5fformat_5fdump_97',['_format_dump',['../classclutchlog.html#a5f4ddb57ce42e8be86a7c7d269f7bae5',1,'clutchlog']]], + ['_5fformat_5flog_98',['_format_log',['../classclutchlog.html#a7c6e3fc082bc6f55d50131ed2b32e81e',1,'clutchlog']]], + ['_5fin_5ffile_99',['_in_file',['../classclutchlog.html#aded03528f34d9000f618419c482c5042',1,'clutchlog']]], + ['_5fin_5ffunc_100',['_in_func',['../classclutchlog.html#a130c4f12eacbd2028102838fe16b734e',1,'clutchlog']]], + ['_5fin_5fline_101',['_in_line',['../classclutchlog.html#a41757198b29862832a14472a9e5e24c6',1,'clutchlog']]], + ['_5flevel_5ffmt_102',['_level_fmt',['../classclutchlog.html#ab805ac5c33885459f9f752518a4aa735',1,'clutchlog']]], + ['_5flevel_5fword_103',['_level_word',['../classclutchlog.html#ab1c377a376e6772fe1746ff7147c125f',1,'clutchlog']]], + ['_5fout_104',['_out',['../classclutchlog.html#a1896f6c4b8597e3e76ff93970bd85167',1,'clutchlog']]], + ['_5fstage_105',['_stage',['../classclutchlog.html#aeb60684c89bcef5aa9273075c21cc993',1,'clutchlog']]], + ['_5fstrip_5fcalls_106',['_strip_calls',['../classclutchlog.html#a356df86455409193792b6ed550dfd09e',1,'clutchlog']]], + ['_5fword_5flevel_107',['_word_level',['../classclutchlog.html#abd4625bf211bfbaa30d9c126fa3d7888',1,'clutchlog']]] ]; diff --git a/docs/search/variables_1.html b/docs/search/variables_1.html index 5f8e440..49fe59a 100644 --- a/docs/search/variables_1.html +++ b/docs/search/variables_1.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_1.js b/docs/search/variables_1.js index 5979fe9..e6e90f4 100644 --- a/docs/search/variables_1.js +++ b/docs/search/variables_1.js @@ -1,6 +1,4 @@ var searchData= [ - ['back_0',['back',['../group__colors16.html#ga86696b20e5b31c96ba592926efb324f3',1,'clutchlog::fmt']]], - ['back_5f16m_1',['back_16M',['../group__colors256__16_m.html#gaa2fcbb402dc2426d3720b8bc78a80ec0',1,'clutchlog::fmt']]], - ['back_5f256_2',['back_256',['../group__colors256__16_m.html#ga1d687af385957846034568c3a62d4ef0',1,'clutchlog::fmt']]] + ['back_108',['back',['../classclutchlog_1_1fmt.html#a86696b20e5b31c96ba592926efb324f3',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/variables_2.html b/docs/search/variables_2.html index 77a7f48..0c8a18c 100644 --- a/docs/search/variables_2.html +++ b/docs/search/variables_2.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_2.js b/docs/search/variables_2.js index e3848a0..1027363 100644 --- a/docs/search/variables_2.js +++ b/docs/search/variables_2.js @@ -1,11 +1,11 @@ var searchData= [ - ['default_5fdepth_5fmark_0',['default_depth_mark',['../classclutchlog.html#a229fd61519f1245282440120f2d45fb5',1,'clutchlog']]], - ['default_5fformat_1',['default_format',['../classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc',1,'clutchlog']]], - ['default_5fhfill_5fchar_2',['default_hfill_char',['../classclutchlog.html#a76eb34537b634aadb75e255f7887eeb6',1,'clutchlog']]], - ['default_5fhfill_5fmax_3',['default_hfill_max',['../classclutchlog.html#ac95630bfe9cf547d2b7c4b3430eaedc1',1,'clutchlog']]], - ['default_5fhfill_5fmin_4',['default_hfill_min',['../classclutchlog.html#a5a9a98c3528117223ceff22bc6bee5f7',1,'clutchlog']]], - ['default_5fstrip_5fcalls_5',['default_strip_calls',['../classclutchlog.html#a1a8cb6411726133208f5a2f2cb42d468',1,'clutchlog']]], - ['dump_5fdefault_5fformat_6',['dump_default_format',['../classclutchlog.html#ace879554298e6e6e36dafef330c27be8',1,'clutchlog']]], - ['dump_5fdefault_5fsep_7',['dump_default_sep',['../classclutchlog.html#af898bffe23b125245e338d7495c76d45',1,'clutchlog']]] + ['default_5fdepth_5fmark_109',['default_depth_mark',['../classclutchlog.html#a229fd61519f1245282440120f2d45fb5',1,'clutchlog']]], + ['default_5fformat_110',['default_format',['../classclutchlog.html#a0c4ac57601e6f8d146fd5cc060968ecc',1,'clutchlog']]], + ['default_5fhfill_5fchar_111',['default_hfill_char',['../classclutchlog.html#a76eb34537b634aadb75e255f7887eeb6',1,'clutchlog']]], + ['default_5fhfill_5fmax_112',['default_hfill_max',['../classclutchlog.html#ac95630bfe9cf547d2b7c4b3430eaedc1',1,'clutchlog']]], + ['default_5fhfill_5fmin_113',['default_hfill_min',['../classclutchlog.html#a5a9a98c3528117223ceff22bc6bee5f7',1,'clutchlog']]], + ['default_5fstrip_5fcalls_114',['default_strip_calls',['../classclutchlog.html#a1a8cb6411726133208f5a2f2cb42d468',1,'clutchlog']]], + ['dump_5fdefault_5fformat_115',['dump_default_format',['../classclutchlog.html#ace879554298e6e6e36dafef330c27be8',1,'clutchlog']]], + ['dump_5fdefault_5fsep_116',['dump_default_sep',['../classclutchlog.html#af898bffe23b125245e338d7495c76d45',1,'clutchlog']]] ]; diff --git a/docs/search/variables_3.html b/docs/search/variables_3.html index 3ee62ba..19a31fc 100644 --- a/docs/search/variables_3.html +++ b/docs/search/variables_3.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_3.js b/docs/search/variables_3.js index e57bf13..1e70164 100644 --- a/docs/search/variables_3.js +++ b/docs/search/variables_3.js @@ -1,6 +1,4 @@ var searchData= [ - ['fore_0',['fore',['../group__colors16.html#ga8307a848fcf9ed929435b3e1f2b53401',1,'clutchlog::fmt']]], - ['fore_5f16m_1',['fore_16M',['../group__colors256__16_m.html#ga626c99eb11d1718d7a2a8bb3f079e6de',1,'clutchlog::fmt']]], - ['fore_5f256_2',['fore_256',['../group__colors256__16_m.html#gad98fbe84ef338ded8425d56955825a2c',1,'clutchlog::fmt']]] + ['fore_117',['fore',['../classclutchlog_1_1fmt.html#a8307a848fcf9ed929435b3e1f2b53401',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/variables_4.html b/docs/search/variables_4.html index 640713f..bdc37be 100644 --- a/docs/search/variables_4.html +++ b/docs/search/variables_4.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_4.js b/docs/search/variables_4.js index b619a44..24b0bd2 100644 --- a/docs/search/variables_4.js +++ b/docs/search/variables_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['index_0',['index',['../structclutchlog_1_1fmt_1_1color__256.html#a8e0b13d6bad87c83c3465524a5d33988',1,'clutchlog::fmt::color_256']]] + ['matches_118',['matches',['../structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9',1,'clutchlog::scope_t']]] ]; diff --git a/docs/search/variables_5.html b/docs/search/variables_5.html index 7b2ba97..6aa2249 100644 --- a/docs/search/variables_5.html +++ b/docs/search/variables_5.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_5.js b/docs/search/variables_5.js index 86c2ec6..9c79f86 100644 --- a/docs/search/variables_5.js +++ b/docs/search/variables_5.js @@ -1,5 +1,5 @@ var searchData= [ - ['matches_0',['matches',['../structclutchlog_1_1scope__t.html#ae6c0e4ed20db797124ed1e5faa033ad9',1,'clutchlog::scope_t']]], - ['mode_1',['mode',['../classclutchlog_1_1fmt.html#a0aa57cdd56ccc79c7750921ab534b205',1,'clutchlog::fmt']]] + ['stage_119',['stage',['../structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744',1,'clutchlog::scope_t']]], + ['style_120',['style',['../classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b',1,'clutchlog::fmt']]] ]; diff --git a/docs/search/variables_6.html b/docs/search/variables_6.html index fb1de8f..ce4a906 100644 --- a/docs/search/variables_6.html +++ b/docs/search/variables_6.html @@ -1,8 +1,7 @@ - - + - + @@ -11,27 +10,21 @@
    Loading...
    - +-->
    Searching...
    No Matches
    - +-->
    diff --git a/docs/search/variables_6.js b/docs/search/variables_6.js index b360764..be336f3 100644 --- a/docs/search/variables_6.js +++ b/docs/search/variables_6.js @@ -1,4 +1,4 @@ var searchData= [ - ['red_0',['red',['../structclutchlog_1_1fmt_1_1color__16_m.html#a19e1517a9afb75a4e6224f718ed11c61',1,'clutchlog::fmt::color_16M']]] + ['there_121',['there',['../structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff',1,'clutchlog::scope_t']]] ]; diff --git a/docs/search/variables_7.html b/docs/search/variables_7.html deleted file mode 100644 index cf8dcf4..0000000 --- a/docs/search/variables_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/variables_7.js b/docs/search/variables_7.js deleted file mode 100644 index cc655a1..0000000 --- a/docs/search/variables_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['stage_0',['stage',['../structclutchlog_1_1scope__t.html#adcca6846ff90d436c61861db85917744',1,'clutchlog::scope_t']]], - ['style_1',['style',['../classclutchlog_1_1fmt.html#a2bb0fde65fcd264393e102314dd1610b',1,'clutchlog::fmt']]] -]; diff --git a/docs/search/variables_8.html b/docs/search/variables_8.html deleted file mode 100644 index 88cbb01..0000000 --- a/docs/search/variables_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/variables_8.js b/docs/search/variables_8.js deleted file mode 100644 index fb13f9b..0000000 --- a/docs/search/variables_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['there_0',['there',['../structclutchlog_1_1scope__t.html#a7918e55cd3bac1bd30c69b8c711387ff',1,'clutchlog::scope_t']]], - ['type_1',['type',['../structclutchlog_1_1fmt_1_1color.html#a3fd18c290567bd5c4971663a1aed12ae',1,'clutchlog::fmt::color']]] -]; diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m-members.html b/docs/structclutchlog_1_1fmt_1_1bg__16_m-members.html deleted file mode 100644 index baf92c8..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::bg_16M Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::bg_16M, including all inherited members.

    - - - - - - - - - - - - - - - - - -
    bg_16M()clutchlog::fmt::bg_16Minline
    bg_16M(short r, short g, short b)clutchlog::fmt::bg_16Minline
    bg_16M(const std::string &srgb)clutchlog::fmt::bg_16Minline
    bg_16M(const bg &)clutchlog::fmt::bg_16Minline
    blue (defined in clutchlog::fmt::color_16M)clutchlog::fmt::color_16M
    color(ansi a, ground g)clutchlog::fmt::colorinline
    color_16M(ground t)clutchlog::fmt::color_16Minline
    color_16M(ground t, short r, short g, short b)clutchlog::fmt::color_16Minline
    color_16M(ground t, const std::string &srgb)clutchlog::fmt::color_16Minline
    green (defined in clutchlog::fmt::color_16M)clutchlog::fmt::color_16M
    ground enum nameclutchlog::fmt::color
    is_set() constclutchlog::fmt::color_16Minlinevirtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    print_on(std::ostream &os) constclutchlog::fmt::color_16Minlinevirtual
    redclutchlog::fmt::color_16M
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m.html b/docs/structclutchlog_1_1fmt_1_1bg__16_m.html deleted file mode 100644 index 97d3333..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::bg_16M Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    background in 256-colors mode. - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::bg_16M:
    -
    -
    - -
    - + Collaboration diagram for clutchlog::fmt::bg_16M:
    -
    -
    - -

    Detailed Description

    -

    background in 256-colors mode.

    - -

    Definition at line 678 of file clutchlog.h.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     bg_16M ()
     Empty constructor: no color. More...
     
     bg_16M (short r, short g, short b)
     Numeric triplet constructor. More...
     
     bg_16M (const std::string &srgb)
     Hex triplet string constructor. More...
     
     bg_16M (const bg &)
     Conversion constructor from 16-colors mode. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color_16M
     color_16M (ground t)
     Constructor. More...
     
     color_16M (ground t, short r, short g, short b)
     Numeric triplet constructor. More...
     
     color_16M (ground t, const std::string &srgb)
     Hex triplet string constructor. More...
     
    bool is_set () const
     Returns true if the underying representation encodes an existing color. More...
     
    std::ostream & print_on (std::ostream &os) const
     Print the color RGB triplet on the given stream. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color
     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Attributes inherited from clutchlog::fmt::color_16M
    short red
     The encoded RGB indices. More...
     
    short green
     
    short blue
     
    - Public Attributes inherited from clutchlog::fmt::color
    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - Public Types inherited from clutchlog::fmt::color
    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ bg_16M() [1/4]

    - -
    -
    - - - - - -
    - - - - - - - -
    clutchlog::fmt::bg_16M::bg_16M ()
    -
    -inline
    -
    - -

    Empty constructor: no color.

    - -

    Definition at line 680 of file clutchlog.h.

    - -
    -
    - -

    ◆ bg_16M() [2/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    clutchlog::fmt::bg_16M::bg_16M (short r,
    short g,
    short b 
    )
    -
    -inline
    -
    - -

    Numeric triplet constructor.

    -

    Parameters are expected to be in [0,255].

    -
    Parameters
    - - - - -
    rRed color component.
    gGreen color component.
    bBlue color component.
    -
    -
    - -

    Definition at line 690 of file clutchlog.h.

    - -
    -
    - -

    ◆ bg_16M() [3/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::bg_16M::bg_16M (const std::string & srgb)
    -
    -inline
    -
    - -

    Hex triplet string constructor.

    -
    Note
    If the given string is ill-formed, it will silently encode a "no color".
    -
    Parameters
    - - -
    srgbA "web color" hexadecimal triplet of two characters, starting with a leading number sign (e.g. "#0055ff").
    -
    -
    - -

    Definition at line 698 of file clutchlog.h.

    - -
    -
    - -

    ◆ bg_16M() [4/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::bg_16M::bg_16M (const bg)
    -
    -inline
    -
    - -

    Conversion constructor from 16-colors mode.

    -
    Warning
    Only encodes "no color", whatever is passed.
    - -

    Definition at line 703 of file clutchlog.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.map b/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.map deleted file mode 100644 index 4871c1e..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.md5 b/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.md5 deleted file mode 100644 index 61234a7..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2e5701ea9595f503c9a5f982b11e4a30 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.svg b/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.svg deleted file mode 100644 index fb66ed1..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m__coll__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::bg_16M - - - -Node1 - - -clutchlog::fmt::bg_16M - - - - - -Node2 - - -clutchlog::fmt::color_16M - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.map deleted file mode 100644 index 4871c1e..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.md5 deleted file mode 100644 index 61234a7..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2e5701ea9595f503c9a5f982b11e4a30 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.svg deleted file mode 100644 index fb66ed1..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__16_m__inherit__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::bg_16M - - - -Node1 - - -clutchlog::fmt::bg_16M - - - - - -Node2 - - -clutchlog::fmt::color_16M - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256-members.html b/docs/structclutchlog_1_1fmt_1_1bg__256-members.html deleted file mode 100644 index 1501d4d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::bg_256 Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::bg_256, including all inherited members.

    - - - - - - - - - - - - - -
    bg_256()clutchlog::fmt::bg_256inline
    bg_256(const short b)clutchlog::fmt::bg_256inline
    bg_256(const bg &)clutchlog::fmt::bg_256inline
    color(ansi a, ground g)clutchlog::fmt::colorinline
    color_256(ground t)clutchlog::fmt::color_256inline
    color_256(ground t, const short i)clutchlog::fmt::color_256inline
    ground enum nameclutchlog::fmt::color
    indexclutchlog::fmt::color_256
    is_set() constclutchlog::fmt::color_256inlinevirtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    print_on(std::ostream &os) constclutchlog::fmt::color_256inlinevirtual
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256.html b/docs/structclutchlog_1_1fmt_1_1bg__256.html deleted file mode 100644 index 1f9d1e8..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::bg_256 Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    Background in 256-colors mode. - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::bg_256:
    -
    -
    - -
    - + Collaboration diagram for clutchlog::fmt::bg_256:
    -
    -
    - -

    Detailed Description

    -

    Background in 256-colors mode.

    - -

    Definition at line 570 of file clutchlog.h.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     bg_256 ()
     Empty constructor: no color. More...
     
     bg_256 (const short b)
     Constructor. More...
     
     bg_256 (const bg &)
     Conversion constructor from 16-colors mode. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color_256
     color_256 (ground t)
     Constructor. More...
     
     color_256 (ground t, const short i)
     Constructor. More...
     
    bool is_set () const
     Returns true if the underying representation encodes an existing color. More...
     
    std::ostream & print_on (std::ostream &os) const
     Print the color index on the given stream. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color
     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Attributes inherited from clutchlog::fmt::color_256
    short index
     The encoded color index in 4-bits ANSI. More...
     
    - Public Attributes inherited from clutchlog::fmt::color
    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - Public Types inherited from clutchlog::fmt::color
    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ bg_256() [1/3]

    - -
    -
    - - - - - -
    - - - - - - - -
    clutchlog::fmt::bg_256::bg_256 ()
    -
    -inline
    -
    - -

    Empty constructor: no color.

    - -

    Definition at line 572 of file clutchlog.h.

    - -
    -
    - -

    ◆ bg_256() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::bg_256::bg_256 (const short b)
    -
    -inline
    -
    - -

    Constructor.

    -
    Parameters
    - - -
    bBackground color index (within [-1,255], -1 being "no color").
    -
    -
    - -

    Definition at line 577 of file clutchlog.h.

    - -
    -
    - -

    ◆ bg_256() [3/3]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::bg_256::bg_256 (const bg)
    -
    -inline
    -
    - -

    Conversion constructor from 16-colors mode.

    -
    Warning
    Only encodes "no color", whatever is passed.
    - -

    Definition at line 582 of file clutchlog.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.map b/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.map deleted file mode 100644 index d6e6ce0..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.md5 b/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.md5 deleted file mode 100644 index 09dc823..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3855f4ef89806b98b2c9866bede79bc9 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.svg b/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.svg deleted file mode 100644 index 06c825d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256__coll__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::bg_256 - - - -Node1 - - -clutchlog::fmt::bg_256 - - - - - -Node2 - - -clutchlog::fmt::color_256 - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.map deleted file mode 100644 index d6e6ce0..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.md5 deleted file mode 100644 index 09dc823..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3855f4ef89806b98b2c9866bede79bc9 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.svg deleted file mode 100644 index 06c825d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1bg__256__inherit__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::bg_256 - - - -Node1 - - -clutchlog::fmt::bg_256 - - - - - -Node2 - - -clutchlog::fmt::color_256 - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color-members.html b/docs/structclutchlog_1_1fmt_1_1color-members.html deleted file mode 100644 index 463b096..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::color Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::color, including all inherited members.

    - - - - - - - - -
    color(ansi a, ground g)clutchlog::fmt::colorinline
    ground enum nameclutchlog::fmt::color
    is_set() const =0clutchlog::fmt::colorpure virtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    operator<<clutchlog::fmt::colorfriend
    print_on(std::ostream &os) const =0clutchlog::fmt::colorpure virtual
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color.html b/docs/structclutchlog_1_1fmt_1_1color.html deleted file mode 100644 index 1213ef0..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::color Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    Interface class for colors representation. - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::color:
    -
    -
    - -

    Detailed Description

    -

    Interface class for colors representation.

    - -

    Definition at line 484 of file clutchlog.h.

    -
    - - - - - - - - - - -

    -Public Member Functions

     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - -

    -Public Attributes

    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - - - - -

    -Public Types

    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    - - - - -

    -Friends

    std::ostream & operator<< (std::ostream &os, const color &c)
     Print the actually encoded escaped color sequence on the given stream. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ color()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    clutchlog::fmt::color::color (ansi a,
    ground g 
    )
    -
    -inline
    -
    - -

    Constructor.

    -
    Parameters
    - - - -
    aANSI mode (i.e. number of colors).
    gColor type (i.e. foreground or background).
    -
    -
    - -

    Definition at line 498 of file clutchlog.h.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ is_set()

    - -
    -
    - - - - - -
    - - - - - - - -
    virtual bool clutchlog::fmt::color::is_set () const
    -
    -pure virtual
    -
    - -

    Should return true if the underying representation encodes an existing color.

    - -

    Implemented in clutchlog::fmt::color_256, and clutchlog::fmt::color_16M.

    - -
    -
    - -

    ◆ print_on()

    - -
    -
    - - - - - -
    - - - - - - - - -
    virtual std::ostream & clutchlog::fmt::color::print_on (std::ostream & os) const
    -
    -pure virtual
    -
    - -

    Should print the underlying representation on the given stream.

    - -

    Implemented in clutchlog::fmt::color_256, and clutchlog::fmt::color_16M.

    - -
    -
    -

    Friends And Related Function Documentation

    - -

    ◆ operator<<

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    std::ostream & operator<< (std::ostream & os,
    const colorc 
    )
    -
    -friend
    -
    - -

    Print the actually encoded escaped color sequence on the given stream.

    - -

    Definition at line 507 of file clutchlog.h.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ mode

    - -
    -
    - - - - -
    ansi clutchlog::fmt::color::mode
    -
    - -

    Definition at line 485 of file clutchlog.h.

    - -
    -
    -

    Member Enumeration Documentation

    - -

    ◆ ground

    - -
    -
    - - - - - -
    - - - - -
    enum class clutchlog::fmt::color::ground
    -
    -strong
    -
    - -

    Codes for representing foreground or background.

    - -

    Definition at line 488 of file clutchlog.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m-members.html b/docs/structclutchlog_1_1fmt_1_1color__16_m-members.html deleted file mode 100644 index 42dcda5..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::color_16M Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::color_16M, including all inherited members.

    - - - - - - - - - - - - - -
    blue (defined in clutchlog::fmt::color_16M)clutchlog::fmt::color_16M
    color(ansi a, ground g)clutchlog::fmt::colorinline
    color_16M(ground t)clutchlog::fmt::color_16Minline
    color_16M(ground t, short r, short g, short b)clutchlog::fmt::color_16Minline
    color_16M(ground t, const std::string &srgb)clutchlog::fmt::color_16Minline
    green (defined in clutchlog::fmt::color_16M)clutchlog::fmt::color_16M
    ground enum nameclutchlog::fmt::color
    is_set() constclutchlog::fmt::color_16Minlinevirtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    print_on(std::ostream &os) constclutchlog::fmt::color_16Minlinevirtual
    redclutchlog::fmt::color_16M
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m.html b/docs/structclutchlog_1_1fmt_1_1color__16_m.html deleted file mode 100644 index 77bf878..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::color_16M Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    Abstract base class for 16M colors objects (24-bits ANSI). - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::color_16M:
    -
    -
    - -
    - + Collaboration diagram for clutchlog::fmt::color_16M:
    -
    -
    - -

    Detailed Description

    -

    Abstract base class for 16M colors objects (24-bits ANSI).

    - -

    Definition at line 587 of file clutchlog.h.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     color_16M (ground t)
     Constructor. More...
     
     color_16M (ground t, short r, short g, short b)
     Numeric triplet constructor. More...
     
     color_16M (ground t, const std::string &srgb)
     Hex triplet string constructor. More...
     
    bool is_set () const
     Returns true if the underying representation encodes an existing color. More...
     
    std::ostream & print_on (std::ostream &os) const
     Print the color RGB triplet on the given stream. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color
     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - - - - - - - - - -

    -Public Attributes

    short red
     The encoded RGB indices. More...
     
    short green
     
    short blue
     
    - Public Attributes inherited from clutchlog::fmt::color
    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - - - - - -

    -Additional Inherited Members

    - Public Types inherited from clutchlog::fmt::color
    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ color_16M() [1/3]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::color_16M::color_16M (ground t)
    -
    -inline
    -
    - -

    Constructor.

    -
    Parameters
    - - -
    tForeground or background tag.
    -
    -
    - -

    Definition at line 596 of file clutchlog.h.

    - -
    -
    - -

    ◆ color_16M() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    clutchlog::fmt::color_16M::color_16M (ground t,
    short r,
    short g,
    short b 
    )
    -
    -inline
    -
    - -

    Numeric triplet constructor.

    -
    Parameters
    - - - - - -
    tForeground or background tag.
    rRed color component.
    gGreen color component.
    bBlue color component.
    -
    -
    - -

    Definition at line 605 of file clutchlog.h.

    - -
    -
    - -

    ◆ color_16M() [3/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    clutchlog::fmt::color_16M::color_16M (ground t,
    const std::string & srgb 
    )
    -
    -inline
    -
    - -

    Hex triplet string constructor.

    -
    Note
    If the given string is ill-formed, it will silently encode a "no color".
    -
    Parameters
    - - - -
    tForeground or background tag.
    srgbA "web color" hexadecimal triplet of two characters, starting with a leading number sign (e.g. "#0055ff").
    -
    -
    - -

    Definition at line 615 of file clutchlog.h.

    - -

    References red.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ is_set()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool clutchlog::fmt::color_16M::is_set () const
    -
    -inlinevirtual
    -
    - -

    Returns true if the underying representation encodes an existing color.

    - -

    Implements clutchlog::fmt::color.

    - -

    Definition at line 637 of file clutchlog.h.

    - -

    References red.

    - -
    -
    - -

    ◆ print_on()

    - -
    -
    - - - - - -
    - - - - - - - - -
    std::ostream & clutchlog::fmt::color_16M::print_on (std::ostream & os) const
    -
    -inlinevirtual
    -
    - -

    Print the color RGB triplet on the given stream.

    - -

    Implements clutchlog::fmt::color.

    - -

    Definition at line 640 of file clutchlog.h.

    - -

    References red.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ red

    - -
    -
    - - - - -
    short clutchlog::fmt::color_16M::red
    -
    - -

    The encoded RGB indices.

    -

    "No color" is encoded as -1.

    - -

    Definition at line 591 of file clutchlog.h.

    - -

    Referenced by color_16M(), is_set(), and print_on().

    - -
    -
    - -

    ◆ green

    - -
    -
    - - - - -
    short clutchlog::fmt::color_16M::green
    -
    - -

    Definition at line 591 of file clutchlog.h.

    - -
    -
    - -

    ◆ blue

    - -
    -
    - - - - -
    short clutchlog::fmt::color_16M::blue
    -
    - -

    Definition at line 591 of file clutchlog.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.map b/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.map deleted file mode 100644 index 52284a2..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.md5 b/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.md5 deleted file mode 100644 index dcdc383..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bc23bad6bf83bc7fb3f9f0bba9626d58 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.svg b/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.svg deleted file mode 100644 index 771e634..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m__coll__graph.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - -clutchlog::fmt::color_16M - - - -Node1 - - -clutchlog::fmt::color_16M - - - - - -Node2 - - -clutchlog::fmt::color - - - - - -Node2->Node1 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.map deleted file mode 100644 index ec5bcfd..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.md5 deleted file mode 100644 index 1b746fe..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5290ea38d4d49312ea7075f14861359f \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.svg deleted file mode 100644 index a8ca717..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__16_m__inherit__graph.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - -clutchlog::fmt::color_16M - - - -Node1 - - -clutchlog::fmt::color_16M - - - - - -Node3 - - -clutchlog::fmt::bg_16M - - - - - -Node1->Node3 - - - - - -Node4 - - -clutchlog::fmt::fg_16M - - - - - -Node1->Node4 - - - - - -Node2 - - -clutchlog::fmt::color - - - - - -Node2->Node1 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__256-members.html b/docs/structclutchlog_1_1fmt_1_1color__256-members.html deleted file mode 100644 index f1f7902..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::color_256 Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::color_256, including all inherited members.

    - - - - - - - - - - -
    color(ansi a, ground g)clutchlog::fmt::colorinline
    color_256(ground t)clutchlog::fmt::color_256inline
    color_256(ground t, const short i)clutchlog::fmt::color_256inline
    ground enum nameclutchlog::fmt::color
    indexclutchlog::fmt::color_256
    is_set() constclutchlog::fmt::color_256inlinevirtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    print_on(std::ostream &os) constclutchlog::fmt::color_256inlinevirtual
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__256.html b/docs/structclutchlog_1_1fmt_1_1color__256.html deleted file mode 100644 index 78f460c..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::color_256 Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    Abstract base class for 256 colors objects (8-bits ANSI). - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::color_256:
    -
    -
    - -
    - + Collaboration diagram for clutchlog::fmt::color_256:
    -
    -
    - -

    Detailed Description

    -

    Abstract base class for 256 colors objects (8-bits ANSI).

    - -

    Definition at line 523 of file clutchlog.h.

    -
    - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     color_256 (ground t)
     Constructor. More...
     
     color_256 (ground t, const short i)
     Constructor. More...
     
    bool is_set () const
     Returns true if the underying representation encodes an existing color. More...
     
    std::ostream & print_on (std::ostream &os) const
     Print the color index on the given stream. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color
     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - - - - - -

    -Public Attributes

    short index
     The encoded color index in 4-bits ANSI. More...
     
    - Public Attributes inherited from clutchlog::fmt::color
    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - - - - - -

    -Additional Inherited Members

    - Public Types inherited from clutchlog::fmt::color
    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ color_256() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::color_256::color_256 (ground t)
    -
    -inline
    -
    - -

    Constructor.

    -
    Parameters
    - - -
    tForeground or background tag.
    -
    -
    - -

    Definition at line 532 of file clutchlog.h.

    - -
    -
    - -

    ◆ color_256() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    clutchlog::fmt::color_256::color_256 (ground t,
    const short i 
    )
    -
    -inline
    -
    - -

    Constructor.

    -
    Parameters
    - - - -
    tForeground or background tag.
    iColor index (within [-1,255], -1 being "no color").
    -
    -
    - -

    Definition at line 539 of file clutchlog.h.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ is_set()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool clutchlog::fmt::color_256::is_set () const
    -
    -inlinevirtual
    -
    - -

    Returns true if the underying representation encodes an existing color.

    - -

    Implements clutchlog::fmt::color.

    - -

    Definition at line 542 of file clutchlog.h.

    - -

    References index.

    - -
    -
    - -

    ◆ print_on()

    - -
    -
    - - - - - -
    - - - - - - - - -
    std::ostream & clutchlog::fmt::color_256::print_on (std::ostream & os) const
    -
    -inlinevirtual
    -
    - -

    Print the color index on the given stream.

    - -

    Implements clutchlog::fmt::color.

    - -

    Definition at line 545 of file clutchlog.h.

    - -

    References index.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ index

    - -
    -
    - - - - -
    short clutchlog::fmt::color_256::index
    -
    - -

    The encoded color index in 4-bits ANSI.

    -

    "No color" is encoded as -1.

    - -

    Definition at line 527 of file clutchlog.h.

    - -

    Referenced by is_set(), and print_on().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.map b/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.map deleted file mode 100644 index 9dd0992..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.md5 b/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.md5 deleted file mode 100644 index 29d054e..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -47f04ed4e698cdf28222a6cb57fcc2c6 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.svg b/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.svg deleted file mode 100644 index 26c8502..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256__coll__graph.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - -clutchlog::fmt::color_256 - - - -Node1 - - -clutchlog::fmt::color_256 - - - - - -Node2 - - -clutchlog::fmt::color - - - - - -Node2->Node1 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.map deleted file mode 100644 index fdb380a..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.md5 deleted file mode 100644 index 1ca0e80..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -94ca57a2f8cfa4e3f7bc8cd6d161a718 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.svg deleted file mode 100644 index 777b6fc..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__256__inherit__graph.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - -clutchlog::fmt::color_256 - - - -Node1 - - -clutchlog::fmt::color_256 - - - - - -Node3 - - -clutchlog::fmt::bg_256 - - - - - -Node1->Node3 - - - - - -Node4 - - -clutchlog::fmt::fg_256 - - - - - -Node1->Node4 - - - - - -Node2 - - -clutchlog::fmt::color - - - - - -Node2->Node1 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.map deleted file mode 100644 index 2b183ff..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.md5 deleted file mode 100644 index e8a20b9..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -85d4ff8e61f86137af23d267cf9fe06e \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.svg deleted file mode 100644 index 1855cb2..0000000 --- a/docs/structclutchlog_1_1fmt_1_1color__inherit__graph.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - -clutchlog::fmt::color - - - -Node1 - - -clutchlog::fmt::color - - - - - -Node2 - - -clutchlog::fmt::color_16M - - - - - -Node1->Node2 - - - - - -Node5 - - -clutchlog::fmt::color_256 - - - - - -Node1->Node5 - - - - - -Node3 - - -clutchlog::fmt::bg_16M - - - - - -Node2->Node3 - - - - - -Node4 - - -clutchlog::fmt::fg_16M - - - - - -Node2->Node4 - - - - - -Node6 - - -clutchlog::fmt::bg_256 - - - - - -Node5->Node6 - - - - - -Node7 - - -clutchlog::fmt::fg_256 - - - - - -Node5->Node7 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m-members.html b/docs/structclutchlog_1_1fmt_1_1fg__16_m-members.html deleted file mode 100644 index 193f0d2..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::fg_16M Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::fg_16M, including all inherited members.

    - - - - - - - - - - - - - - - - - -
    blue (defined in clutchlog::fmt::color_16M)clutchlog::fmt::color_16M
    color(ansi a, ground g)clutchlog::fmt::colorinline
    color_16M(ground t)clutchlog::fmt::color_16Minline
    color_16M(ground t, short r, short g, short b)clutchlog::fmt::color_16Minline
    color_16M(ground t, const std::string &srgb)clutchlog::fmt::color_16Minline
    fg_16M()clutchlog::fmt::fg_16Minline
    fg_16M(short r, short g, short b)clutchlog::fmt::fg_16Minline
    fg_16M(const std::string &srgb)clutchlog::fmt::fg_16Minline
    fg_16M(const fg &)clutchlog::fmt::fg_16Minline
    green (defined in clutchlog::fmt::color_16M)clutchlog::fmt::color_16M
    ground enum nameclutchlog::fmt::color
    is_set() constclutchlog::fmt::color_16Minlinevirtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    print_on(std::ostream &os) constclutchlog::fmt::color_16Minlinevirtual
    redclutchlog::fmt::color_16M
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m.html b/docs/structclutchlog_1_1fmt_1_1fg__16_m.html deleted file mode 100644 index 890d2e0..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::fg_16M Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    Foreground in 256-colors mode. - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::fg_16M:
    -
    -
    - -
    - + Collaboration diagram for clutchlog::fmt::fg_16M:
    -
    -
    - -

    Detailed Description

    -

    Foreground in 256-colors mode.

    - -

    Definition at line 648 of file clutchlog.h.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     fg_16M ()
     Empty constructor: no color. More...
     
     fg_16M (short r, short g, short b)
     Numeric triplet constructor. More...
     
     fg_16M (const std::string &srgb)
     Hex triplet string constructor. More...
     
     fg_16M (const fg &)
     Conversion constructor from 16-colors mode. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color_16M
     color_16M (ground t)
     Constructor. More...
     
     color_16M (ground t, short r, short g, short b)
     Numeric triplet constructor. More...
     
     color_16M (ground t, const std::string &srgb)
     Hex triplet string constructor. More...
     
    bool is_set () const
     Returns true if the underying representation encodes an existing color. More...
     
    std::ostream & print_on (std::ostream &os) const
     Print the color RGB triplet on the given stream. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color
     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Attributes inherited from clutchlog::fmt::color_16M
    short red
     The encoded RGB indices. More...
     
    short green
     
    short blue
     
    - Public Attributes inherited from clutchlog::fmt::color
    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - Public Types inherited from clutchlog::fmt::color
    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ fg_16M() [1/4]

    - -
    -
    - - - - - -
    - - - - - - - -
    clutchlog::fmt::fg_16M::fg_16M ()
    -
    -inline
    -
    - -

    Empty constructor: no color.

    - -

    Definition at line 650 of file clutchlog.h.

    - -
    -
    - -

    ◆ fg_16M() [2/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    clutchlog::fmt::fg_16M::fg_16M (short r,
    short g,
    short b 
    )
    -
    -inline
    -
    - -

    Numeric triplet constructor.

    -

    Parameters are expected to be in [0,255].

    -
    Parameters
    - - - - -
    rRed color component.
    gGreen color component.
    bBlue color component.
    -
    -
    - -

    Definition at line 660 of file clutchlog.h.

    - -
    -
    - -

    ◆ fg_16M() [3/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::fg_16M::fg_16M (const std::string & srgb)
    -
    -inline
    -
    - -

    Hex triplet string constructor.

    -
    Note
    If the given string is ill-formed, it will silently encode a "no color".
    -
    Parameters
    - - -
    srgbA "web color" hexadecimal triplet of two characters, starting with a leading number sign (e.g. "#0055ff").
    -
    -
    - -

    Definition at line 668 of file clutchlog.h.

    - -
    -
    - -

    ◆ fg_16M() [4/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::fg_16M::fg_16M (const fg)
    -
    -inline
    -
    - -

    Conversion constructor from 16-colors mode.

    -
    Warning
    Only encodes "no color", whatever is passed.
    - -

    Definition at line 673 of file clutchlog.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.map b/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.map deleted file mode 100644 index a32a90d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.md5 b/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.md5 deleted file mode 100644 index c848766..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -86e3c9ea35f81489acc382ed4fa6cf19 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.svg b/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.svg deleted file mode 100644 index 8436d1a..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m__coll__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::fg_16M - - - -Node1 - - -clutchlog::fmt::fg_16M - - - - - -Node2 - - -clutchlog::fmt::color_16M - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.map deleted file mode 100644 index a32a90d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.md5 deleted file mode 100644 index c848766..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -86e3c9ea35f81489acc382ed4fa6cf19 \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.svg deleted file mode 100644 index 8436d1a..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__16_m__inherit__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::fg_16M - - - -Node1 - - -clutchlog::fmt::fg_16M - - - - - -Node2 - - -clutchlog::fmt::color_16M - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256-members.html b/docs/structclutchlog_1_1fmt_1_1fg__256-members.html deleted file mode 100644 index ff1475c..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -clutchlog: Member List - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    clutchlog::fmt::fg_256 Member List
    -
    -
    - -

    This is the complete list of members for clutchlog::fmt::fg_256, including all inherited members.

    - - - - - - - - - - - - - -
    color(ansi a, ground g)clutchlog::fmt::colorinline
    color_256(ground t)clutchlog::fmt::color_256inline
    color_256(ground t, const short i)clutchlog::fmt::color_256inline
    fg_256()clutchlog::fmt::fg_256inline
    fg_256(const short f)clutchlog::fmt::fg_256inline
    fg_256(const fg &)clutchlog::fmt::fg_256inline
    ground enum nameclutchlog::fmt::color
    indexclutchlog::fmt::color_256
    is_set() constclutchlog::fmt::color_256inlinevirtual
    mode (defined in clutchlog::fmt::color)clutchlog::fmt::color
    print_on(std::ostream &os) constclutchlog::fmt::color_256inlinevirtual
    typeclutchlog::fmt::color
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256.html b/docs/structclutchlog_1_1fmt_1_1fg__256.html deleted file mode 100644 index 0eca95f..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - -clutchlog: clutchlog::fmt::fg_256 Struct Reference - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -

    Foreground in 256-colors mode. - More...

    - -

    #include <clutchlog.h>

    -
    - + Inheritance diagram for clutchlog::fmt::fg_256:
    -
    -
    - -
    - + Collaboration diagram for clutchlog::fmt::fg_256:
    -
    -
    - -

    Detailed Description

    -

    Foreground in 256-colors mode.

    - -

    Definition at line 553 of file clutchlog.h.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     fg_256 ()
     Empty constructor: no color. More...
     
     fg_256 (const short f)
     Constructor. More...
     
     fg_256 (const fg &)
     Conversion constructor from 16-colors mode. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color_256
     color_256 (ground t)
     Constructor. More...
     
     color_256 (ground t, const short i)
     Constructor. More...
     
    bool is_set () const
     Returns true if the underying representation encodes an existing color. More...
     
    std::ostream & print_on (std::ostream &os) const
     Print the color index on the given stream. More...
     
    - Public Member Functions inherited from clutchlog::fmt::color
     color (ansi a, ground g)
     Constructor. More...
     
    virtual bool is_set () const =0
     Should return true if the underying representation encodes an existing color. More...
     
    virtual std::ostream & print_on (std::ostream &os) const =0
     Should print the underlying representation on the given stream. More...
     
    - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Attributes inherited from clutchlog::fmt::color_256
    short index
     The encoded color index in 4-bits ANSI. More...
     
    - Public Attributes inherited from clutchlog::fmt::color
    ansi mode
     
    -enum clutchlog::fmt::color::ground type
     Type of color (foreground or background).
     
    - Public Types inherited from clutchlog::fmt::color
    enum class  ground { fore = 38 -, back = 48 - }
     Codes for representing foreground or background. More...
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ fg_256() [1/3]

    - -
    -
    - - - - - -
    - - - - - - - -
    clutchlog::fmt::fg_256::fg_256 ()
    -
    -inline
    -
    - -

    Empty constructor: no color.

    - -

    Definition at line 555 of file clutchlog.h.

    - -
    -
    - -

    ◆ fg_256() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::fg_256::fg_256 (const short f)
    -
    -inline
    -
    - -

    Constructor.

    -
    Parameters
    - - -
    fForeground color index (within [-1,255], -1 being "no color").
    -
    -
    - -

    Definition at line 560 of file clutchlog.h.

    - -
    -
    - -

    ◆ fg_256() [3/3]

    - -
    -
    - - - - - -
    - - - - - - - - -
    clutchlog::fmt::fg_256::fg_256 (const fg)
    -
    -inline
    -
    - -

    Conversion constructor from 16-colors mode.

    -
    Warning
    Only encodes "no color", whatever is passed.
    - -

    Definition at line 565 of file clutchlog.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.map b/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.map deleted file mode 100644 index d05746d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.md5 b/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.md5 deleted file mode 100644 index 0406bf7..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f6c2cee087aafee8c05ce5892c70571b \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.svg b/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.svg deleted file mode 100644 index 53b40bd..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256__coll__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::fg_256 - - - -Node1 - - -clutchlog::fmt::fg_256 - - - - - -Node2 - - -clutchlog::fmt::color_256 - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.map b/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.map deleted file mode 100644 index d05746d..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.md5 b/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.md5 deleted file mode 100644 index 0406bf7..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f6c2cee087aafee8c05ce5892c70571b \ No newline at end of file diff --git a/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.svg b/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.svg deleted file mode 100644 index 53b40bd..0000000 --- a/docs/structclutchlog_1_1fmt_1_1fg__256__inherit__graph.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -clutchlog::fmt::fg_256 - - - -Node1 - - -clutchlog::fmt::fg_256 - - - - - -Node2 - - -clutchlog::fmt::color_256 - - - - - -Node2->Node1 - - - - - -Node3 - - -clutchlog::fmt::color - - - - - -Node3->Node2 - - - - - diff --git a/docs/structclutchlog_1_1scope__t-members.html b/docs/structclutchlog_1_1scope__t-members.html index 476fd12..a9f1f0c 100644 --- a/docs/structclutchlog_1_1scope__t-members.html +++ b/docs/structclutchlog_1_1scope__t-members.html @@ -2,8 +2,8 @@ - - + + clutchlog: Member List @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,22 +84,25 @@ $(document).ready(function(){initNavTree('structclutchlog_1_1scope__t.html','');
    -
    clutchlog::scope_t Member List
    +
    +
    clutchlog::scope_t Member List
    diff --git a/docs/structclutchlog_1_1scope__t.html b/docs/structclutchlog_1_1scope__t.html index db3448e..621fb92 100644 --- a/docs/structclutchlog_1_1scope__t.html +++ b/docs/structclutchlog_1_1scope__t.html @@ -2,8 +2,8 @@ - - + + clutchlog: clutchlog::scope_t Struct Reference @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('structclutchlog_1_1scope__t.html',''); Public Member Functions | Public Attributes | List of all members -
    clutchlog::scope_t Struct Reference
    +
    +
    clutchlog::scope_t Struct Reference
    @@ -97,119 +98,32 @@ $(document).ready(function(){initNavTree('structclutchlog_1_1scope__t.html','');

    #include <clutchlog.h>

    Detailed Description

    -

    Structure holding a location matching.

    +

    Structure holding a location matching.

    -

    Definition at line 1130 of file clutchlog.h.

    +

    Definition at line 666 of file clutchlog.h.

    - - - + +

    +

    Public Member Functions

     scope_t ()
     Constructor. More...
    scope_t ()
     Constructor.
     
    - - - + + - - + + - - + +

    +

    Public Attributes

    bool matches
     Everything is compatible. More...
    +bool matches
     Everything is compatible.
     
    level stage
     Current log level. More...
    +level stage
     Current log level.
     
    bool there
     Location is compatible. More...
    +bool there
     Location is compatible.
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ scope_t()

    - -
    -
    - - - - - -
    - - - - - - - -
    clutchlog::scope_t::scope_t ()
    -
    -inline
    -
    - -

    Constructor.

    - -

    Definition at line 1142 of file clutchlog.h.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ matches

    - -
    -
    - - - - -
    bool clutchlog::scope_t::matches
    -
    - -

    Everything is compatible.

    - -

    Definition at line 1132 of file clutchlog.h.

    - -

    Referenced by clutchlog::dump(), clutchlog::locate(), and clutchlog::log().

    - -
    -
    - -

    ◆ stage

    - -
    -
    - - - - -
    level clutchlog::scope_t::stage
    -
    - -

    Current log level.

    - -

    Definition at line 1134 of file clutchlog.h.

    - -

    Referenced by clutchlog::locate().

    - -
    -
    - -

    ◆ there

    - -
    -
    - - - - -
    bool clutchlog::scope_t::there
    -
    - -

    Location is compatible.

    - -

    Definition at line 1140 of file clutchlog.h.

    - -

    Referenced by clutchlog::locate().

    - -
    -

    The documentation for this struct was generated from the following file: @@ -219,7 +133,9 @@ Public Attributes diff --git a/docs/svgpan.js b/docs/svgpan.js index 2678d38..1cad257 100644 --- a/docs/svgpan.js +++ b/docs/svgpan.js @@ -1,37 +1,57 @@ /* - @licstart The following is the entire license notice for the JavaScript code in this file. - The code below is based on SVGPan Library 1.2 and was modified for doxygen - to support both zooming and panning via the mouse and via embedded buttons. + @licstart The following is the entire license notice for the + JavaScript code in this file. - This code is licensed under the following BSD license: + Copyright (C) 1997-2017 by Dimitri van Heesch - Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - Redistribution and use in source and binary forms, with or without modification, are - permitted provided that the following conditions are met: + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - 1. Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - 2. Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - The views and conclusions contained in the software and documentation are those of the - authors and should not be interpreted as representing official policies, either expressed - or implied, of Andrea Leofreddi. - - @licend The above is the entire license notice for the JavaScript code in this file + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/** + * The code below is based on SVGPan Library 1.2 and was modified for doxygen + * to support both zooming and panning via the mouse and via embedded buttons. + * + * This code is licensed under the following BSD license: + * + * Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Andrea Leofreddi. */ var root = document.documentElement; diff --git a/docs/t-assert_8cpp_source.html b/docs/t-assert_8cpp_source.html index c368267..6dcbbbf 100644 --- a/docs/t-assert_8cpp_source.html +++ b/docs/t-assert_8cpp_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: t-assert.cpp Source File @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,61 +84,63 @@ $(document).ready(function(){initNavTree('t-assert_8cpp_source.html',''); initRe
    -
    t-assert.cpp
    +
    +
    t-assert.cpp
    -
    1#include <iostream>
    -
    2#include <cassert>
    -
    3#include <cstring>
    -
    4
    -
    5#include "../clutchlog/clutchlog.h"
    -
    6
    -
    7// Make asserts (de)clutchable.
    -
    8#define ASSERT(...) CLUTCHFUNC(error, assert, __VA_ARGS__);
    -
    9
    -
    10void h()
    -
    11{
    -
    12 CLUTCHLOG(info, "!");
    -
    13 ASSERT(true == true);
    -
    14 std::clog << "--" << std::endl;
    -
    15}
    -
    16
    -
    17void g()
    -
    18{
    -
    19 CLUTCHLOG(warning, "world");
    -
    20 ASSERT(strcmp("life","life") == 0);
    -
    21 h();
    -
    22}
    -
    23
    -
    24void f()
    -
    25{
    -
    26 CLUTCHLOG(error, "hello ");
    -
    27 ASSERT(strcmp("no more","please")!=0);
    -
    28 g();
    -
    29}
    -
    30
    -
    31int main(/*const int argc, char* argv[]*/)
    -
    32{
    -
    33 auto& log = clutchlog::logger();
    -
    34
    -
    35 log.func("f");
    -
    36 f();
    -
    37
    -
    38 log.func("g");
    -
    39 f();
    -
    40
    -
    41 log.func("h");
    -
    42 f();
    -
    43}
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    +
    1 #include <iostream>
    +
    2 #include <cassert>
    +
    3 
    +
    4 #include "../clutchlog/clutchlog.h"
    +
    5 
    +
    6 // Make asserts (de)clutchable.
    +
    7 #define ASSERT(...) CLUTCHFUNC(error, assert, __VA_ARGS__);
    +
    8 
    +
    9 void h()
    +
    10 {
    +
    11  CLUTCHLOG(info, "!");
    +
    12  ASSERT(true == true);
    +
    13  std::clog << "--" << std::endl;
    +
    14 }
    +
    15 
    +
    16 void g()
    +
    17 {
    +
    18  CLUTCHLOG(warning, "world");
    +
    19  ASSERT(strcmp("life","life") == 0);
    +
    20  h();
    +
    21 }
    +
    22 
    +
    23 void f()
    +
    24 {
    +
    25  CLUTCHLOG(error, "hello ");
    +
    26  ASSERT(strcmp("no more","please")!=0);
    +
    27  g();
    +
    28 }
    +
    29 
    +
    30 int main(/*const int argc, char* argv[]*/)
    +
    31 {
    +
    32  auto& log = clutchlog::logger();
    +
    33 
    +
    34  log.func("f");
    +
    35  f();
    +
    36 
    +
    37  log.func("g");
    +
    38  f();
    +
    39 
    +
    40  log.func("h");
    +
    41  f();
    +
    42 }
    +
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:296
    +
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:81
    diff --git a/docs/t-color16_m_8cpp_source.html b/docs/t-color16_m_8cpp_source.html deleted file mode 100644 index 982de1c..0000000 --- a/docs/t-color16_m_8cpp_source.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -clutchlog: t-color16M.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-color16M.cpp
    -
    -
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6int main(/*const int argc, char* argv[]*/)
    -
    7{
    -
    8 using typo = clutchlog::fmt::typo;
    -
    9 // using fg = clutchlog::fmt::fg;
    -
    10 // using bg = clutchlog::fmt::bg;
    -
    11
    -
    12 clutchlog::fmt none;
    -
    13 clutchlog::fmt end(typo::reset);
    -
    14 clutchlog::fmt note(typo::bold);
    -
    15 clutchlog::fmt info(120,255,120); // greenish
    -
    16 clutchlog::fmt warning("#ff0055", typo::bold); // magentaish
    -
    17 clutchlog::fmt error(255,100,150, typo::bold); // redish magenta
    -
    18 clutchlog::fmt critical("#ffff00", "#ff0000"); // Yellow over red.
    -
    19
    -
    20 auto& log = clutchlog::logger();
    -
    21 log.threshold(clutchlog::level::info);
    -
    22
    -
    23 // Change a style.
    -
    24 log.style(clutchlog::level::critical, error);
    -
    25 CLUTCHLOG(critical,"Styles demo");
    -
    26
    -
    27 CLUTCHLOG(info,"Either using functions...");
    -
    28 std::cout << none("No style: ") << std::endl;
    -
    29 std::cout << note("NOTE: bold") << std::endl;
    -
    30 std::cout << info("INFO: green") << std::endl;
    -
    31
    -
    32 CLUTCHLOG(info,"... or tags.");
    -
    33 std::cout << warning << "WARNING" << end << ": bold magenta" << std::endl;
    -
    34 std::cout << error << "ERROR" << end << ": bold red" << std::endl;
    -
    35 std::cout << critical << "CRITICAL" << end << ": underlined black over red background" << std::endl;
    -
    36
    -
    37 std::ostringstream format;
    -
    38 clutchlog::fmt discreet("#888888", typo::inverse);
    -
    39 format << "{level}: "
    -
    40 << discreet("{file}") << ":"
    -
    41 << clutchlog::fmt(/*front RGB*/200,150,0, /*back RGB*/0,0,0) << "{line}" // gold yellow over black
    -
    42 << clutchlog::fmt(typo::reset) << " {msg} ! " << std::endl;
    -
    43 log.format(format.str());
    -
    44 CLUTCHLOG(critical,"After having inserted styles within a new format template");
    -
    45}
    -
    46
    -
    47
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    -
    - - - - diff --git a/docs/t-color256_8cpp_source.html b/docs/t-color256_8cpp_source.html deleted file mode 100644 index ebda88c..0000000 --- a/docs/t-color256_8cpp_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -clutchlog: t-color256.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-color256.cpp
    -
    -
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6int main(/*const int argc, char* argv[]*/)
    -
    7{
    -
    8 using typo = clutchlog::fmt::typo;
    -
    9 // using fg = clutchlog::fmt::fg;
    -
    10 // using bg = clutchlog::fmt::bg;
    -
    11
    -
    12 clutchlog::fmt none;
    -
    13 clutchlog::fmt end(typo::reset);
    -
    14 clutchlog::fmt note(typo::bold);
    -
    15 clutchlog::fmt info(106); // greenish
    -
    16 clutchlog::fmt warning(171, typo::bold); // magentaish
    -
    17 clutchlog::fmt error(198, typo::bold); // redish magenta
    -
    18 clutchlog::fmt critical(226, 196, typo::underline); // Yellow over red.
    -
    19
    -
    20 auto& log = clutchlog::logger();
    -
    21 log.threshold(clutchlog::level::info);
    -
    22
    -
    23 // Change a style.
    -
    24 log.style(clutchlog::level::critical, error);
    -
    25 CLUTCHLOG(critical,"Styles demo");
    -
    26
    -
    27 CLUTCHLOG(info,"Either using functions...");
    -
    28 std::cout << none("No style: ") << std::endl;
    -
    29 std::cout << note("NOTE: bold") << std::endl;
    -
    30 std::cout << info("INFO: green") << std::endl;
    -
    31
    -
    32 CLUTCHLOG(info,"... or tags.");
    -
    33 std::cout << warning << "WARNING" << end << ": bold magenta" << std::endl;
    -
    34 std::cout << error << "ERROR" << end << ": bold red" << std::endl;
    -
    35 std::cout << critical << "CRITICAL" << end << ": underlined black over red background" << std::endl;
    -
    36
    -
    37 std::ostringstream format;
    -
    38 clutchlog::fmt discreet(254);
    -
    39 format << "{level}: "
    -
    40 << discreet("{file}:")
    -
    41 << clutchlog::fmt(220, typo::inverse) << "{line}" // gold yellow
    -
    42 << clutchlog::fmt(typo::reset) << " {msg} ! " << std::endl;
    -
    43 log.format(format.str());
    -
    44 CLUTCHLOG(critical,"After having inserted styles within a new format template");
    -
    45}
    -
    46
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    -
    - - - - diff --git a/docs/t-color_8cpp_source.html b/docs/t-color_8cpp_source.html index 90fcfe0..67f1526 100644 --- a/docs/t-color_8cpp_source.html +++ b/docs/t-color_8cpp_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: t-color.cpp Source File @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,67 +84,70 @@ $(document).ready(function(){initNavTree('t-color_8cpp_source.html',''); initRes
    -
    t-color.cpp
    +
    +
    t-color.cpp
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6int main(/*const int argc, char* argv[]*/)
    -
    7{
    -
    8 using typo = clutchlog::fmt::typo;
    -
    9 using fg = clutchlog::fmt::fg;
    -
    10 using bg = clutchlog::fmt::bg;
    -
    11
    -
    12 clutchlog::fmt none;
    -
    13 clutchlog::fmt end(typo::reset);
    -
    14 clutchlog::fmt note(typo::bold);
    -
    15 clutchlog::fmt info(fg::green);
    -
    16 clutchlog::fmt warning(fg::magenta, typo::bold);
    -
    17 clutchlog::fmt error(fg::red, typo::bold);
    -
    18 clutchlog::fmt critical(bg::red, typo::underline, fg::black);
    -
    19
    -
    20 auto& log = clutchlog::logger();
    -
    21 log.threshold(clutchlog::level::info);
    -
    22
    -
    23 // Change a style.
    -
    24 log.style(clutchlog::level::critical, error);
    -
    25 CLUTCHLOG(critical,"Styles demo");
    -
    26
    -
    27 CLUTCHLOG(info,"Either using functions...");
    -
    28 std::cout << none("No style: ") << std::endl;
    -
    29 std::cout << note("NOTE: bold") << std::endl;
    -
    30 std::cout << info("INFO: green") << std::endl;
    -
    31
    -
    32 CLUTCHLOG(info,"... or tags.");
    -
    33 std::cout << warning << "WARNING" << end << ": bold magenta" << std::endl;
    -
    34 std::cout << error << "ERROR" << end << ": bold red" << std::endl;
    -
    35 std::cout << critical << "CRITICAL" << end << ": underlined black over red background" << std::endl;
    -
    36
    -
    37 std::ostringstream format;
    -
    38 clutchlog::fmt discreet(clutchlog::fmt::fg::white);
    -
    39 format << "{level}: "
    -
    40 << discreet("{file}:")
    -
    41 << clutchlog::fmt(clutchlog::fmt::fg::yellow) << "{line}"
    -
    42 << clutchlog::fmt(clutchlog::fmt::typo::reset) << " {msg} ! " << std::endl;
    -
    43 log.format(format.str());
    -
    44 CLUTCHLOG(critical,"After having inserted styles within a new format template");
    -
    45}
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    bg
    Background color codes.
    Definition: clutchlog.h:425
    -
    fg
    Foreground color codes.
    Definition: clutchlog.h:404
    +
    1 #include <iostream>
    +
    2 #include <limits>
    +
    3 
    +
    4 #include "../clutchlog/clutchlog.h"
    +
    5 
    +
    6 int main(/*const int argc, char* argv[]*/)
    +
    7 {
    +
    8  using typo = clutchlog::fmt::typo;
    +
    9  using fg = clutchlog::fmt::fg;
    +
    10  using bg = clutchlog::fmt::bg;
    +
    11 
    +
    12  clutchlog::fmt none;
    +
    13  clutchlog::fmt end(typo::reset);
    +
    14  clutchlog::fmt note(typo::bold);
    +
    15  clutchlog::fmt info(fg::green);
    +
    16  clutchlog::fmt warning(fg::magenta, typo::bold);
    +
    17  clutchlog::fmt error(fg::red, typo::bold);
    +
    18  clutchlog::fmt critical(bg::red, typo::underline, fg::black);
    +
    19 
    +
    20  auto& log = clutchlog::logger();
    +
    21  log.threshold(clutchlog::level::info);
    +
    22 
    +
    23  // Change a style.
    +
    24  log.style(clutchlog::level::critical, error);
    +
    25  CLUTCHLOG(critical,"Styles demo");
    +
    26 
    +
    27  CLUTCHLOG(info,"Either using functions...");
    +
    28  std::cout << none("No style: ") << std::endl;
    +
    29  std::cout << note("NOTE: bold") << std::endl;
    +
    30  std::cout << info("INFO: green") << std::endl;
    +
    31 
    +
    32  CLUTCHLOG(info,"... or tags.");
    +
    33  std::cout << warning << "WARNING" << end << ": bold magenta" << std::endl;
    +
    34  std::cout << error << "ERROR" << end << ": bold red" << std::endl;
    +
    35  std::cout << critical << "CRITICAL" << end << ": underlined black over red background" << std::endl;
    +
    36 
    +
    37  std::ostringstream format;
    +
    38  clutchlog::fmt discreet(clutchlog::fmt::fg::white);
    +
    39  format << "{level}: "
    +
    40  << discreet("{file}:")
    +
    41  << clutchlog::fmt(clutchlog::fmt::fg::yellow) << "{line}"
    +
    42  << clutchlog::fmt(clutchlog::fmt::typo::reset) << " {msg} ! " << std::endl;
    +
    43  log.format(format.str());
    +
    44  CLUTCHLOG(critical,"After having inserted styles within a new format template");
    +
    45 }
    +
    fg
    Foreground color codes.
    Definition: clutchlog.h:317
    +
    bg
    Background color codes.
    Definition: clutchlog.h:330
    +
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:296
    +
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:314
    +
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:81
    +
    typo
    Typographic style codes.
    Definition: clutchlog.h:343
    diff --git a/docs/t-demo-extravagant_8cpp_source.html b/docs/t-demo-extravagant_8cpp_source.html deleted file mode 100644 index eaadb70..0000000 --- a/docs/t-demo-extravagant_8cpp_source.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -clutchlog: t-demo-extravagant.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog -  0.16 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    t-demo-extravagant.cpp
    -
    -
    -
    1 #include <iostream>
    -
    2 
    -
    3 #include "../clutchlog/clutchlog.h"
    -
    4 
    -
    5 void dump_data()
    -
    6 {
    -
    7  CLUTCHLOG(progress, "Dump parsed data...");
    -
    8  CLUTCHLOG(debug, "Write in `data_dump.csv`");
    -
    9  CLUTCHLOG(debug, "Data frame size: " << 0 << "x" << "150");
    -
    10  CLUTCHLOG(xdebug, "Resolution: " << 0);
    -
    11 }
    -
    12 
    -
    13 void reset()
    -
    14 {
    -
    15  CLUTCHLOG(progress, "Reset data structures...");
    -
    16  CLUTCHLOG(debug, "OK");
    -
    17  CLUTCHLOG(info, "Reset functors...");
    -
    18  CLUTCHLOG(critical, "Impossible to reset, I cannot recover.");
    -
    19  dump_data();
    -
    20 }
    -
    21 
    -
    22 void process()
    -
    23 {
    -
    24  CLUTCHLOG(note, "Filling up data of size: " << 0);
    -
    25  CLUTCHLOG(error, "Cannot parse input, I will reset stuff.");
    -
    26  reset();
    -
    27  CLUTCHLOG(xdebug, "Last seen state: " << 0);
    -
    28 }
    -
    29 
    -
    30 void init_data()
    -
    31 {
    -
    32  CLUTCHLOG(debug, "Data frame size: " << 2 << "x" << "150");
    -
    33  CLUTCHLOG(xdebug, "Resolution: " << 0.001);
    -
    34  CLUTCHLOG(warning, "Input height < " << 3);
    -
    35 }
    -
    36 
    -
    37 void init_func()
    -
    38 {
    -
    39  CLUTCHLOG(progress, "Allocate memory...");
    -
    40  CLUTCHLOG(warning, "Dimension: " << 12);
    -
    41  CLUTCHLOG(debug, "OK");
    -
    42 }
    -
    43 
    -
    44 void init()
    -
    45 {
    -
    46  CLUTCHLOG(progress, "Initialize data structures...");
    -
    47  init_data();
    -
    48  CLUTCHLOG(debug, "OK");
    -
    49  CLUTCHLOG(progress, "Initialize functors...");
    -
    50  init_func();
    -
    51  CLUTCHLOG(debug, "OK");
    -
    52  CLUTCHLOG(progress, "Process...");
    -
    53  process();
    -
    54  CLUTCHLOG(debug, "OK");
    -
    55 }
    -
    56 
    -
    57 int main(const int argc, char* argv[])
    -
    58 {
    -
    59  using level = clutchlog::level;
    -
    60  using fmt = clutchlog::fmt;
    -
    61  using fg = clutchlog::fmt::fg;
    -
    62  using bg = clutchlog::fmt::bg;
    -
    63  using typo = clutchlog::fmt::typo;
    -
    64 
    -
    65  auto& log = clutchlog::logger();
    -
    66 
    -
    67  log.style(level::critical, 197);
    -
    68  log.style(level::error, 202);
    -
    69  log.style(level::warning, 208);
    -
    70  log.style(level::progress, 34);
    -
    71  log.style(level::note, 35);
    -
    72  log.style(level::info, 36);
    -
    73  log.style(level::debug, 39);
    -
    74  log.style(level::xdebug, 45);
    -
    75  std::ostringstream format;
    -
    76  fmt reset(typo::reset);
    -
    77  fmt discreet(fg::black);
    -
    78  fmt bold(fmt::typo::bold);
    -
    79 
    -
    80  log.depth_mark("| ");
    -
    81  log.hfill_min(400);
    -
    82  log.hfill_max(500);
    -
    83  log.hfill_mark('-');
    -
    84 
    -
    85  const short dark = 238;
    -
    86  const short lite = 245;
    -
    87 
    -
    88  std::vector<clutchlog::fmt> greys = {fmt(15)};
    -
    89  for(unsigned short i=255; i>231; i-=3) {
    -
    90  greys.push_back( fmt(i) );
    -
    91  }
    -
    92  log.depth_styles(greys);
    -
    93 
    -
    94  format
    -
    95  << fmt(dark,lite) << "{name}"
    -
    96  << fmt(fg::none,lite,typo::inverse) << "{level_fmt}"
    -
    97  << fmt(fg::none,bg::black,typo::inverse) << "{level_fmt}" << " {level_short} " << reset
    -
    98  << "{level_fmt} " << reset
    -
    99  << fmt(dark,bg::none) << "{depth_marks}" //<< reset
    -
    100  << "{level_fmt}"
    -
    101  // << "{funchash_fmt}"
    -
    102  << bold("{msg}")
    -
    103  // << discreet(" {hfill} ")
    -
    104  << "{funchash_fmt} <-{hfill}"
    -
    105  << fmt(dark,bg::none) << ""
    -
    106  << fmt(fg::none,dark) << "{funchash_fmt}{func} "
    -
    107  << fmt(lite,dark) << ""
    -
    108  << fmt(dark,lite) << "{filehash_fmt}{file}" << reset
    -
    109  << fmt(dark,lite) << ""
    -
    110  << fmt(lite,dark) << "{line}" << reset
    -
    111  << "\n";
    -
    112  log.format(format.str());
    -
    113 
    -
    114  log.out(std::clog);
    -
    115  log.strip_calls(4);
    -
    116 
    -
    117  if(argc <= 2) {
    -
    118  CLUTCHLOG(warning, "Log level not indicated, will default to xdebug");
    -
    119  log.threshold(level::xdebug);
    -
    120  } else {
    -
    121  try {
    -
    122  log.threshold(log.level_of(argv[1]));
    -
    123  } catch(std::out_of_range& err) {
    -
    124  CLUTCHLOG(critical,err.what());
    -
    125  exit(100);
    -
    126  }
    -
    127  }
    -
    128 
    -
    129  CLUTCHLOG(progress,"Start analysis");
    -
    130  init();
    -
    131  CLUTCHLOG(progress,"I have stopped");
    -
    132 }
    -
    133 
    -
    -
    -
    level
    Available log levels.
    Definition: clutchlog.h:313
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:306
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:379
    -
    bg
    Background color codes.
    Definition: clutchlog.h:424
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:98
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:392
    -
    fg
    Foreground color codes.
    Definition: clutchlog.h:403
    - - - - diff --git a/docs/t-demo_8cpp_source.html b/docs/t-demo_8cpp_source.html index ede3343..04d9dce 100644 --- a/docs/t-demo_8cpp_source.html +++ b/docs/t-demo_8cpp_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: t-demo.cpp Source File @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,112 +84,115 @@ $(document).ready(function(){initNavTree('t-demo_8cpp_source.html',''); initResi
    -
    t-demo.cpp
    +
    +
    t-demo.cpp
    -
    1#include <iostream>
    -
    2
    -
    3#include "../clutchlog/clutchlog.h"
    -
    4
    -
    5void i()
    -
    6{
    -
    7 CLUTCHLOG(progress, "Reset data structures...");
    -
    8 CLUTCHLOG(debug, "OK");
    -
    9 CLUTCHLOG(progress, "Reset functors...");
    -
    10 CLUTCHLOG(critical, "Impossible to reset, I cannot recover.");
    -
    11}
    -
    12
    -
    13void h()
    -
    14{
    -
    15 CLUTCHLOG(note, "Filling up data of size: " << 0);
    -
    16 CLUTCHLOG(error, "Cannot parse input, I will reset stuff.");
    -
    17 i();
    -
    18 CLUTCHLOG(xdebug, "Last seen state: " << 0);
    -
    19}
    -
    20
    -
    21void g()
    -
    22{
    -
    23 CLUTCHLOG(warning, "Input size < " << 1);
    -
    24 h();
    -
    25}
    -
    26
    -
    27void f()
    -
    28{
    -
    29 CLUTCHLOG(progress, "Initialize data structures...");
    -
    30 CLUTCHLOG(debug, "OK");
    -
    31 CLUTCHLOG(progress, "Initialize functors...");
    -
    32 CLUTCHLOG(debug, "OK");
    -
    33 g();
    -
    34}
    -
    35
    -
    36int main(const int argc, char* argv[])
    -
    37{
    -
    38 auto& log = clutchlog::logger();
    -
    39
    -
    40 log.style(clutchlog::level::critical,
    -
    41 clutchlog::fmt::fg::red);
    -
    42 log.style(clutchlog::level::error,
    -
    43 clutchlog::fmt::fg::red);
    -
    44 log.style(clutchlog::level::warning,
    -
    45 clutchlog::fmt::fg::magenta);
    -
    46 log.style(clutchlog::level::progress,
    -
    47 clutchlog::fmt::fg::yellow);
    -
    48 log.style(clutchlog::level::note,
    -
    49 clutchlog::fmt::fg::green);
    -
    50 log.style(clutchlog::level::info,
    -
    51 clutchlog::fmt::fg::magenta);
    -
    52 log.style(clutchlog::level::debug,
    -
    53 clutchlog::fmt::fg::cyan);
    -
    54 log.style(clutchlog::level::xdebug,
    -
    55 clutchlog::fmt::fg::blue);
    -
    56 std::ostringstream format;
    -
    57 clutchlog::fmt reset(clutchlog::fmt::typo::reset);
    -
    58 clutchlog::fmt discreet(clutchlog::fmt::fg::black);
    -
    59 clutchlog::fmt bold(clutchlog::fmt::typo::bold);
    -
    60 format << "{level_fmt}"
    -
    61 << "{level_letter}:"
    -
    62 << "{depth_marks} "
    -
    63 << bold("{msg}")
    -
    64 << discreet(" {hfill} ")
    -
    65 << "{level_fmt}{func}"
    -
    66 << discreet(" @ ")
    -
    67 << "{level_fmt}{file}"
    -
    68 << reset << ":"
    -
    69 << "{level_fmt}{line}"
    -
    70 << "\n";
    -
    71 log.format(format.str());
    -
    72
    -
    73 // log.hfill_max(100);
    -
    74 log.out(std::clog);
    -
    75 log.depth_mark(">");
    -
    76 log.threshold(clutchlog::level::warning);
    -
    77
    -
    78 if(argc <= 2) {
    -
    79 CLUTCHLOG(warning, "Log level not indicated, will default to xdebug");
    -
    80 log.threshold(clutchlog::level::xdebug);
    -
    81 } else {
    -
    82 try {
    -
    83 log.threshold(log.level_of(argv[1]));
    -
    84 } catch(std::out_of_range& err) {
    -
    85 CLUTCHLOG(critical,err.what());
    -
    86 exit(100);
    -
    87 }
    -
    88 }
    -
    89
    -
    90 CLUTCHLOG(progress,"Start something");
    -
    91 f();
    -
    92 CLUTCHLOG(progress,"I have stopped");
    -
    93}
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    +
    1 #include <iostream>
    +
    2 
    +
    3 #include "../clutchlog/clutchlog.h"
    +
    4 
    +
    5 void i()
    +
    6 {
    +
    7  CLUTCHLOG(progress, "Reset data structures...");
    +
    8  CLUTCHLOG(debug, "OK");
    +
    9  CLUTCHLOG(progress, "Reset functors...");
    +
    10  CLUTCHLOG(critical, "Impossible to reset, I cannot recover.");
    +
    11 }
    +
    12 
    +
    13 void h()
    +
    14 {
    +
    15  CLUTCHLOG(note, "Filling up data of size: " << 0);
    +
    16  CLUTCHLOG(error, "Cannot parse input, I will reset stuff.");
    +
    17  i();
    +
    18  CLUTCHLOG(xdebug, "Last seen state: " << 0);
    +
    19 }
    +
    20 
    +
    21 void g()
    +
    22 {
    +
    23  CLUTCHLOG(warning, "Input size < " << 1);
    +
    24  h();
    +
    25 }
    +
    26 
    +
    27 void f()
    +
    28 {
    +
    29  CLUTCHLOG(progress, "Initialize data structures...");
    +
    30  CLUTCHLOG(debug, "OK");
    +
    31  CLUTCHLOG(progress, "Initialize functors...");
    +
    32  CLUTCHLOG(debug, "OK");
    +
    33  g();
    +
    34 }
    +
    35 
    +
    36 int main(const int argc, char* argv[])
    +
    37 {
    +
    38  auto& log = clutchlog::logger();
    +
    39 
    +
    40  log.style(clutchlog::level::critical,
    +
    41  clutchlog::fmt::fg::red);
    +
    42  log.style(clutchlog::level::error,
    +
    43  clutchlog::fmt::fg::red);
    +
    44  log.style(clutchlog::level::warning,
    +
    45  clutchlog::fmt::fg::magenta);
    +
    46  log.style(clutchlog::level::progress,
    +
    47  clutchlog::fmt::fg::yellow);
    +
    48  log.style(clutchlog::level::note,
    +
    49  clutchlog::fmt::fg::green);
    +
    50  log.style(clutchlog::level::info,
    +
    51  clutchlog::fmt::fg::magenta);
    +
    52  log.style(clutchlog::level::debug,
    +
    53  clutchlog::fmt::fg::cyan);
    +
    54  log.style(clutchlog::level::xdebug,
    +
    55  clutchlog::fmt::fg::blue);
    +
    56  std::ostringstream format;
    +
    57  clutchlog::fmt reset(clutchlog::fmt::typo::reset);
    +
    58  clutchlog::fmt discreet(clutchlog::fmt::fg::black);
    +
    59  clutchlog::fmt bold(clutchlog::fmt::typo::bold);
    +
    60  format << "{level_fmt}"
    +
    61  << "{level_letter}:"
    +
    62  << "{depth_marks} "
    +
    63  << bold("{msg}")
    +
    64  << discreet(" {hfill} ")
    +
    65  << "{level_fmt}{func}"
    +
    66  << discreet(" @ ")
    +
    67  << "{level_fmt}{file}"
    +
    68  << reset << ":"
    +
    69  << "{level_fmt}{line}"
    +
    70  << "\n";
    +
    71  log.format(format.str());
    +
    72 
    +
    73  // log.hfill_max(100);
    +
    74  log.out(std::clog);
    +
    75  log.depth_mark(">");
    +
    76  log.threshold(clutchlog::level::warning);
    +
    77 
    +
    78  if(argc <= 2) {
    +
    79  CLUTCHLOG(warning, "Log level not indicated, will default to xdebug");
    +
    80  log.threshold(clutchlog::level::xdebug);
    +
    81  } else {
    +
    82  try {
    +
    83  log.threshold(log.level_of(argv[1]));
    +
    84  } catch(std::out_of_range& err) {
    +
    85  CLUTCHLOG(critical,err.what());
    +
    86  exit(100);
    +
    87  }
    +
    88  }
    +
    89 
    +
    90  CLUTCHLOG(progress,"Start something");
    +
    91  f();
    +
    92  CLUTCHLOG(progress,"I have stopped");
    +
    93 }
    +
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:296
    +
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:314
    +
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:81
    diff --git a/docs/t-depth-delta_8cpp_source.html b/docs/t-depth-delta_8cpp_source.html deleted file mode 100644 index 152053b..0000000 --- a/docs/t-depth-delta_8cpp_source.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -clutchlog: t-depth-delta.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-depth-delta.cpp
    -
    -
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6void deepcall()
    -
    7{
    -
    8 CLUTCHLOG(warning,"at depth 4");
    -
    9 CLUTCHLOGD(warning,"at depth 4+1", 1);
    -
    10 CLUTCHLOGD(warning,"at depth 4+2", 2);
    -
    11}
    -
    12
    -
    13void subsubsubcall()
    -
    14{
    -
    15 CLUTCHLOG(warning,"at depth 3");
    -
    16 CLUTCHLOGD(warning,"at depth 3+1", 1);
    -
    17 CLUTCHLOGD(warning,"at depth 3+2", 2);
    -
    18 deepcall();
    -
    19}
    -
    20
    -
    21void subsubcall()
    -
    22{
    -
    23 CLUTCHLOG(warning,"at depth 2");
    -
    24 CLUTCHLOGD(warning,"at depth 2+1", 1);
    -
    25 CLUTCHLOGD(warning,"at depth 2+2", 2);
    -
    26 subsubsubcall();
    -
    27}
    -
    28
    -
    29void subcall()
    -
    30{
    -
    31 CLUTCHLOG(warning,"at depth 1");
    -
    32 CLUTCHLOGD(warning,"at depth 1+1", 1);
    -
    33 CLUTCHLOGD(warning,"at depth 1+2", 2);
    -
    34 subsubcall();
    -
    35}
    -
    36
    -
    37int main(/*const int argc, char* argv[]*/)
    -
    38{
    -
    39 auto& log = clutchlog::logger();
    -
    40 using fmt = clutchlog::fmt;
    -
    41 using typo = clutchlog::fmt::typo;
    -
    42
    -
    43 fmt reset(typo::reset);
    -
    44 std::ostringstream tpl;
    -
    45 tpl << "{depth_fmt}{depth} {depth_marks}"
    -
    46 << reset << "{funchash_fmt}in {func} {msg}\t\n";
    -
    47 log.format(tpl.str());
    -
    48 log.threshold(clutchlog::level::xdebug);
    -
    49 std::vector<fmt> greys{ fmt(15) };
    -
    50 for(unsigned short i=255; i > 231; i-=3) {
    -
    51 greys.push_back( fmt(i) ); }
    -
    52 log.depth_styles( greys );
    -
    53 log.depth_mark("| ");
    -
    54
    -
    55 CLUTCHLOG(warning,"in main");
    -
    56 subcall();
    -
    57}
    -
    58
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOGD(LEVEL, WHAT, DEPTH_DELTA)
    Log a message at the given level and with a given depth delta.
    Definition: clutchlog.h:82
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    -
    - - - - diff --git a/docs/t-dump_8cpp_source.html b/docs/t-dump_8cpp_source.html index 90d3cac..79687c4 100644 --- a/docs/t-dump_8cpp_source.html +++ b/docs/t-dump_8cpp_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: t-dump.cpp Source File @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,39 +84,42 @@ $(document).ready(function(){initNavTree('t-dump_8cpp_source.html',''); initResi
    -
    t-dump.cpp
    +
    +
    t-dump.cpp
    -
    1#include <iostream>
    -
    2#include <algorithm>
    -
    3#include <random>
    -
    4
    -
    5#include "../clutchlog/clutchlog.h"
    -
    6
    -
    7int main(/*const int argc, char* argv[]*/)
    -
    8{
    -
    9 auto& log = clutchlog::logger();
    -
    10
    -
    11 log.out(std::clog);
    -
    12 log.threshold(clutchlog::level::xdebug);
    -
    13
    -
    14 std::vector<std::string> msg = {"hello", "world", "!"};
    -
    15
    -
    16 CLUTCHDUMP(xdebug, msg, "test_{n}.dat");
    -
    17
    -
    18 std::vector<int> v(3);
    -
    19 std::generate(v.begin(), v.end(), std::rand);
    -
    20 CLUTCHDUMP(info, v, "rand_{n}.dat");
    -
    21}
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHDUMP(LEVEL, CONTAINER, FILENAME)
    Dump the given container.
    Definition: clutchlog.h:108
    +
    1 #include <iostream>
    +
    2 #include <algorithm>
    +
    3 #include <random>
    +
    4 
    +
    5 #include "../clutchlog/clutchlog.h"
    +
    6 
    +
    7 int main(/*const int argc, char* argv[]*/)
    +
    8 {
    +
    9  auto& log = clutchlog::logger();
    +
    10 
    +
    11  log.out(std::clog);
    +
    12  log.threshold(clutchlog::level::xdebug);
    +
    13 
    +
    14  std::vector<std::string> msg = {"hello", "world", "!"};
    +
    15 
    +
    16  CLUTCHDUMP(xdebug, msg, "test_{n}.dat");
    +
    17 
    +
    18  std::vector<int> v(3);
    +
    19  std::generate(v.begin(), v.end(), std::rand);
    +
    20  CLUTCHDUMP(info, v, "rand_{n}.dat");
    +
    21 }
    +
    #define CLUTCHDUMP(LEVEL, CONTAINER, FILENAME)
    Dump the given container.
    Definition: clutchlog.h:98
    +
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:296
    diff --git a/docs/t-extra_8cpp_source.html b/docs/t-extra_8cpp_source.html deleted file mode 100644 index 7a05e50..0000000 --- a/docs/t-extra_8cpp_source.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - -clutchlog: t-extra.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-extra.cpp
    -
    -
    -
    1#include <iostream>
    -
    2
    -
    3#include "../clutchlog/clutchlog.h"
    -
    4
    -
    5void dump_data()
    -
    6{
    -
    7 CLUTCHLOG(progress, "Dump parsed data...");
    -
    8 CLUTCHLOG(debug, "Write in `data_dump.csv`");
    -
    9 CLUTCHLOG(debug, "Data frame size: " << 0 << "x" << "150");
    -
    10 CLUTCHLOG(xdebug, "Resolution: " << 0);
    -
    11}
    -
    12
    -
    13void reset()
    -
    14{
    -
    15 CLUTCHLOG(progress, "Reset data structures...");
    -
    16 CLUTCHLOG(debug, "OK");
    -
    17 CLUTCHLOG(info, "Reset functors...");
    -
    18 CLUTCHLOG(critical, "Impossible to reset, I cannot recover.");
    -
    19 dump_data();
    -
    20}
    -
    21
    -
    22void process()
    -
    23{
    -
    24 CLUTCHLOG(note, "Filling up data of size: " << 0);
    -
    25 CLUTCHLOG(error, "Cannot parse input, I will reset stuff.");
    -
    26 reset();
    -
    27 CLUTCHLOG(xdebug, "Last seen state: " << 0);
    -
    28}
    -
    29
    -
    30void init_data()
    -
    31{
    -
    32 CLUTCHLOG(debug, "Data frame size: " << 2 << "x" << "150");
    -
    33 CLUTCHLOG(xdebug, "Resolution: " << 0.001);
    -
    34 CLUTCHLOG(warning, "Input height < " << 3);
    -
    35}
    -
    36
    -
    37void init_func()
    -
    38{
    -
    39 CLUTCHLOG(progress, "Allocate memory...");
    -
    40 CLUTCHLOG(warning, "Dimension: " << 12);
    -
    41 CLUTCHLOG(debug, "OK");
    -
    42}
    -
    43
    -
    44void init()
    -
    45{
    -
    46 CLUTCHLOG(progress, "Initialize data structures...");
    -
    47 init_data();
    -
    48 CLUTCHLOG(debug, "OK");
    -
    49 CLUTCHLOG(progress, "Initialize functors...");
    -
    50 init_func();
    -
    51 CLUTCHLOG(debug, "OK");
    -
    52 CLUTCHLOG(progress, "Process...");
    -
    53 process();
    -
    54 CLUTCHLOG(debug, "OK");
    -
    55}
    -
    56
    -
    57int main(const int argc, char* argv[])
    -
    58{
    -
    59 using level = clutchlog::level;
    -
    60 using fmt = clutchlog::fmt;
    -
    61 using fg = clutchlog::fmt::fg;
    -
    62 using bg = clutchlog::fmt::bg;
    -
    63 using typo = clutchlog::fmt::typo;
    -
    64
    -
    65 auto& log = clutchlog::logger();
    -
    66
    -
    67 log.style(level::critical, 197);
    -
    68 log.style(level::error, 202);
    -
    69 log.style(level::warning, 208);
    -
    70 log.style(level::progress, 34);
    -
    71 log.style(level::note, 35);
    -
    72 log.style(level::info, 36);
    -
    73 log.style(level::debug, 39);
    -
    74 log.style(level::xdebug, 45);
    -
    75 std::ostringstream format;
    -
    76 fmt reset(typo::reset);
    -
    77 fmt discreet(fg::black);
    -
    78 fmt bold(fmt::typo::bold);
    -
    79
    -
    80 log.depth_mark("| ");
    -
    81 log.hfill_mark('-');
    -
    82
    -
    83 const short dark = 238;
    -
    84 const short lite = 245;
    -
    85
    -
    86 std::vector<clutchlog::fmt> greys{ fmt(15) };
    -
    87 for(unsigned short i=255; i>231; i-=3) {
    -
    88 greys.push_back( fmt(i) );
    -
    89 }
    -
    90 log.depth_styles(greys);
    -
    91
    -
    92 format
    -
    93 << fmt(dark,lite) << "{name}"
    -
    94 << fmt(fg::none,lite,typo::inverse) << "{level_fmt}"
    -
    95 << fmt(fg::none,bg::black,typo::inverse) << "{level_fmt}" << " {level_short} " << reset
    -
    96 << "{level_fmt} " << reset
    -
    97 << fmt(dark,bg::none, typo::bold) << "{depth_marks}" << reset
    -
    98 // << "{funchash_fmt}"
    -
    99 << "{level_fmt}"
    -
    100 << bold("{msg}")
    -
    101 // << discreet(" {hfill} ")
    -
    102 << fmt(dark,bg::none) << " ·" << ""
    -
    103 << fmt(fg::none,dark) << "{funchash_fmt}-{hfill}"
    -
    104 << fmt(fg::none,dark) << " {funchash_fmt}{func} "
    -
    105 << fmt(lite,dark) << ""
    -
    106 // << fmt(dark,lite) << "{filehash_fmt}{file}" << reset
    -
    107 << fmt(dark,lite) << "{file}" << reset
    -
    108 << fmt(dark,lite) << ""
    -
    109 << fmt(lite,dark) << "{line}" << reset
    -
    110 << "\n";
    -
    111 log.format(format.str());
    -
    112
    -
    113 log.out(std::clog);
    -
    114 log.strip_calls(4);
    -
    115 log.filename(clutchlog::filename::dirstem);
    -
    116
    -
    117 if(argc <= 2) {
    -
    118 CLUTCHLOG(warning, "Log level not indicated, will default to xdebug");
    -
    119 log.threshold(level::xdebug);
    -
    120 } else {
    -
    121 try {
    -
    122 log.threshold(log.level_of(argv[1]));
    -
    123 } catch(std::out_of_range& err) {
    -
    124 CLUTCHLOG(critical,err.what());
    -
    125 exit(100);
    -
    126 }
    -
    127 }
    -
    128
    -
    129 CLUTCHLOG(progress,"Start analysis");
    -
    130 init();
    -
    131 CLUTCHLOG(progress,"I have stopped");
    -
    132}
    -
    133
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    level
    Available log levels.
    Definition: clutchlog.h:314
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    bg
    Background color codes.
    Definition: clutchlog.h:425
    -
    fg
    Foreground color codes.
    Definition: clutchlog.h:404
    -
    -
    - - - - diff --git a/docs/t-filename_8cpp_source.html b/docs/t-filename_8cpp_source.html deleted file mode 100644 index 609b894..0000000 --- a/docs/t-filename_8cpp_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -clutchlog: t-filename.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-filename.cpp
    -
    -
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6int main(/*const int argc, char* argv[]*/)
    -
    7{
    -
    8 auto& log = clutchlog::logger();
    -
    9 log.format("{msg}\t= {filehash_fmt}{file}\n");
    -
    10 log.threshold(clutchlog::level::xdebug);
    -
    11
    -
    12 log.filename(clutchlog::filename::path);
    -
    13 CLUTCHLOG(note,"clutchlog::filename::path");
    -
    14
    -
    15 log.filename(clutchlog::filename::base);
    -
    16 CLUTCHLOG(note,"clutchlog::filename::base");
    -
    17
    -
    18 log.filename(clutchlog::filename::dir);
    -
    19 CLUTCHLOG(note,"clutchlog::filename::dir");
    -
    20
    -
    21 log.filename(clutchlog::filename::dirbase);
    -
    22 CLUTCHLOG(note,"clutchlog::filename::dirbase");
    -
    23
    -
    24 log.filename(clutchlog::filename::stem);
    -
    25 CLUTCHLOG(note,"clutchlog::filename::stem");
    -
    26
    -
    27 log.filename(clutchlog::filename::dirstem);
    -
    28 CLUTCHLOG(note,"clutchlog::filename::dirstem");
    -
    29}
    -
    30
    -
    31
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    -
    - - - - diff --git a/docs/t-fmt-constructors_8cpp_source.html b/docs/t-fmt-constructors_8cpp_source.html deleted file mode 100644 index 4a68835..0000000 --- a/docs/t-fmt-constructors_8cpp_source.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -clutchlog: t-fmt-constructors.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-fmt-constructors.cpp
    -
    -
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6int main(/*const int argc, char* argv[]*/)
    -
    7{
    -
    8 using fmt = clutchlog::fmt;
    -
    9 using fg = clutchlog::fmt::fg;
    -
    10 using bg = clutchlog::fmt::bg;
    -
    11 using typo = clutchlog::fmt::typo;
    -
    12
    -
    13 fmt none;
    -
    14 fmt c16_full(fg::red , bg::black , typo::bold);
    -
    15 fmt c16_nofg(bg::black , typo::bold);
    -
    16 fmt c16_nobg(fg::red , typo::bold);
    -
    17 fmt c16_fg (fg::red );
    -
    18 fmt c16_bg (bg::red );
    -
    19 fmt c16_typo(typo::bold);
    -
    20 fmt c16_bft (bg::black , fg::red , typo::bold);
    -
    21 fmt c16_bgfg(bg::black , fg::red );
    -
    22 fmt c16_tbf (typo::bold, bg::black , fg::red );
    -
    23 fmt c16_tfb (typo::bold, fg::red , bg::black );
    -
    24 fmt c16_tf (typo::bold, fg::red );
    -
    25 fmt c16_tb (typo::bold, bg::black );
    -
    26
    -
    27 fmt c256_fbt(196 , 236 , typo::bold);
    -
    28 fmt c256_ft (196 , typo::bold);
    -
    29 fmt c256_fb (196 , 236 );
    -
    30 fmt c256_nbt(fg::none, 236 , typo::bold);
    -
    31 fmt c256_fnt(196 , bg::none , typo::bold);
    -
    32 fmt c256_nb (fg::none, 236 );
    -
    33 fmt c256_fn (196 , bg::none );
    -
    34
    -
    35 fmt c16M_fbt(255,10,10 , 10,10,20 , typo::bold);
    -
    36 fmt c16M_ft (255,10,10 , typo::bold);
    -
    37 fmt c16M_fb (255,10,10 , 10,10,20 );
    -
    38 fmt c16M_nbt(fg::none , 10,10,20 , typo::bold);
    -
    39 fmt c16M_fnt(255,10,10 , bg::none , typo::bold);
    -
    40 fmt c16M_nb (fg::none , 10,10,20 );
    -
    41 fmt c16M_fn (255,10,10 , bg::none );
    -
    42}
    -
    43
    -
    44
    -
    45
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    bg
    Background color codes.
    Definition: clutchlog.h:425
    -
    fg
    Foreground color codes.
    Definition: clutchlog.h:404
    -
    -
    - - - - diff --git a/docs/t-hash-color_8cpp_source.html b/docs/t-hash-color_8cpp_source.html deleted file mode 100644 index 383f744..0000000 --- a/docs/t-hash-color_8cpp_source.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -clutchlog: t-hash-color.cpp Source File - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    clutchlog 0.17 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    t-hash-color.cpp
    -
    -
    -
    1#include <iostream>
    -
    2#include <limits>
    -
    3
    -
    4#include "../clutchlog/clutchlog.h"
    -
    5
    -
    6void deepcall()
    -
    7{
    -
    8 CLUTCHLOG(warning,"at depth 4");
    -
    9}
    -
    10
    -
    11void subsubsubcall()
    -
    12{
    -
    13 CLUTCHLOG(warning,"at depth 3");
    -
    14 deepcall();
    -
    15}
    -
    16
    -
    17void subsubcall()
    -
    18{
    -
    19 CLUTCHLOG(warning,"at depth 2");
    -
    20 subsubsubcall();
    -
    21}
    -
    22
    -
    23void subcall()
    -
    24{
    -
    25 CLUTCHLOG(warning,"at depth 1");
    -
    26 subsubcall();
    -
    27}
    -
    28
    -
    29int main(/*const int argc, char* argv[]*/)
    -
    30{
    -
    31 auto& log = clutchlog::logger();
    -
    32 using fmt = clutchlog::fmt;
    -
    33 using typo = clutchlog::fmt::typo;
    -
    34
    -
    35 fmt reset(typo::reset);
    -
    36 std::ostringstream tpl;
    -
    37 tpl << "{level_fmt}Having a {level} {filehash_fmt}within {file} {funchash_fmt}calling {func} {depth_fmt}at depth {depth_marks} {depth} "
    -
    38 << reset << " : {msg}\n";
    -
    39 log.format(tpl.str());
    -
    40 log.threshold(clutchlog::level::xdebug);
    -
    41
    -
    42 log.filehash_styles( {fmt(fmt::fg::red), fmt(fmt::fg::yellow)} );
    -
    43 log.funchash_styles( {fmt(fmt::fg::green), fmt(fmt::fg::blue),
    -
    44 fmt(fmt::fg::bright_green), fmt(fmt::fg::bright_blue), fmt(fmt::fg::magenta)} );
    -
    45 log.depth_styles( {fmt(255),fmt(250),fmt(245),fmt(240)} );
    -
    46
    -
    47 CLUTCHLOG(warning,"in main");
    -
    48 subcall();
    -
    49}
    -
    Color and style formatter for ANSI terminal escape sequences.
    Definition: clutchlog.h:380
    -
    typo
    Typographic style codes.
    Definition: clutchlog.h:393
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    -
    -
    - - - - diff --git a/docs/t-log_8cpp_source.html b/docs/t-log_8cpp_source.html index cb78594..b65f4c0 100644 --- a/docs/t-log_8cpp_source.html +++ b/docs/t-log_8cpp_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: t-log.cpp Source File @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,88 +84,91 @@ $(document).ready(function(){initNavTree('t-log_8cpp_source.html',''); initResiz
    -
    t-log.cpp
    +
    +
    t-log.cpp
    -
    1#include <iostream>
    -
    2
    -
    3#include "../clutchlog/clutchlog.h"
    -
    4
    -
    5void h()
    -
    6{
    -
    7 CLUTCHLOG(info, "!");
    -
    8 std::clog << "--" << std::endl;
    -
    9}
    -
    10
    -
    11void g()
    -
    12{
    -
    13 CLUTCHLOG(warning, "world");
    -
    14 h();
    -
    15}
    -
    16
    -
    17void f()
    -
    18{
    -
    19 CLUTCHLOG(error, "hello ");
    -
    20 g();
    -
    21}
    -
    22
    -
    23int main(/*const int argc, char* argv[]*/)
    -
    24{
    -
    25 auto& log = clutchlog::logger();
    -
    26
    -
    27 log.out(std::clog);
    -
    28
    -
    29 std::clog << "depth: 99; threshold: xdebug; location: .*" << std::endl;
    -
    30#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    -
    31 log.depth(99);
    -
    32#endif
    -
    33 log.threshold(clutchlog::level::xdebug);
    -
    34 log.location(".*",".*");
    -
    35 f();
    -
    36
    -
    37 std::clog << "depth: 4; threshold: xdebug; location: ,*" << std::endl;
    -
    38#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    -
    39 log.depth(4);
    -
    40#endif
    -
    41 assert(log.levels().find("XDebug") != std::end(log.levels())); // contains
    -
    42 assert(log.levels().find("Xdebug") == std::end(log.levels())); // not contains
    -
    43 log.threshold("XDebug");
    -
    44 log.location(".*");
    -
    45 f();
    -
    46
    -
    47 std::clog << "depth: 99; threshold: warning; location: .*" << std::endl;
    -
    48#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    -
    49 log.depth(99);
    -
    50#endif
    -
    51 log.threshold(clutchlog::level::warning);
    -
    52 log.location(".*");
    -
    53 f();
    -
    54
    -
    55 std::clog << "depth: 99; threshold: xdebug; location: 'core','g'" << std::endl;
    -
    56#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    -
    57 log.depth(99);
    -
    58#endif
    -
    59 log.threshold(clutchlog::level::xdebug);
    -
    60 log.location("core","g");
    -
    61 f();
    -
    62
    -
    63 std::clog << "depth: 99; threshold: debug; location: '.*','(g|h)'" << std::endl;
    -
    64#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    -
    65 log.depth(99);
    -
    66#endif
    -
    67 log.threshold("Debug");
    -
    68 log.location(".*","(g|h)");
    -
    69 f();
    -
    70}
    -
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:307
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    +
    1 #include <iostream>
    +
    2 
    +
    3 #include "../clutchlog/clutchlog.h"
    +
    4 
    +
    5 void h()
    +
    6 {
    +
    7  CLUTCHLOG(info, "!");
    +
    8  std::clog << "--" << std::endl;
    +
    9 }
    +
    10 
    +
    11 void g()
    +
    12 {
    +
    13  CLUTCHLOG(warning, "world");
    +
    14  h();
    +
    15 }
    +
    16 
    +
    17 void f()
    +
    18 {
    +
    19  CLUTCHLOG(error, "hello ");
    +
    20  g();
    +
    21 }
    +
    22 
    +
    23 int main(/*const int argc, char* argv[]*/)
    +
    24 {
    +
    25  auto& log = clutchlog::logger();
    +
    26 
    +
    27  log.out(std::clog);
    +
    28 
    +
    29  std::clog << "depth: 99; threshold: xdebug; location: .*" << std::endl;
    +
    30 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    +
    31  log.depth(99);
    +
    32 #endif
    +
    33  log.threshold(clutchlog::level::xdebug);
    +
    34  log.location(".*",".*");
    +
    35  f();
    +
    36 
    +
    37  std::clog << "depth: 4; threshold: xdebug; location: ,*" << std::endl;
    +
    38 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    +
    39  log.depth(4);
    +
    40 #endif
    +
    41  assert(log.levels().find("XDebug") != std::end(log.levels())); // contains
    +
    42  assert(log.levels().find("Xdebug") == std::end(log.levels())); // not contains
    +
    43  log.threshold("XDebug");
    +
    44  log.location(".*");
    +
    45  f();
    +
    46 
    +
    47  std::clog << "depth: 99; threshold: warning; location: .*" << std::endl;
    +
    48 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    +
    49  log.depth(99);
    +
    50 #endif
    +
    51  log.threshold(clutchlog::level::warning);
    +
    52  log.location(".*");
    +
    53  f();
    +
    54 
    +
    55  std::clog << "depth: 99; threshold: xdebug; location: 'core','g'" << std::endl;
    +
    56 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    +
    57  log.depth(99);
    +
    58 #endif
    +
    59  log.threshold(clutchlog::level::xdebug);
    +
    60  log.location("core","g");
    +
    61  f();
    +
    62 
    +
    63  std::clog << "depth: 99; threshold: debug; location: '.*','(g|h)'" << std::endl;
    +
    64 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
    +
    65  log.depth(99);
    +
    66 #endif
    +
    67  log.threshold("Debug");
    +
    68  log.location(".*","(g|h)");
    +
    69  f();
    +
    70 }
    +
    static clutchlog & logger()
    Get the logger instance.
    Definition: clutchlog.h:296
    +
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:81
    diff --git a/docs/t-one-line-if_8cpp_source.html b/docs/t-one-line-if_8cpp_source.html index 6c58249..1b9d10f 100644 --- a/docs/t-one-line-if_8cpp_source.html +++ b/docs/t-one-line-if_8cpp_source.html @@ -2,8 +2,8 @@ - - + + clutchlog: t-one-line-if.cpp Source File @@ -24,10 +24,11 @@
    - + - @@ -35,22 +36,21 @@
    -
    clutchlog 0.17 +
    +
    clutchlog +  0.12
    - + +/* @license-end */
    @@ -64,7 +64,7 @@ $(function() {
    @@ -84,31 +84,34 @@ $(document).ready(function(){initNavTree('t-one-line-if_8cpp_source.html',''); i
    -
    t-one-line-if.cpp
    +
    +
    t-one-line-if.cpp
    -
    1#include "../clutchlog/clutchlog.h"
    -
    2
    -
    3int main()
    -
    4{
    -
    5 if(true)
    -
    6 CLUTCHLOG(error, "WHAT?");
    -
    7 else
    -
    8 CLUTCHLOG(info, "OH!");
    -
    9
    -
    10 if(false)
    -
    11 CLUTCHLOG(info, "AH!");
    -
    12 else
    -
    13 CLUTCHLOG(error, "NO!");
    -
    14}
    -
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:99
    +
    1 #include "../clutchlog/clutchlog.h"
    +
    2 
    +
    3 int main()
    +
    4 {
    +
    5  if(true)
    +
    6  CLUTCHLOG(error, "WHAT?");
    +
    7  else
    +
    8  CLUTCHLOG(info, "OH!");
    +
    9 
    +
    10  if(false)
    +
    11  CLUTCHLOG(info, "AH!");
    +
    12  else
    +
    13  CLUTCHLOG(error, "NO!");
    +
    14 }
    +
    #define CLUTCHLOG(LEVEL, WHAT)
    Log a message at the given level.
    Definition: clutchlog.h:81
    diff --git a/docs/tabs.css b/docs/tabs.css index fb0977a..7d45d36 100644 --- a/docs/tabs.css +++ b/docs/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/tests/t-assert.cpp b/tests/t-assert.cpp index 3c36e22..b08d238 100644 --- a/tests/t-assert.cpp +++ b/tests/t-assert.cpp @@ -1,6 +1,5 @@ #include #include -#include #include "../clutchlog/clutchlog.h" diff --git a/tests/t-color16M.cpp b/tests/t-color16M.cpp deleted file mode 100644 index 0811456..0000000 --- a/tests/t-color16M.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include - -#include "../clutchlog/clutchlog.h" - -int main(/*const int argc, char* argv[]*/) -{ - using typo = clutchlog::fmt::typo; - // using fg = clutchlog::fmt::fg; - // using bg = clutchlog::fmt::bg; - - clutchlog::fmt none; - clutchlog::fmt end(typo::reset); - clutchlog::fmt note(typo::bold); - clutchlog::fmt info(120,255,120); // greenish - clutchlog::fmt warning("#ff0055", typo::bold); // magentaish - clutchlog::fmt error(255,100,150, typo::bold); // redish magenta - clutchlog::fmt critical("#ffff00", "#ff0000"); // Yellow over red. - - auto& log = clutchlog::logger(); - log.threshold(clutchlog::level::info); - - // Change a style. - log.style(clutchlog::level::critical, error); - CLUTCHLOG(critical,"Styles demo"); - - CLUTCHLOG(info,"Either using functions..."); - std::cout << none("No style: ") << std::endl; - std::cout << note("NOTE: bold") << std::endl; - std::cout << info("INFO: green") << std::endl; - - CLUTCHLOG(info,"... or tags."); - std::cout << warning << "WARNING" << end << ": bold magenta" << std::endl; - std::cout << error << "ERROR" << end << ": bold red" << std::endl; - std::cout << critical << "CRITICAL" << end << ": underlined black over red background" << std::endl; - - std::ostringstream format; - clutchlog::fmt discreet("#888888", typo::inverse); - format << "{level}: " - << discreet("{file}") << ":" - << clutchlog::fmt(/*front RGB*/200,150,0, /*back RGB*/0,0,0) << "{line}" // gold yellow over black - << clutchlog::fmt(typo::reset) << " {msg} ! " << std::endl; - log.format(format.str()); - CLUTCHLOG(critical,"After having inserted styles within a new format template"); -} - - diff --git a/tests/t-color256.cpp b/tests/t-color256.cpp deleted file mode 100644 index 00420f7..0000000 --- a/tests/t-color256.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -#include "../clutchlog/clutchlog.h" - -int main(/*const int argc, char* argv[]*/) -{ - using typo = clutchlog::fmt::typo; - // using fg = clutchlog::fmt::fg; - // using bg = clutchlog::fmt::bg; - - clutchlog::fmt none; - clutchlog::fmt end(typo::reset); - clutchlog::fmt note(typo::bold); - clutchlog::fmt info(106); // greenish - clutchlog::fmt warning(171, typo::bold); // magentaish - clutchlog::fmt error(198, typo::bold); // redish magenta - clutchlog::fmt critical(226, 196, typo::underline); // Yellow over red. - - auto& log = clutchlog::logger(); - log.threshold(clutchlog::level::info); - - // Change a style. - log.style(clutchlog::level::critical, error); - CLUTCHLOG(critical,"Styles demo"); - - CLUTCHLOG(info,"Either using functions..."); - std::cout << none("No style: ") << std::endl; - std::cout << note("NOTE: bold") << std::endl; - std::cout << info("INFO: green") << std::endl; - - CLUTCHLOG(info,"... or tags."); - std::cout << warning << "WARNING" << end << ": bold magenta" << std::endl; - std::cout << error << "ERROR" << end << ": bold red" << std::endl; - std::cout << critical << "CRITICAL" << end << ": underlined black over red background" << std::endl; - - std::ostringstream format; - clutchlog::fmt discreet(254); - format << "{level}: " - << discreet("{file}:") - << clutchlog::fmt(220, typo::inverse) << "{line}" // gold yellow - << clutchlog::fmt(typo::reset) << " {msg} ! " << std::endl; - log.format(format.str()); - CLUTCHLOG(critical,"After having inserted styles within a new format template"); -} - diff --git a/tests/t-depth-delta.cpp b/tests/t-depth-delta.cpp deleted file mode 100644 index 0db389d..0000000 --- a/tests/t-depth-delta.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include -#include - -#include "../clutchlog/clutchlog.h" - -void deepcall() -{ - CLUTCHLOG(warning,"at depth 4"); - CLUTCHLOGD(warning,"at depth 4+1", 1); - CLUTCHLOGD(warning,"at depth 4+2", 2); -} - -void subsubsubcall() -{ - CLUTCHLOG(warning,"at depth 3"); - CLUTCHLOGD(warning,"at depth 3+1", 1); - CLUTCHLOGD(warning,"at depth 3+2", 2); - deepcall(); -} - -void subsubcall() -{ - CLUTCHLOG(warning,"at depth 2"); - CLUTCHLOGD(warning,"at depth 2+1", 1); - CLUTCHLOGD(warning,"at depth 2+2", 2); - subsubsubcall(); -} - -void subcall() -{ - CLUTCHLOG(warning,"at depth 1"); - CLUTCHLOGD(warning,"at depth 1+1", 1); - CLUTCHLOGD(warning,"at depth 1+2", 2); - subsubcall(); -} - -int main(/*const int argc, char* argv[]*/) -{ - auto& log = clutchlog::logger(); - using fmt = clutchlog::fmt; - using typo = clutchlog::fmt::typo; - - fmt reset(typo::reset); - std::ostringstream tpl; - tpl << "{depth_fmt}{depth} {depth_marks}" - << reset << "{funchash_fmt}in {func} {msg}\t\n"; - log.format(tpl.str()); - log.threshold(clutchlog::level::xdebug); - std::vector greys = {fmt(15)}; - for(unsigned short i=255; i > 231; i-=3) { - greys.push_back( fmt(i) ); } - log.depth_styles( greys ); - log.depth_mark("| "); - - CLUTCHLOG(warning,"in main"); - subcall(); -} - diff --git a/tests/t-extra.cpp b/tests/t-extra.cpp deleted file mode 100644 index cf10d55..0000000 --- a/tests/t-extra.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include - -#include "../clutchlog/clutchlog.h" - -void dump_data() -{ - CLUTCHLOG(progress, "Dump parsed data..."); - CLUTCHLOG(debug, "Write in `data_dump.csv`"); - CLUTCHLOG(debug, "Data frame size: " << 0 << "x" << "150"); - CLUTCHLOG(xdebug, "Resolution: " << 0); -} - -void reset() -{ - CLUTCHLOG(progress, "Reset data structures..."); - CLUTCHLOG(debug, "OK"); - CLUTCHLOG(info, "Reset functors..."); - CLUTCHLOG(critical, "Impossible to reset, I cannot recover."); - dump_data(); -} - -void process() -{ - CLUTCHLOG(note, "Filling up data of size: " << 0); - CLUTCHLOG(error, "Cannot parse input, I will reset stuff."); - reset(); - CLUTCHLOG(xdebug, "Last seen state: " << 0); -} - -void init_data() -{ - CLUTCHLOG(debug, "Data frame size: " << 2 << "x" << "150"); - CLUTCHLOG(xdebug, "Resolution: " << 0.001); - CLUTCHLOG(warning, "Input height < " << 3); -} - -void init_func() -{ - CLUTCHLOG(progress, "Allocate memory..."); - CLUTCHLOG(warning, "Dimension: " << 12); - CLUTCHLOG(debug, "OK"); -} - -void init() -{ - CLUTCHLOG(progress, "Initialize data structures..."); - init_data(); - CLUTCHLOG(debug, "OK"); - CLUTCHLOG(progress, "Initialize functors..."); - init_func(); - CLUTCHLOG(debug, "OK"); - CLUTCHLOG(progress, "Process..."); - process(); - CLUTCHLOG(debug, "OK"); -} - -int main(const int argc, char* argv[]) -{ - using level = clutchlog::level; - using fmt = clutchlog::fmt; - using fg = clutchlog::fmt::fg; - using bg = clutchlog::fmt::bg; - using typo = clutchlog::fmt::typo; - - auto& log = clutchlog::logger(); - - log.style(level::critical, 197); - log.style(level::error, 202); - log.style(level::warning, 208); - log.style(level::progress, 34); - log.style(level::note, 35); - log.style(level::info, 36); - log.style(level::debug, 39); - log.style(level::xdebug, 45); - std::ostringstream format; - fmt reset(typo::reset); - fmt discreet(fg::black); - fmt bold(fmt::typo::bold); - - log.depth_mark("| "); - log.hfill_mark('-'); - - const short dark = 238; - const short lite = 245; - - std::vector greys = {fmt(15)}; - for(unsigned short i=255; i>231; i-=3) { - greys.push_back( fmt(i) ); - } - log.depth_styles(greys); - - format - << fmt(dark,lite) << "{name}" - << fmt(fg::none,lite,typo::inverse) << "{level_fmt}" - << fmt(fg::none,bg::black,typo::inverse) << "{level_fmt}" << " {level_short} " << reset - << "{level_fmt} " << reset - << fmt(dark,bg::none, typo::bold) << "{depth_marks}" << reset - // << "{funchash_fmt}" - << "{level_fmt}" - << bold("{msg}") - // << discreet(" {hfill} ") - << fmt(dark,bg::none) << " ·" << "" - << fmt(fg::none,dark) << "{funchash_fmt}-{hfill}" - << fmt(fg::none,dark) << " {funchash_fmt}{func} " - << fmt(lite,dark) << "" - // << fmt(dark,lite) << "{filehash_fmt}{file}" << reset - << fmt(dark,lite) << "{file}" << reset - << fmt(dark,lite) << "" - << fmt(lite,dark) << "{line}" << reset - << "\n"; - log.format(format.str()); - - log.out(std::clog); - log.strip_calls(4); - log.filename(clutchlog::filename::dirstem); - - if(argc <= 2) { - CLUTCHLOG(warning, "Log level not indicated, will default to xdebug"); - log.threshold(level::xdebug); - } else { - try { - log.threshold(log.level_of(argv[1])); - } catch(std::out_of_range& err) { - CLUTCHLOG(critical,err.what()); - exit(100); - } - } - - CLUTCHLOG(progress,"Start analysis"); - init(); - CLUTCHLOG(progress,"I have stopped"); -} - diff --git a/tests/t-filename.cpp b/tests/t-filename.cpp deleted file mode 100644 index cebe3de..0000000 --- a/tests/t-filename.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -#include "../clutchlog/clutchlog.h" - -int main(/*const int argc, char* argv[]*/) -{ - auto& log = clutchlog::logger(); - log.format("{msg}\t= {filehash_fmt}{file}\n"); - log.threshold(clutchlog::level::xdebug); - - log.filename(clutchlog::filename::path); - CLUTCHLOG(note,"clutchlog::filename::path"); - - log.filename(clutchlog::filename::base); - CLUTCHLOG(note,"clutchlog::filename::base"); - - log.filename(clutchlog::filename::dir); - CLUTCHLOG(note,"clutchlog::filename::dir"); - - log.filename(clutchlog::filename::dirbase); - CLUTCHLOG(note,"clutchlog::filename::dirbase"); - - log.filename(clutchlog::filename::stem); - CLUTCHLOG(note,"clutchlog::filename::stem"); - - log.filename(clutchlog::filename::dirstem); - CLUTCHLOG(note,"clutchlog::filename::dirstem"); -} - - diff --git a/tests/t-fmt-constructors.cpp b/tests/t-fmt-constructors.cpp deleted file mode 100644 index 65da41a..0000000 --- a/tests/t-fmt-constructors.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include - -#include "../clutchlog/clutchlog.h" - -int main(/*const int argc, char* argv[]*/) -{ - using fmt = clutchlog::fmt; - using fg = clutchlog::fmt::fg; - using bg = clutchlog::fmt::bg; - using typo = clutchlog::fmt::typo; - - fmt none; - fmt c16_full(fg::red , bg::black , typo::bold); - fmt c16_nofg(bg::black , typo::bold); - fmt c16_nobg(fg::red , typo::bold); - fmt c16_fg (fg::red ); - fmt c16_bg (bg::red ); - fmt c16_typo(typo::bold); - fmt c16_bft (bg::black , fg::red , typo::bold); - fmt c16_bgfg(bg::black , fg::red ); - fmt c16_tbf (typo::bold, bg::black , fg::red ); - fmt c16_tfb (typo::bold, fg::red , bg::black ); - fmt c16_tf (typo::bold, fg::red ); - fmt c16_tb (typo::bold, bg::black ); - - fmt c256_fbt(196 , 236 , typo::bold); - fmt c256_ft (196 , typo::bold); - fmt c256_fb (196 , 236 ); - fmt c256_nbt(fg::none, 236 , typo::bold); - fmt c256_fnt(196 , bg::none , typo::bold); - fmt c256_nb (fg::none, 236 ); - fmt c256_fn (196 , bg::none ); - - fmt c16M_fbt(255,10,10 , 10,10,20 , typo::bold); - fmt c16M_ft (255,10,10 , typo::bold); - fmt c16M_fb (255,10,10 , 10,10,20 ); - fmt c16M_nbt(fg::none , 10,10,20 , typo::bold); - fmt c16M_fnt(255,10,10 , bg::none , typo::bold); - fmt c16M_nb (fg::none , 10,10,20 ); - fmt c16M_fn (255,10,10 , bg::none ); -} - - - diff --git a/tests/t-hash-color.cpp b/tests/t-hash-color.cpp deleted file mode 100644 index 68b1c08..0000000 --- a/tests/t-hash-color.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include - -#include "../clutchlog/clutchlog.h" - -void deepcall() -{ - CLUTCHLOG(warning,"at depth 4"); -} - -void subsubsubcall() -{ - CLUTCHLOG(warning,"at depth 3"); - deepcall(); -} - -void subsubcall() -{ - CLUTCHLOG(warning,"at depth 2"); - subsubsubcall(); -} - -void subcall() -{ - CLUTCHLOG(warning,"at depth 1"); - subsubcall(); -} - -int main(/*const int argc, char* argv[]*/) -{ - auto& log = clutchlog::logger(); - using fmt = clutchlog::fmt; - using typo = clutchlog::fmt::typo; - - fmt reset(typo::reset); - std::ostringstream tpl; - tpl << "{level_fmt}Having a {level} {filehash_fmt}within {file} {funchash_fmt}calling {func} {depth_fmt}at depth {depth_marks} {depth} " - << reset << " : {msg}\n"; - log.format(tpl.str()); - log.threshold(clutchlog::level::xdebug); - - log.filehash_styles( {fmt(fmt::fg::red), fmt(fmt::fg::yellow)} ); - log.funchash_styles( {fmt(fmt::fg::green), fmt(fmt::fg::blue), - fmt(fmt::fg::bright_green), fmt(fmt::fg::bright_blue), fmt(fmt::fg::magenta)} ); - log.depth_styles( {fmt(255),fmt(250),fmt(245),fmt(240)} ); - - CLUTCHLOG(warning,"in main"); - subcall(); -} diff --git a/tests/t-one-line-if.cpp b/tests/t-one-line-if.cpp deleted file mode 100644 index bcccba4..0000000 --- a/tests/t-one-line-if.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "../clutchlog/clutchlog.h" - -int main() -{ - if(true) - CLUTCHLOG(error, "WHAT?"); - else - CLUTCHLOG(info, "OH!"); - - if(false) - CLUTCHLOG(info, "AH!"); - else - CLUTCHLOG(error, "NO!"); -}