From 7e75e8fb1357d35824a7912e4b98a39a682039c2 Mon Sep 17 00:00:00 2001 From: nojhan Date: Sun, 18 Oct 2020 17:01:56 +0200 Subject: [PATCH] use doxygen as github pages in docs/ --- CMakeLists.txt | 3 +- build_all.sh | 5 + docs/annotated.html | 81 + docs/bc_s.png | Bin 0 -> 676 bytes docs/bdwn.png | Bin 0 -> 147 bytes docs/classclutchlog-members.html | 122 ++ docs/classclutchlog.html | 394 ++++ docs/classclutchlog_1_1fmt-members.html | 97 + docs/classclutchlog_1_1fmt.html | 267 +++ docs/classes.html | 85 + docs/closed.png | Bin 0 -> 132 bytes docs/clutchlog_8h_source.html | 111 ++ .../dir_0597ce40fdf188e7870807c32590691d.html | 82 + .../dir_084dfc9a5a5be3c9e27543ac1f550db2.html | 82 + .../dir_0c6859326e57c84153d9ce3980c7b614.html | 82 + .../dir_10ddb028b6670bd8aa01364e6cad76a9.html | 78 + .../dir_10e5b046fa80f4154fb6ef98b74319ee.html | 78 + .../dir_11d96b0893f97b142d6effd564752a90.html | 78 + .../dir_14f0b626af56b1ff4afcbb0dad5c9b00.html | 78 + .../dir_2010fee6dc55af84ec3880814fe9859d.html | 82 + .../dir_232d0e660737fa098457ae695f029c6e.html | 78 + .../dir_2c58f47b9ec63c233e9a6dc44b0220ce.html | 78 + .../dir_3353b0403823e43b133a3a97f7b61528.html | 78 + .../dir_3354f823b93c486985d8eff812f202d0.html | 78 + .../dir_3580e889fffd597e9f1e74f0989be3f4.html | 82 + .../dir_38468fa15d001d8f53eb5a2cc819fc4d.html | 82 + .../dir_44d46ce0fefad9fb4568613342a0f089.html | 78 + .../dir_56a467a6a3c52bfafa193ec205c1fdda.html | 78 + .../dir_59425e443f801f1f2fd8bbe4959a3ccf.html | 78 + .../dir_61ab004aa8225a3da30151b57198e21f.html | 78 + .../dir_7993767c315ca7e2492c0e12f2140894.html | 78 + .../dir_7cb602820ef60ce7eb9af6d9eb8de17a.html | 78 + .../dir_8497d690b57aba136d1839e5c427d666.html | 78 + .../dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html | 82 + .../dir_9a935cfcf36ab9c047ca734a48c6ea47.html | 78 + .../dir_a5e190e82988878b02be1ad8893fe33a.html | 78 + .../dir_a6147547081efd8e9250c1acee302c56.html | 78 + .../dir_a943a781f3047d1fe445d5e8eba50028.html | 78 + .../dir_b1c763aea5b862e235cc9501e2ce06da.html | 82 + .../dir_be65af4ad555fa38f52fdec43511df23.html | 82 + .../dir_bf56be71754e1b48f8f3e417eb89bb69.html | 82 + .../dir_c318bd5cf14aaa5601e6029e0b5b4048.html | 78 + .../dir_dd500134467ec65427366f3cbbc5ff81.html | 82 + .../dir_de06b53c2e04c67b773395f92873ff7f.html | 78 + .../dir_ec4f48f1c0ac567d297185d46cf69b0c.html | 78 + .../dir_ede0e87241159758c1b375c196bd55d8.html | 82 + .../dir_f324b8056e3921282ea6aa7d15c7705c.html | 78 + .../dir_f544411fb6a30872da080b65ab4522b8.html | 78 + .../dir_f803ec176eda9a8494dc55dc57236527.html | 78 + docs/doc.png | Bin 0 -> 746 bytes docs/doxygen.css | 1596 +++++++++++++++++ docs/doxygen.png | Bin 0 -> 3779 bytes docs/dynsections.js | 97 + docs/files.html | 80 + docs/folderclosed.png | Bin 0 -> 616 bytes docs/folderopen.png | Bin 0 -> 597 bytes docs/functions.html | 175 ++ docs/functions_enum.html | 84 + docs/functions_func.html | 126 ++ docs/functions_rela.html | 75 + docs/graph_legend.html | 103 ++ docs/graph_legend.md5 | 1 + docs/graph_legend.png | Bin 0 -> 19465 bytes docs/group__Config.html | 215 +++ docs/group__Details.html | 134 ++ docs/group__FMTConstructors.html | 99 + docs/group__Formating.html | 84 + docs/group__LowAPI.html | 146 ++ docs/group__UserAPI.html | 130 ++ docs/index.html | 167 ++ docs/jquery.js | 87 + docs/menu.js | 26 + docs/menudata.js | 21 + docs/modules.html | 84 + docs/nav_f.png | Bin 0 -> 153 bytes docs/nav_g.png | Bin 0 -> 95 bytes docs/nav_h.png | Bin 0 -> 98 bytes docs/open.png | Bin 0 -> 123 bytes docs/search/all_0.html | 26 + docs/search/all_0.js | 4 + docs/search/all_1.html | 26 + docs/search/all_1.js | 4 + docs/search/all_2.html | 26 + docs/search/all_2.js | 4 + docs/search/all_3.html | 26 + docs/search/all_3.js | 9 + docs/search/all_4.html | 26 + docs/search/all_4.js | 10 + docs/search/all_5.html | 26 + docs/search/all_5.js | 6 + docs/search/all_6.html | 26 + docs/search/all_6.js | 4 + docs/search/all_7.html | 26 + docs/search/all_7.js | 4 + docs/search/all_8.html | 26 + docs/search/all_8.js | 5 + docs/search/all_9.html | 26 + docs/search/all_9.js | 5 + docs/search/all_a.html | 26 + docs/search/all_a.js | 4 + docs/search/all_b.html | 26 + docs/search/all_b.js | 5 + docs/search/all_c.html | 26 + docs/search/all_c.js | 5 + docs/search/classes_0.html | 26 + docs/search/classes_0.js | 4 + docs/search/classes_1.html | 26 + docs/search/classes_1.js | 4 + docs/search/classes_2.html | 26 + docs/search/classes_2.js | 4 + docs/search/close.png | Bin 0 -> 273 bytes docs/search/enums_0.html | 26 + docs/search/enums_0.js | 4 + docs/search/enums_1.html | 26 + docs/search/enums_1.js | 4 + docs/search/enums_2.html | 26 + docs/search/enums_2.js | 4 + docs/search/enums_3.html | 26 + docs/search/enums_3.js | 4 + docs/search/functions_0.html | 26 + docs/search/functions_0.js | 4 + docs/search/functions_1.html | 26 + docs/search/functions_1.js | 8 + docs/search/functions_2.html | 26 + docs/search/functions_2.js | 9 + docs/search/functions_3.html | 26 + docs/search/functions_3.js | 5 + docs/search/functions_4.html | 26 + docs/search/functions_4.js | 4 + docs/search/functions_5.html | 26 + docs/search/functions_5.js | 4 + docs/search/functions_6.html | 26 + docs/search/functions_6.js | 4 + docs/search/functions_7.html | 26 + docs/search/functions_7.js | 4 + docs/search/functions_8.html | 26 + docs/search/functions_8.js | 4 + docs/search/groups_0.html | 26 + docs/search/groups_0.js | 4 + docs/search/groups_1.html | 26 + docs/search/groups_1.js | 4 + docs/search/groups_2.html | 26 + docs/search/groups_2.js | 4 + docs/search/groups_3.html | 26 + docs/search/groups_3.js | 4 + docs/search/groups_4.html | 26 + docs/search/groups_4.js | 4 + docs/search/groups_5.html | 26 + docs/search/groups_5.js | 4 + docs/search/mag_sel.png | Bin 0 -> 563 bytes docs/search/nomatches.html | 12 + docs/search/related_0.html | 26 + docs/search/related_0.js | 4 + docs/search/search.css | 271 +++ docs/search/search.js | 791 ++++++++ docs/search/search_l.png | Bin 0 -> 604 bytes docs/search/search_m.png | Bin 0 -> 158 bytes docs/search/search_r.png | Bin 0 -> 612 bytes docs/search/searchdata.js | 27 + docs/splitbar.png | Bin 0 -> 314 bytes docs/structclutchlog_1_1scope__t-members.html | 85 + docs/structclutchlog_1_1scope__t.html | 104 ++ docs/sync_off.png | Bin 0 -> 853 bytes docs/sync_on.png | Bin 0 -> 845 bytes docs/tab_a.png | Bin 0 -> 142 bytes docs/tab_b.png | Bin 0 -> 169 bytes docs/tab_h.png | Bin 0 -> 177 bytes docs/tab_s.png | Bin 0 -> 184 bytes docs/tabs.css | 1 + tests/t-color.cpp | 6 +- tests/t-demo.cpp | 61 + 171 files changed, 10089 insertions(+), 5 deletions(-) create mode 100644 docs/annotated.html create mode 100644 docs/bc_s.png create mode 100644 docs/bdwn.png create mode 100644 docs/classclutchlog-members.html create mode 100644 docs/classclutchlog.html create mode 100644 docs/classclutchlog_1_1fmt-members.html create mode 100644 docs/classclutchlog_1_1fmt.html create mode 100644 docs/classes.html create mode 100644 docs/closed.png create mode 100644 docs/clutchlog_8h_source.html create mode 100644 docs/dir_0597ce40fdf188e7870807c32590691d.html create mode 100644 docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html create mode 100644 docs/dir_0c6859326e57c84153d9ce3980c7b614.html create mode 100644 docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html create mode 100644 docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html create mode 100644 docs/dir_11d96b0893f97b142d6effd564752a90.html create mode 100644 docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html create mode 100644 docs/dir_2010fee6dc55af84ec3880814fe9859d.html create mode 100644 docs/dir_232d0e660737fa098457ae695f029c6e.html create mode 100644 docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html create mode 100644 docs/dir_3353b0403823e43b133a3a97f7b61528.html create mode 100644 docs/dir_3354f823b93c486985d8eff812f202d0.html create mode 100644 docs/dir_3580e889fffd597e9f1e74f0989be3f4.html create mode 100644 docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html create mode 100644 docs/dir_44d46ce0fefad9fb4568613342a0f089.html create mode 100644 docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html create mode 100644 docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html create mode 100644 docs/dir_61ab004aa8225a3da30151b57198e21f.html create mode 100644 docs/dir_7993767c315ca7e2492c0e12f2140894.html create mode 100644 docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html create mode 100644 docs/dir_8497d690b57aba136d1839e5c427d666.html create mode 100644 docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html create mode 100644 docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html create mode 100644 docs/dir_a5e190e82988878b02be1ad8893fe33a.html create mode 100644 docs/dir_a6147547081efd8e9250c1acee302c56.html create mode 100644 docs/dir_a943a781f3047d1fe445d5e8eba50028.html create mode 100644 docs/dir_b1c763aea5b862e235cc9501e2ce06da.html create mode 100644 docs/dir_be65af4ad555fa38f52fdec43511df23.html create mode 100644 docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html create mode 100644 docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html create mode 100644 docs/dir_dd500134467ec65427366f3cbbc5ff81.html create mode 100644 docs/dir_de06b53c2e04c67b773395f92873ff7f.html create mode 100644 docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html create mode 100644 docs/dir_ede0e87241159758c1b375c196bd55d8.html create mode 100644 docs/dir_f324b8056e3921282ea6aa7d15c7705c.html create mode 100644 docs/dir_f544411fb6a30872da080b65ab4522b8.html create mode 100644 docs/dir_f803ec176eda9a8494dc55dc57236527.html create mode 100644 docs/doc.png create mode 100644 docs/doxygen.css create mode 100644 docs/doxygen.png create mode 100644 docs/dynsections.js create mode 100644 docs/files.html create mode 100644 docs/folderclosed.png create mode 100644 docs/folderopen.png create mode 100644 docs/functions.html create mode 100644 docs/functions_enum.html create mode 100644 docs/functions_func.html create mode 100644 docs/functions_rela.html create mode 100644 docs/graph_legend.html create mode 100644 docs/graph_legend.md5 create mode 100644 docs/graph_legend.png create mode 100644 docs/group__Config.html create mode 100644 docs/group__Details.html create mode 100644 docs/group__FMTConstructors.html create mode 100644 docs/group__Formating.html create mode 100644 docs/group__LowAPI.html create mode 100644 docs/group__UserAPI.html create mode 100644 docs/index.html create mode 100644 docs/jquery.js create mode 100644 docs/menu.js create mode 100644 docs/menudata.js create mode 100644 docs/modules.html create mode 100644 docs/nav_f.png create mode 100644 docs/nav_g.png create mode 100644 docs/nav_h.png create mode 100644 docs/open.png create mode 100644 docs/search/all_0.html create mode 100644 docs/search/all_0.js create mode 100644 docs/search/all_1.html create mode 100644 docs/search/all_1.js create mode 100644 docs/search/all_2.html create mode 100644 docs/search/all_2.js create mode 100644 docs/search/all_3.html create mode 100644 docs/search/all_3.js create mode 100644 docs/search/all_4.html create mode 100644 docs/search/all_4.js create mode 100644 docs/search/all_5.html create mode 100644 docs/search/all_5.js create mode 100644 docs/search/all_6.html create mode 100644 docs/search/all_6.js create mode 100644 docs/search/all_7.html create mode 100644 docs/search/all_7.js create mode 100644 docs/search/all_8.html create mode 100644 docs/search/all_8.js create mode 100644 docs/search/all_9.html create mode 100644 docs/search/all_9.js create mode 100644 docs/search/all_a.html create mode 100644 docs/search/all_a.js create mode 100644 docs/search/all_b.html create mode 100644 docs/search/all_b.js create mode 100644 docs/search/all_c.html create mode 100644 docs/search/all_c.js create mode 100644 docs/search/classes_0.html create mode 100644 docs/search/classes_0.js create mode 100644 docs/search/classes_1.html create mode 100644 docs/search/classes_1.js create mode 100644 docs/search/classes_2.html create mode 100644 docs/search/classes_2.js create mode 100644 docs/search/close.png create mode 100644 docs/search/enums_0.html create mode 100644 docs/search/enums_0.js create mode 100644 docs/search/enums_1.html create mode 100644 docs/search/enums_1.js create mode 100644 docs/search/enums_2.html create mode 100644 docs/search/enums_2.js create mode 100644 docs/search/enums_3.html create mode 100644 docs/search/enums_3.js create mode 100644 docs/search/functions_0.html create mode 100644 docs/search/functions_0.js create mode 100644 docs/search/functions_1.html create mode 100644 docs/search/functions_1.js create mode 100644 docs/search/functions_2.html create mode 100644 docs/search/functions_2.js create mode 100644 docs/search/functions_3.html create mode 100644 docs/search/functions_3.js create mode 100644 docs/search/functions_4.html create mode 100644 docs/search/functions_4.js create mode 100644 docs/search/functions_5.html create mode 100644 docs/search/functions_5.js create mode 100644 docs/search/functions_6.html create mode 100644 docs/search/functions_6.js create mode 100644 docs/search/functions_7.html create mode 100644 docs/search/functions_7.js create mode 100644 docs/search/functions_8.html create mode 100644 docs/search/functions_8.js create mode 100644 docs/search/groups_0.html create mode 100644 docs/search/groups_0.js create mode 100644 docs/search/groups_1.html create mode 100644 docs/search/groups_1.js create mode 100644 docs/search/groups_2.html create mode 100644 docs/search/groups_2.js create mode 100644 docs/search/groups_3.html create mode 100644 docs/search/groups_3.js create mode 100644 docs/search/groups_4.html create mode 100644 docs/search/groups_4.js create mode 100644 docs/search/groups_5.html create mode 100644 docs/search/groups_5.js create mode 100644 docs/search/mag_sel.png create mode 100644 docs/search/nomatches.html create mode 100644 docs/search/related_0.html create mode 100644 docs/search/related_0.js create mode 100644 docs/search/search.css create mode 100644 docs/search/search.js create mode 100644 docs/search/search_l.png create mode 100644 docs/search/search_m.png create mode 100644 docs/search/search_r.png create mode 100644 docs/search/searchdata.js create mode 100644 docs/splitbar.png create mode 100644 docs/structclutchlog_1_1scope__t-members.html create mode 100644 docs/structclutchlog_1_1scope__t.html create mode 100644 docs/sync_off.png create mode 100644 docs/sync_on.png create mode 100644 docs/tab_a.png create mode 100644 docs/tab_b.png create mode 100644 docs/tab_h.png create mode 100644 docs/tab_s.png create mode 100644 docs/tabs.css create mode 100644 tests/t-demo.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 49ac6fa..6316616 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,7 @@ if(BUILD_DOCUMENTATION) configure_file(${doxyfile_in} ${doxyfile} @ONLY) - # ALL allows to build the docs together with any other target. - add_custom_target( doc ALL + add_custom_target( doc COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" diff --git a/build_all.sh b/build_all.sh index 09c3562..500fcd2 100755 --- a/build_all.sh +++ b/build_all.sh @@ -23,3 +23,8 @@ for t in "Debug" "Release" "RelWithDebInfo"; do done done +echo "Update documentation" +cd Debug_ON +make doc +cp -r html/* ../docs/ + diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 0000000..01dcd07 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,81 @@ + + + + + + + +clutchlog: Class List + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + +
 CclutchlogSingle class that holds everything
 CfmtColor and style formatter for ANSI terminal escape sequences
 Cscope_tStructure holding a location matching
+
+
+ + + + diff --git a/docs/bc_s.png b/docs/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/bdwn.png b/docs/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +clutchlog: Member List + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
clutchlog Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_format_dump (defined in clutchlog)clutchlogprotected
_format_log (defined in clutchlog)clutchlogprotected
_in_file (defined in clutchlog)clutchlogprotected
_in_func (defined in clutchlog)clutchlogprotected
_in_line (defined in clutchlog)clutchlogprotected
_level_fmt (defined in clutchlog)clutchlogprotected
_level_word (defined in clutchlog)clutchlogprotected
_out (defined in clutchlog)clutchlogprotected
_stage (defined in clutchlog)clutchlogprotected
_strip_calls (defined in clutchlog)clutchlogprotected
_word_level (defined in clutchlog)clutchlogprotected
clutchlog(clutchlog const &)=delete (defined in clutchlog)clutchlog
critical enum value (defined in clutchlog)clutchlog
debug enum value (defined in clutchlog)clutchlog
dump(const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) constclutchloginline
error enum value (defined in clutchlog)clutchlog
file(std::string file)clutchloginline
format(const std::string &format)clutchloginline
format() constclutchloginline
format(std::string format, 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() constclutchloginline
func(std::string func)clutchloginline
info enum value (defined in clutchlog)clutchlog
level enum nameclutchlog
level_of(const std::string name)clutchloginline
line(std::string line)clutchloginline
locate(const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginlineprotected
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
style(level stage, FMT... styles)clutchloginline
style(level stage, fmt style)clutchloginline
style(level stage) constclutchloginline
threshold(level 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 new file mode 100644 index 0000000..92de73a --- /dev/null +++ b/docs/classclutchlog.html @@ -0,0 +1,394 @@ + + + + + + + +clutchlog: clutchlog Class Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
clutchlog Class Reference
+
+
+ +

Single class that holds everything. + More...

+ +

#include <clutchlog.h>

+ + + + + + + + +

+Classes

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

+Public Member Functions

Configuration accessors
+void format (const std::string &format)
 Set the template string.
 
+std::string format () const
 Get the template string.
 
+void format_comment (const std::string &format)
 Set the template string for dumps.
 
+std::string format_comment () const
 Get the template string for dumps.
 
+void out (std::ostream &out)
 Set the output stream on which to print.
 
+std::ostream & out ()
 Get the output stream on which to print.
 
+void threshold (level l)
 Set the log level below which logs are not printed.
 
+level threshold () const
 Get the log level below which logs are not printed.
 
+void file (std::string file)
 Set the regular expression filtering the file location.
 
+void func (std::string func)
 Set the regular expression filtering the function location.
 
+void line (std::string line)
 Set the regular expression filtering the line location.
 
+void location (const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
 Set the regular expressions filtering the location.
 
template<class ... FMT>
void style (level stage, FMT... styles)
 Set the style (color and typo) of the given log level. More...
 
+void style (level stage, fmt style)
 Set the style (color and typo) of the given log level, passing a fmt instance.
 
+fmt style (level stage) const
 Get the configured fmt instance of the given log level.
 
level level_of (const std::string name)
 Return the log level tag corresponding to the given pre-configured name. More...
 
Low-level API
std::string replace (const std::string &form, const std::string &mark, const std::string &tag) const
 Replace mark by tag in form. More...
 
+std::string replace (const std::string &form, const std::string &mark, const size_t tag) const
 Replace mark by tag in form, converting tag to its string representation first.
 
+std::string format (std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const
 Substitute all tags in the format string with the corresponding information and apply the style corresponding to the log level.
 
+void log (const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const
 Print a log message IF the location matches the given one.
 
+template<class In >
void dump (const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const
 Dump a serializable container after a comment line with log information.
 
+ + + + + + + +

+High-level API

enum  level {
+  critical =0, +error =1, +warning =2, +progress =3, +
+  note =4, +info =5, +debug =6, +xdebug =7 +
+ }
 Available log levels.
 
static clutchloglogger ()
 Get the logger instance. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Internal details

+const size_t _strip_calls
 
+const std::map< level, std::string > _level_word
 
+std::map< std::string, level_word_level
 
+std::map< level, fmt_level_fmt
 
+std::string _format_log
 
+std::string _format_dump
 
+std::ostream * _out
 
+level _stage
 
+std::regex _in_file
 
+std::regex _in_func
 
+std::regex _in_line
 
clutchlog (clutchlog const &)=delete
 
+void operator= (clutchlog const &)=delete
 
+scope_t locate (const level &stage, const std::string &file, const std::string &func, const size_t line) const
 Gather information on the current location of the call.
 
+

Detailed Description

+

Single class that holds everything.

+

This is a Singleton class.

+

Member Function Documentation

+ +

◆ level_of()

+ +
+
+ + + + + +
+ + + + + + + + +
level clutchlog::level_of (const std::string name)
+
+inline
+
+ +

Return the log level tag corresponding to the given pre-configured name.

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

◆ logger()

+ +
+
+ + + + + +
+ + + + + + + +
static clutchlog& clutchlog::logger ()
+
+inlinestatic
+
+ +

Get the logger instance.

+ +
+
+ +

◆ replace()

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

Replace mark by tag in form.

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

◆ style()

+ +
+
+
+template<class ... FMT>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void clutchlog::style (level stage,
FMT... styles 
)
+
+inline
+
+ +

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

+

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

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/classclutchlog_1_1fmt-members.html b/docs/classclutchlog_1_1fmt-members.html new file mode 100644 index 0000000..84134e0 --- /dev/null +++ b/docs/classclutchlog_1_1fmt-members.html @@ -0,0 +1,97 @@ + + + + + + + +clutchlog: Member List + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
clutchlog::fmt Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + +
back (defined in clutchlog::fmt)clutchlog::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
fore (defined in clutchlog::fmt)clutchlog::fmt
operator()(const std::string &msg) constclutchlog::fmtinline
operator<<(std::ostream &os, const fmt &fmt)clutchlog::fmtfriend
print_on(std::ostream &os) constclutchlog::fmtinlineprotected
style (defined in clutchlog::fmt)clutchlog::fmt
typo enum nameclutchlog::fmt
+ + + + diff --git a/docs/classclutchlog_1_1fmt.html b/docs/classclutchlog_1_1fmt.html new file mode 100644 index 0000000..3ca24e1 --- /dev/null +++ b/docs/classclutchlog_1_1fmt.html @@ -0,0 +1,267 @@ + + + + + + + +clutchlog: clutchlog::fmt Class Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Color and style formatter for ANSI terminal escape sequences. + More...

+ +

#include <clutchlog.h>

+ + + + + + + + + + + +

+Public Types

enum  fg {
+  black = 30, +red = 31, +green = 32, +yellow = 33, +
+  blue = 34, +magenta = 35, +cyan = 36, +white = 37, +
+  none +
+ }
 Foreground color codes.
 
enum  bg {
+  black = 40, +red = 41, +green = 42, +yellow = 43, +
+  blue = 44, +magenta = 45, +cyan = 46, +white = 47, +
+  none +
+ }
 Background color codes.
 
enum  typo {
+  reset = 0, +bold = 1, +underline = 4, +inverse = 7, +
+  none +
+ }
 Typographic style codes.
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

fmt ()
 Â Empty constructor, only useful for a no-op formatter.
 
std::string operator() (const std::string &msg) const
 Format the given string with the currently encoded format. More...
 
All combination of constructors with different parameters orders.
fmt (fg f, bg b=bg::none, typo s=typo::none)
 
fmt (fg f, typo s, bg b=bg::none)
 
fmt (bg b, fg f=fg::none, typo s=typo::none)
 
fmt (bg b, typo s, fg f=fg::none)
 
fmt (typo s, fg f=fg::none, bg b=bg::none)
 
fmt (typo s, bg b, fg f=fg::none)
 
+ + + + + + + +

+Public Attributes

+enum clutchlog::fmt::fg fore
 
+enum clutchlog::fmt::bg back
 
+enum clutchlog::fmt::typo style
 
+ + + + +

+Protected Member Functions

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

+Friends

std::ostream & operator<< (std::ostream &os, const fmt &fmt)
 Output stream overload. More...
 
+

Detailed Description

+

Color and style formatter for ANSI terminal escape sequences.

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

Member Function Documentation

+ +

◆ operator()()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string clutchlog::fmt::operator() (const std::string & msg) const
+
+inline
+
+ +

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);
std::cout << error("ERROR") << std::endl;
Note
A formatter called this way WILL output a reset escape code at the end.
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::ostream& operator<< (std::ostream & os,
const fmtfmt 
)
+
+friend
+
+ +

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);
std::cout << error << "ERROR" << end << std::endl;
Note
An formatter called this way will NOT output a reset escape code.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/classes.html b/docs/classes.html new file mode 100644 index 0000000..a1a8e1b --- /dev/null +++ b/docs/classes.html @@ -0,0 +1,85 @@ + + + + + + + +clutchlog: Class Index + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
c | f | s
+ + + + + +
  c  
+
  f  
+
  s  
+
clutchlog   clutchlog::fmt   clutchlog::scope_t   
+
c | f | s
+
+ + + + diff --git a/docs/closed.png b/docs/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/clutchlog_8h_source.html b/docs/clutchlog_8h_source.html new file mode 100644 index 0000000..717495b --- /dev/null +++ b/docs/clutchlog_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +clutchlog: clutchlog/clutchlog.h Source File + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
clutchlog.h
+
+
+
1 #ifndef __CLUTCHLOG_H__
2 #define __CLUTCHLOG_H__
3 #pragma once
4 
5 #include <filesystem>
6 #include <iostream>
7 #include <sstream>
8 #include <fstream>
9 #include <cassert>
10 #include <cstdlib>
11 #include <string>
12 #include <limits>
13 #include <regex>
14 #include <map>
15 
16 #if __has_include(<execinfo.h>) && __has_include(<stdlib.h>) && __has_include(<libgen.h>)
17 #include <execinfo.h> // execinfo
18 #include <stdlib.h> // getenv
19 #include <libgen.h> // basename
20 #define CLUTCHLOG_HAVE_UNIX_SYSINFO 1
21 #else
22 #define CLUTCHLOG_HAVE_UNIX_SYSINFO 0
23 #endif
24 
25 /**********************************************************************
26  * Enable by default in Debug builds.
27  **********************************************************************/
28 #ifndef WITH_CLUTCHLOG
29 #ifndef NDEBUG
30 #define WITH_CLUTCHLOG
31 #endif
32 #endif
33 
34 /**********************************************************************
35  * Macros definitions
36  **********************************************************************/
37 #ifdef WITH_CLUTCHLOG
38 
39 #ifndef CLUTCHLOG_DEFAULT_FORMAT
40 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
42 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
43 #else
44 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
45 #endif
46 #endif // CLUTCHLOG_DEFAULT_FORMAT
47 
48 #ifndef CLUTCHDUMP_DEFAULT_FORMAT
49 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
51 #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}"
52 #else
53 #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func} @ {file}:{line}"
54 #endif
55 #endif // CLUTCHDUMP_DEFAULT_FORMAT
56 
57 #ifndef CLUTCHDUMP_DEFAULT_SEP
58 #define CLUTCHDUMP_DEFAULT_SEP "\n"
60 #endif // CLUTCHDUMP_DEFAULT_SEP
61 
62 #ifndef CLUTCHLOG_DEFAULT_DEPTH_MARK
63 #define CLUTCHLOG_DEFAULT_DEPTH_MARK ">"
64 #endif // CLUTCHLOG_DEFAULT_DEPTH_MARK
65 
66 #ifndef CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG
67 #define CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG clutchlog::level::progress
68 #endif // CLUTCHLOG_DEFAULT_DEPTH_BUILT
69 
71 #define CLUTCHLOC __FILE__, __FUNCTION__, __LINE__
72 
74 #ifndef NDEBUG
75 #define CLUTCHLOG( LEVEL, WHAT ) { \
76  auto& logger = clutchlog::logger(); \
77  std::ostringstream msg ; msg << WHAT; \
78  logger.log(clutchlog::level::LEVEL, msg.str(), CLUTCHLOC); \
79 }
80 #else // not Debug build.
81 #define CLUTCHLOG( LEVEL, WHAT ) { \
82  if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
83  auto& logger = clutchlog::logger(); \
84  std::ostringstream msg ; msg << WHAT; \
85  logger.log(clutchlog::level::LEVEL, msg.str(), CLUTCHLOC); \
86  } \
87 }
88 #endif // NDEBUG
89 
91 #ifndef NDEBUG
92 #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) { \
93  auto& logger = clutchlog::logger(); \
94  logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
95  CLUTCHLOC, FILENAME, CLUTCHDUMP_DEFAULT_SEP); \
96 }
97 #else // not Debug build.
98 #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) { \
99  if(clutchlog::level::LEVEL <= CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG) { \
100  auto& logger = clutchlog::logger(); \
101  logger.dump(clutchlog::level::LEVEL, std::begin(CONTAINER), std::end(CONTAINER), \
102  CLUTCHLOC, FILENAME, CLUTCHDUMP_DEFAULT_SEP); \
103  } \
104 }
105 #endif // NDEBUG
106 
107 #else // not WITH_CLUTCHLOG
108 // Disabled macros can still be used in Release builds.
109 #define CLUTCHLOG( LEVEL, WHAT ) { do {/*nothing*/} while(false); }
110 #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) { do {/*nothing*/} while(false); }
111 #endif // WITH_CLUTCHLOG
112 
113 /**********************************************************************
114  * Implementation
115  **********************************************************************/
116 
117 #ifdef WITH_CLUTCHLOG
118 
123 {
124  public:
134  static clutchlog& logger()
135  {
136  static clutchlog instance;
137  return instance;
138  }
139 
141  enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
142 
152  class fmt {
153  public:
155  enum class fg {
156  black = 30,
157  red = 31,
158  green = 32,
159  yellow = 33,
160  blue = 34,
161  magenta = 35,
162  cyan = 36,
163  white = 37,
164  none
165  } fore;
166 
168  enum class bg {
169  black = 40,
170  red = 41,
171  green = 42,
172  yellow = 43,
173  blue = 44,
174  magenta = 45,
175  cyan = 46,
176  white = 47,
177  none
178  } back;
179 
181  enum class typo {
182  reset = 0,
183  bold = 1,
184  underline = 4,
185  inverse = 7,
186  none
187  } style;
188 
190  fmt() : fore(fg::none), back(bg::none), style(typo::none) { }
191 
194  fmt( fg f, bg b = bg::none, typo s = typo::none) : fore(f), back(b), style(s) { }
195  fmt( fg f, typo s , bg b = bg::none) : fore(f), back(b), style(s) { }
196  fmt( bg b, fg f = fg::none, typo s = typo::none) : fore(f), back(b), style(s) { }
197  fmt( bg b, typo s , fg f = fg::none) : fore(f), back(b), style(s) { }
198  fmt(typo s, fg f = fg::none, bg b = bg::none) : fore(f), back(b), style(s) { }
199  fmt(typo s, bg b , fg f = fg::none) : fore(f), back(b), style(s) { }
202  protected:
204  std::ostream& print_on( std::ostream& os) const
205  {
206  std::vector<int> codes; codes.reserve(3);
207  if(this->fore != fg::none) { codes.push_back(static_cast<int>(this->fore ));}
208  if(this->back != bg::none) { codes.push_back(static_cast<int>(this->back ));}
209  if(this->style != typo::none) { codes.push_back(static_cast<int>(this->style));}
210  if(codes.size() == 0) {return os;}
211 
212  os << "\033[";
213  assert(codes.size() > 0);
214  os << codes[0];
215  for(size_t i=1; i < codes.size(); ++i) {
216  os << ";" << codes[i];
217  }
218  os << "m";
219  return os;
220  }
221 
222  public:
234  friend std::ostream& operator<<(std::ostream& os, const fmt& fmt)
235  {
236  return fmt.print_on(os);
237  }
238 
249  std::string operator()( const std::string& msg ) const
250  {
251  std::ostringstream os;
252  this->print_on(os);
253  fmt reset(fmt::typo::reset);
254  os << msg;
255  reset.print_on(os);
256  return os.str();
257  }
258  }; // fmt class
259 
265  public:
266  clutchlog(clutchlog const&) = delete;
267  void operator=(clutchlog const&) = delete;
268 
269  private:
270  clutchlog() :
271  // system, main, log
272  _strip_calls(5),
273  _level_word({
274  {level::critical,"Critical"},
275  {level::error ,"Error"},
276  {level::warning ,"Warning"},
277  {level::progress,"Progress"},
278  {level::note ,"Note"},
279  {level::info ,"Info"},
280  {level::debug ,"Debug"},
281  {level::xdebug ,"XDebug"}
282  }),
283  _level_fmt({
284  {level::critical,fmt(fmt::fg::red, fmt::typo::underline)},
285  {level::error ,fmt(fmt::fg::red, fmt::typo::bold)},
286  {level::warning ,fmt(fmt::fg::magenta, fmt::typo::bold)},
287  {level::progress,fmt()},
288  {level::note ,fmt()},
289  {level::info ,fmt()},
290  {level::debug ,fmt()},
291  {level::xdebug ,fmt()}
292  }),
293  _format_log(CLUTCHLOG_DEFAULT_FORMAT),
294  _format_dump(CLUTCHDUMP_DEFAULT_FORMAT),
295  _out(&std::clog),
296 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
297  _depth(std::numeric_limits<size_t>::max() - _strip_calls),
298  _depth_mark(CLUTCHLOG_DEFAULT_DEPTH_MARK),
299 #endif
300  _stage(level::error),
301  _in_file(".*"),
302  _in_func(".*"),
303  _in_line(".*")
304  {
305  // Reverse the level->word map into a word->level map.
306  for(auto& lw : _level_word) {
307  _word_level[lw.second] = lw.first;
308  }
309  }
310 
311  protected:
312  const size_t _strip_calls;
313  const std::map<level,std::string> _level_word;
314  std::map<std::string,level> _word_level;
315  std::map<level,fmt> _level_fmt;
316  std::string _format_log;
317  std::string _format_dump;
318  std::ostream* _out;
319 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
320  size_t _depth;
321  std::string _depth_mark;
322 #endif
323  level _stage;
324  std::regex _in_file;
325  std::regex _in_func;
326  std::regex _in_line;
327 
329  struct scope_t {
330  bool matches; // everything is compatible
331  level stage; // current log level
332 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
333  size_t depth; // current depth
334 #endif
335  bool there; // location is compatible
336  scope_t() :
337  matches(false),
338  stage(level::xdebug),
339 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
340  depth(0),
341 #endif
342  there(false)
343  {}
344  };
345 
348  const level& stage,
349  const std::string& file,
350  const std::string& func,
351  const size_t line
352  ) const
353  {
354  scope_t scope; // False scope by default.
355 
356  /***** Log level stage *****/
357  // Test stage first, because it's fastest.
358  scope.stage = stage;
359  if(not (scope.stage <= _stage)) {
360  // Bypass useless computations if no match
361  // because of the stage.
362  return scope;
363  }
364 
365 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
366  /***** Stack depth *****/
367  // Backtrace in second, quite fast.
368  const size_t max_buffer = 4096;
369  size_t stack_depth;
370  void *buffer[max_buffer];
371  stack_depth = backtrace(buffer, max_buffer);
372  scope.depth = stack_depth;
373  if(not (scope.depth <= _depth + _strip_calls)) {
374  // Bypass if no match.
375  return scope;
376  }
377 #endif
378 
379  /***** Location *****/
380  // Location last, slowest.
381  std::ostringstream sline; sline << line;
382  scope.there =
383  std::regex_search(file, _in_file)
384  and std::regex_search(func, _in_func)
385  and std::regex_search(sline.str(), _in_line);
386 
387  // No need to retest stage and depth, which are true here.
388  scope.matches = scope.there;
389 
390  return scope;
391  }
392 
395  public:
396 
400  void format(const std::string& format) {_format_log = format;}
403  std::string format() const {return _format_log;}
404 
406  void format_comment(const std::string& format) {_format_dump = format;}
408  std::string format_comment() const {return _format_dump;}
409 
411  void out(std::ostream& out) {_out = &out;}
413  std::ostream& out() {return *_out;}
414 
415 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
416  void depth(size_t d) {_depth = d;}
419  size_t depth() const {return _depth;}
420 
422  void depth_mark(std::string mark) {_depth_mark = mark;}
424  std::string depth_mark() const {return _depth_mark;}
425 #endif
426 
428  void threshold(level l) {_stage = l;}
430  level threshold() const {return _stage;}
431 
433  void file(std::string file) {_in_file = file;}
435  void func(std::string func) {_in_func = func;}
437  void line(std::string line) {_in_line = line;}
438 
440  void location(
441  const std::string& in_file,
442  const std::string& in_function=".*",
443  const std::string& in_line=".*"
444  )
445  {
446  file(in_file);
447  func(in_function);
448  line(in_line);
449  }
450 
455  template<class ... FMT>
456  void style(level stage, FMT... styles) { this->style(stage,fmt(styles...)); }
458  void style(level stage, fmt style) { _level_fmt.at(stage) = style; }
460  fmt style(level stage) const { return _level_fmt.at(stage); }
461 
466  level level_of(const std::string name)
467  {
468  const auto ilevel = _word_level.find(name);
469  if( ilevel != std::end(_word_level)) {
470  return ilevel->second;
471  } else {
472  throw std::out_of_range("'" + name + "' is not a valid log level name");
473  }
474  }
475 
478  public:
479 
490  std::string replace(
491  const std::string& form,
492  const std::string& mark,
493  const std::string& tag
494  ) const
495  {
496  // Useless debug code, unless something fancy would be done with name tags.
497  // std::regex re;
498  // try {
499  // re = std::regex(mark);
500  //
501  // } catch(const std::regex_error& e) {
502  // std::cerr << "ERROR with a regular expression \"" << mark << "\": ";
503  // switch(e.code()) {
504  // case std::regex_constants::error_collate:
505  // std::cerr << "the expression contains an invalid collating element name";
506  // break;
507  // case std::regex_constants::error_ctype:
508  // std::cerr << "the expression contains an invalid character class name";
509  // break;
510  // case std::regex_constants::error_escape:
511  // std::cerr << "the expression contains an invalid escaped character or a trailing escape";
512  // break;
513  // case std::regex_constants::error_backref:
514  // std::cerr << "the expression contains an invalid back reference";
515  // break;
516  // case std::regex_constants::error_brack:
517  // std::cerr << "the expression contains mismatched square brackets ('[' and ']')";
518  // break;
519  // case std::regex_constants::error_paren:
520  // std::cerr << "the expression contains mismatched parentheses ('(' and ')')";
521  // break;
522  // case std::regex_constants::error_brace:
523  // std::cerr << "the expression contains mismatched curly braces ('{' and '}')";
524  // break;
525  // case std::regex_constants::error_badbrace:
526  // std::cerr << "the expression contains an invalid range in a {} expression";
527  // break;
528  // case std::regex_constants::error_range:
529  // std::cerr << "the expression contains an invalid character range (e.g. [b-a])";
530  // break;
531  // case std::regex_constants::error_space:
532  // std::cerr << "there was not enough memory to convert the expression into a finite state machine";
533  // break;
534  // case std::regex_constants::error_badrepeat:
535  // std::cerr << "one of *?+{ was not preceded by a valid regular expression";
536  // break;
537  // case std::regex_constants::error_complexity:
538  // std::cerr << "the complexity of an attempted match exceeded a predefined level";
539  // break;
540  // case std::regex_constants::error_stack:
541  // std::cerr << "there was not enough memory to perform a match";
542  // break;
543  // default:
544  // std::cerr << "unknown error";
545  // }
546  // std::cerr << std::endl;
547  // throw;
548  // } // catch
549 
550  const std::regex re(mark);
551  return std::regex_replace(form, re, tag);
552  }
553 
555  std::string replace(
556  const std::string& form,
557  const std::string& mark,
558  const size_t tag
559  ) const
560  {
561  std::ostringstream stag; stag << tag;
562  return replace(form, mark, stag.str());
563  }
564 
566  std::string format(
567  std::string format,
568  const std::string& what,
569 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
570  const std::string& name,
571 #endif
572  const level& stage,
573  const std::string& file,
574  const std::string& func,
575  const size_t line
576 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
577  ,
578  const size_t depth
579 #endif
580  ) const
581  {
582  format = replace(format, "\\{msg\\}", what);
583  format = replace(format, "\\{file\\}", file);
584  format = replace(format, "\\{func\\}", func);
585  format = replace(format, "\\{line\\}", line);
586 
587  format = replace(format, "\\{level\\}", _level_word.at(stage));
588  std::string letter(1, _level_word.at(stage).at(0)); // char -> string
589  format = replace(format, "\\{level_letter\\}", letter);
590 
591 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
592  format = replace(format, "\\{name\\}", name);
593  format = replace(format, "\\{depth\\}", depth);
594 
595  std::ostringstream chevrons;
596  for(size_t i = _strip_calls; i < depth; ++i) {
597  chevrons << _depth_mark;
598  }
599  format = replace(format, "\\{depth_marks\\}", chevrons.str());
600 #endif
601 
602  return _level_fmt.at(stage)(format);
603  }
604 
606  void log(
607  const level& stage,
608  const std::string& what,
609  const std::string& file, const std::string& func, size_t line
610  ) const
611  {
612  scope_t scope = locate(stage, file, func, line);
613 
614  if(scope.matches) {
615 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
616  *_out << format(_format_log, what, basename(getenv("_")),
617  stage, file, func,
618  line, scope.depth );
619 #else
620  *_out << format(_format_log, what,
621  stage, file, func,
622  line );
623 
624 #endif
625  _out->flush();
626  } // if scopes.matches
627  }
628 
630  template<class In>
631  void dump(
632  const level& stage,
633  const In container_begin, const In container_end,
634  const std::string& file, const std::string& func, size_t line,
635  const std::string& filename_template="dump_{n}.dat",
636  const std::string sep=CLUTCHDUMP_DEFAULT_SEP
637  ) const
638  {
639  scope_t scope = locate(stage, file, func, line);
640 
641  if(scope.matches) {
642  const std::string tag = "\\{n\\}";
643  const std::regex re(tag);
644  std::string outfile = "";
645 
646  // If the file name template has the {n} tag.
647  if(std::regex_search(filename_template, re)) {
648  // Increment n until a free one is found.
649  size_t n = 0;
650  do {
651  outfile = replace(filename_template, tag, n);
652  n++;
653  } while( std::filesystem::exists( outfile ) );
654 
655  } else {
656  // Use the parameter as is.
657  outfile = filename_template;
658  }
659 
660  std::ofstream fd(outfile);
661 
662  if(_format_dump.size() > 0) {
663 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
664  fd << format(_format_dump, "", basename(getenv("_")),
665  stage, file, func,
666  line, scope.depth );
667 #else
668  fd << format(_format_dump, "",
669  stage, file, func,
670  line );
671 #endif
672  fd << sep; // sep after comment line.
673  }
674 
675  std::copy(container_begin, container_end,
676  std::ostream_iterator<typename In::value_type>(fd, sep.c_str()));
677 
678  fd.close();
679  } // if scopes.matches
680  }
681 
683 };
684 
685 #else // not WITH_CLUTCHLOG
686 
687 
688 /**********************************************************************
689  * Fake implementation
690  **********************************************************************/
691 
692 // Equivalent class with empty methods, will be optimized out
693 // while allowing to actually have calls implemented without WITH_CLUTCHLOG guards.
694 #pragma GCC diagnostic push
695 #pragma GCC diagnostic ignored "-Wreturn-type"
696 class clutchlog
697 {
698  public:
699  static clutchlog& logger() { }
700  enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
701  class fmt {
702  public:
703  enum class fg { black, red, green, yellow, blue, magenta, cyan, white, none } fore;
704  enum class bg { black, red, green, yellow, blue, magenta, cyan, white, none } back;
705  enum class typo { reset, bold, underline, inverse, none } style;
706  fmt() : fore(fg::none), back(bg::none), style(typo::none) { }
707  fmt( fg f, bg b = bg::none, typo s = typo::none) : fore(f), back(b), style(s) { }
708  fmt( fg f, typo s , bg b = bg::none) : fore(f), back(b), style(s) { }
709  fmt( bg b, fg f = fg::none, typo s = typo::none) : fore(f), back(b), style(s) { }
710  fmt( bg b, typo s , fg f = fg::none) : fore(f), back(b), style(s) { }
711  fmt(typo s, fg f = fg::none, bg b = bg::none) : fore(f), back(b), style(s) { }
712  fmt(typo s, bg b , fg f = fg::none) : fore(f), back(b), style(s) { }
713  protected:
714  std::ostream& print_on(std::ostream&) const { }
715  public:
716  friend std::ostream& operator<<(std::ostream&, const fmt&) { }
717  std::string operator()(const std::string&) const { }
718  };
719  public:
720  clutchlog(clutchlog const&) = delete;
721  void operator=(clutchlog const&) = delete;
722  private:
723  clutchlog() {}
724  protected:
725  struct scope_t {};
726  scope_t locate(
727  const level&,
728  const std::string&,
729  const std::string&,
730  const size_t
731  ) const
732  { }
733  public:
734  void format(const std::string&) {}
735  std::string format() const {}
736 
737  void format_comment(const std::string&) {}
738  std::string format_comment() const {}
739 
740  void out(std::ostream&) {}
741  std::ostream& out() {}
742 
743 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
744  void depth(size_t) {}
745  size_t depth() const {}
746 
747  void depth_mark(std::string) {}
748  std::string depth_mark() const {}
749 #endif
750 
751  void threshold(level) {}
752  level threshold() const {}
753 
754  void file(std::string) {}
755  void func(std::string) {}
756  void line(std::string) {}
757 
758 #pragma GCC diagnostic push
759 #pragma GCC diagnostic ignored "-Wunused-parameter"
760  void location(
761  const std::string&,
762  const std::string& in_function=".*",
763  const std::string& in_line=".*"
764  )
765  { }
766 #pragma GCC diagnostic pop
767  void style(level, fmt) { }
768  fmt style(level) const { }
769  level level_of(const std::string) { }
770  public:
771  std::string replace(
772  const std::string&,
773  const std::string&,
774  const std::string&
775  ) const
776  { }
777 
778  std::string replace(
779  const std::string&,
780  const std::string&,
781  const size_t
782  ) const
783  { }
784 
785  std::string format(
786  std::string,
787  const std::string&,
788 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
789  const std::string&,
790 #endif
791  const level&,
792  const std::string&,
793  const std::string&,
794  const size_t
795 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
796  ,
797  const size_t
798 #endif
799  ) const
800  { }
801 
802  void log(
803  const level&,
804  const std::string&,
805  const std::string&, const std::string&, size_t
806  ) const
807  { }
808 
809  template<class In>
810  void dump(
811  const level&,
812  const In, const In,
813  const std::string&, const std::string&, size_t,
814  const std::string&,
815  const std::string
816  ) const
817  { }
818 };
819 #pragma GCC diagnostic pop
820 #endif // WITH_CLUTCHLOG
821 
822 #endif // __CLUTCHLOG_H__
void threshold(level l)
Set the log level below which logs are not printed.
Definition: clutchlog.h:428
+
void out(std::ostream &out)
Set the output stream on which to print.
Definition: clutchlog.h:411
+
Single class that holds everything.
Definition: clutchlog.h:122
+
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:606
+
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:490
+
void func(std::string func)
Set the regular expression filtering the function location.
Definition: clutchlog.h:435
+
std::string format() const
Get the template string.
Definition: clutchlog.h:403
+
void line(std::string line)
Set the regular expression filtering the line location.
Definition: clutchlog.h:437
+
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:440
+
void format_comment(const std::string &format)
Set the template string for dumps.
Definition: clutchlog.h:406
+
std::string format_comment() const
Get the template string for dumps.
Definition: clutchlog.h:408
+
fmt()
 Empty constructor, only useful for a no-op formatter.
Definition: clutchlog.h:190
+
std::string format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const
Substitute all tags in the format string with the corresponding information and apply the style corre...
Definition: clutchlog.h:566
+
Structure holding a location matching.
Definition: clutchlog.h:329
+
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:347
+
fg
Foreground color codes.
Definition: clutchlog.h:155
+
level
Available log levels.
Definition: clutchlog.h:141
+
std::ostream & out()
Get the output stream on which to print.
Definition: clutchlog.h:413
+
friend std::ostream & operator<<(std::ostream &os, const fmt &fmt)
Output stream overload.
Definition: clutchlog.h:234
+
level level_of(const std::string name)
Return the log level tag corresponding to the given pre-configured name.
Definition: clutchlog.h:466
+
void style(level stage, FMT... styles)
Set the style (color and typo) of the given log level.
Definition: clutchlog.h:456
+
std::string operator()(const std::string &msg) const
Format the given string with the currently encoded format.
Definition: clutchlog.h:249
+
void style(level stage, fmt style)
Set the style (color and typo) of the given log level, passing a fmt instance.
Definition: clutchlog.h:458
+
std::ostream & print_on(std::ostream &os) const
Print the currently encoded format escape code on the given output stream.
Definition: clutchlog.h:204
+
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:134
+
typo
Typographic style codes.
Definition: clutchlog.h:181
+
bg
Background color codes.
Definition: clutchlog.h:168
+
void dump(const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const
Dump a serializable container after a comment line with log information.
Definition: clutchlog.h:631
+
void file(std::string file)
Set the regular expression filtering the file location.
Definition: clutchlog.h:433
+
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:555
+
fmt style(level stage) const
Get the configured fmt instance of the given log level.
Definition: clutchlog.h:460
+
level threshold() const
Get the log level below which logs are not printed.
Definition: clutchlog.h:430
+
Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:152
+
+ + + + diff --git a/docs/dir_0597ce40fdf188e7870807c32590691d.html b/docs/dir_0597ce40fdf188e7870807c32590691d.html new file mode 100644 index 0000000..27c5c81 --- /dev/null +++ b/docs/dir_0597ce40fdf188e7870807c32590691d.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: Release_OFF/CMakeFiles/3.10.2 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.10.2 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html b/docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html new file mode 100644 index 0000000..e8d2d97 --- /dev/null +++ b/docs/dir_084dfc9a5a5be3c9e27543ac1f550db2.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: Release_OFF/CMakeFiles/3.18.4 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.18.4 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_0c6859326e57c84153d9ce3980c7b614.html b/docs/dir_0c6859326e57c84153d9ce3980c7b614.html new file mode 100644 index 0000000..6ba266d --- /dev/null +++ b/docs/dir_0c6859326e57c84153d9ce3980c7b614.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: Release_ON/CMakeFiles/3.18.4 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.18.4 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html b/docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html new file mode 100644 index 0000000..6b9322d --- /dev/null +++ b/docs/dir_10ddb028b6670bd8aa01364e6cad76a9.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_OFF/CMakeFiles Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CMakeFiles Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html b/docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html new file mode 100644 index 0000000..2e7b8a3 --- /dev/null +++ b/docs/dir_10e5b046fa80f4154fb6ef98b74319ee.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Debug_OFF/CMakeFiles Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CMakeFiles Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_11d96b0893f97b142d6effd564752a90.html b/docs/dir_11d96b0893f97b142d6effd564752a90.html new file mode 100644 index 0000000..0b31e41 --- /dev/null +++ b/docs/dir_11d96b0893f97b142d6effd564752a90.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_OFF/CMakeFiles Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CMakeFiles Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html b/docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html new file mode 100644 index 0000000..3602517 --- /dev/null +++ b/docs/dir_14f0b626af56b1ff4afcbb0dad5c9b00.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_OFF/CMakeFiles/3.18.4/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_2010fee6dc55af84ec3880814fe9859d.html b/docs/dir_2010fee6dc55af84ec3880814fe9859d.html new file mode 100644 index 0000000..6fc5283 --- /dev/null +++ b/docs/dir_2010fee6dc55af84ec3880814fe9859d.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: RelWithDebInfo_OFF/CMakeFiles/3.10.2 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.10.2 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_232d0e660737fa098457ae695f029c6e.html b/docs/dir_232d0e660737fa098457ae695f029c6e.html new file mode 100644 index 0000000..7b3e62a --- /dev/null +++ b/docs/dir_232d0e660737fa098457ae695f029c6e.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_ON Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Release_ON Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html b/docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html new file mode 100644 index 0000000..aa512ed --- /dev/null +++ b/docs/dir_2c58f47b9ec63c233e9a6dc44b0220ce.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_ON/CMakeFiles Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CMakeFiles Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_3353b0403823e43b133a3a97f7b61528.html b/docs/dir_3353b0403823e43b133a3a97f7b61528.html new file mode 100644 index 0000000..8d9543c --- /dev/null +++ b/docs/dir_3353b0403823e43b133a3a97f7b61528.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Debug_OFF Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Debug_OFF Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_3354f823b93c486985d8eff812f202d0.html b/docs/dir_3354f823b93c486985d8eff812f202d0.html new file mode 100644 index 0000000..6f98924 --- /dev/null +++ b/docs/dir_3354f823b93c486985d8eff812f202d0.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: CMakeFiles/3.10.2/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_3580e889fffd597e9f1e74f0989be3f4.html b/docs/dir_3580e889fffd597e9f1e74f0989be3f4.html new file mode 100644 index 0000000..f6b2d06 --- /dev/null +++ b/docs/dir_3580e889fffd597e9f1e74f0989be3f4.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: RelWithDebInfo_OFF/CMakeFiles/3.18.4 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.18.4 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html b/docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html new file mode 100644 index 0000000..5e050cd --- /dev/null +++ b/docs/dir_38468fa15d001d8f53eb5a2cc819fc4d.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: Debug_OFF/CMakeFiles/3.18.4 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.18.4 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_44d46ce0fefad9fb4568613342a0f089.html b/docs/dir_44d46ce0fefad9fb4568613342a0f089.html new file mode 100644 index 0000000..67399b1 --- /dev/null +++ b/docs/dir_44d46ce0fefad9fb4568613342a0f089.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Debug_OFF/CMakeFiles/3.10.2/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html b/docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html new file mode 100644 index 0000000..7bbd648 --- /dev/null +++ b/docs/dir_56a467a6a3c52bfafa193ec205c1fdda.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_OFF/CMakeFiles/3.10.2/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html new file mode 100644 index 0000000..805340f --- /dev/null +++ b/docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: tests Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
tests Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_61ab004aa8225a3da30151b57198e21f.html b/docs/dir_61ab004aa8225a3da30151b57198e21f.html new file mode 100644 index 0000000..9fe89a3 --- /dev/null +++ b/docs/dir_61ab004aa8225a3da30151b57198e21f.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Debug_OFF/CMakeFiles/3.18.4/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_7993767c315ca7e2492c0e12f2140894.html b/docs/dir_7993767c315ca7e2492c0e12f2140894.html new file mode 100644 index 0000000..c8bbae5 --- /dev/null +++ b/docs/dir_7993767c315ca7e2492c0e12f2140894.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_ON/CMakeFiles Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CMakeFiles Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html b/docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html new file mode 100644 index 0000000..909e287 --- /dev/null +++ b/docs/dir_7cb602820ef60ce7eb9af6d9eb8de17a.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_OFF Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RelWithDebInfo_OFF Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_8497d690b57aba136d1839e5c427d666.html b/docs/dir_8497d690b57aba136d1839e5c427d666.html new file mode 100644 index 0000000..78b0b2f --- /dev/null +++ b/docs/dir_8497d690b57aba136d1839e5c427d666.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_ON/CMakeFiles/3.18.4/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html b/docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html new file mode 100644 index 0000000..3aa79f2 --- /dev/null +++ b/docs/dir_99be30a3dc5b3fd221ff5ea6bdbc52f4.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: RelWithDebInfo_ON/CMakeFiles/3.10.2 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.10.2 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html b/docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html new file mode 100644 index 0000000..d788b6d --- /dev/null +++ b/docs/dir_9a935cfcf36ab9c047ca734a48c6ea47.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: CMakeFiles Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CMakeFiles Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_a5e190e82988878b02be1ad8893fe33a.html b/docs/dir_a5e190e82988878b02be1ad8893fe33a.html new file mode 100644 index 0000000..6a4e060 --- /dev/null +++ b/docs/dir_a5e190e82988878b02be1ad8893fe33a.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_OFF Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Release_OFF Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_a6147547081efd8e9250c1acee302c56.html b/docs/dir_a6147547081efd8e9250c1acee302c56.html new file mode 100644 index 0000000..9b01563 --- /dev/null +++ b/docs/dir_a6147547081efd8e9250c1acee302c56.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_ON/CMakeFiles/3.10.2/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_a943a781f3047d1fe445d5e8eba50028.html b/docs/dir_a943a781f3047d1fe445d5e8eba50028.html new file mode 100644 index 0000000..dd6ec9d --- /dev/null +++ b/docs/dir_a943a781f3047d1fe445d5e8eba50028.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_ON/CMakeFiles/3.18.4/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_b1c763aea5b862e235cc9501e2ce06da.html b/docs/dir_b1c763aea5b862e235cc9501e2ce06da.html new file mode 100644 index 0000000..1350900 --- /dev/null +++ b/docs/dir_b1c763aea5b862e235cc9501e2ce06da.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: Release_ON/CMakeFiles/3.10.2 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.10.2 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_be65af4ad555fa38f52fdec43511df23.html b/docs/dir_be65af4ad555fa38f52fdec43511df23.html new file mode 100644 index 0000000..6691b68 --- /dev/null +++ b/docs/dir_be65af4ad555fa38f52fdec43511df23.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: CMakeFiles/3.18.4 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.18.4 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html b/docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html new file mode 100644 index 0000000..e9ec3a6 --- /dev/null +++ b/docs/dir_bf56be71754e1b48f8f3e417eb89bb69.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: RelWithDebInfo_ON/CMakeFiles/3.18.4 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.18.4 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html new file mode 100644 index 0000000..415346e --- /dev/null +++ b/docs/dir_c318bd5cf14aaa5601e6029e0b5b4048.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: clutchlog Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
clutchlog Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_dd500134467ec65427366f3cbbc5ff81.html b/docs/dir_dd500134467ec65427366f3cbbc5ff81.html new file mode 100644 index 0000000..a8a7b38 --- /dev/null +++ b/docs/dir_dd500134467ec65427366f3cbbc5ff81.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: Debug_OFF/CMakeFiles/3.10.2 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.10.2 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_de06b53c2e04c67b773395f92873ff7f.html b/docs/dir_de06b53c2e04c67b773395f92873ff7f.html new file mode 100644 index 0000000..a0801e1 --- /dev/null +++ b/docs/dir_de06b53c2e04c67b773395f92873ff7f.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_ON Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RelWithDebInfo_ON Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html b/docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html new file mode 100644 index 0000000..7b3ba91 --- /dev/null +++ b/docs/dir_ec4f48f1c0ac567d297185d46cf69b0c.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: CMakeFiles/3.18.4/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_ede0e87241159758c1b375c196bd55d8.html b/docs/dir_ede0e87241159758c1b375c196bd55d8.html new file mode 100644 index 0000000..769712d --- /dev/null +++ b/docs/dir_ede0e87241159758c1b375c196bd55d8.html @@ -0,0 +1,82 @@ + + + + + + + +clutchlog: CMakeFiles/3.10.2 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
3.10.2 Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_f324b8056e3921282ea6aa7d15c7705c.html b/docs/dir_f324b8056e3921282ea6aa7d15c7705c.html new file mode 100644 index 0000000..2be8e24 --- /dev/null +++ b/docs/dir_f324b8056e3921282ea6aa7d15c7705c.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: Release_ON/CMakeFiles/3.10.2/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_f544411fb6a30872da080b65ab4522b8.html b/docs/dir_f544411fb6a30872da080b65ab4522b8.html new file mode 100644 index 0000000..f708f28 --- /dev/null +++ b/docs/dir_f544411fb6a30872da080b65ab4522b8.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_OFF/CMakeFiles/3.18.4/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_f803ec176eda9a8494dc55dc57236527.html b/docs/dir_f803ec176eda9a8494dc55dc57236527.html new file mode 100644 index 0000000..666ba03 --- /dev/null +++ b/docs/dir_f803ec176eda9a8494dc55dc57236527.html @@ -0,0 +1,78 @@ + + + + + + + +clutchlog: RelWithDebInfo_OFF/CMakeFiles/3.10.2/CompilerIdCXX Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CompilerIdCXX Directory Reference
+
+
+
+ + + + diff --git a/docs/doc.png b/docs/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docs/doxygen.css b/docs/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/docs/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/docs/doxygen.png b/docs/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/docs/dynsections.js b/docs/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/docs/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +clutchlog: File List + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + +
  clutchlog
 clutchlog.h
+
+
+ + + + diff --git a/docs/folderclosed.png b/docs/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/functions.html b/docs/functions.html new file mode 100644 index 0000000..0478543 --- /dev/null +++ b/docs/functions.html @@ -0,0 +1,175 @@ + + + + + + + +clutchlog: Class Members + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+ + +

- d -

+ + +

- f -

+ + +

- l -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/docs/functions_enum.html b/docs/functions_enum.html new file mode 100644 index 0000000..f2e5964 --- /dev/null +++ b/docs/functions_enum.html @@ -0,0 +1,84 @@ + + + + + + + +clutchlog: Class Members - Enumerations + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/functions_func.html b/docs/functions_func.html new file mode 100644 index 0000000..05fa33d --- /dev/null +++ b/docs/functions_func.html @@ -0,0 +1,126 @@ + + + + + + + +clutchlog: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/functions_rela.html b/docs/functions_rela.html new file mode 100644 index 0000000..de26b5e --- /dev/null +++ b/docs/functions_rela.html @@ -0,0 +1,75 @@ + + + + + + + +clutchlog: Class Members - Related Functions + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/graph_legend.html b/docs/graph_legend.html new file mode 100644 index 0000000..b78c3c5 --- /dev/null +++ b/docs/graph_legend.html @@ -0,0 +1,103 @@ + + + + + + + +clutchlog: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

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 */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

+
+ +
+

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.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +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:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/docs/graph_legend.md5 b/docs/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/docs/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/docs/graph_legend.png b/docs/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..81788d8b778e11ebf43d6a041820fcaf7ec9a65e GIT binary patch literal 19465 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%0Av4SqcN@e|5`jp~UDrU|Bek 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 + + + + + + +clutchlog: Configuration accessors + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.1.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Configuration accessors
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+void clutchlog::format (const std::string &format)
 Set the template string.
 
+std::string clutchlog::format () const
 Get the template string.
 
+void clutchlog::format_comment (const std::string &format)
 Set the template string for dumps.
 
+std::string clutchlog::format_comment () const
 Get the template string for dumps.
 
+void clutchlog::out (std::ostream &out)
 Set the output stream on which to print.
 
+std::ostream & clutchlog::out ()
 Get the output stream on which to print.
 
+void clutchlog::threshold (level l)
 Set the log level below which logs are not printed.
 
+level clutchlog::threshold () const
 Get the log level below which logs are not printed.
 
+void clutchlog::file (std::string file)
 Set the regular expression filtering the file location.
 
+void clutchlog::func (std::string func)
 Set the regular expression filtering the function location.
 
+void clutchlog::line (std::string line)
 Set the regular expression filtering the line location.
 
+void clutchlog::location (const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
 Set the regular expressions filtering the location.
 
template<class ... FMT>
void clutchlog::style (level stage, FMT... styles)
 Set the style (color and typo) of the given log level. More...
 
+void clutchlog::style (level stage, fmt style)
 Set the style (color and typo) of the given log level, passing a fmt instance.
 
+fmt clutchlog::style (level stage) const
 Get the configured fmt instance of the given log level.
 
level clutchlog::level_of (const std::string name)
 Return the log level tag corresponding to the given pre-configured name. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ level_of()

+ +
+
+ + + + + +
+ + + + + + + + +
level clutchlog::level_of (const std::string name)
+
+inline
+
+ +

Return the log level tag corresponding to the given pre-configured name.

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

◆ style()

+ +
+
+
+template<class ... FMT>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void clutchlog::style (level stage,
FMT... styles 
)
+
+inline
+
+ +

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

+

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

+ +
+
+
+ + + + diff --git a/docs/group__Details.html b/docs/group__Details.html new file mode 100644 index 0000000..381ab75 --- /dev/null +++ b/docs/group__Details.html @@ -0,0 +1,134 @@ + + + + + + + +clutchlog: Internal details + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.1.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Internal details
+
+
+ + + + +

+Classes

struct  clutchlog::scope_t
 
+ + + + + + + + +

+Functions

clutchlog::clutchlog (clutchlog const &)=delete
 
+void clutchlog::operator= (clutchlog const &)=delete
 
+scope_t clutchlog::locate (const level &stage, const std::string &file, const std::string &func, const size_t line) const
 Gather information on the current location of the call.
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Variables

+const size_t clutchlog::_strip_calls
 
+const std::map< level, std::string > clutchlog::_level_word
 
+std::map< std::string, levelclutchlog::_word_level
 
+std::map< level, fmtclutchlog::_level_fmt
 
+std::string clutchlog::_format_log
 
+std::string clutchlog::_format_dump
 
+std::ostream * clutchlog::_out
 
+level clutchlog::_stage
 
+std::regex clutchlog::_in_file
 
+std::regex clutchlog::_in_func
 
+std::regex clutchlog::_in_line
 
+

Detailed Description

+
+ + + + diff --git a/docs/group__FMTConstructors.html b/docs/group__FMTConstructors.html new file mode 100644 index 0000000..fcb7950 --- /dev/null +++ b/docs/group__FMTConstructors.html @@ -0,0 +1,99 @@ + + + + + + + +clutchlog: All combination of constructors with different parameters orders. + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.1.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
All combination of constructors with different parameters orders.
+
+
+ + + + + + + + + + + + + + +

+Functions

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

Detailed Description

+
+ + + + diff --git a/docs/group__Formating.html b/docs/group__Formating.html new file mode 100644 index 0000000..ab34612 --- /dev/null +++ b/docs/group__Formating.html @@ -0,0 +1,84 @@ + + + + + + + +clutchlog: Formating API + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.1.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Formating API
+
+
+ + + + + +

+Classes

class  clutchlog::fmt
 Color and style formatter for ANSI terminal escape sequences. More...
 
+

Detailed Description

+
+ + + + diff --git a/docs/group__LowAPI.html b/docs/group__LowAPI.html new file mode 100644 index 0000000..ff06c56 --- /dev/null +++ b/docs/group__LowAPI.html @@ -0,0 +1,146 @@ + + + + + + + +clutchlog: Low-level API + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.1.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Low-level API
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

std::string clutchlog::replace (const std::string &form, const std::string &mark, const std::string &tag) const
 Replace mark by tag in form. More...
 
+std::string clutchlog::replace (const std::string &form, const std::string &mark, const size_t tag) const
 Replace mark by tag in form, converting tag to its string representation first.
 
+std::string clutchlog::format (std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const
 Substitute all tags in the format string with the corresponding information and apply the style corresponding to the log level.
 
+void clutchlog::log (const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const
 Print a log message IF the location matches the given one.
 
+template<class In >
void clutchlog::dump (const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=CLUTCHDUMP_DEFAULT_SEP) const
 Dump a serializable container after a comment line with log information.
 
+

Detailed Description

+

Function Documentation

+ +

◆ replace()

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

Replace mark by tag in form.

+
log.replace("{greet} {world}", "\\{greet\\}", "hello");
// returns "hello {world}"
+
+
+
+ + + + diff --git a/docs/group__UserAPI.html b/docs/group__UserAPI.html new file mode 100644 index 0000000..2434144 --- /dev/null +++ b/docs/group__UserAPI.html @@ -0,0 +1,130 @@ + + + + + + + +clutchlog: High-level API + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.1.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
High-level API
+
+
+ + + + + +

+Enumerations

enum  clutchlog::level {
+  critical =0, +error =1, +warning =2, +progress =3, +
+  note =4, +info =5, +debug =6, +xdebug =7 +
+ }
 Available log levels.
 
+ + + + +

+Functions

static clutchlogclutchlog::logger ()
 Get the logger instance. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ logger()

+ +
+
+ + + + + +
+ + + + + + + +
static clutchlog& clutchlog::logger ()
+
+inlinestatic
+
+ +

Get the logger instance.

+ +
+
+
+ + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..59e6f9d --- /dev/null +++ b/docs/index.html @@ -0,0 +1,167 @@ + + + + + + + +clutchlog: Main Page + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
clutchlog Documentation
+
+
+

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

+

Features

+

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 which 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.

+

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);

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(clutchlog::level::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.

For more detailled examples, see the "API documentation" section 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 which displays all appropriate data (with ad-hoc fancy hooks).

+

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

+

API documentation

+

Calls

+

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

// Simple string:
CLUTCHLOG(info, "hello world");
// Serialisable variable:
double value = 0;
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);
std::generate(v.begin(), v.end(), std::rand);
CLUTCHLOG(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
*/

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

+

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.
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.
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, using level_of:

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

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

+

Output Configuration

+

The output stream can be configured using the out method:

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

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

log.format("{msg}");

Available tags are:

+
    +
  • {msg}: the logged message,
  • +
  • {name}: the name of the current binary,
  • +
  • {level}: the current log level (i.e. Critical, Error, Warning, Progress, Note, Info, Debug or XDebug),
  • +
  • {level_letter}: the first letter of the current log level,
  • +
  • {file}: the current file (absolute path),
  • +
  • {func}: the current function,
  • +
  • {line}: the current line number,
  • +
  • {depth}: the current depth of the call stack,
  • +
  • {depth_marks}: as many chevrons > as there is calls in the stack.
  • +
+

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

+

The default format of the comment added with the dump macro is "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}". It can be edited with the format_comment method. If it is set to an empty string, then no comment line is added. The default can be modified at compile time with CLUTCHDUMP_DEFAULT_FORMAT. By default, the separator between items in the container is a new line. To change this behaviour, you can change CLUTCHDUMP_DEFAULT_SEP or call the low-level dump method.

+

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

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

Output style

+

The output 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(clutchlog::level::magenta, warn);

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

+ +

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:

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.

+

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 which are under or equal to progress.

+

You can change this behavior at compile time by setting the CLUTCHLOG_DEFAULT_DEPTH_BUILT_NODEBUG preprocessor variable to the desired maximum log level, for example:

// 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.

+

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 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");

Log level semantics

+

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

+
    +
  • Critical: an error which cannot be recovered. For instance, something which will make a server stop right here.
  • +
  • Error: an error which invalidates a function, but may still be recovered. For example, a bad user input which will make a server reset its state, but not crash.
  • +
  • Warning: something that is strange, but is probably legit. For example a default parameter is set because the user forgot to indicate its preference.
  • +
  • Progress: the state at which computation currently is.
  • +
  • Note: some state worth noting to understand what's going on.
  • +
  • Info: any information which would help ensuring that everything is going well.
  • +
  • Debug: data which would help debugging the program if there was a bug later on.
  • +
  • XDebug: debugging information which would be heavy to read.
  • +
+

Note: the log levels constants are lower case (for example: clutchlog::level:xdebug), but their string representation is not (e.g. "XDebug", this should be taken into account when using level_of).

+

Limitations

+

Because the call stack depth and program name access are system-dependent, the features relying on the depth of the call stack and the display of the program name are only available for operating systems having the following headers: execinfo.h, stdlib.h and libgen.h (so far, tested with Linux).

+

Some colors/styles may not be supported by some exotic terminal emulators.

+

Clutchlog needs C++-17 with the filesystem feature. You may need to indicate -std=c++17 -lstdc++fs to your compiler.

+

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
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_CLUTCHLOG=ON ..
make
ctest

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

+
+ + + + diff --git a/docs/jquery.js b/docs/jquery.js new file mode 100644 index 0000000..f5343ed --- /dev/null +++ b/docs/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
Modules
+
+
+
Here is a list of all modules:
+
+ + + + + + +
 High-level API
 Formating API
 All combination of constructors with different parameters orders.
 Internal details
 Configuration accessors
 Low-level API
+ + + + + + diff --git a/docs/nav_f.png b/docs/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/nav_g.png b/docs/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_0.js b/docs/search/all_0.js new file mode 100644 index 0000000..4c8e7c6 --- /dev/null +++ b/docs/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bg',['bg',['../classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/all_1.html b/docs/search/all_1.html new file mode 100644 index 0000000..b13f0f7 --- /dev/null +++ b/docs/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_1.js b/docs/search/all_1.js new file mode 100644 index 0000000..af53b08 --- /dev/null +++ b/docs/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['clutchlog',['clutchlog',['../classclutchlog.html',1,'']]] +]; diff --git a/docs/search/all_2.html b/docs/search/all_2.html new file mode 100644 index 0000000..9543c57 --- /dev/null +++ b/docs/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_2.js b/docs/search/all_2.js new file mode 100644 index 0000000..078f69a --- /dev/null +++ b/docs/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dump',['dump',['../classclutchlog.html#ae7edb2e14f3d55b201b834255aa4bce9',1,'clutchlog']]] +]; diff --git a/docs/search/all_3.html b/docs/search/all_3.html new file mode 100644 index 0000000..03405c0 --- /dev/null +++ b/docs/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_3.js b/docs/search/all_3.js new file mode 100644 index 0000000..448da2d --- /dev/null +++ b/docs/search/all_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['fg',['fg',['../classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]], + ['file',['file',['../classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]], + ['fmt',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog::fmt'],['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt::fmt()']]], + ['format',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#af1219599b1361562c802779572aa669f',1,'clutchlog::format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const']]], + ['format_5fcomment',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]], + ['func',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]] +]; diff --git a/docs/search/all_4.html b/docs/search/all_4.html new file mode 100644 index 0000000..8e1f4b9 --- /dev/null +++ b/docs/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_4.js b/docs/search/all_4.js new file mode 100644 index 0000000..57462a9 --- /dev/null +++ b/docs/search/all_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['level',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]], + ['level_5fof',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]], + ['line',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]], + ['locate',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]], + ['location',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]], + ['log',['log',['../classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]], + ['logger',['logger',['../classclutchlog.html#acfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]] +]; diff --git a/docs/search/all_5.html b/docs/search/all_5.html new file mode 100644 index 0000000..89a879e --- /dev/null +++ b/docs/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_5.js b/docs/search/all_5.js new file mode 100644 index 0000000..5c9fad3 --- /dev/null +++ b/docs/search/all_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['operator_28_29',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]], + ['operator_3c_3c',['operator<<',['../classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]], + ['out',['out',['../classclutchlog.html#a7fd7c7bd3668c537061c314a619a336d',1,'clutchlog::out(std::ostream &out)'],['../classclutchlog.html#a6c6ab42a1df147e6c2d115bc36ec8266',1,'clutchlog::out()']]] +]; diff --git a/docs/search/all_6.html b/docs/search/all_6.html new file mode 100644 index 0000000..6afac06 --- /dev/null +++ b/docs/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_6.js b/docs/search/all_6.js new file mode 100644 index 0000000..c8ac3c3 --- /dev/null +++ b/docs/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['print_5fon',['print_on',['../classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/all_7.html b/docs/search/all_7.html new file mode 100644 index 0000000..de19107 --- /dev/null +++ b/docs/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_7.js b/docs/search/all_7.js new file mode 100644 index 0000000..f1b7a16 --- /dev/null +++ b/docs/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['replace',['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_8.html b/docs/search/all_8.html new file mode 100644 index 0000000..11e27cd --- /dev/null +++ b/docs/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_8.js b/docs/search/all_8.js new file mode 100644 index 0000000..32052e0 --- /dev/null +++ b/docs/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scope_5ft',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]], + ['style',['style',['../classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../classclutchlog.html#a4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]] +]; diff --git a/docs/search/all_9.html b/docs/search/all_9.html new file mode 100644 index 0000000..f8abbbe --- /dev/null +++ b/docs/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_9.js b/docs/search/all_9.js new file mode 100644 index 0000000..eb1f5c2 --- /dev/null +++ b/docs/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['threshold',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]], + ['typo',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/all_a.html b/docs/search/all_a.html new file mode 100644 index 0000000..9601fce --- /dev/null +++ b/docs/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_a.js b/docs/search/all_a.js new file mode 100644 index 0000000..80a6c5a --- /dev/null +++ b/docs/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['replace',['replace',['../group__LowAPI.html#ga972f895c70edc335f3018a2c8971d59e',1,'clutchlog::replace(const std::string &form, const std::string &mark, const std::string &tag) const'],['../group__LowAPI.html#gae90d5a1a428587ad67b38b2ea4ca9fa2',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 new file mode 100644 index 0000000..0814e4e --- /dev/null +++ b/docs/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_b.js b/docs/search/all_b.js new file mode 100644 index 0000000..cbe4e48 --- /dev/null +++ b/docs/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scope_5ft',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]], + ['style',['style',['../group__Config.html#gac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../group__Config.html#gad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../group__Config.html#ga4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]] +]; diff --git a/docs/search/all_c.html b/docs/search/all_c.html new file mode 100644 index 0000000..da08c38 --- /dev/null +++ b/docs/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_c.js b/docs/search/all_c.js new file mode 100644 index 0000000..b7e6d2d --- /dev/null +++ b/docs/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['threshold',['threshold',['../group__Config.html#ga3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../group__Config.html#gab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]], + ['typo',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/classes_0.html b/docs/search/classes_0.html new file mode 100644 index 0000000..1c3e406 --- /dev/null +++ b/docs/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js new file mode 100644 index 0000000..af53b08 --- /dev/null +++ b/docs/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['clutchlog',['clutchlog',['../classclutchlog.html',1,'']]] +]; diff --git a/docs/search/classes_1.html b/docs/search/classes_1.html new file mode 100644 index 0000000..a8e7069 --- /dev/null +++ b/docs/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js new file mode 100644 index 0000000..58b816c --- /dev/null +++ b/docs/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fmt',['fmt',['../classclutchlog_1_1fmt.html',1,'clutchlog']]] +]; diff --git a/docs/search/classes_2.html b/docs/search/classes_2.html new file mode 100644 index 0000000..5c09c96 --- /dev/null +++ b/docs/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js new file mode 100644 index 0000000..41f1c96 --- /dev/null +++ b/docs/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scope_5ft',['scope_t',['../structclutchlog_1_1scope__t.html',1,'clutchlog']]] +]; diff --git a/docs/search/close.png b/docs/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/docs/search/enums_0.html b/docs/search/enums_0.html new file mode 100644 index 0000000..ee343ac --- /dev/null +++ b/docs/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/enums_0.js b/docs/search/enums_0.js new file mode 100644 index 0000000..4c8e7c6 --- /dev/null +++ b/docs/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bg',['bg',['../classclutchlog_1_1fmt.html#a1cf3e27e4041250ffea0a6d58010da1e',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/enums_1.html b/docs/search/enums_1.html new file mode 100644 index 0000000..3fd210a --- /dev/null +++ b/docs/search/enums_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/enums_1.js b/docs/search/enums_1.js new file mode 100644 index 0000000..f354314 --- /dev/null +++ b/docs/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fg',['fg',['../classclutchlog_1_1fmt.html#a4662a3ec3577c6a575a2c734636ed8a0',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/enums_2.html b/docs/search/enums_2.html new file mode 100644 index 0000000..a042e52 --- /dev/null +++ b/docs/search/enums_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/enums_2.js b/docs/search/enums_2.js new file mode 100644 index 0000000..f8f9e57 --- /dev/null +++ b/docs/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['level',['level',['../classclutchlog.html#a10fd25a1b51c8c95bd6d876ce1b4b928',1,'clutchlog']]] +]; diff --git a/docs/search/enums_3.html b/docs/search/enums_3.html new file mode 100644 index 0000000..265e0cb --- /dev/null +++ b/docs/search/enums_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/enums_3.js b/docs/search/enums_3.js new file mode 100644 index 0000000..8caaeed --- /dev/null +++ b/docs/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['typo',['typo',['../classclutchlog_1_1fmt.html#a932f47b78fb7b10590d5613a1c4eab89',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/functions_0.html b/docs/search/functions_0.html new file mode 100644 index 0000000..4e6d87d --- /dev/null +++ b/docs/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js new file mode 100644 index 0000000..078f69a --- /dev/null +++ b/docs/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dump',['dump',['../classclutchlog.html#ae7edb2e14f3d55b201b834255aa4bce9',1,'clutchlog']]] +]; diff --git a/docs/search/functions_1.html b/docs/search/functions_1.html new file mode 100644 index 0000000..b343e2d --- /dev/null +++ b/docs/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js new file mode 100644 index 0000000..1e67db1 --- /dev/null +++ b/docs/search/functions_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['file',['file',['../classclutchlog.html#a10064493c22f5c03b502a42d814c5c5c',1,'clutchlog']]], + ['fmt',['fmt',['../classclutchlog_1_1fmt.html#a407506bc02ed3f91d88b3df630e54959',1,'clutchlog::fmt']]], + ['format',['format',['../classclutchlog.html#a656c277e074b64728cca871f2b484d1c',1,'clutchlog::format(const std::string &format)'],['../classclutchlog.html#afc53dbca51d0e2322a21899d0c571a80',1,'clutchlog::format() const'],['../classclutchlog.html#af1219599b1361562c802779572aa669f',1,'clutchlog::format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const']]], + ['format_5fcomment',['format_comment',['../classclutchlog.html#a2144abe4ec6f630126b6490908b5f924',1,'clutchlog::format_comment(const std::string &format)'],['../classclutchlog.html#aa8d0a569ed3623ce36c5e567ec2d1ad5',1,'clutchlog::format_comment() const']]], + ['func',['func',['../classclutchlog.html#ad32b5a0274dc03ee0004f67ba58b2447',1,'clutchlog']]] +]; diff --git a/docs/search/functions_2.html b/docs/search/functions_2.html new file mode 100644 index 0000000..ecce2f3 --- /dev/null +++ b/docs/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js new file mode 100644 index 0000000..563d947 --- /dev/null +++ b/docs/search/functions_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['level_5fof',['level_of',['../classclutchlog.html#acebed8c9df9204f22bf8488e62e1cedd',1,'clutchlog']]], + ['line',['line',['../classclutchlog.html#aa26c6b81ebaeb9e9daa3457e3a3d17c9',1,'clutchlog']]], + ['locate',['locate',['../classclutchlog.html#a4ebdfcded6c56262676bf6926d63fc96',1,'clutchlog']]], + ['location',['location',['../classclutchlog.html#a6666106b9e5c239b6ae5e0d1091648e3',1,'clutchlog']]], + ['log',['log',['../classclutchlog.html#a23dbb98f0d3c5cc21c232cde16cf317a',1,'clutchlog']]], + ['logger',['logger',['../classclutchlog.html#acfaceb77da01503b432644a3efaee4fa',1,'clutchlog']]] +]; diff --git a/docs/search/functions_3.html b/docs/search/functions_3.html new file mode 100644 index 0000000..15f06ab --- /dev/null +++ b/docs/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js new file mode 100644 index 0000000..3d23132 --- /dev/null +++ b/docs/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_28_29',['operator()',['../classclutchlog_1_1fmt.html#afeaedd18298498d1dcfcc15f5f17ac3c',1,'clutchlog::fmt']]], + ['out',['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 new file mode 100644 index 0000000..8985ff2 --- /dev/null +++ b/docs/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js new file mode 100644 index 0000000..c8ac3c3 --- /dev/null +++ b/docs/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['print_5fon',['print_on',['../classclutchlog_1_1fmt.html#a0b607e343b6813b99eafca1fdfec9cd0',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/functions_5.html b/docs/search/functions_5.html new file mode 100644 index 0000000..0314918 --- /dev/null +++ b/docs/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js new file mode 100644 index 0000000..f1b7a16 --- /dev/null +++ b/docs/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['replace',['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 new file mode 100644 index 0000000..c506123 --- /dev/null +++ b/docs/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js new file mode 100644 index 0000000..039ba36 --- /dev/null +++ b/docs/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['style',['style',['../classclutchlog.html#ac3ec55057b9c734b66f169bf43dbd591',1,'clutchlog::style(level stage, FMT... styles)'],['../classclutchlog.html#ad1cfa9945c3f7f98fe8ce724c627d0d6',1,'clutchlog::style(level stage, fmt style)'],['../classclutchlog.html#a4831f44fd5ade102e57320632095934d',1,'clutchlog::style(level stage) const']]] +]; diff --git a/docs/search/functions_7.html b/docs/search/functions_7.html new file mode 100644 index 0000000..83a7b84 --- /dev/null +++ b/docs/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js new file mode 100644 index 0000000..6df1e3c --- /dev/null +++ b/docs/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['threshold',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]] +]; diff --git a/docs/search/functions_8.html b/docs/search/functions_8.html new file mode 100644 index 0000000..b55f0e6 --- /dev/null +++ b/docs/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js new file mode 100644 index 0000000..6df1e3c --- /dev/null +++ b/docs/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['threshold',['threshold',['../classclutchlog.html#a3cb0e4f43a4cadf1966001ad7c9861f4',1,'clutchlog::threshold(level l)'],['../classclutchlog.html#ab45287cc9c14217904a13aff49573732',1,'clutchlog::threshold() const']]] +]; diff --git a/docs/search/groups_0.html b/docs/search/groups_0.html new file mode 100644 index 0000000..1ede28d --- /dev/null +++ b/docs/search/groups_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/groups_0.js b/docs/search/groups_0.js new file mode 100644 index 0000000..9904b8c --- /dev/null +++ b/docs/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['all_20combination_20of_20constructors_20with_20different_20parameters_20orders_2e',['All combination of constructors with different parameters orders.',['../group__FMTConstructors.html',1,'']]] +]; diff --git a/docs/search/groups_1.html b/docs/search/groups_1.html new file mode 100644 index 0000000..3c05216 --- /dev/null +++ b/docs/search/groups_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/groups_1.js b/docs/search/groups_1.js new file mode 100644 index 0000000..8e0e1b7 --- /dev/null +++ b/docs/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['configuration_20accessors',['Configuration accessors',['../group__Config.html',1,'']]] +]; diff --git a/docs/search/groups_2.html b/docs/search/groups_2.html new file mode 100644 index 0000000..7191495 --- /dev/null +++ b/docs/search/groups_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/groups_2.js b/docs/search/groups_2.js new file mode 100644 index 0000000..0c79049 --- /dev/null +++ b/docs/search/groups_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['formating_20api',['Formating API',['../group__Formating.html',1,'']]] +]; diff --git a/docs/search/groups_3.html b/docs/search/groups_3.html new file mode 100644 index 0000000..3af27ea --- /dev/null +++ b/docs/search/groups_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/groups_3.js b/docs/search/groups_3.js new file mode 100644 index 0000000..32122bd --- /dev/null +++ b/docs/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['high_2dlevel_20api',['High-level API',['../group__UserAPI.html',1,'']]] +]; diff --git a/docs/search/groups_4.html b/docs/search/groups_4.html new file mode 100644 index 0000000..e7abc74 --- /dev/null +++ b/docs/search/groups_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/groups_4.js b/docs/search/groups_4.js new file mode 100644 index 0000000..6384469 --- /dev/null +++ b/docs/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['internal_20details',['Internal details',['../group__Details.html',1,'']]] +]; diff --git a/docs/search/groups_5.html b/docs/search/groups_5.html new file mode 100644 index 0000000..edc563e --- /dev/null +++ b/docs/search/groups_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/groups_5.js b/docs/search/groups_5.js new file mode 100644 index 0000000..507ee1c --- /dev/null +++ b/docs/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['low_2dlevel_20api',['Low-level API',['../group__LowAPI.html',1,'']]] +]; diff --git a/docs/search/mag_sel.png b/docs/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/docs/search/nomatches.html b/docs/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/docs/search/related_0.html b/docs/search/related_0.html new file mode 100644 index 0000000..1db947b --- /dev/null +++ b/docs/search/related_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/related_0.js b/docs/search/related_0.js new file mode 100644 index 0000000..e16d42b --- /dev/null +++ b/docs/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3c_3c',['operator<<',['../classclutchlog_1_1fmt.html#a96849ba427feac3a2eeaa1165e3845da',1,'clutchlog::fmt']]] +]; diff --git a/docs/search/search.css b/docs/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/docs/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + 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: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + 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; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/search/search.js b/docs/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/docs/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + 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.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + 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; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/search/search_r.png b/docs/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/structclutchlog_1_1scope__t-members.html b/docs/structclutchlog_1_1scope__t-members.html new file mode 100644 index 0000000..ad30538 --- /dev/null +++ b/docs/structclutchlog_1_1scope__t-members.html @@ -0,0 +1,85 @@ + + + + + + + +clutchlog: Member List + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
clutchlog::scope_t Member List
+
+
+ +

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

+ + + + + +
matches (defined in clutchlog::scope_t)clutchlog::scope_t
scope_t() (defined in clutchlog::scope_t)clutchlog::scope_tinline
stage (defined in clutchlog::scope_t)clutchlog::scope_t
there (defined in clutchlog::scope_t)clutchlog::scope_t
+ + + + diff --git a/docs/structclutchlog_1_1scope__t.html b/docs/structclutchlog_1_1scope__t.html new file mode 100644 index 0000000..7c55bb7 --- /dev/null +++ b/docs/structclutchlog_1_1scope__t.html @@ -0,0 +1,104 @@ + + + + + + + +clutchlog: clutchlog::scope_t Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
clutchlog +  0.5.0 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
clutchlog::scope_t Struct Reference
+
+
+ +

Structure holding a location matching. + More...

+ +

#include <clutchlog.h>

+ + + + + + + + +

+Public Attributes

+bool matches
 
+level stage
 
+bool there
 
+

Detailed Description

+

Structure holding a location matching.

+

The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/sync_off.png b/docs/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/sync_on.png b/docs/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/tab_a.png b/docs/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/tab_b.png b/docs/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/tabs.css b/docs/tabs.css new file mode 100644 index 0000000..bbde11e --- /dev/null +++ b/docs/tabs.css @@ -0,0 +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:transparent}.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-color.cpp b/tests/t-color.cpp index 3b506d2..d864a20 100644 --- a/tests/t-color.cpp +++ b/tests/t-color.cpp @@ -21,8 +21,8 @@ int main(/*const int argc, char* argv[]*/) log.threshold(clutchlog::level::info); // Change a style. - log.style(clutchlog::level::quiet, error); - CLUTCHLOG(quiet,"Styles demo"); + log.style(clutchlog::level::critical, error); + CLUTCHLOG(critical,"Styles demo"); CLUTCHLOG(info,"Either using functions..."); std::cout << none("No style: ") << std::endl; @@ -41,5 +41,5 @@ int main(/*const int argc, char* argv[]*/) << clutchlog::fmt(clutchlog::fmt::fg::yellow) << "{line}" << clutchlog::fmt(clutchlog::fmt::typo::reset) << " {msg} ! " << std::endl; log.format(format.str()); - CLUTCHLOG(quiet,"After having inserted styles within a new format template"); + CLUTCHLOG(critical,"After having inserted styles within a new format template"); } diff --git a/tests/t-demo.cpp b/tests/t-demo.cpp new file mode 100644 index 0000000..76ca4fe --- /dev/null +++ b/tests/t-demo.cpp @@ -0,0 +1,61 @@ +#include + +#include "../clutchlog/clutchlog.h" + +void i() +{ + CLUTCHLOG(progress, "Reset data structures..."); + CLUTCHLOG(debug, "OK"); + CLUTCHLOG(progress, "Reset functors..."); + CLUTCHLOG(critical, "Impossible to reset, I cannot recover."); +} + +void h() +{ + CLUTCHLOG(note, "Filling up data of size: " << 0); + CLUTCHLOG(error, "Cannot parse input, I will reset stuff."); + i(); + CLUTCHLOG(xdebug, "Last seen state: " << 0); +} + +void g() +{ + CLUTCHLOG(warning, "Input size < " << 1); + h(); +} + +void f() +{ + CLUTCHLOG(progress, "Initialize data structures..."); + CLUTCHLOG(debug, "OK"); + CLUTCHLOG(progress, "Initialize functors..."); + CLUTCHLOG(debug, "OK"); + g(); +} + +int main(const int argc, char* argv[]) +{ + auto& log = clutchlog::logger(); + + log.out(std::clog); + log.depth_mark("\t"); + log.format("[{name}] {level}: {depth_marks} {msg}\n"); + log.style(clutchlog::level::progress,clutchlog::fmt::fg::blue); + log.threshold(clutchlog::level::warning); + + if(argc <= 2) { + CLUTCHLOG(warning, "Log level not indicated, will default to xdebug"); + log.threshold(clutchlog::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 something"); + f(); + CLUTCHLOG(progress,"I have stopped"); +}