From 4ee4be2e8f2d47ded7be16e293204c7af1d3f071 Mon Sep 17 00:00:00 2001 From: jakcron Date: Wed, 19 Jun 2019 15:35:14 +0800 Subject: [PATCH 01/26] delete docs --- docs/_directory_info_8h.html | 160 -- docs/_directory_info_8h__dep__incl.map | 7 - docs/_directory_info_8h__dep__incl.md5 | 1 - docs/_directory_info_8h__dep__incl.png | Bin 20393 -> 0 bytes docs/_directory_info_8h__incl.map | 5 - docs/_directory_info_8h__incl.md5 | 1 - docs/_directory_info_8h__incl.png | Bin 17885 -> 0 bytes docs/_directory_info_8h_source.html | 118 -- docs/_doxygen_mainpage_8md_source.html | 105 -- docs/_exception_8h.html | 149 -- docs/_exception_8h__dep__incl.map | 4 - docs/_exception_8h__dep__incl.md5 | 1 - docs/_exception_8h__dep__incl.png | Bin 6070 -> 0 bytes docs/_exception_8h__incl.map | 2 - docs/_exception_8h__incl.md5 | 1 - docs/_exception_8h__incl.png | Bin 4780 -> 0 bytes docs/_exception_8h_source.html | 111 -- docs/_i_file_8h.html | 159 -- docs/_i_file_8h__dep__incl.map | 8 - docs/_i_file_8h__dep__incl.md5 | 1 - docs/_i_file_8h__dep__incl.png | Bin 24204 -> 0 bytes docs/_i_file_8h__incl.map | 4 - docs/_i_file_8h__incl.md5 | 1 - docs/_i_file_8h__incl.png | Bin 12818 -> 0 bytes docs/_i_file_8h_source.html | 115 -- docs/_i_file_system_8h.html | 171 -- docs/_i_file_system_8h.js | 9 - docs/_i_file_system_8h__dep__incl.map | 6 - docs/_i_file_system_8h__dep__incl.md5 | 1 - docs/_i_file_system_8h__dep__incl.png | Bin 11492 -> 0 bytes docs/_i_file_system_8h__incl.map | 7 - docs/_i_file_system_8h__incl.md5 | 1 - docs/_i_file_system_8h__incl.png | Bin 26341 -> 0 bytes docs/_i_file_system_8h_source.html | 124 -- docs/_local_file_system_8h.html | 159 -- docs/_local_file_system_8h__dep__incl.map | 4 - docs/_local_file_system_8h__dep__incl.md5 | 1 - docs/_local_file_system_8h__dep__incl.png | Bin 4740 -> 0 bytes docs/_local_file_system_8h__incl.map | 8 - docs/_local_file_system_8h__incl.md5 | 1 - docs/_local_file_system_8h__incl.png | Bin 29410 -> 0 bytes docs/_local_file_system_8h_source.html | 121 -- docs/_optional_8h.html | 153 -- docs/_optional_8h__dep__incl.map | 3 - docs/_optional_8h__dep__incl.md5 | 1 - docs/_optional_8h__dep__incl.png | Bin 2701 -> 0 bytes docs/_optional_8h__incl.map | 5 - docs/_optional_8h__incl.md5 | 1 - docs/_optional_8h__incl.png | Bin 18159 -> 0 bytes docs/_optional_8h_source.html | 115 -- docs/_path_8h.html | 159 -- docs/_path_8h__dep__incl.map | 8 - docs/_path_8h__dep__incl.md5 | 1 - docs/_path_8h__dep__incl.png | Bin 28394 -> 0 bytes docs/_path_8h__incl.map | 4 - docs/_path_8h__incl.md5 | 1 - docs/_path_8h__incl.png | Bin 12822 -> 0 bytes docs/_path_8h_source.html | 118 -- docs/_sandboxed_i_file_8h.html | 158 -- docs/_sandboxed_i_file_8h__dep__incl.map | 4 - docs/_sandboxed_i_file_8h__dep__incl.md5 | 1 - docs/_sandboxed_i_file_8h__dep__incl.png | Bin 4783 -> 0 bytes docs/_sandboxed_i_file_8h__incl.map | 6 - docs/_sandboxed_i_file_8h__incl.md5 | 1 - docs/_sandboxed_i_file_8h__incl.png | Bin 20076 -> 0 bytes docs/_sandboxed_i_file_8h_source.html | 118 -- docs/_sandboxed_i_file_system_8h.html | 161 -- ..._sandboxed_i_file_system_8h__dep__incl.map | 4 - ..._sandboxed_i_file_system_8h__dep__incl.md5 | 1 - ..._sandboxed_i_file_system_8h__dep__incl.png | Bin 5295 -> 0 bytes docs/_sandboxed_i_file_system_8h__incl.map | 9 - docs/_sandboxed_i_file_system_8h__incl.md5 | 1 - docs/_sandboxed_i_file_system_8h__incl.png | Bin 37040 -> 0 bytes docs/_sandboxed_i_file_system_8h_source.html | 123 -- docs/_shared_ptr_8h.html | 155 -- docs/_shared_ptr_8h__dep__incl.map | 7 - docs/_shared_ptr_8h__dep__incl.md5 | 1 - docs/_shared_ptr_8h__dep__incl.png | Bin 20657 -> 0 bytes docs/_shared_ptr_8h__incl.map | 4 - docs/_shared_ptr_8h__incl.md5 | 1 - docs/_shared_ptr_8h__incl.png | Bin 13247 -> 0 bytes docs/_shared_ptr_8h_source.html | 115 -- docs/annotated.html | 126 -- docs/annotated_dup.js | 10 - docs/bc_s.png | Bin 676 -> 0 bytes docs/bdwn.png | Bin 147 -> 0 bytes docs/classes.html | 126 -- docs/classtc_1_1_exception-members.html | 113 -- docs/classtc_1_1_exception.html | 273 --- docs/classtc_1_1_exception.js | 9 - .../classtc_1_1_exception__inherit__graph.map | 2 - .../classtc_1_1_exception__inherit__graph.md5 | 1 - .../classtc_1_1_exception__inherit__graph.png | Bin 5872 -> 0 bytes docs/classtc_1_1_optional-members.html | 115 -- docs/classtc_1_1_optional.html | 377 ---- docs/classtc_1_1_optional.js | 11 - ...f0ad6726a4de55d92fceab13ede701_icgraph.map | 3 - ...f0ad6726a4de55d92fceab13ede701_icgraph.md5 | 1 - ...f0ad6726a4de55d92fceab13ede701_icgraph.png | Bin 3492 -> 0 bytes ...f535f906c475a39ec55c5c2f707f2c_icgraph.map | 3 - ...f535f906c475a39ec55c5c2f707f2c_icgraph.md5 | 1 - ...f535f906c475a39ec55c5c2f707f2c_icgraph.png | Bin 3947 -> 0 bytes ...53a65980dc3b328b9a8bbd326bf8f5_icgraph.map | 3 - ...53a65980dc3b328b9a8bbd326bf8f5_icgraph.md5 | 1 - ...53a65980dc3b328b9a8bbd326bf8f5_icgraph.png | Bin 3480 -> 0 bytes docs/classtc_1_1_shared_ptr-members.html | 120 -- docs/classtc_1_1_shared_ptr.html | 410 ----- docs/classtc_1_1_shared_ptr.js | 16 - ...sstc_1_1fs_1_1_directory_info-members.html | 119 -- docs/classtc_1_1fs_1_1_directory_info.html | 307 ---- docs/classtc_1_1fs_1_1_directory_info.js | 15 - docs/classtc_1_1fs_1_1_i_file-members.html | 113 -- docs/classtc_1_1fs_1_1_i_file.html | 351 ---- docs/classtc_1_1fs_1_1_i_file.js | 9 - ...asstc_1_1fs_1_1_i_file__inherit__graph.map | 3 - ...asstc_1_1fs_1_1_i_file__inherit__graph.md5 | 1 - ...asstc_1_1fs_1_1_i_file__inherit__graph.png | Bin 8617 -> 0 bytes ...asstc_1_1fs_1_1_i_file_system-members.html | 115 -- docs/classtc_1_1fs_1_1_i_file_system.html | 472 ----- docs/classtc_1_1fs_1_1_i_file_system.js | 11 - ..._1fs_1_1_i_file_system__inherit__graph.map | 4 - ..._1fs_1_1_i_file_system__inherit__graph.md5 | 1 - ..._1fs_1_1_i_file_system__inherit__graph.png | Bin 21763 -> 0 bytes ...c_1_1fs_1_1_local_file_system-members.html | 116 -- docs/classtc_1_1fs_1_1_local_file_system.html | 464 ----- docs/classtc_1_1fs_1_1_local_file_system.js | 11 - ..._1_1_local_file_system__inherit__graph.map | 3 - ..._1_1_local_file_system__inherit__graph.md5 | 1 - ..._1_1_local_file_system__inherit__graph.png | Bin 15624 -> 0 bytes docs/classtc_1_1fs_1_1_path-members.html | 124 -- docs/classtc_1_1fs_1_1_path.html | 380 ---- docs/classtc_1_1fs_1_1_path.js | 18 - ...tc_1_1fs_1_1_sandboxed_i_file-members.html | 114 -- docs/classtc_1_1fs_1_1_sandboxed_i_file.html | 399 ----- docs/classtc_1_1fs_1_1_sandboxed_i_file.js | 9 - ...s_1_1_sandboxed_i_file__inherit__graph.map | 3 - ...s_1_1_sandboxed_i_file__inherit__graph.md5 | 1 - ...s_1_1_sandboxed_i_file__inherit__graph.png | Bin 8291 -> 0 bytes ...s_1_1_sandboxed_i_file_system-members.html | 116 -- ...stc_1_1fs_1_1_sandboxed_i_file_system.html | 501 ------ ...asstc_1_1fs_1_1_sandboxed_i_file_system.js | 11 - ...andboxed_i_file_system__inherit__graph.map | 3 - ...andboxed_i_file_system__inherit__graph.md5 | 1 - ...andboxed_i_file_system__inherit__graph.png | Bin 17652 -> 0 bytes docs/closed.png | Bin 132 -> 0 bytes docs/dir_000000_000001.html | 101 -- docs/dir_000000_000002.html | 101 -- .../dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html | 148 -- docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.js | 19 - ...r_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.map | 7 - ...r_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.md5 | 1 - ...r_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.png | Bin 3093 -> 0 bytes .../dir_780a451f3c62174452e0ed3dbe456aff.html | 112 -- docs/dir_780a451f3c62174452e0ed3dbe456aff.js | 4 - .../dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.html | 139 -- docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.js | 22 - ...r_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.map | 4 - ...r_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.md5 | 1 - ...r_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.png | Bin 1229 -> 0 bytes docs/doc.png | Bin 746 -> 0 bytes docs/doxygen.css | 1596 ----------------- docs/doxygen.png | Bin 3779 -> 0 bytes docs/dynsections.js | 127 -- docs/endian_8h.html | 167 -- docs/endian_8h.js | 9 - docs/endian_8h__dep__incl.map | 15 - docs/endian_8h__dep__incl.md5 | 1 - docs/endian_8h__dep__incl.png | Bin 93682 -> 0 bytes docs/endian_8h__incl.map | 2 - docs/endian_8h__incl.md5 | 1 - docs/endian_8h__incl.png | Bin 2718 -> 0 bytes docs/endian_8h_source.html | 123 -- docs/files.html | 127 -- docs/files.js | 4 - docs/files_dup.js | 4 - docs/folderclosed.png | Bin 616 -> 0 bytes docs/folderopen.png | Bin 597 -> 0 bytes docs/fs_8h.html | 158 -- docs/fs_8h__dep__incl.map | 3 - docs/fs_8h__dep__incl.md5 | 1 - docs/fs_8h__dep__incl.png | Bin 1733 -> 0 bytes docs/fs_8h__incl.map | 13 - docs/fs_8h__incl.md5 | 1 - docs/fs_8h__incl.png | Bin 76500 -> 0 bytes docs/fs_8h_source.html | 114 -- docs/functions.html | 338 ---- docs/functions_func.html | 328 ---- docs/functions_vars.html | 108 -- docs/globals.html | 105 -- docs/globals_type.html | 105 -- docs/graph_legend.html | 133 -- docs/graph_legend.md5 | 1 - docs/graph_legend.png | Bin 19465 -> 0 bytes docs/hierarchy.html | 129 -- docs/hierarchy.js | 25 - docs/index.html | 105 -- docs/inherit_graph_0.map | 3 - docs/inherit_graph_0.md5 | 1 - docs/inherit_graph_0.png | Bin 1007 -> 0 bytes docs/inherit_graph_1.map | 3 - docs/inherit_graph_1.md5 | 1 - docs/inherit_graph_1.png | Bin 1095 -> 0 bytes docs/inherit_graph_10.map | 3 - docs/inherit_graph_10.md5 | 1 - docs/inherit_graph_10.png | Bin 1073 -> 0 bytes docs/inherit_graph_11.map | 3 - docs/inherit_graph_11.md5 | 1 - docs/inherit_graph_11.png | Bin 1541 -> 0 bytes docs/inherit_graph_12.map | 3 - docs/inherit_graph_12.md5 | 1 - docs/inherit_graph_12.png | Bin 1638 -> 0 bytes docs/inherit_graph_13.map | 3 - docs/inherit_graph_13.md5 | 1 - docs/inherit_graph_13.png | Bin 2050 -> 0 bytes docs/inherit_graph_14.map | 3 - docs/inherit_graph_14.md5 | 1 - docs/inherit_graph_14.png | Bin 2329 -> 0 bytes docs/inherit_graph_2.map | 3 - docs/inherit_graph_2.md5 | 1 - docs/inherit_graph_2.png | Bin 1070 -> 0 bytes docs/inherit_graph_3.map | 3 - docs/inherit_graph_3.md5 | 1 - docs/inherit_graph_3.png | Bin 898 -> 0 bytes docs/inherit_graph_4.map | 3 - docs/inherit_graph_4.md5 | 1 - docs/inherit_graph_4.png | Bin 974 -> 0 bytes docs/inherit_graph_5.map | 3 - docs/inherit_graph_5.md5 | 1 - docs/inherit_graph_5.png | Bin 956 -> 0 bytes docs/inherit_graph_6.map | 3 - docs/inherit_graph_6.md5 | 1 - docs/inherit_graph_6.png | Bin 3341 -> 0 bytes docs/inherit_graph_7.map | 3 - docs/inherit_graph_7.md5 | 1 - docs/inherit_graph_7.png | Bin 1551 -> 0 bytes docs/inherit_graph_8.map | 4 - docs/inherit_graph_8.md5 | 1 - docs/inherit_graph_8.png | Bin 2764 -> 0 bytes docs/inherit_graph_9.map | 5 - docs/inherit_graph_9.md5 | 1 - docs/inherit_graph_9.png | Bin 4511 -> 0 bytes docs/inherits.html | 186 -- docs/jquery.js | 115 -- docs/menu.js | 50 - docs/menudata.js | 74 - docs/namespacemembers.html | 132 -- docs/namespacemembers_enum.html | 105 -- docs/namespacemembers_eval.html | 111 -- docs/namespacemembers_func.html | 120 -- docs/namespaces.html | 111 -- docs/namespaces.js | 4 - docs/namespaces_dup.js | 4 - docs/namespacetc.html | 135 -- docs/namespacetc.js | 7 - docs/namespacetc_1_1fs.html | 172 -- docs/namespacetc_1_1fs.js | 10 - docs/namespacetc_1_1string.html | 393 ---- docs/nav_f.png | Bin 153 -> 0 bytes docs/nav_g.png | Bin 95 -> 0 bytes docs/nav_h.png | Bin 98 -> 0 bytes docs/navtree.css | 146 -- docs/navtree.js | 540 ------ docs/navtreedata.js | 63 - docs/navtreeindex0.js | 189 -- docs/open.png | Bin 123 -> 0 bytes docs/resize.js | 136 -- docs/search/all_0.html | 30 - docs/search/all_0.js | 7 - docs/search/all_1.html | 30 - docs/search/all_1.js | 4 - docs/search/all_10.html | 30 - docs/search/all_10.js | 6 - docs/search/all_11.html | 30 - docs/search/all_11.js | 5 - docs/search/all_2.html | 30 - docs/search/all_2.js | 7 - docs/search/all_3.html | 30 - docs/search/all_3.js | 7 - docs/search/all_4.html | 30 - docs/search/all_4.js | 8 - docs/search/all_5.html | 30 - docs/search/all_5.js | 10 - docs/search/all_6.html | 30 - docs/search/all_6.js | 8 - docs/search/all_7.html | 30 - docs/search/all_7.js | 5 - docs/search/all_8.html | 30 - docs/search/all_8.js | 9 - docs/search/all_9.html | 30 - docs/search/all_9.js | 5 - docs/search/all_a.html | 30 - docs/search/all_a.js | 13 - docs/search/all_b.html | 30 - docs/search/all_b.js | 6 - docs/search/all_c.html | 30 - docs/search/all_c.js | 5 - docs/search/all_d.html | 30 - docs/search/all_d.js | 19 - docs/search/all_e.html | 30 - docs/search/all_e.js | 15 - docs/search/all_f.html | 30 - docs/search/all_f.js | 4 - docs/search/classes_0.html | 30 - docs/search/classes_0.js | 6 - docs/search/classes_1.html | 30 - docs/search/classes_1.js | 4 - docs/search/classes_2.html | 30 - docs/search/classes_2.js | 4 - docs/search/classes_3.html | 30 - docs/search/classes_3.js | 5 - docs/search/classes_4.html | 30 - docs/search/classes_4.js | 7 - docs/search/classes_5.html | 30 - docs/search/classes_5.js | 4 - docs/search/classes_6.html | 30 - docs/search/classes_6.js | 4 - docs/search/classes_7.html | 30 - docs/search/classes_7.js | 8 - docs/search/close.png | Bin 273 -> 0 bytes docs/search/enums_0.html | 30 - docs/search/enums_0.js | 4 - docs/search/enumvalues_0.html | 30 - docs/search/enumvalues_0.js | 6 - docs/search/files_0.html | 30 - docs/search/files_0.js | 4 - docs/search/files_1.html | 30 - docs/search/files_1.js | 5 - docs/search/files_2.html | 30 - docs/search/files_2.js | 4 - docs/search/files_3.html | 30 - docs/search/files_3.js | 5 - docs/search/files_4.html | 30 - docs/search/files_4.js | 4 - docs/search/files_5.html | 30 - docs/search/files_5.js | 4 - docs/search/files_6.html | 30 - docs/search/files_6.js | 4 - docs/search/files_7.html | 30 - docs/search/files_7.js | 7 - docs/search/files_8.html | 30 - docs/search/files_8.js | 6 - docs/search/functions_0.html | 30 - docs/search/functions_0.js | 4 - docs/search/functions_1.html | 30 - docs/search/functions_1.js | 6 - docs/search/functions_2.html | 30 - docs/search/functions_2.js | 5 - docs/search/functions_3.html | 30 - docs/search/functions_3.js | 10 - docs/search/functions_4.html | 30 - docs/search/functions_4.js | 4 - docs/search/functions_5.html | 30 - docs/search/functions_5.js | 4 - docs/search/functions_6.html | 30 - docs/search/functions_6.js | 5 - docs/search/functions_7.html | 30 - docs/search/functions_7.js | 12 - docs/search/functions_8.html | 30 - docs/search/functions_8.js | 5 - docs/search/functions_9.html | 30 - docs/search/functions_9.js | 5 - docs/search/functions_a.html | 30 - docs/search/functions_a.js | 13 - docs/search/functions_b.html | 30 - docs/search/functions_b.js | 9 - docs/search/functions_c.html | 30 - docs/search/functions_c.js | 4 - docs/search/functions_d.html | 30 - docs/search/functions_d.js | 6 - docs/search/functions_e.html | 30 - docs/search/functions_e.js | 5 - docs/search/mag_sel.png | Bin 563 -> 0 bytes docs/search/namespaces_0.html | 30 - docs/search/namespaces_0.js | 6 - docs/search/nomatches.html | 12 - docs/search/pages_0.html | 30 - docs/search/pages_0.js | 4 - docs/search/search.css | 271 --- docs/search/search.js | 814 --------- docs/search/search_l.png | Bin 604 -> 0 bytes docs/search/search_m.png | Bin 158 -> 0 bytes docs/search/search_r.png | Bin 612 -> 0 bytes docs/search/searchdata.js | 42 - docs/search/typedefs_0.html | 30 - docs/search/typedefs_0.js | 4 - docs/search/variables_0.html | 30 - docs/search/variables_0.js | 5 - docs/splitbar.png | Bin 314 -> 0 bytes docs/string_8h.html | 143 -- docs/string_8h__dep__incl.map | 3 - docs/string_8h__dep__incl.md5 | 1 - docs/string_8h__dep__incl.png | Bin 2372 -> 0 bytes docs/string_8h__incl.map | 5 - docs/string_8h__incl.md5 | 1 - docs/string_8h__incl.png | Bin 15726 -> 0 bytes docs/string_8h_source.html | 107 -- docs/structbe__uint16__t-members.html | 109 -- docs/structbe__uint16__t.html | 132 -- docs/structbe__uint16__t.js | 5 - docs/structbe__uint32__t-members.html | 109 -- docs/structbe__uint32__t.html | 132 -- docs/structbe__uint32__t.js | 5 - docs/structbe__uint64__t-members.html | 109 -- docs/structbe__uint64__t.html | 132 -- docs/structbe__uint64__t.js | 5 - docs/structle__uint16__t-members.html | 109 -- docs/structle__uint16__t.html | 132 -- docs/structle__uint16__t.js | 5 - docs/structle__uint32__t-members.html | 109 -- docs/structle__uint32__t.html | 132 -- docs/structle__uint32__t.js | 5 - docs/structle__uint64__t-members.html | 109 -- docs/structle__uint64__t.html | 132 -- docs/structle__uint64__t.js | 5 - docs/sync_off.png | Bin 853 -> 0 bytes docs/sync_on.png | Bin 845 -> 0 bytes docs/tab_a.png | Bin 142 -> 0 bytes docs/tab_b.png | Bin 169 -> 0 bytes docs/tab_h.png | Bin 177 -> 0 bytes docs/tab_s.png | Bin 184 -> 0 bytes docs/tabs.css | 1 - docs/tc_8h.html | 151 -- docs/tc_8h__incl.map | 17 - docs/tc_8h__incl.md5 | 1 - docs/tc_8h__incl.png | Bin 128598 -> 0 bytes docs/tc_8h_source.html | 111 -- docs/transcode_8h.html | 166 -- docs/transcode_8h.js | 9 - docs/transcode_8h__dep__incl.map | 4 - docs/transcode_8h__dep__incl.md5 | 1 - docs/transcode_8h__dep__incl.png | Bin 4817 -> 0 bytes docs/transcode_8h__incl.map | 2 - docs/transcode_8h__incl.md5 | 1 - docs/transcode_8h__incl.png | Bin 3080 -> 0 bytes docs/transcode_8h_source.html | 112 -- docs/types_8h.html | 159 -- docs/types_8h.js | 4 - docs/types_8h__dep__incl.map | 14 - docs/types_8h__dep__incl.md5 | 1 - docs/types_8h__dep__incl.png | Bin 91815 -> 0 bytes docs/types_8h__incl.map | 3 - docs/types_8h__incl.md5 | 1 - docs/types_8h__incl.png | Bin 10792 -> 0 bytes docs/types_8h_source.html | 107 -- 444 files changed, 21664 deletions(-) delete mode 100644 docs/_directory_info_8h.html delete mode 100644 docs/_directory_info_8h__dep__incl.map delete mode 100644 docs/_directory_info_8h__dep__incl.md5 delete mode 100644 docs/_directory_info_8h__dep__incl.png delete mode 100644 docs/_directory_info_8h__incl.map delete mode 100644 docs/_directory_info_8h__incl.md5 delete mode 100644 docs/_directory_info_8h__incl.png delete mode 100644 docs/_directory_info_8h_source.html delete mode 100644 docs/_doxygen_mainpage_8md_source.html delete mode 100644 docs/_exception_8h.html delete mode 100644 docs/_exception_8h__dep__incl.map delete mode 100644 docs/_exception_8h__dep__incl.md5 delete mode 100644 docs/_exception_8h__dep__incl.png delete mode 100644 docs/_exception_8h__incl.map delete mode 100644 docs/_exception_8h__incl.md5 delete mode 100644 docs/_exception_8h__incl.png delete mode 100644 docs/_exception_8h_source.html delete mode 100644 docs/_i_file_8h.html delete mode 100644 docs/_i_file_8h__dep__incl.map delete mode 100644 docs/_i_file_8h__dep__incl.md5 delete mode 100644 docs/_i_file_8h__dep__incl.png delete mode 100644 docs/_i_file_8h__incl.map delete mode 100644 docs/_i_file_8h__incl.md5 delete mode 100644 docs/_i_file_8h__incl.png delete mode 100644 docs/_i_file_8h_source.html delete mode 100644 docs/_i_file_system_8h.html delete mode 100644 docs/_i_file_system_8h.js delete mode 100644 docs/_i_file_system_8h__dep__incl.map delete mode 100644 docs/_i_file_system_8h__dep__incl.md5 delete mode 100644 docs/_i_file_system_8h__dep__incl.png delete mode 100644 docs/_i_file_system_8h__incl.map delete mode 100644 docs/_i_file_system_8h__incl.md5 delete mode 100644 docs/_i_file_system_8h__incl.png delete mode 100644 docs/_i_file_system_8h_source.html delete mode 100644 docs/_local_file_system_8h.html delete mode 100644 docs/_local_file_system_8h__dep__incl.map delete mode 100644 docs/_local_file_system_8h__dep__incl.md5 delete mode 100644 docs/_local_file_system_8h__dep__incl.png delete mode 100644 docs/_local_file_system_8h__incl.map delete mode 100644 docs/_local_file_system_8h__incl.md5 delete mode 100644 docs/_local_file_system_8h__incl.png delete mode 100644 docs/_local_file_system_8h_source.html delete mode 100644 docs/_optional_8h.html delete mode 100644 docs/_optional_8h__dep__incl.map delete mode 100644 docs/_optional_8h__dep__incl.md5 delete mode 100644 docs/_optional_8h__dep__incl.png delete mode 100644 docs/_optional_8h__incl.map delete mode 100644 docs/_optional_8h__incl.md5 delete mode 100644 docs/_optional_8h__incl.png delete mode 100644 docs/_optional_8h_source.html delete mode 100644 docs/_path_8h.html delete mode 100644 docs/_path_8h__dep__incl.map delete mode 100644 docs/_path_8h__dep__incl.md5 delete mode 100644 docs/_path_8h__dep__incl.png delete mode 100644 docs/_path_8h__incl.map delete mode 100644 docs/_path_8h__incl.md5 delete mode 100644 docs/_path_8h__incl.png delete mode 100644 docs/_path_8h_source.html delete mode 100644 docs/_sandboxed_i_file_8h.html delete mode 100644 docs/_sandboxed_i_file_8h__dep__incl.map delete mode 100644 docs/_sandboxed_i_file_8h__dep__incl.md5 delete mode 100644 docs/_sandboxed_i_file_8h__dep__incl.png delete mode 100644 docs/_sandboxed_i_file_8h__incl.map delete mode 100644 docs/_sandboxed_i_file_8h__incl.md5 delete mode 100644 docs/_sandboxed_i_file_8h__incl.png delete mode 100644 docs/_sandboxed_i_file_8h_source.html delete mode 100644 docs/_sandboxed_i_file_system_8h.html delete mode 100644 docs/_sandboxed_i_file_system_8h__dep__incl.map delete mode 100644 docs/_sandboxed_i_file_system_8h__dep__incl.md5 delete mode 100644 docs/_sandboxed_i_file_system_8h__dep__incl.png delete mode 100644 docs/_sandboxed_i_file_system_8h__incl.map delete mode 100644 docs/_sandboxed_i_file_system_8h__incl.md5 delete mode 100644 docs/_sandboxed_i_file_system_8h__incl.png delete mode 100644 docs/_sandboxed_i_file_system_8h_source.html delete mode 100644 docs/_shared_ptr_8h.html delete mode 100644 docs/_shared_ptr_8h__dep__incl.map delete mode 100644 docs/_shared_ptr_8h__dep__incl.md5 delete mode 100644 docs/_shared_ptr_8h__dep__incl.png delete mode 100644 docs/_shared_ptr_8h__incl.map delete mode 100644 docs/_shared_ptr_8h__incl.md5 delete mode 100644 docs/_shared_ptr_8h__incl.png delete mode 100644 docs/_shared_ptr_8h_source.html delete mode 100644 docs/annotated.html delete mode 100644 docs/annotated_dup.js delete mode 100644 docs/bc_s.png delete mode 100644 docs/bdwn.png delete mode 100644 docs/classes.html delete mode 100644 docs/classtc_1_1_exception-members.html delete mode 100644 docs/classtc_1_1_exception.html delete mode 100644 docs/classtc_1_1_exception.js delete mode 100644 docs/classtc_1_1_exception__inherit__graph.map delete mode 100644 docs/classtc_1_1_exception__inherit__graph.md5 delete mode 100644 docs/classtc_1_1_exception__inherit__graph.png delete mode 100644 docs/classtc_1_1_optional-members.html delete mode 100644 docs/classtc_1_1_optional.html delete mode 100644 docs/classtc_1_1_optional.js delete mode 100644 docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.map delete mode 100644 docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.md5 delete mode 100644 docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.png delete mode 100644 docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.map delete mode 100644 docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.md5 delete mode 100644 docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.png delete mode 100644 docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.map delete mode 100644 docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.md5 delete mode 100644 docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.png delete mode 100644 docs/classtc_1_1_shared_ptr-members.html delete mode 100644 docs/classtc_1_1_shared_ptr.html delete mode 100644 docs/classtc_1_1_shared_ptr.js delete mode 100644 docs/classtc_1_1fs_1_1_directory_info-members.html delete mode 100644 docs/classtc_1_1fs_1_1_directory_info.html delete mode 100644 docs/classtc_1_1fs_1_1_directory_info.js delete mode 100644 docs/classtc_1_1fs_1_1_i_file-members.html delete mode 100644 docs/classtc_1_1fs_1_1_i_file.html delete mode 100644 docs/classtc_1_1fs_1_1_i_file.js delete mode 100644 docs/classtc_1_1fs_1_1_i_file__inherit__graph.map delete mode 100644 docs/classtc_1_1fs_1_1_i_file__inherit__graph.md5 delete mode 100644 docs/classtc_1_1fs_1_1_i_file__inherit__graph.png delete mode 100644 docs/classtc_1_1fs_1_1_i_file_system-members.html delete mode 100644 docs/classtc_1_1fs_1_1_i_file_system.html delete mode 100644 docs/classtc_1_1fs_1_1_i_file_system.js delete mode 100644 docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.map delete mode 100644 docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.md5 delete mode 100644 docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.png delete mode 100644 docs/classtc_1_1fs_1_1_local_file_system-members.html delete mode 100644 docs/classtc_1_1fs_1_1_local_file_system.html delete mode 100644 docs/classtc_1_1fs_1_1_local_file_system.js delete mode 100644 docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.map delete mode 100644 docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.md5 delete mode 100644 docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.png delete mode 100644 docs/classtc_1_1fs_1_1_path-members.html delete mode 100644 docs/classtc_1_1fs_1_1_path.html delete mode 100644 docs/classtc_1_1fs_1_1_path.js delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file-members.html delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file.html delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file.js delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.map delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.md5 delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.png delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file_system-members.html delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file_system.html delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file_system.js delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.map delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.md5 delete mode 100644 docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.png delete mode 100644 docs/closed.png delete mode 100644 docs/dir_000000_000001.html delete mode 100644 docs/dir_000000_000002.html delete mode 100644 docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html delete mode 100644 docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.js delete mode 100644 docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.map delete mode 100644 docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.md5 delete mode 100644 docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.png delete mode 100644 docs/dir_780a451f3c62174452e0ed3dbe456aff.html delete mode 100644 docs/dir_780a451f3c62174452e0ed3dbe456aff.js delete mode 100644 docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.html delete mode 100644 docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.js delete mode 100644 docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.map delete mode 100644 docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.md5 delete mode 100644 docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.png delete mode 100644 docs/doc.png delete mode 100644 docs/doxygen.css delete mode 100644 docs/doxygen.png delete mode 100644 docs/dynsections.js delete mode 100644 docs/endian_8h.html delete mode 100644 docs/endian_8h.js delete mode 100644 docs/endian_8h__dep__incl.map delete mode 100644 docs/endian_8h__dep__incl.md5 delete mode 100644 docs/endian_8h__dep__incl.png delete mode 100644 docs/endian_8h__incl.map delete mode 100644 docs/endian_8h__incl.md5 delete mode 100644 docs/endian_8h__incl.png delete mode 100644 docs/endian_8h_source.html delete mode 100644 docs/files.html delete mode 100644 docs/files.js delete mode 100644 docs/files_dup.js delete mode 100644 docs/folderclosed.png delete mode 100644 docs/folderopen.png delete mode 100644 docs/fs_8h.html delete mode 100644 docs/fs_8h__dep__incl.map delete mode 100644 docs/fs_8h__dep__incl.md5 delete mode 100644 docs/fs_8h__dep__incl.png delete mode 100644 docs/fs_8h__incl.map delete mode 100644 docs/fs_8h__incl.md5 delete mode 100644 docs/fs_8h__incl.png delete mode 100644 docs/fs_8h_source.html delete mode 100644 docs/functions.html delete mode 100644 docs/functions_func.html delete mode 100644 docs/functions_vars.html delete mode 100644 docs/globals.html delete mode 100644 docs/globals_type.html delete mode 100644 docs/graph_legend.html delete mode 100644 docs/graph_legend.md5 delete mode 100644 docs/graph_legend.png delete mode 100644 docs/hierarchy.html delete mode 100644 docs/hierarchy.js delete mode 100644 docs/index.html delete mode 100644 docs/inherit_graph_0.map delete mode 100644 docs/inherit_graph_0.md5 delete mode 100644 docs/inherit_graph_0.png delete mode 100644 docs/inherit_graph_1.map delete mode 100644 docs/inherit_graph_1.md5 delete mode 100644 docs/inherit_graph_1.png delete mode 100644 docs/inherit_graph_10.map delete mode 100644 docs/inherit_graph_10.md5 delete mode 100644 docs/inherit_graph_10.png delete mode 100644 docs/inherit_graph_11.map delete mode 100644 docs/inherit_graph_11.md5 delete mode 100644 docs/inherit_graph_11.png delete mode 100644 docs/inherit_graph_12.map delete mode 100644 docs/inherit_graph_12.md5 delete mode 100644 docs/inherit_graph_12.png delete mode 100644 docs/inherit_graph_13.map delete mode 100644 docs/inherit_graph_13.md5 delete mode 100644 docs/inherit_graph_13.png delete mode 100644 docs/inherit_graph_14.map delete mode 100644 docs/inherit_graph_14.md5 delete mode 100644 docs/inherit_graph_14.png delete mode 100644 docs/inherit_graph_2.map delete mode 100644 docs/inherit_graph_2.md5 delete mode 100644 docs/inherit_graph_2.png delete mode 100644 docs/inherit_graph_3.map delete mode 100644 docs/inherit_graph_3.md5 delete mode 100644 docs/inherit_graph_3.png delete mode 100644 docs/inherit_graph_4.map delete mode 100644 docs/inherit_graph_4.md5 delete mode 100644 docs/inherit_graph_4.png delete mode 100644 docs/inherit_graph_5.map delete mode 100644 docs/inherit_graph_5.md5 delete mode 100644 docs/inherit_graph_5.png delete mode 100644 docs/inherit_graph_6.map delete mode 100644 docs/inherit_graph_6.md5 delete mode 100644 docs/inherit_graph_6.png delete mode 100644 docs/inherit_graph_7.map delete mode 100644 docs/inherit_graph_7.md5 delete mode 100644 docs/inherit_graph_7.png delete mode 100644 docs/inherit_graph_8.map delete mode 100644 docs/inherit_graph_8.md5 delete mode 100644 docs/inherit_graph_8.png delete mode 100644 docs/inherit_graph_9.map delete mode 100644 docs/inherit_graph_9.md5 delete mode 100644 docs/inherit_graph_9.png delete mode 100644 docs/inherits.html delete mode 100644 docs/jquery.js delete mode 100644 docs/menu.js delete mode 100644 docs/menudata.js delete mode 100644 docs/namespacemembers.html delete mode 100644 docs/namespacemembers_enum.html delete mode 100644 docs/namespacemembers_eval.html delete mode 100644 docs/namespacemembers_func.html delete mode 100644 docs/namespaces.html delete mode 100644 docs/namespaces.js delete mode 100644 docs/namespaces_dup.js delete mode 100644 docs/namespacetc.html delete mode 100644 docs/namespacetc.js delete mode 100644 docs/namespacetc_1_1fs.html delete mode 100644 docs/namespacetc_1_1fs.js delete mode 100644 docs/namespacetc_1_1string.html delete mode 100644 docs/nav_f.png delete mode 100644 docs/nav_g.png delete mode 100644 docs/nav_h.png delete mode 100644 docs/navtree.css delete mode 100644 docs/navtree.js delete mode 100644 docs/navtreedata.js delete mode 100644 docs/navtreeindex0.js delete mode 100644 docs/open.png delete mode 100644 docs/resize.js delete mode 100644 docs/search/all_0.html delete mode 100644 docs/search/all_0.js delete mode 100644 docs/search/all_1.html delete mode 100644 docs/search/all_1.js delete mode 100644 docs/search/all_10.html delete mode 100644 docs/search/all_10.js delete mode 100644 docs/search/all_11.html delete mode 100644 docs/search/all_11.js delete mode 100644 docs/search/all_2.html delete mode 100644 docs/search/all_2.js delete mode 100644 docs/search/all_3.html delete mode 100644 docs/search/all_3.js delete mode 100644 docs/search/all_4.html delete mode 100644 docs/search/all_4.js delete mode 100644 docs/search/all_5.html delete mode 100644 docs/search/all_5.js delete mode 100644 docs/search/all_6.html delete mode 100644 docs/search/all_6.js delete mode 100644 docs/search/all_7.html delete mode 100644 docs/search/all_7.js delete mode 100644 docs/search/all_8.html delete mode 100644 docs/search/all_8.js delete mode 100644 docs/search/all_9.html delete mode 100644 docs/search/all_9.js delete mode 100644 docs/search/all_a.html delete mode 100644 docs/search/all_a.js delete mode 100644 docs/search/all_b.html delete mode 100644 docs/search/all_b.js delete mode 100644 docs/search/all_c.html delete mode 100644 docs/search/all_c.js delete mode 100644 docs/search/all_d.html delete mode 100644 docs/search/all_d.js delete mode 100644 docs/search/all_e.html delete mode 100644 docs/search/all_e.js delete mode 100644 docs/search/all_f.html delete mode 100644 docs/search/all_f.js delete mode 100644 docs/search/classes_0.html delete mode 100644 docs/search/classes_0.js delete mode 100644 docs/search/classes_1.html delete mode 100644 docs/search/classes_1.js delete mode 100644 docs/search/classes_2.html delete mode 100644 docs/search/classes_2.js delete mode 100644 docs/search/classes_3.html delete mode 100644 docs/search/classes_3.js delete mode 100644 docs/search/classes_4.html delete mode 100644 docs/search/classes_4.js delete mode 100644 docs/search/classes_5.html delete mode 100644 docs/search/classes_5.js delete mode 100644 docs/search/classes_6.html delete mode 100644 docs/search/classes_6.js delete mode 100644 docs/search/classes_7.html delete mode 100644 docs/search/classes_7.js delete mode 100644 docs/search/close.png delete mode 100644 docs/search/enums_0.html delete mode 100644 docs/search/enums_0.js delete mode 100644 docs/search/enumvalues_0.html delete mode 100644 docs/search/enumvalues_0.js delete mode 100644 docs/search/files_0.html delete mode 100644 docs/search/files_0.js delete mode 100644 docs/search/files_1.html delete mode 100644 docs/search/files_1.js delete mode 100644 docs/search/files_2.html delete mode 100644 docs/search/files_2.js delete mode 100644 docs/search/files_3.html delete mode 100644 docs/search/files_3.js delete mode 100644 docs/search/files_4.html delete mode 100644 docs/search/files_4.js delete mode 100644 docs/search/files_5.html delete mode 100644 docs/search/files_5.js delete mode 100644 docs/search/files_6.html delete mode 100644 docs/search/files_6.js delete mode 100644 docs/search/files_7.html delete mode 100644 docs/search/files_7.js delete mode 100644 docs/search/files_8.html delete mode 100644 docs/search/files_8.js delete mode 100644 docs/search/functions_0.html delete mode 100644 docs/search/functions_0.js delete mode 100644 docs/search/functions_1.html delete mode 100644 docs/search/functions_1.js delete mode 100644 docs/search/functions_2.html delete mode 100644 docs/search/functions_2.js delete mode 100644 docs/search/functions_3.html delete mode 100644 docs/search/functions_3.js delete mode 100644 docs/search/functions_4.html delete mode 100644 docs/search/functions_4.js delete mode 100644 docs/search/functions_5.html delete mode 100644 docs/search/functions_5.js delete mode 100644 docs/search/functions_6.html delete mode 100644 docs/search/functions_6.js delete mode 100644 docs/search/functions_7.html delete mode 100644 docs/search/functions_7.js delete mode 100644 docs/search/functions_8.html delete mode 100644 docs/search/functions_8.js delete mode 100644 docs/search/functions_9.html delete mode 100644 docs/search/functions_9.js delete mode 100644 docs/search/functions_a.html delete mode 100644 docs/search/functions_a.js delete mode 100644 docs/search/functions_b.html delete mode 100644 docs/search/functions_b.js delete mode 100644 docs/search/functions_c.html delete mode 100644 docs/search/functions_c.js delete mode 100644 docs/search/functions_d.html delete mode 100644 docs/search/functions_d.js delete mode 100644 docs/search/functions_e.html delete mode 100644 docs/search/functions_e.js delete mode 100644 docs/search/mag_sel.png delete mode 100644 docs/search/namespaces_0.html delete mode 100644 docs/search/namespaces_0.js delete mode 100644 docs/search/nomatches.html delete mode 100644 docs/search/pages_0.html delete mode 100644 docs/search/pages_0.js delete mode 100644 docs/search/search.css delete mode 100644 docs/search/search.js delete mode 100644 docs/search/search_l.png delete mode 100644 docs/search/search_m.png delete mode 100644 docs/search/search_r.png delete mode 100644 docs/search/searchdata.js delete mode 100644 docs/search/typedefs_0.html delete mode 100644 docs/search/typedefs_0.js delete mode 100644 docs/search/variables_0.html delete mode 100644 docs/search/variables_0.js delete mode 100644 docs/splitbar.png delete mode 100644 docs/string_8h.html delete mode 100644 docs/string_8h__dep__incl.map delete mode 100644 docs/string_8h__dep__incl.md5 delete mode 100644 docs/string_8h__dep__incl.png delete mode 100644 docs/string_8h__incl.map delete mode 100644 docs/string_8h__incl.md5 delete mode 100644 docs/string_8h__incl.png delete mode 100644 docs/string_8h_source.html delete mode 100644 docs/structbe__uint16__t-members.html delete mode 100644 docs/structbe__uint16__t.html delete mode 100644 docs/structbe__uint16__t.js delete mode 100644 docs/structbe__uint32__t-members.html delete mode 100644 docs/structbe__uint32__t.html delete mode 100644 docs/structbe__uint32__t.js delete mode 100644 docs/structbe__uint64__t-members.html delete mode 100644 docs/structbe__uint64__t.html delete mode 100644 docs/structbe__uint64__t.js delete mode 100644 docs/structle__uint16__t-members.html delete mode 100644 docs/structle__uint16__t.html delete mode 100644 docs/structle__uint16__t.js delete mode 100644 docs/structle__uint32__t-members.html delete mode 100644 docs/structle__uint32__t.html delete mode 100644 docs/structle__uint32__t.js delete mode 100644 docs/structle__uint64__t-members.html delete mode 100644 docs/structle__uint64__t.html delete mode 100644 docs/structle__uint64__t.js delete mode 100644 docs/sync_off.png delete mode 100644 docs/sync_on.png delete mode 100644 docs/tab_a.png delete mode 100644 docs/tab_b.png delete mode 100644 docs/tab_h.png delete mode 100644 docs/tab_s.png delete mode 100644 docs/tabs.css delete mode 100644 docs/tc_8h.html delete mode 100644 docs/tc_8h__incl.map delete mode 100644 docs/tc_8h__incl.md5 delete mode 100644 docs/tc_8h__incl.png delete mode 100644 docs/tc_8h_source.html delete mode 100644 docs/transcode_8h.html delete mode 100644 docs/transcode_8h.js delete mode 100644 docs/transcode_8h__dep__incl.map delete mode 100644 docs/transcode_8h__dep__incl.md5 delete mode 100644 docs/transcode_8h__dep__incl.png delete mode 100644 docs/transcode_8h__incl.map delete mode 100644 docs/transcode_8h__incl.md5 delete mode 100644 docs/transcode_8h__incl.png delete mode 100644 docs/transcode_8h_source.html delete mode 100644 docs/types_8h.html delete mode 100644 docs/types_8h.js delete mode 100644 docs/types_8h__dep__incl.map delete mode 100644 docs/types_8h__dep__incl.md5 delete mode 100644 docs/types_8h__dep__incl.png delete mode 100644 docs/types_8h__incl.map delete mode 100644 docs/types_8h__incl.md5 delete mode 100644 docs/types_8h__incl.png delete mode 100644 docs/types_8h_source.html diff --git a/docs/_directory_info_8h.html b/docs/_directory_info_8h.html deleted file mode 100644 index 2b0f7d0c..00000000 --- a/docs/_directory_info_8h.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/DirectoryInfo.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
DirectoryInfo.h File Reference
-
-
- -

Declaration of tc::fs::DirectoryInfo. -More...

-
#include <tc/types.h>
-#include <tc/fs/Path.h>
-
-Include dependency graph for DirectoryInfo.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::DirectoryInfo
 Provides basic info about a directory with-in a FileSystem. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of tc::fs::DirectoryInfo.

-
Author
Jack (jakcron)
-
Version
0.2
-
Date
2019/01/15
- -

Definition in file DirectoryInfo.h.

-
-
- - - - diff --git a/docs/_directory_info_8h__dep__incl.map b/docs/_directory_info_8h__dep__incl.map deleted file mode 100644 index 178922f8..00000000 --- a/docs/_directory_info_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/_directory_info_8h__dep__incl.md5 b/docs/_directory_info_8h__dep__incl.md5 deleted file mode 100644 index 1104c4de..00000000 --- a/docs/_directory_info_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9c97be3851934077fcdaa599d8c037d0 \ No newline at end of file diff --git a/docs/_directory_info_8h__dep__incl.png b/docs/_directory_info_8h__dep__incl.png deleted file mode 100644 index f938885182028778aa816b058182cd48aa054a2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20393 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 - - - - diff --git a/docs/_directory_info_8h__incl.md5 b/docs/_directory_info_8h__incl.md5 deleted file mode 100644 index 3f436649..00000000 --- a/docs/_directory_info_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8c30ae4b293849bdeb30bc31f5781ec3 \ No newline at end of file diff --git a/docs/_directory_info_8h__incl.png b/docs/_directory_info_8h__incl.png deleted file mode 100644 index 56784b426e4e11c4284a3dd4355f2a1787955638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17885 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 BI}iW> diff --git a/docs/_directory_info_8h_source.html b/docs/_directory_info_8h_source.html deleted file mode 100644 index 034836ce..00000000 --- a/docs/_directory_info_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/DirectoryInfo.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- - - - diff --git a/docs/_doxygen_mainpage_8md_source.html b/docs/_doxygen_mainpage_8md_source.html deleted file mode 100644 index 92fecf0f..00000000 --- a/docs/_doxygen_mainpage_8md_source.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -libtoolchain: /Volumes/Scarif DB/Source/libtoolchain/DoxygenMainpage.md Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
/Volumes/Scarif DB/Source/libtoolchain/DoxygenMainpage.md
-
-
-
1 # libtoolchain - API Reference {#mainpage}
2 Notice: __This API is currently under development and is subject to change without notice.__
3 
-
- - - - diff --git a/docs/_exception_8h.html b/docs/_exception_8h.html deleted file mode 100644 index 5b52cb85..00000000 --- a/docs/_exception_8h.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -libtoolchain: tc/Exception.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
Exception.h File Reference
-
-
- -

Declaration of tc::Exception. -More...

-
#include <exception>
-#include <string>
-
-Include dependency graph for Exception.h:
-
-
-
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::Exception
 An extension of std::exception that allows optionally specifying a module name. More...
 
- - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
-

Detailed Description

-

Declaration of tc::Exception.

-
Author
Jack (jakcron)
-
Version
0.1
-
Date
2019/01/15
- -

Definition in file Exception.h.

-
-
- - - - diff --git a/docs/_exception_8h__dep__incl.map b/docs/_exception_8h__dep__incl.map deleted file mode 100644 index d15367b5..00000000 --- a/docs/_exception_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_exception_8h__dep__incl.md5 b/docs/_exception_8h__dep__incl.md5 deleted file mode 100644 index 418c910f..00000000 --- a/docs/_exception_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7a6c27fa5e758e4a20502767dd2f420e \ No newline at end of file diff --git a/docs/_exception_8h__dep__incl.png b/docs/_exception_8h__dep__incl.png deleted file mode 100644 index fde5c8f56289d57c73a4265d2d450daec6d2fa4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6070 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 diff --git a/docs/_exception_8h__incl.map b/docs/_exception_8h__incl.map deleted file mode 100644 index 9d902e36..00000000 --- a/docs/_exception_8h__incl.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/docs/_exception_8h__incl.md5 b/docs/_exception_8h__incl.md5 deleted file mode 100644 index e8d37a4c..00000000 --- a/docs/_exception_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5d5bc527fec5790d7ba659d8654acc88 \ No newline at end of file diff --git a/docs/_exception_8h__incl.png b/docs/_exception_8h__incl.png deleted file mode 100644 index 75794a3d62f9e857afb9a620ba78152bc4dd2d75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4780 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 XpVaG{guME<{RF5eYAAe>GY$R^3FJ%g diff --git a/docs/_exception_8h_source.html b/docs/_exception_8h_source.html deleted file mode 100644 index 12944608..00000000 --- a/docs/_exception_8h_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -libtoolchain: tc/Exception.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Exception.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <exception>
10 #include <string>
11 
12 namespace tc {
13 
18  class Exception : public std::exception
19  {
20  public:
22  Exception() noexcept;
23 
36  Exception(const std::string& what) noexcept;
37 
49  Exception(const std::string& module, const std::string& what) noexcept;
50 
52  const char* what() const noexcept;
53 
55  const char* module() const noexcept;
56 
64  const char* error() const noexcept;
65  private:
66  std::string what_;
67  std::string module_;
68  std::string error_;
69  };
70 
71 } // namespace tc
Root namespace for libtoolchain.
Definition: Exception.h:12
-
An extension of std::exception that allows optionally specifying a module name.
Definition: Exception.h:18
-
const char * module() const noexcept
Get module tag.
-
Exception() noexcept
Default Constructor.
-
const char * what() const noexcept
Get explanation for exception (inherited from std::exception)
-
const char * error() const noexcept
Get explanation for exception.
-
-
- - - - diff --git a/docs/_i_file_8h.html b/docs/_i_file_8h.html deleted file mode 100644 index 7fcda0a3..00000000 --- a/docs/_i_file_8h.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/IFile.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
IFile.h File Reference
-
-
- -

Declaration of tc::fs::IFile. -More...

-
#include <tc/types.h>
-
-Include dependency graph for IFile.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::IFile
 An interface for implementing a basic File handler. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of tc::fs::IFile.

-
Author
Jack (jakcron)
-
Version
0.1
-
Date
2018/11/10
- -

Definition in file IFile.h.

-
-
- - - - diff --git a/docs/_i_file_8h__dep__incl.map b/docs/_i_file_8h__dep__incl.map deleted file mode 100644 index ae700c6c..00000000 --- a/docs/_i_file_8h__dep__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/_i_file_8h__dep__incl.md5 b/docs/_i_file_8h__dep__incl.md5 deleted file mode 100644 index 96a58b77..00000000 --- a/docs/_i_file_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c0517145dd5f700b5d2b804953c60d9d \ No newline at end of file diff --git a/docs/_i_file_8h__dep__incl.png b/docs/_i_file_8h__dep__incl.png deleted file mode 100644 index 13f0e18dcfb6fea362e35b9cb0ea6824280ee642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24204 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 YiR - - - diff --git a/docs/_i_file_8h__incl.md5 b/docs/_i_file_8h__incl.md5 deleted file mode 100644 index e8d3021c..00000000 --- a/docs/_i_file_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3701a607b29554c637a4afe2fc8449d1 \ No newline at end of file diff --git a/docs/_i_file_8h__incl.png b/docs/_i_file_8h__incl.png deleted file mode 100644 index 51f33aa2c9aa2435726f741d090457ec134ffd2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12818 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 diff --git a/docs/_i_file_8h_source.html b/docs/_i_file_8h_source.html deleted file mode 100644 index f9eaf955..00000000 --- a/docs/_i_file_8h_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/IFile.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
IFile.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/types.h>
10 
11 namespace tc { namespace fs {
12 
26  class IFile
27  {
28  public:
32  virtual ~IFile() = default;
33 
38  virtual uint64_t size() = 0;
39 
45  virtual void seek(uint64_t offset) = 0;
46 
51  virtual uint64_t pos() = 0;
52 
60  virtual void read(byte_t* data, size_t len) = 0;
61 
67  virtual void write(const byte_t* data, size_t len) = 0;
68  };
69 
70 }}
Declaration of generic types used by libtoolchain.
-
virtual void read(byte_t *data, size_t len)=0
Read data from the file.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
virtual ~IFile()=default
Destructor.
-
virtual uint64_t pos()=0
Get the file position.
-
virtual uint64_t size()=0
Get size of the file.
-
An interface for implementing a basic File handler.
Definition: IFile.h:26
-
virtual void write(const byte_t *data, size_t len)=0
Write data to the file.
-
uint8_t byte_t
Typedef uint8_t to byte_t to more explicity indicate its role in memory related contexts.
Definition: types.h:19
-
virtual void seek(uint64_t offset)=0
Set the file position.
-
-
- - - - diff --git a/docs/_i_file_system_8h.html b/docs/_i_file_system_8h.html deleted file mode 100644 index 73768084..00000000 --- a/docs/_i_file_system_8h.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/IFileSystem.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
IFileSystem.h File Reference
-
-
- -

Declaration of tc::fs::IFileSystem. -More...

-
#include <tc/types.h>
-#include <tc/fs/IFile.h>
-#include <tc/fs/DirectoryInfo.h>
-
-Include dependency graph for IFileSystem.h:
-
-
- - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::IFileSystem
 An interface for implementing a basic FileSystem handler. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
- - - -

-Enumerations

enum  tc::fs::FileAccessMode { tc::fs::FAM_READ, -tc::fs::FAM_EDIT, -tc::fs::FAM_CREATE - }
 
-

Detailed Description

-

Declaration of tc::fs::IFileSystem.

-
Author
Jack (jakcron)
-
Version
0.3
-
Date
2019/01/15
- -

Definition in file IFileSystem.h.

-
-
- - - - diff --git a/docs/_i_file_system_8h.js b/docs/_i_file_system_8h.js deleted file mode 100644 index b3d22b5b..00000000 --- a/docs/_i_file_system_8h.js +++ /dev/null @@ -1,9 +0,0 @@ -var _i_file_system_8h = -[ - [ "IFileSystem", "classtc_1_1fs_1_1_i_file_system.html", "classtc_1_1fs_1_1_i_file_system" ], - [ "FileAccessMode", "_i_file_system_8h.html#a1d1ada056f216d2ed93459999aa70243", [ - [ "FAM_READ", "_i_file_system_8h.html#a1d1ada056f216d2ed93459999aa70243adf70b294d2a6bd7f269354df6d573f0e", null ], - [ "FAM_EDIT", "_i_file_system_8h.html#a1d1ada056f216d2ed93459999aa70243ab46da1e04799968751c18e282194259b", null ], - [ "FAM_CREATE", "_i_file_system_8h.html#a1d1ada056f216d2ed93459999aa70243a5e488e9d5880ae82509086ad5abe2e97", null ] - ] ] -]; \ No newline at end of file diff --git a/docs/_i_file_system_8h__dep__incl.map b/docs/_i_file_system_8h__dep__incl.map deleted file mode 100644 index d544d060..00000000 --- a/docs/_i_file_system_8h__dep__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/_i_file_system_8h__dep__incl.md5 b/docs/_i_file_system_8h__dep__incl.md5 deleted file mode 100644 index 564d97c5..00000000 --- a/docs/_i_file_system_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -177739d4d352941aa37a7d67d0bd8b5b \ No newline at end of file diff --git a/docs/_i_file_system_8h__dep__incl.png b/docs/_i_file_system_8h__dep__incl.png deleted file mode 100644 index 361750e147f430187f79650342c05850e5d15b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11492 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 - - - - - - diff --git a/docs/_i_file_system_8h__incl.md5 b/docs/_i_file_system_8h__incl.md5 deleted file mode 100644 index 698cc77d..00000000 --- a/docs/_i_file_system_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7abb996631f99977847900aac4b43237 \ No newline at end of file diff --git a/docs/_i_file_system_8h__incl.png b/docs/_i_file_system_8h__incl.png deleted file mode 100644 index dcea29b695552144d27b780b7bb478b4e38f5369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26341 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 - - - - - - -libtoolchain: tc/fs/IFileSystem.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
IFileSystem.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/types.h>
10 #include <tc/fs/IFile.h>
11 #include <tc/fs/DirectoryInfo.h>
12 
13 namespace tc { namespace fs {
14 
19  {
23  };
24 
41  {
42  public:
43  virtual ~IFileSystem() = default;
44 
53  virtual tc::fs::IFile* openFile(const tc::fs::Path& path, tc::fs::FileAccessMode mode) = 0;
54 
61  virtual void deleteFile(const tc::fs::Path& path) = 0;
62 
67  virtual void getCurrentDirectory(tc::fs::Path& path) = 0;
68 
73  virtual void setCurrentDirectory(const tc::fs::Path& path) = 0;
74 
82  virtual void createDirectory(const tc::fs::Path& path) = 0;
83 
90  virtual void deleteDirectory(const tc::fs::Path& path) = 0;
91 
99  virtual void getDirectoryListing(const tc::fs::Path& path, tc::fs::DirectoryInfo& info) = 0;
100  };
101 
102 }} // namespace tc::fs
Declaration of generic types used by libtoolchain.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
virtual void getDirectoryListing(const tc::fs::Path &path, tc::fs::DirectoryInfo &info)=0
Get directory listing a directory.
-
Provides basic info about a directory with-in a FileSystem.
Definition: DirectoryInfo.h:23
-
virtual tc::fs::IFile * openFile(const tc::fs::Path &path, tc::fs::FileAccessMode mode)=0
Open a file.
-
An interface for implementing a basic File handler.
Definition: IFile.h:26
-
virtual void getCurrentDirectory(tc::fs::Path &path)=0
Get the full path of the current directory.
-
virtual void createDirectory(const tc::fs::Path &path)=0
Create a new directory.
-
virtual void setCurrentDirectory(const tc::fs::Path &path)=0
Change the current directory.
-
Represents a unicode path for a filesystem.
Definition: Path.h:19
- -
Declaration of tc::fs::DirectoryInfo.
-
FileAccessMode
Definition: IFileSystem.h:18
-
virtual void deleteFile(const tc::fs::Path &path)=0
Delete a file.
- -
virtual void deleteDirectory(const tc::fs::Path &path)=0
Delete a directory.
- -
An interface for implementing a basic FileSystem handler.
Definition: IFileSystem.h:40
-
Declaration of tc::fs::IFile.
-
-
- - - - diff --git a/docs/_local_file_system_8h.html b/docs/_local_file_system_8h.html deleted file mode 100644 index d9e92e4e..00000000 --- a/docs/_local_file_system_8h.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/LocalFileSystem.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
LocalFileSystem.h File Reference
-
-
- -

Declaration of tc::fs::LocalFileSystem. -More...

-
#include <tc/fs/IFileSystem.h>
-
-Include dependency graph for LocalFileSystem.h:
-
-
- - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::LocalFileSystem
 An IFileSystem wrapper around the existing OS FileSystem API. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of tc::fs::LocalFileSystem.

-
Author
Jack (jakcron)
-
Version
0.2
-
Date
2018/12/23
- -

Definition in file LocalFileSystem.h.

-
-
- - - - diff --git a/docs/_local_file_system_8h__dep__incl.map b/docs/_local_file_system_8h__dep__incl.map deleted file mode 100644 index 27610140..00000000 --- a/docs/_local_file_system_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_local_file_system_8h__dep__incl.md5 b/docs/_local_file_system_8h__dep__incl.md5 deleted file mode 100644 index a1e69273..00000000 --- a/docs/_local_file_system_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2f54aba0cc0ab9c546f6c733bec2b55e \ No newline at end of file diff --git a/docs/_local_file_system_8h__dep__incl.png b/docs/_local_file_system_8h__dep__incl.png deleted file mode 100644 index 41561e47b532ee2418cc5fe28908fec337df396f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4740 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 diff --git a/docs/_local_file_system_8h__incl.map b/docs/_local_file_system_8h__incl.map deleted file mode 100644 index fbbb3202..00000000 --- a/docs/_local_file_system_8h__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/_local_file_system_8h__incl.md5 b/docs/_local_file_system_8h__incl.md5 deleted file mode 100644 index a5fe035b..00000000 --- a/docs/_local_file_system_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -17392d8426367710c6a683199b78b46e \ No newline at end of file diff --git a/docs/_local_file_system_8h__incl.png b/docs/_local_file_system_8h__incl.png deleted file mode 100644 index 6116532fcf77299ccb6cfe9777d83b90c89575c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29410 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 - - - - - - -libtoolchain: tc/fs/LocalFileSystem.h Source File - - - - - - - - - - - - - - -

-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
LocalFileSystem.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/fs/IFileSystem.h>
10 
11 #ifdef _WIN32
12  #include <windows.h>
13 #endif
14 
15 namespace tc { namespace fs {
16 
22  {
23  public:
28 
30  void deleteFile(const tc::fs::Path& path);
32  void setCurrentDirectory(const tc::fs::Path& path);
33  void createDirectory(const tc::fs::Path& path);
34  void deleteDirectory(const tc::fs::Path& path);
36 
37  private:
38  const std::string kClassName = "tc::fs::LocalFileSystem";
39 #ifdef _WIN32
40  DWORD getOpenModeFlag(tc::fs::FileAccessMode mode) const;
41  DWORD getShareModeFlag(tc::fs::FileAccessMode mode) const;
42  DWORD getCreationModeFlag(tc::fs::FileAccessMode mode) const;
43 
44  void pathToWindowsUTF16(const tc::fs::Path& path, std::u16string& out);
45 #else
46  int getOpenModeFlag(tc::fs::FileAccessMode mode) const;
47 
48  void pathToUnixUTF8(const tc::fs::Path& path, std::string& out);
49 #endif
50  };
51 
52 }} // namespace tc::fs
Root namespace for libtoolchain.
Definition: Exception.h:12
-
Provides basic info about a directory with-in a FileSystem.
Definition: DirectoryInfo.h:23
-
An interface for implementing a basic File handler.
Definition: IFile.h:26
-
void getDirectoryListing(const tc::fs::Path &path, tc::fs::DirectoryInfo &info)
Get directory listing a directory.
-
void createDirectory(const tc::fs::Path &path)
Create a new directory.
-
LocalFileSystem()
Default Constructor.
-
void setCurrentDirectory(const tc::fs::Path &path)
Change the current directory.
-
void deleteFile(const tc::fs::Path &path)
Delete a file.
-
Represents a unicode path for a filesystem.
Definition: Path.h:19
-
void deleteDirectory(const tc::fs::Path &path)
Delete a directory.
-
An IFileSystem wrapper around the existing OS FileSystem API.
-
Declaration of tc::fs::IFileSystem.
-
FileAccessMode
Definition: IFileSystem.h:18
-
An interface for implementing a basic FileSystem handler.
Definition: IFileSystem.h:40
-
tc::fs::IFile * openFile(const tc::fs::Path &path, tc::fs::FileAccessMode mode)
Open a file.
-
void getCurrentDirectory(tc::fs::Path &path)
Get the full path of the current directory.
-
-
- - - - diff --git a/docs/_optional_8h.html b/docs/_optional_8h.html deleted file mode 100644 index 7cf98d45..00000000 --- a/docs/_optional_8h.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -libtoolchain: tc/Optional.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
Optional.h File Reference
-
-
- -

Declaration of tc::Optional. -More...

-
#include <tc/types.h>
-#include <tc/SharedPtr.h>
-
-Include dependency graph for Optional.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::Optional< T >
 A wrapper class, where the existence of the wrapped value is optional. More...
 
- - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
-

Detailed Description

-

Declaration of tc::Optional.

-
Author
Jack (jakcron)
-
Version
0.1
-
Date
2019/01/06
- -

Definition in file Optional.h.

-
-
- - - - diff --git a/docs/_optional_8h__dep__incl.map b/docs/_optional_8h__dep__incl.map deleted file mode 100644 index 1ad7b972..00000000 --- a/docs/_optional_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/_optional_8h__dep__incl.md5 b/docs/_optional_8h__dep__incl.md5 deleted file mode 100644 index 00c2e481..00000000 --- a/docs/_optional_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4a51b21aa7d5917630b61ebd43ae4cc2 \ No newline at end of file diff --git a/docs/_optional_8h__dep__incl.png b/docs/_optional_8h__dep__incl.png deleted file mode 100644 index 7b85c5e23953d7bc0b9721a2cf1c8135667cf3d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2701 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 diff --git a/docs/_optional_8h__incl.map b/docs/_optional_8h__incl.map deleted file mode 100644 index cd72173c..00000000 --- a/docs/_optional_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/_optional_8h__incl.md5 b/docs/_optional_8h__incl.md5 deleted file mode 100644 index 69f4e54c..00000000 --- a/docs/_optional_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b37c3cee38e877da5e2ce8e2e7900889 \ No newline at end of file diff --git a/docs/_optional_8h__incl.png b/docs/_optional_8h__incl.png deleted file mode 100644 index 982b4b90bb547d1f85f4eb020c9f509697981f30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18159 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𝔱92|(q;j0Pz)Cvers(E z3wz$1@FukTGMpFW~ka50MbvCwFhAumrDWDE^s%CNAZm}HwMvmf*ddf}?D+P<~6%B=9U zUxG*OYnOeBp7xCx_BvJ(KWgzGQm;Qb;P1=ny&K6ejr};gmdWLgG|P)cxbm)8GBK$W z!_g6St|D(}0>2yJ_0I^n$>IuXH-QH2Lz2TJVGuAndIGuNGBRRb2QsksX<;2fMs31} zc>Ib2s=ue+Sk&EIuMPEWv zdbq7<0B0!Q9Z0G1=tQdKnu6SOyFLlHZQN~1m%-+J{ziyesE`?HFc7n5X+B;QK%?F( z5L}D86?H>cm<)nRi|A%8tII8EmN4WBDQwNVzDXf8LT@s;vYKAeehtUKPT$%aX?|wh zoTn8U4s2&>U%Ctiq&w~BeTK@);@K+G!HiNOsdffLkW2GvAx+WHP;g#b3LeNY&f?0F zBT{Z8N7A0?z2ATLL&D{w{_xcv!PAF z8$c2NTmyfXjOTi2zx|saSMk={?rz=g6uRIMgH3eqA~OWj;6Z!Y0f=|m_O6cG9Y7|} z09l?q@Fdp2hve@r_0vMWSVEO~FjnsMw0uQ4TZJL8+9mHFtb<%pX0`YdR=H{a>LZ*N zGc)U3yUvmTiT;f%t^)1@WcTuMj?zW#$Z)};{joF0!Ven4*l+`x^pY8&;BMuQ;unpZ z4F*EX4ut%Cjy!(n^tF2$L@uEgKjb~@a_TGP6pAF_ezll5txoWV%k9}>L;f4#9j72$S zvVe$-W57oPbEL7HfL*fA&vanGTYpz~hXe*PGclpcbr_mjcEtTzr}h01G)z({ z74zPymgW#GwfL8%=5|J1ai#D1%~{vhZT<~bEA+klNfokyztW8@gIqRZd7v`GZIc|* zf&Dkbk|taTaE9yqOU<3uevvXhr_0l1_`bJ#fDi)mtJnB$!lYUSU{`*hZPt99lEU0^ zygA+5SUJ5R^{B7QVz^uN4RvTY39Q4h#uqk>fsHRPe(LVr29^Mhh^s)Ems|&dKofb$ z{{EBx92LB^DWCqORYJgG8<+mO!U=>m|19 zdUdK7*R5reIF2KNw=6dKeI=Sj;`%1h8$HP(Ps^6Bu{_+Coo{ntEAwVzqX*`x=`|yr z{pq2L^@Ka*sQLGDlnsogYQ;b@VLjm6fl$J4PEqZ4L7ga=988RkBBrGcKi;#NOLo)G z&s+&x($Y|)xMyN9QaITRXcXw`rgygz)7070hR82H^sUd9?E2C5n3-E8pyO>NvYswo za&CQrp*mVTYco2!wJKx6dg>aZ0j*7ZPqGQadGq`#AlE$6cMqgvBVg#4hcw3xJINSOS=0P^Od$ll zNk@63kJR&SKTzyy%ao^qL{6=x<^8Z&YiKtb%=fSy!(K>{9bm55+JtzaT7>bSh}WK5 z#q`p}O%n4WUF`iHYeff4Fzg1-Ajub-^-nIsQy~cU{1=a% z8XTM@?Lrq~)ecyb!}$eIKy0{6OShh;c9o#`O;3@CU>8#T;>Zm@KMD7Tn5ODXjy(QBgrTSfHj8<-vR#gph zx&4q<7XgkikerixCWN7l{6yP>kS;}(;y`KXR_Y_xttl_=+3yVB9k1y#VF1i-T^b+3 z;5R3HF_%CXYFanU4(m$oF~3Xn6SfN8$y$%Y58@Ob{{uEU;_ z#}`PvG?+_|j!r$dHCu<3U*-;21TY8Rv1gc4kfi-7H6Nd!pC5=!4_Ek}nLfdDS-EuW zwhP|i3btoY*1fZ1J7)eJA`??R_w(OabBl}rFx?ftOkp;EQYhq`)P22GQX=n9R+nx? z`w8?}9eW+n&mQl2Ee$L(U=`+@oS&b+DM)NrhiIO@x29DQ5lSQQDGa(x{fQd*T~TXd zl9)A~|B@m36oJeI4Jm2RluYp-G^zmuKKJL3q zF}BAbo~h?)5L8rD$Sj;~H52g~HeH%5)6&xVq)|Z4rC*DH7FIG`MA?EI{VFXT9ptxx z6BD{9f9(QUdwU*$g)omcmoPCIA*a6gEk!?3(B@IOMjhm1`Jkn~U&~RhoYxT0*=2X;( zzE{Dh$JyE07pFyK3jxf^`@g(gh)ZRt%je0 zeDmPp!-D(;rV<=TkdkBBHRtk*>Lv3u3i@DW0-dM=d2YzY9=s9}ggXV^ zLivNjW(3hbDEkN+F#{u;sG&!T+VxQ>kG5TMqiDrO6s07|Mn2gvY;MGorkA`{hETqFSLJ zJU++Hh;W4>rlbr7!eI{fQs}E!Z2&ckE&7>I_drb}xpL)YX6E(G%*=ba>i;O=#g;>C znK?O{mO8{*5FZong1+hQ;j!$A?|Xi<2+a$QjwbTlUkd|X$#}LY2xb7G3~a0C7BJ7n zo!_UVyn>0isx=MbTz`X~A3m)xF$NZXBgp7zsBhoCSxi*%dhRYE{(x_jlXQ3#ToA80 z0bB(E1nv$?k4#Lev8QFv1arA0aS0H_*3XO;u~c`78JGe!SF3d>q5qbsvo; zF}S@;k>lV>egRG6a0L~;#H*LGk53OneSLlZ=!?hPnZcnkaRz4M!Gi~^fA=CIy_4=H z1kQio1RxjSdzLgiKd(Et+Z!Gx|NZlmk-l;(F?_lejfG?1<7E-lv+nogrYS;9Ojjk& zoav;3tDu84;(ozKy4AbjDVUb_^rXLgm$olM&Zo>;3y*DR+HiAj4xO93$dU77JHE9k zgr?94#c!XVe1|c64uoQq(Dd4?%cPzezGojix#!~zn25>9Ud9{PhTTw!zoI^{KpA?uY-u+i@FgZSWrd$ zZ(GjCIA4jP#oVQo5hRTpFfLM#UP(aN;W|RAprV58ssM9 zi7I`I(c;5IyDJH|K>nWZ?CfmKe&`1Y#w)PO5O6n4TmiC_PsGhut?PVwA3CW0d@tZ>n4Z{mcPY^HdEB_=F9T|hS9QR0X{y*8OVT{ zY}#kuOOat$+gv_=39@SEF(1`Tiwv}Nd2X2+K3re3Q(*o>BZ@Id$#L&GbUhbxRc z#WbLyidv2oYCK$-F8^#6c4nmp+Mn0enmdwu2;<3T_1b9I3I{w!Ex77M zwh;t0Ea|Elo$Eg4pKudi}o`dwm-i=wMyF`S}t&q~_(6PXjZ@nhF?V z=wLm~e!TETgXv`V(Q6Y?*%dGjqS$iN^aRvMK*LtVUMK!@p!AE?hzzpbM~bEg)}sg* zraET4UP@mDM0|Gl>nHa=oyNkxry|;wwt;@H9lW|6H9vKf{M*h_yPL4BHU{Q8ocZzlc_$d8(6lJvZzVCG=F^ z(vk&Y<)z{LJ1-(5Y4NFkqTRpGogstQd~w6J9h$}{s>QPzP5tNW@;1^a?1iig4_A|ezw;;WtV|BVdD?F4 z9>2EiU45=n{j*`KNn&gI;uT*QAsKZPd5&`HGh|RaeL z@6D5i_KmBi`N-hn&SIkc&Z(mNGooPT85|sL0k#x?bDJnLOAJ_|jrTlhDp~rkmDO>B z<8ORki3+{`iKnlMWHJP=+iVWG5 z`u@usxp51CEuJ=r(}D<%J!nZ#Tj!BT{+SG)+sQZ*nlHJ6^!xMdUdvmjK)d>1dL@Os zrm+bLfQTf%xUS11N-C$eKx2E1zWdG(TS)N32mi#J^3-+*eUWu7!jYN|$t!v9>5i8D z3)w1ISX1?9ch%W2Ar=E(NMSh&!B5}_j-Q}%LMAB|StcP{=t?#J>;$J`s}an6eIHuQ zqNzWPjq2q1++X?rnGJ;z`(-JvSxmAG1%@kpBpVyqL&)Q&vs>F_gT4ibK7(U&YuB39 z<+;fRN_|JBR%8k-k(-ofG23(C>2Kch7n^ob1p;v-F8-uaXkl^W*YArZ#tb9(ju-08 zHJX96UTtEGm0Rez6){8-@8po#6Xhum2%tkpuQvSsfV-;N@!7Mv##)y3<(Nr+ejupr zy};H*nGw0BPoiSbT<*O5;B9qqm+r68r-r{uDuM2yuRWOZY-zdPu|gDVewCh5m~Olx zxpl1kCLRHP_juV;!QlAIZ(y#%-H)jYT~^PZJC4{V@IR)Gt>+tp1Mpzlj|x!D8(X`z zx`W{i+sPGJtS`YH(Ddt$6x9~bI^wwZ`{b}bJ|&0M?)!n zJhx0+TpcbjbYzZS>Y9MS#m=%IE@&qnKtR*<_s{_jKIE-0XH6}#MM_R~e*eh@Q`i&W zzPPqOBo)ni4p-PLZq0_!?0#_VPbYz~wVnybmz(ZgZwaGW8ZOAya*^u&@x*wf5bx>N zZAv)pn^J1t`7YdN87 z7G7ToPNx>kCtX|n?f3jeg0Xw-@0o91o#A1d>9J1$11t6%zrPEm7l%@oYYX>cW?xxhdlbTwp_S7?I(fGELV8X$cTE-k`ovx z_tk=w!<2!Ex^yM~q%-w%+pL z_IHQV!$o_iJe|2RN9tdC27mwNE)7}H1B-VcnV$P&G6P zUdALO=&Y@}x;`PMJG*Udt#oqN)C24jkul7E{*q}x*#$_3s61iA^gXfp+(9I#k?`-s zSlb03NJsVo8|^r*GXgjUo3bBnram9=l>IzvWE0!_q*xX#EJ_I_m_Y4fpz@zOl#MfoY<>h=`%@2l$ z*=mn1LySaO$xg3MO>qR^p};f&LU3@E%j*4@9bbj4D^3e*Z$9xoA05|hg`g|!_?tg4 z$Oi?73J&4aD?&Om#G_Z`x~~6a=Xp80)o>ERMB>vPassQ#Z#zpKI=d$UXCAP%E#NLh zE6{)}7;Lf3@-M?9jrZ4*h242@EnWU@o^8#tAD$gpT~TML zE7VIgY7Orf_Hrc`Kb$e86?LWaIpJ!2%@|SabU(Jy9n2q3eooSC@ua;N?G!%$>8DP-rwOM!F;g4C^ zVr@z34v*)qLXtS0&Kf-!9RxqA$>=lJ#DDKerT~s}RpE>g1Ggu@LI7Rjln1M*eym5h zm8v6O%Mg;!KwIt>P#hpivsbyAxA& z3>iLN9(pUOMT+rPiha*+AxK2KfOXHlI6&%2lDHV@{(gmQe%~%2H6&_ob#cdsi|yi) z1zz~0*%UkHdf?kMq)%$ve)Ug(L8b ze*ebDr>~{dES%tU$-uxBtktQcpMgax`?;qIG?Dq5O+qqU^H_z;@ME_*JX(9Cmn3o< z19TQX%VB|rl;Ga&omG6u_91v}9c(fslBlxH$rII(-W2~{@AGkHZ=|LX`1enwZ?p@( zm6*yAQ^YeFW@Rt-rFFr<>%HL&yASd9&U~Am-(L@r{nUM`rRxqy*=+epee;jRj$XPe zOP7NrpDq8K#@9^{s6R530OCJQ?G}o4=J#*^UI~W4(9k=Ff4}pR3;8dDO%*ZA`PR1? zVHNpk1Cjxr5|tz&K{Jp|@N+W$N2daymnAIDY;>S5&=th|WQHsWY$rWY3?Jsv8-Ju&A74c64CYY=Eu>F~{FumN}eOFi*9a97tHHI?tj0 zPpX_8x`)S3Mf26(MUMb5w(G#&mOXAA^u78fO7<_!@SOZ9Bht^)04AzXPa`LA@! z?~CbB#g2dM<%bb=#LLSofTJdVJck&ag6q0bZ%Ur93mc&}=hnxI+Hj466`D+OsV|k4 zArXpy=+W!Fgb3<9e@MBy`rdkc8Q5c1GRy`}NwQr@_1sH$@2bttyndW}J0TBjq|!6nFDcS7nC_GW-K=ge$BF#+{xbALa*%j&Q{xP?~+bN3rAM()9W zSItr0bJVMeO-jOtwyEbD9b;74PSXboO<9Dzz_>t@`(8ru{B2@l1QfPlJYiXPU0R=< zSX%X->+lj(caL>BQD-HCiU$%ASL?tKqS7yZ7cO9bmhFmrRdOfO^3!^mp%ivY8&{wP z`!gH8t8}8S;8rFr(*{=s{Iov4cz5AN-)HgeQC@77TM@OjwLozxJLf6KIQUf@j(3-h z4A>n;QBr3zoLAl4Zcj|$62723uDc^D3ccC2iWm5Yb=-O$710>jgpK3lClEb8?Vb?p5QDA8@c2u$R?*e#A;lO&tzCqo!})&KSh>~wh=Cs_>eGcfgWXV2y zM7+Jdo!V~!hIQ+z>guNcei8_WNJvDH**KveD5x+ruGIBi}q5Lcvi5Pje>XUPgi^d=ssaXd75}&vI4`;4I?9?mVrF? z?Za42eUd~WJ92QP1?gj7)Au`biHVD2(J0itg$e~N2v{uY*|jx}{mp4^H8r)CG^r5j zorNDVyno`^*w_@LWn^NXr<8~|{tkVhpzzab>_?&y9!N@)^LjO|mv7#@nWm8!L@e3; zQNrNx=qM~O@Dd3X)h!X%HDvHP>W>y^`m-O>kX*fb198t)+D^8-yY)DbIQ>B)9%BoT zfmH|lFzFNO`+Pk|4PkiEBL~rGla5a<(-s%#p2G(A+!Pf^Ib0wDy1)V4K^=snE z`8U24DTAuIIx97LIXOAVc=7t4x;rfP&>?kxX!q{AZ>0|Yi63Mss@wkn?H~i03f=#K zy!@@lHMUc=Uo(5X6oZ;q!HEq-um*>I?Ne}8U1r1;v@X!lnUkfZqS9LWONwfN3t(WN zDsGh;DDn!(4x)mFYn~6VyqyT`+MeG!{A;XQ=jq}ARcT<^v#USKelPA*y|G8msT~TF zxlGRh6?kP0@>hry9VfCbg79%4b zUBXko#a8gJvn0wB?t(Q=uDuWHiz0r}T!p67<)VL$jpp@Q1uJvLKuU4%DsUP?(Ic!x zl@-=P&b`S(sILUGyr#>?Wl&9=2i{ejz8U)s;FdxXCylepMkZ_^F0*Xw^Om6$gkf;! zqnr06y~xXBhx$Hyknq&p*2V7LRq+1Nk^9Voo;|NYt_2hs8Q8se4@aP?30H%w4oqi= zRc^Gxh6cpANbpY@gX^(+g!IZ4P}c%32-b4{k!Khfq7M(KcjSVt(=*%U&1x zKgaHX`3?-Y5Z9_l6p!`X)2k{5-D*Gyl?62{7@rCx0d6So`rIyH`fK5%l2xcw-BrRO zC>?>4D=^Tzzz%47&ucuhzOJ|Qe!Wz|YoOC;gBz@`8YbQ)?3&&4=h`rjEHK@{ushNo z=O_mW8o?fEX=%9^`tr-~pFe-vgPBbD&K+>ZC=2OHOJ4$2N^@;{b)<-hot+)=Usf*~ z85_d^&OB-CbU4fT&s+*V|9J`7zbO&n;cO0dtu{pq=_O;kmwh)QG_^%H$191%#l>Z^ zxi{Qq!{)}+rq@OO4`#<~j`3Q?UKNc_p(4MFb6}hA!(hUWPgQ3#G&aug664=F60&0d zffOSmdfCjk0FbuOUeVrp3I09JV#@*OcNCa|!F-k1?n3+G#S5g64Yows(vk%}wE#{8 zIcL)+)eJC(M1K0j3dbB+JwNre5uHvhKvfzJ4o)MKw?P4lFz`}P&esjR6m!%bdDNVT zP5P!FHK@$snSM4>sE3R*)Z_jIo$6g)cDU_L6=K=apX6y6E%qc!;(#9# zicq$%z^bQ^BoiCfnfS7q6CEag=6U!7X0mqAW(*eDy@Zz5J$-BWG@E{t&Hj-K3UUr+6r)w=Y)v8!U zY|LI@aVxsVoa2ufHdAuxRR@Cc8+?LzP=N^=g*h_ul~bOID?dZq?;Y0V z{A{07IsvOU4Cr_azgj;Foja5xcYJ2rY_R?wkeJV+sza#EG*(pM;VK}Rk0Og>&Z(y#k44;q1u)6Bw$3khUbZVPQIpK&@J?Na+B|HOMY%R`O|`pka>#DP z(Ln8fyAq^hWbo&nf&v!GCTw5`^p(l#+qd-%WB)0_?|!G2>)+sKK05lY_M;K_DnXWl z8Y5;64F{x9lz#y#8a+H#t{C+8jx>%`W{|Ldrv2v^!`V^%9|Ur-QxC=1fmN}Xtd4Pr zK(rjVNyz%?&8IpP1l$1sPS0u{JW_4t1*c8-#MUgJFoUw@U|k|AbmY>~#RUxtP92f^ zX{@yeV7g!yu+dgY|I7v@CDJBnaPK`R$*EOm%d-BT8zN>_$I-M4`oxAUF|mkjxeaBm zB2!s{0@JH>JeTbwwyW^7G&V#)Kt1@bI^WS45^k-~+2)$m)UMh&zl(ToSjaI!;5u|g zu4VOyIz0tFFJ{K z|2U84jGYi@!G{JV?4{=DZS^pUzr3Y3y2?yf?I#E0F-v$`{25nSy~DO)6VaO1#}dg_b&qi zX6NQ!LKcq{4|sTZp!^{rDtkVF1uhmE`qY@c%J!JIm`z`sgnefBDb#nD*b;?efjwLgQB9Mz|Zlu%55{{ zX`N?zaYY3=xOO}%AO9Je zDE=9!bN!#HkH1U(%!XE0>`*73kC)%wtptT7d!Eyh@3?E-M_-4wUxLyMV9fOnMw^>4 z;Ij@llsA9>zJw|+`RSK>{r|&XOK?3SU4DIZqNpC980CYjh zj=(tshAZ=}sTgDrk^)^42)V%I{J%;#idvRqJGalgPfkvl!N;UiVST?yzYbhex=VXB zLbglie&FuXdmsY26AKHLBn}Sa>$o_ug{v^%yon7J6;CT|>0sJ{8l{A90j&0nP(h^} zbSskjHZB-%pk_!C>MEcj2{%X!DeQ?mglU;ViWR`t2z5zMOs1m6k8uDX3%hO5W~+RB zMZzqLLV=Nr*JVY00;<0H`}-*cEQldLzl1`12o*<2QO3J>WUR3Yqob6r_%g_LyNuLH z%&xB!K+Odh&q=`@)&^%}R~i1ly+jn^CzOXLeTJT%BH$3yFrfm3D~%NQ+t1v?r{qCF zr?61~Q!~J;gVa~RM#O|KU2s5s1>~woeVJKLQW(p_56>V!8Ljo;{|pAA7sKx2uo@|y z38baTSKv1I_(_)hR`F{Zc C)o_yl diff --git a/docs/_optional_8h_source.html b/docs/_optional_8h_source.html deleted file mode 100644 index c197fc88..00000000 --- a/docs/_optional_8h_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -libtoolchain: tc/Optional.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Optional.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/types.h>
10 #include <tc/SharedPtr.h>
11 
12 namespace tc {
13 
18  template <class T>
19  class Optional
20  {
21  public:
26  Optional();
27 
33  Optional(const T& value);
34 
40  Optional(const Optional<T>& other);
41 
43  void operator=(const T& value);
44 
46  void operator=(const Optional<T>& other);
47 
51  T& get() const;
52 
56  bool isNull() const;
57 
63  void makeNull();
64  private:
65  tc::SharedPtr<T> mValue;
66  };
67 
68  template <class T>
70  mValue()
71  {
72  }
73 
74  template <class T>
75  inline Optional<T>::Optional(const T& value) :
76  Optional()
77  {
78  *this = value;
79  }
80 
81  template <class T>
82  inline Optional<T>::Optional(const Optional<T>& other) :
83  Optional()
84  {
85  *this = other;
86  }
87 
88  template <class T>
89  inline void Optional<T>::operator=(const T& value)
90  {
91  // if mValue is null we need to allocate memory for it
92  if (mValue.isNull())
93  {
94  mValue = new T;
95  }
96 
97  // assign the value
98  *mValue = value;
99  }
100 
101  template <class T>
102  inline void Optional<T>::operator=(const Optional<T>& other)
103  {
104  // if the other is null, then we make this null
105  if (other.isNull())
106  {
107  this->makeNull();
108  }
109  // otherwise we have to assign this with the unwrapped mValue of other
110  else
111  {
112  *this = other.get();
113  }
114  }
115 
116  template <class T>
117  inline T& Optional<T>::get() const
118  {
119  return *mValue;
120  }
121 
122  template <class T>
123  inline bool Optional<T>::isNull() const
124  {
125  return mValue.isNull();
126  }
127 
128  template <class T>
129  inline void Optional<T>::makeNull()
130  {
131  mValue.release();
132  }
133 
134 } // namespace tc
Declaration of generic types used by libtoolchain.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
A wrapper class, where the existence of the wrapped value is optional.
Definition: Optional.h:19
-
T & get() const
Access the wrapped value.
Definition: Optional.h:117
-
A smart pointer which auto-deletes the embedded ptr when all references are gone. ...
Definition: SharedPtr.h:20
-
bool isNull() const
Determine if the Optional value exists.
Definition: Optional.h:123
-
Declaration of tc::SharedPtr.
-
void operator=(const T &value)
Operator to wrap a value.
Definition: Optional.h:89
-
Optional()
Default constructor.
Definition: Optional.h:69
-
void makeNull()
Release the wrapped value.
Definition: Optional.h:129
-
-
- - - - diff --git a/docs/_path_8h.html b/docs/_path_8h.html deleted file mode 100644 index 9bf10408..00000000 --- a/docs/_path_8h.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/Path.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
Path.h File Reference
-
-
- -

Declaration of tc::fs::Path. -More...

-
#include <tc/types.h>
-
-Include dependency graph for Path.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::Path
 Represents a unicode path for a filesystem. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of tc::fs::Path.

-
Author
Jack (jakcron)
-
Version
0.2
-
Date
2018/12/14
- -

Definition in file Path.h.

-
-
- - - - diff --git a/docs/_path_8h__dep__incl.map b/docs/_path_8h__dep__incl.map deleted file mode 100644 index d1e1f280..00000000 --- a/docs/_path_8h__dep__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/_path_8h__dep__incl.md5 b/docs/_path_8h__dep__incl.md5 deleted file mode 100644 index 56889d62..00000000 --- a/docs/_path_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8dfb9b040a5ba03b8c1fbcfc1349859d \ No newline at end of file diff --git a/docs/_path_8h__dep__incl.png b/docs/_path_8h__dep__incl.png deleted file mode 100644 index d1037afda3fb9d809f48f01943be761aa9744796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28394 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 oJ}^vI!pXfn_%kLc_?SpcTxE`Y - - - diff --git a/docs/_path_8h__incl.md5 b/docs/_path_8h__incl.md5 deleted file mode 100644 index a999ebb4..00000000 --- a/docs/_path_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ace8dca8e01aae2528acc2c0b985e3e1 \ No newline at end of file diff --git a/docs/_path_8h__incl.png b/docs/_path_8h__incl.png deleted file mode 100644 index 03d0eb8b8ec09ba51b914eb408d34826658b1cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12822 zcmc(GWmr|wy6(cDk(3Sr2|?*bKxt_NX%%E z**VY|DBY@4dfs4H?V+L#PuAWTtY2IhL)U2&#~dAaDL*JwA@Oz~u#@ZY^ zTVqIwv^_CYT>LrzR4$9}OKoZC5SXl~Djpu5obH1d<1)2tt!?e>*qvSw z?hmC3O3TVV6d9V3eqOdEflP#l=f{xlIW}ReQAH~i^|3FOE|*Yq-(2p9L=laBC^ zkmtdx65`^q9dNLQK7H4iAB)XiWXx(s5J-_`C9+|61Z=v#BN)5%*k&M+JtQnlR838- zX@^wUlh1mo5q4o5n*X39e4x8nyB3F>Tqn;dib^DkS}f?9hzM0^XlO`iDD0#@eyT(_ zyt7l>^QepHayvUZLzU_1eBOrahc%5kaS%}w7WJd!2f)0oGi_yij!D+k&AWse91f=@38f#j<) zS%7dOmAXZruNkRL?{A z8yyW;c}%p(Ut$Qni%1UwaXwfGHSCF6ZMs<>66ly6uZ&U^g9k7PsQ1PAeL5Rvm6CJH|z>~%J}M4agB9OY%Jc_uU|9j>WFKt7u%(%ydK%u*l^h_kxNKO zXw*BtXl!c2B_ayeto)>Zwli7hbMIZfRpPia@xt@CkHK}ndb-T+x8(ZPmW9{8ljgS& zzFO*}^3vvO^vX|zqIn9b5J+juUxB}uzp>ALga5YQUY&546uyT&OX$y3VjQV5Q;8tu zMh7RYeo@6$EC@_+c3)gvyt=g&T)X6s0r_ZQ5spR1(>gi%RQ@~H+xZ$RB*?|#^0bzZ zsVU>$-rht@;Zp*F*3r@OwthTZ;1U{YYJ_vOHl@vr<%Uv@do#FiBv{|URI|VaNT;pl zs$Qs-LL*t5FCQfH+DJ~9=;BgRMlqzhitg6i+1c4TIE>c`Sy)&Y85`?w{EBB}VNpXd zmrqGeMN%C&%pW!m4GG5Ti{KX&q~+vP@e&jgq5yY6eAm~FP7jy$cI%Ceje%Xe$ZQ%v z>oz!3Gcux{Yz~U)>+2WqnrA67mf5a~%BAq(T1=O8F_$*J-xY8|qX{BZUSwDpYig~m_&9DxCa6u!@G{wULRsct8m2+yhWxL^UE3v8%wWmP<0 z|J|I4nb|)+{;7K(ugUMO z&pP}bW8jdGpsA~?52Oi^$>iVxf87zY`aUx^XVB*Nc&5&dmR|mQfRM-e$I&c_vYMI_ zCtdmPyf#rFUJU+>A)v#HLB?b?pFqZR#Vpq5m2y7!f-n{L^9%BJ z_##DJ8xj|t;A{J@JwzMn= zPKbXlTZQ zRwYgoc&xNC^jZ|a(!t;D_Au^>trAKW4_4a#DqAgL2U58XszE>RfNK zP`NPtlh}8dxx6fsB|YlOyWv?3_Av1&SXo zF|kIeQ)urk;ub8hX2?j1t{}wsJ*;!BD|~fz71Td))q^}HVI>FL$g*VAxt;N|4xKp=slpY!t> z9k)l2inXdmjf|fE`o%PaCMzT3m!3|wx4%CMifU(f_tfS0ClmsYsHmv;`1$ogPH{JX zk=5eg}zB|{x-4eM+f_TE)Q0g52 z;3=dE1ZGP`uT8*I5D-IOpITH*43~r?G$I1?rA{5rc%Gt^vU1GS^yx-|-r7JCCn6;h zzS0UvNg?;*CQ{CBh12wfMn!d3827L2?uH*MHW-fQ$`f;$ez`ts^0+WK-5w>Krg-hj zW@%|@d%CR*X$47`&Fy%dsUNWh`01(m{ogwTD4}Ixc>+O{QUv@tI5^l|Y7$)XI20o1 zvxR`nZ2yydV`IZ~sgXZdJ~_za;-GD53A$^M$ZJDMPEHOW5GJH|aL`IA8Hbw(lQlL4 z6qvU0aTTxm`FU-M2Z4csN{j@y_V#0SB|0oUmq)*25)(tfCdgmA;^^yt*kU_9K7N0{ z+|z@?YrOzbV)rYzny=aEvwQg9f$jbrH=lsO8n{VXK_MtO7{$-e&vtWw1Vn}D@6AnQ z2sewE_#Atqv^}T=Ut(f1o4wBWG#hUY8X&%RHy5;wjQQPXVxpp7z$+;Poj>+|p|*8# zDLua2=ueouZ*lw+D_{!lwB7ji6qWi}z#D687KL=-NPtT~K{V|D_Nw>SuXb=k2+!Sc zsgq)_3LypY9jmOQ1c4;JcH_v(%KGyCdstN!*O`s{n=Ts-fQBaPSs<7c0tCQxvI#83 z&b>I0&7sur(^JP3eg|Zm<}3R4jt(RUD9jpVACXF+O^DkgD1}G?-g^Lf^ytwu9v(tX zP0ik+p&%WW;9{#T@=$hm_TJ&)X$x%}ZfB4gJW>Um{90OC+&fng<-WD`4FGTY@Rhdh znQ~gSA`K)E0>CE=62_}o;435g-rmC9(Nuc-S0Jo$aBzH0(%g^%IPOfgX-0z}+^;8! z0)f{sNjM&*rKM?<8$1U11_vMC9|43?1zozY&vtRCs7n71T5Jv^)j4cMQ74DwkH(-; z2f)HJx^s?2!*Uy|dfEdqVq#*Hjio)@-349?3F#kDp*fg}(BR9i&?)CDzX0%LFqyYp zzXREFzGe{QIc1@vGHPxnkz4q~>+}6^kX?TFF{BqACuV2ULf!w+jT1j1aVpnH5-G}EPq{>E5sXumdV`FypSNu2lQJ>^^t`o+B z%+8$q&imBluM>kn;W3=6 zq7Dgx2dAb+D(spVZ&1I!Rasvrc*f&Q=;<{-{WIvF_(CRida$3lJ%WVH?qIAYw0UdYt)hF|p97$`{;NNJrbXoO?i58g z0LP!b?*wQ$>>s6h*K4PK(ra;L$6sAd&(P!)?Ccs8y*Yoi`$18x9V6dW2$YwtnaVAq zmwLjutE*>+bQ@blhQn!kxcCkPM692(q@tgI#rJ@c`q9Ql`*0uc9VjPqTYvBHI(rxl z@2)#~2L?Jqa2MHJtRe0f=lLf!3Tcggf5v%R`wOvZER#aNy`tFBRTt~PfCS)N!aHo> ztHH}_%lA(@3rnXwlL&R6Gu%fdCK@6Ze|}!$dhjzXk=>A((x=hNzgGS^d&>Nmh{Nl% zhM9_u=QY+sXz?-tIv~0J$zj-CRJqlwq?tTYX(A;qr6_i?>FhpRB131p)@j_?oz_0Bmo8SQ_5>B}Pjp}0 z-Dr7sB{a>yR}KUU$v2z_J<)oSj;G4NlPDMKf9jv_G2oIfG`wwkMEz*V&4hKTSg@$J z!#@6$0t&HRZI>4p_e5r3@UUDIz_7MfaG&QwHwgw3^#h=%5t-CPx0 zL;J*0p@I)&mxv0E$Igd;A6raQw&%zuolyp4TFpCbS$8yhZI#&@6Z`pl?80`?gHTx^ z;8exLJM((`UWi-nE$?#URq)8;GTL{Bt})(5Mn<&so5VF% zf>>l^`~dR(-bhFnov(RydQN`L7c5H@gvq+nrgY8Pa{KiD?hqr9ue|ha+ScmUJaDe^ z@;uwyOJi48KHArw&!DdQkd)M9lGC4|m;u>XF#Vy_hN$iB?3wCale&i5PBNPaNsXB| zTvi3k4qqsRgDno1)Sr8y4s>^;7pezmJ8VrQ3c8S$==M+T+Bknt0|SLLV$NKKv2h#2 zn{y-2+avuVjU#U0QaHG)(EwDFdh#XoCeEB>38=sxHQ%sc6{=BmDvB6qfcOIb&e$Ef zYxt!N>H0Nd7YA-amN(~A@Hq=KfN>T5gU6;N%wP|ey_3UcW>ol`_wec+?Yb~nPo=;T z{cBlcDB)$)e@e>A2pXL4BF=WPX=!Q6XeAxRjMh<4cc*7R4x5EJ)J2d$eOH6Vc6Y{d zji zM_1*?UW0o}INb=3$i-xBy#!A`gBxpES{1_=9Gcjy=9Dfkx3|cJvjkR@uDTV*2M#hv?}a{A+H4bbgx8aViAH!kq{?C|K(mr(b#qWB4l`$3k|jZZd!&R|po+Po;<(&l zD;i;C9_!b+X~c;MX4GQ(!-cqP69WfW#!=I&4+aXiKJ=0QoWti{L9_6Mn> zACJWS(?t;58NW_F+cf;afDL043uP*CojjS8T;d4PcpmoK2ItLL|L2uG@QUZ%iC`}S ztK=-Yi4Lwvn}Q&q)k~M!YOF+7PKFhKgL0vODR^x5~IBx`QzA+&!&@M{?7Son5;04bFgdu zqFviR;RNl4vHaLM)06ScwYXI25p{JcV4T*`8v|@@-UW{(Rr$wjoWW~;5I}wZnB+_+ zjJJtua@CLR?@CNEhhq@nxP+v!2)dG8_ zg3iwL4AlZ0;u#7~lP8?>B4fSV#L&$lRbbHxU~%|yzxLn(Fn~0BBjgWO&UDw^4c$!B z4Uy%7D>)I%f~ukfx3!K9G&jf2&^3u!WoU0nY10$2FjA;5S1^dn)&45bX0tn6vdX0j zJOV`^sh*2NI4FUiJs7yADC%dIEL_-MnGh(=Ifo8!q<$Lzq^yR!0CQ*cSRbb zk|`|&umx0o%$tk6)}$4?i1aVSaPM-V{cpxT)94mGoeI@CGpqY0G;YyJXp{`xgL{C}2BTGnxc zx2`iI8kDKCi_^72p9Zg!`#=bWgcEV%;vT&qC;u+J3C=-7%N6MxqOxdey3PDN!Q`aw7e}F@IU~@`(CNZ6PdUe%h>sZBW?-Z1+T3~y;{#0Cws;kZ4 z%+|@Nvoq9--D&4z_?3Slu7N8_7ul{>=b0vtsOtbFSb9fJU%v9a zgv>9j*ArI-qV#cX!^0Fe7x(jZfg~X{nWq~YG66x}5#xD2!L=^hmX_oZlDVyZN zgM&HSJ5bgFiI7`oHBUy7IhfJZ!iiX+mOD%X%D@G`bB#7hAz*9c$q@9V#uwkcy_-Z( zG%Tj%x_e_5M~jlGyq`r!D|TuWJws9U-m_Bmg@yJ+cdxu*!p&u9PS zGozxOlY{Pge@9o`#A;!|5A}9?-hqhbzx1tu&ABs;qnK&b+q%BOjHk*P575D-l$Iw0xLM^cr5v%CJV9GYL~6s`d}{v zoGm}(dFjAZ-_rYcd9n=Xka|E#$wj>z2is5)CfvRx!Fkz ziH|35ZnnPMuazs(Aqgrs^hm0a7U~~jc~c6tc?+AkRR&|B%Z&uO$tUSre#P2~G)y}f z0L4chHW#9@WUOJ#^z~8ZDc+|`L@Rh|{G+DdtZ=;2t*-;7y{3I>nW50~=V11P`3Z$g z$IW4|j5E%+fU>Q#e1DX2He(sC_=@g$NnZj3ed;|7eV{>0VX931>qAUr9@QaWvkY^8r{r(HlFrxnGbt5fcEb1#<66GdONlx5c{nFCTg=wBA}+CJE& zgTSkIVr}m)jC^k5Tw18Ew-^-=z^TOeRVyI|obBm2%ylz~QnF|Oez45?_Tm6T845kC zo}ba6rZY~Gz@jMq3aW}>Pl>1*EGuaFrijhm5xYqHA}gklQv_QP)6$qu%+}VX@pA2> zbm9TZi5a4g^F< z=5<)zm_)8LxyQn%KdtWVKx(;j#!wWw^R7B@_ancrnSv~ zD^p4JcE-e*PU?*>E01NO_1dq~!|q5AV(uNWg(hv^xn?AAYxAvr$&bxBt{)2vGc7ci0D}&m#AY!TI?nc9-x6a^JZ|X#6oCgscjFIwe*vIAs;FV)PHSY8+epSw)Ov zIJqLImQiFj{Ev=7;sULvoJP#**92yO)`Ui@V6WEgH6v-)*X>ENvhXZ~h)T+B?ajk9 zEB^)^w)jv8x-?^gxoB3_n0fyT0ww~Y1Zplvir83hp0_#Qij{+>zjLD;9W>}o)a45BB_AmXdrYCS1y_7sC;aB;;u@8dVO+{RazFpovyDOfZ`Qb_C5!!21^&`@3&* z-oMRMTH8o4JX*d#;I;ltSfWhHLmvqjJZWeePKzliIzUGKGkADbHn>_o`s;1RPM zJTB4sS$yCGhGD%%zNx8L-O-2sf5wAlK7INU^qrI8NrTHh=9{3E6{yBfj)e(2lEICB z&5-DOTS z{1&v#S1n+(fxgblcESMpssFZeIEu86V;qc|NI?593R8tieYn1?>Oi3iprJD+Q7dw7 z9(_avi6EOs+1PlnvBC5RMSGK4%&M_*?&E5^$x%P6EPTm>8h!+GUAD3;%6yMzWJ08| zx0TThx_4N4Z9ynbYp#3`yOkEEj0{)wHr?WfUAOpe-)LA_hgHvrRo#B#*)&yS>-nS> z9N955^A{Cw;AE}!@2=+B*_!&Lduyrg=2yERqM>S*!^EGsYX&R1T< zA)O;@ZmtiGFD%qoz-OEE&R5EZPpB{>L4uzQa`*LZzS63C6GuO%7-bVue~?bZVnjo| zO0+kh5EhFECSyhAE{7r`_0?69b91w^ZKKL99a9(>vZIw-Gz3rMLA?~3NXAowF-5^m zZ*FEfvPnJ-9tZjRJ8nJZ&fQA)`8(QB5Y5x*b;C0@HWr~CAHzt%RHSo7>wWz~#Y-=a ze#&%q42gwha5PsQqpqGOxUi5mC6!{N{>=YgP>^@rt+^7+?ufUaZtEGWNu==EJyaA~ zMC%B0^7R*6#6}UiT93PC#mrsA=Cu+)fg}n{a^*dA+?^Wy=tD5!a{rP=ZDqZW?DC)i z6L@Ms%Y9RxHwGsg5tlMHs9xk+3e^5u&&qK=!*zwg_S z|9jm6LQT7O!+EC%Le{%6rNn4&cVUh9Ri=OM<#t?9w$WVa56gU3I+dSbo@Chb?c=Yn ze*p)AqNDSjY;UHCy2bOfZ?v3Ktz=K5w2iSFok(Rb_{kH>FMYnvUV>zIKO>KN6umBn zm9u?~`!}8Kgh(}aZzxrKXy2=YZDwdJ?MctWqi&c&+ z=)CvF)HJ`l=cU6!EpoKT5+S-omm5=Kmignf+HB3`=2SUdKTW_D@j9UqzWtSe$AJ<_ z-x%U(+?OYTqls>IdJ`HFLfQTgVF0_CYfhf_`M^^n5~d54gVO6Z=b{Eca2sAb-VK$T zZQs?~&j%Td!0X-5m~?b>s)P^L*8`^Yd=|gZaS2pc^MCk|a6abbW3_jPByz!BIQ%!} z>(_vlm5=@tw38Pd8LK((VP8^Hi_h##OiW(tH81>cw;k=*F4M5FjXXP(KD!%{b)}=D z18@xc{QP`-EC<8D&=3jo5ar1u&={(-8;TiUoWfT-wkKftHI}pQa~hc9`VhnKr6!LK zpeg_pZ50th!0`gMpks6t7jWM_;1ZqBw*Eq$9hm5+T{~-Pl4w<%2ZHG!DI`OQ5$EaC zKtPjZd?-`{BQ$Yv^{WgWAuALU8yg#tE(Sm&urtd@Y2^Uv?eFiXG8F4=yR$o9e+QYwb}^gR<8DHE|D%*= zW2?D9YCf;Vd8n`Nv%mjCFp7ql-a{c(wZ^*VyMWuyl!~S_1$6rB*RRXm&&#7o)m12+>^D^p5p;BPNAFapMa7+hlKE1Y{7yx5iB`1? zI0(tTxoX*kdM8;x#Vgh|G+;m`zfIP(n7d;;en`0M8JV9}Pv!|47J?uK`{NbSHHz~4 zF9UGMc&!P_%gcA>=bDL_c1I?@)gMd)a=yL0TN21&#BQ&)(rH*&6d*V*hfBqFH*<4F z;Nz@}j5mNLLx<1+zD{AE6g+YNZfSG{{;R(q9}s{BK);byR;GliTy9vX%2X_9CnF;h zKOYYX0jUgFg%JQqUdw1op-w zyvwR0OVt+YU?u@;_F8F0I_kt%L zKCp+Yo7)Euk)8I1_QG5qSikVj{{AZ-nau98Ue#uXmkYel8_ms4 zr~?w&^!@5w4%4n{Y7PT`32;^Cl-xLJY9;}AzdUjH2WVO*`zNZrtgMdjE|xK<1C&1K zq`ld#n42JgVhLMrZ*K$sJeroDp9FXVDmr>QkT96<&3SluSa=N#7O%z50=ztwuArzW z1=zyEm(#_`r=^ufHa5{fm}9UtlnO=_?FhQjY&;i6)dEKLfK0xbrjs#3MMZ6`wwOlH zWUlV+1qmnT=Tp~))-Xv^$rHv@cfX@Wz~Fh(?Z*9d zM7Sq2_ipn2cA-2KR4=*v^rw%i{JsvLSOZ0o81hi2hsV#Gl-{Xm@6_wf&&;dW9Md%m~u6CcFITR^@P>~(_ZsI%YrrB|tfvA(&v2IyCyh7psL z408WjX)?UF=(0RncgJHj*E%;x+H(K5;kp^HX;n7MP_KEsW>*XIxca?p1WPqrX;Qe5 z@V(%Q>5=c|f9#C;$e~nIe!mfjhX65!3RZ|PH``x`7uMTa4spOS8 z@6Va{PZ+23t{=v^U#&m>e~7q!|2}#Qbac|HJD2| zgZ=sQXTXMbWl4k=r1szv5(YiSAY9p*ECeF8j_uLxa`Qp^70Z|TBJ0z zw1s=Ot^PcJ|LLttIqGa%ZE^7cJ4!Ohcvi3OUXpz3Pw zu<-D5(@`2oE8s{iyoCOfT-?an?a4;L+da{i)X_=V1~WC&u^*xEv$Ln*QG}wXKrvE`kPcxM;{WX05Y8wCI#hQ|mBCes4c%68e zZN(CR10n(+D5kOigH{cE0w0ko0m+YbZPmTteNq6E4;b;H`T$ck82rxN-qRz+$Hy1q zeRmy-&!Av>Hz+&)x8RS^NId`DW=<)O6=u4}#42y8)V!3oAV}QdquEmG+IsUBqQ(^8 z=PFok&W<5m|hb(gsuLhZl_FkOI3j7CM3 zE@0K8(;*u+@T&1;Ab(&2?A;#+y#zSTB8g*b5POQC%M)B&T+r+5De34$0I`<1gv2Tk z&v7}Ki5oq;T~LvKek6Mb7F_m=q4iR38rd`NnkLCUSg+b8cG+_qf)MAaQX*CdOWDAdIYLF|n`+ z%y=e3tNKF(v3rckB2D}V@>znp=D=?wXN;QQej1HZ5MoX>Ax-@xTj&^dD-7Kdf<)3f;9}5Ryn-z z6rg!ES_Lg);IX}N^-X_&JTb3=doU&v@RXP?GOk{Xp`pQo#pQzdhqrePi5Xe{@qWIa zIzeCwt#j9HnPOyQ%m^}1O>Ha!$xID!i%xjt3uNeB{$jykB=`vBf=6Eh3n8mD2a~uR zRF@02o%#LwT2P!F+5UOuIlaOj26)g6n1ldDl@Ui0Otyd*EJB%<-P@B2wDZc)l1{)0 z%IPZjOWW9r;Kqo9T(~qrr}}$!6c0es^_ANza(s1__|nqSp?(hF`k3oL1#Ii+C>}?@ z$!YWPV@3i@Hb1wjiU8miCoP29*XRw%GW zviQJ@DpJ3PJpZjh{xA28Ns?7mOgKgB3Id`V8V&~q1qIi;vuO+61CZE(5P8&nJ{BQf z9!ROITsPN=)&fK(GVAy0Wu_NPEv%S+U=obp(OII1t=| z(Frd|d}Wri9FSHZvP6OatTOKEF_gj&DCb;vL6Ey`ZEaftC@=7iLP%Vjo14LQB!IXH z=q`~U=z$MFMcE$7e2BpAy}i<3f>#CvfR&L6BWC;P3o1-Aj%Wz8dPzudO9@g4z+zBPmBY5TO_AQLudl0W zAB@fe1pX8Vpb60fMNz565%mJ}5%I<#+q_`WYkui{xr(y7v4Ln50HidyI^Hl?>kM53 zDiQ>GJv~^|9!Ta@1fpkDZEfvx?>lz@gKM|z&9_*eRXy9TG-dtV(J zpWUVh@~G2u%MUmzW(dG!hl=-Rpq zJ`{p)9v~rwL`F&gKnnULY9JZ5u+T1@bLv7w(Lf+n1CPvbW+(sIR$h_5~($# zFcpT&o0~!@B4KwjSKDnipsNP}y0j)TBm@=6qgIkk(%O1sXpc6NZ5}{?0&4`QtuaZt zP{o2UKj-B!AoNdyf`Xl$oh!w)OQHZkBOI)=r>A3SsTrwQSrBAw;!~245K0;BA^dl-7lH%;)3 diff --git a/docs/_path_8h_source.html b/docs/_path_8h_source.html deleted file mode 100644 index d1ecff45..00000000 --- a/docs/_path_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/Path.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Path.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/types.h>
10 
11 namespace tc { namespace fs {
12 
19  class Path
20  {
21  public:
22  static const char kWindowsPathDelimiter = '\\';
23  static const char kUnixPathDelimiter = '/';
25  Path();
27 
29  Path(const std::vector<std::string>& path_elements);
30 
32  Path(const Path& other);
33 
35  Path(Path&& other);
36 
47  Path(const std::string& path);
48 
60  Path(const std::u16string& path);
61 
73  Path(const std::u32string& path);
74 
76  Path& operator=(const Path& other);
77 
79  Path& operator=(Path&& other);
80 
82  Path operator+(const Path& other) const;
83 
85  void operator+=(const Path& other);
86 
88  bool operator==(const Path& other) const;
89 
91  bool operator!=(const Path& other) const;
92 
97  const std::vector<std::string>& getPathElementList() const;
98 
103  void setPathElementList(const std::vector<std::string>& list);
104  private:
105  const std::string kClassName = "tc::fs::Path";
106 
107  std::vector<std::string> mUnicodePath;
108 
109  void initialisePath(const std::string& src);
110  void appendPath(const std::vector<std::string>& other);
111  };
112 
113 }} // namespace tc::fs
void setPathElementList(const std::vector< std::string > &list)
Set the list of path elements.
-
Declaration of generic types used by libtoolchain.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
Path operator+(const Path &other) const
Addition operator.
-
static const char kUnixPathDelimiter
Definition: Path.h:23
-
Path()
Default Constructor.
-
Path & operator=(const Path &other)
Copy operator.
-
bool operator==(const Path &other) const
Equality operator.
-
static const char kWindowsPathDelimiter
Definition: Path.h:22
-
Represents a unicode path for a filesystem.
Definition: Path.h:19
-
bool operator!=(const Path &other) const
Inequality operator.
-
const std::vector< std::string > & getPathElementList() const
Get the path as a list of path elements.
-
void operator+=(const Path &other)
Append operator.
-
-
- - - - diff --git a/docs/_sandboxed_i_file_8h.html b/docs/_sandboxed_i_file_8h.html deleted file mode 100644 index e26401ca..00000000 --- a/docs/_sandboxed_i_file_8h.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/SandboxedIFile.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
SandboxedIFile.h File Reference
-
-
- -

Declaration of tc::fs::SandboxedIFile. -More...

-
#include <tc/fs/IFile.h>
-#include <tc/SharedPtr.h>
-
-Include dependency graph for SandboxedIFile.h:
-
-
- - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::SandboxedIFile
 A wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of the IFile object. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of tc::fs::SandboxedIFile.

-
Author
Jack (jakcron)
-
Version
0.1
-
Date
2018/12/18
- -

Definition in file SandboxedIFile.h.

-
-
- - - - diff --git a/docs/_sandboxed_i_file_8h__dep__incl.map b/docs/_sandboxed_i_file_8h__dep__incl.map deleted file mode 100644 index 107e4ba7..00000000 --- a/docs/_sandboxed_i_file_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_sandboxed_i_file_8h__dep__incl.md5 b/docs/_sandboxed_i_file_8h__dep__incl.md5 deleted file mode 100644 index 2fa1d7c9..00000000 --- a/docs/_sandboxed_i_file_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c505073a4705ef6b911dce07fd037299 \ No newline at end of file diff --git a/docs/_sandboxed_i_file_8h__dep__incl.png b/docs/_sandboxed_i_file_8h__dep__incl.png deleted file mode 100644 index 42dc2f4d0ea390f7cd731a944ef74437a6db2daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4783 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 diff --git a/docs/_sandboxed_i_file_8h__incl.map b/docs/_sandboxed_i_file_8h__incl.map deleted file mode 100644 index 16c87015..00000000 --- a/docs/_sandboxed_i_file_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/_sandboxed_i_file_8h__incl.md5 b/docs/_sandboxed_i_file_8h__incl.md5 deleted file mode 100644 index d70941da..00000000 --- a/docs/_sandboxed_i_file_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -137aa9d363cadce40a1ff4acb3b4cc5e \ No newline at end of file diff --git a/docs/_sandboxed_i_file_8h__incl.png b/docs/_sandboxed_i_file_8h__incl.png deleted file mode 100644 index a7ea9b3e93f26ca66a459ed382bbe38ab9603b09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20076 zcmb6B1yq(@5H1WqgmiZ!jev9`A|;5llt?3p(h}04bSVM~3W9_Z(%s#Hf^?@K-5uXN z?>XoH&$s^beQW*e)mNA7d*6G{%$_}S%{6zprn(Y74h;?hfxv&Dte}lRpcKMyO)L!f z7p%hFKKKK};-QiP;u`s1TK)Gp1mY&*fr6}#NAkwBrva({B<7qc#XB{0eRMG{!>N3! z7f*b374oH&Zx9o$X*=hi<=PletbH#psCpCjI)XDSUE98#>$ThSyg9?1o4jdZKT6mn zW*O@;?_<4YO;YvPT3;Asb@_Wo!sR`Okjvkw0D+EsSWH1XN{R2*vEVQ7a?_U-;m=o` zp2Tuk^YkhvK}2#MNvW^a3`twcTGZCoc3SEp z_PIJ;F$$G)9Sg>#oLgE_=#I3(V=JVwINe(|3ccrQaD8=IO%OQ5@7f!Snt zPsEn~{(UVF0(0n9^Ju>BV%PW*rI&B`RXs&=b*z}h`e$O`*w`3Xdxq`LpFhnU98CWH z8X6)q^*tmXohNR=Rxwd%9yRsHM^H(*^C0fA$C+=>)H}JmcdQO%6nh=MSXy50{`jlE zKO`^^<>2tJH~xkS$zbM#IDU^EGmy^Q#(3%ShZ_h|Qc^k@Kf3Db>OCt-_l@i#j#vK% z**rWwn?Zd2{ry;kgdZD68vXr^YFx47I5avaO??7=&yP?zA9N8D6YuQoG=W?Me9v52 zSy?&jwoUyn$qNb!sHDAwMIENXT3X}~_e@L}Mt(egqm^;re5%TMtk@DWA~KSgmKK+T zgTwPjXnSAxzHBAb9}7tG5cLTrDdYr7O4u@G}`&`HYUPuq70kQw4v>2bF$dFkH)Ch9UtDT z0E!zZx7D|st|3oKN*b%Mr}gpm)ymVmjksrH!};Zo=j;3@l@@=#sa5%&i-L%_$$M*Y zaBzAqx}TQd^m68zCRJ65Z%kE_USDqe6H`%zZES4djA~$wa(c$%q}=f&iDOrji=?=1 zW^W%22QJ;X)_reuabe+io_^uW-kzs|Siy42tRz&_)aG69n8ckIf_yaAr%OP-?I68k zt6mD%jWObZfdMKRzdQY@GK7fVqobW)q`moF{;Ce;=@U{=P$1IY)!mP#xnXH(iN|oq z;L7mnQ`T?lDG?36=jjg9HLK&L&yrg0@7}#zR8sOfKmT@JU7gd`l!S7YcCyqf0wL?4 z_ZB;%&F$^+H8eC%XBMNVg?2#SW;1o3R1z;)K?%$2Qod)x)_tFXG4N@cCMIYeeN%0Q zlY|roOveATizv7eHl$~8|M6vyxRg|DQ`0@atKH3dQ@Ju?{IQ$lDi0sNNk~Yza4xm( z`~Bmw5Q5DcT|0-2ot=I8gNUGD%ZJ-foDNpC&~M!M>b5@OKKrHF=;w=I!)AtefQ7Y#k&}<;7n(>11qIDrobHSJ zU)@PhPcH(qQfW`e=~>ecc~3D>rRF;!Wj)&soEn6EKEO_jPK`|=4s2xT+gY&YRtiVUZB#7_S z(a}MVRSp6lgpPrM$|*sq7Ynn4Yo`y3j&5HcEp*+w2oHjCEqg!QR#sC})Yc|JMMdSe`F)eW19{_sePTTP$lD%GD@Jx-k$_H|NXmVq zX@BKcY;rP>OsIa6fsX9s%X{6Y^~dGZOcOB#v?Mp+l-P_G(09bpM?U(l-aI@^j&w^! zW+-r$f0sVfP)!oN0rogPKEBtgwmbkw?DY*?A|j#yM*j<9Jv}{x3OnjH3+HMpN*;rN zw6vSZ6R(kaR}mDylX`uDxwW;02mqJUIyp(ptzV$9IZ-~pu<#lM4a2PY^$na1f>{xt z6Q{1Hf*TX%xX+(Iw;4#k0gh&VagoLJZzNws6TI%-$B&`#K-2g*HG_DG+UbZ7rg!OZlm_wZ+BBE>XBbqR=yfkwVkAG4xU`ZEfhJ?5a%##ci*FVd zEWq{B!n2C`hUGJ~kzAa4j0nGrT_xA8DeC+8?{nqH5vh^zcTkPW5*{1r3~{e7ayb!M6Cf{0ODl;Sa?<#o0ooha+Eo05Fe(v$=QGH|@_i#wS`sBnCpE}F*^ zb-43JKJ;62f5F1|JT?=TypSEyw4M=9d;BeLCKBvox4h3i&ook{y@^8b{$V+8-(zLV zYHUO>DX>9Ulu}{$7~Nso>vg?%y;fyGanC3p5mu4&qKB}p9wh?}$SO;7rucO}TN zrBRF{>B z#YjF$XL^FQAptqfcVY~8l-n;(L#qiwiBcfi+c7aT6s@a2PB)c#@-s;&aouUj&W^^S zGbS91urYADmd}ZvfJrj=J>`5kOkY=b)YO(qA?oNJteHJQEu5PNkMS6ZlX2@abQU(w z%uCYAxni*Kwb({dGPb|L%)!Fi3ChVq8J&-}Jv%^gdbt(@quyc?YXA5Cd+>fevpF_8 z$pfhh2RHfkktzJ&*-^uJ^aHuNEFPXWn5Cpr*PXEDr6CahSYYfOwA{-g;P?d%1OG** zoA|bF-Ull0BaivM&&;YxBG4O06AD3b{)2nBR*cs4z zAA8NO4J#Rxb44Jh6@h8>ad6pojtGL1l88m^UuvD+Rv*fj4`nx~9l@TgOzmubqhAH0 zno0ln6|0cPh$=+s?V$770o_nRehQlK%(IO#hpJb6n1+TPKHzDmPflbA`)0zE3>yBSw#>|Wb$=Mv1}%eqfo$p;_ldFW#_2rb?Ca2P6z1Z zXzQ>AqJcz_bp%z$X9E)L$6%~_+?<>tm9K8nhzhs=?JKCGP20WO_i4B_hMts|o}N&q z(G;nNnKYPoVyZfH=VX@~9o?g)OBtj-lDL(X^kus(!rn*BqUJw4 z5-^E~(4wGx;TIn2L!sIJQ<2YBVV4AszIUvW?*nqI3UcgN$+CX3q#JInyJy z)*L2zNwa=BZysZsnBI?!NL?9*zNZ|(q2!(Fd@J*%qr{43;QL$r(RrKTY8On)u6Hqs zcRcytzaK=3G@seb^|8$SScVdxz|$@a&{ZqQA4H&wgA*a}Vu*r_jBK$j{Bd1MR3Z^M zZiX~pOHN&#oa(1COwdpJMEPPBfzmn^)oSzXEGad0HBzll1<&#yVBHJF#}1{kOq4n% z5)|AkdQ~Wfhj&m#@PJ$7xkZe$H~ailb*(|;6$pk&fg4i1u3?%yA9&AV6Fe}77Z{q0-->at>uQ}p0I-|gkZBvD=5f@0DM_F4o*!}&ZA@V z!?n1*eUb2RK7Pyl{2eiy7_W}+(kXTEaqC6NZO@4A98A3_E8{`1g_?@liKBs=N5|-J zqGMwEB%6UBJ^?;ILnBq!EDFMsG_b_6qWOnWjE$t_wxcZr8Fzn=eowj1?dkD)^Hp9f z-9(ynV|F|Gbf0i>DCfz$Zk37CvqP(*qU=_;#Gq`_Xi?TRQU*UXX07ha%BO-MV`Gg1 zHorBxy1L#pHgd2P5bAu7A%+7aXR&~bM_&U$`R-o5;aAPDogG>_CFQU)tv%)!E(fdl z%B zHndG;qe2EiA9^-w)Z7LWyjbOZ@!VY?PO9V|qRMezeU~BP+OQ3BRlN zHA5t!RqK8`terWl*V_8;VoR_$O;ij~A3zv7TdM;yY2WpaB6WEvK!IipZ4F_O`|Xsb zt_wFM{YbIUkyin?{)d*nd@*!Xl(vNuM$2M@fY#7|znKP%T~jEva$4lDC(55_|J6*p zcQYX0-tyug&Lt^{sVlVBQ|QL5j|dK4ei*2joW{S=u4l*`Mj|D}|kb zy12+0t}uh-0)6fU*86%JHPlhf%%sY)rf+>CuqY;izcaC03t$j#ArM62LEvD1f1Q%KK-dJ3joGKf9U)Ya9Ix%Q}ec5HWA~=S+y%kpU#kHWW_!cA(nD zSlE67vk9+%VXVmf&BXd#?@{kh9tBlZAv{{q?=7~it_h{3LZeJXB43x! z^dw8TV3?bmdz>BIdMZf$Nz~qOxui$f<~JgmMuh9Q9CAbbTm7HXBqs?uA3TNB{$wdm z1A$2OJG&+7ID;o9CI*qe;_|LvcIA0+aPSTH?HPP-ZtkU}B_B;%B5mS{{e?i2dM^|N zjhF)-;+;wsn5o1kF~=Byvs$L7=^sCSytiyx?}fwzsHmvoZ{f!KP`j`GMhOWCu^BI6 zd;R83@9ihL<`MURugG;HN6=RF9WivSZG#OSG&NJ zx$7@lLkY(xKfjo+ar*(d5f2knV0&k0DIgyur~50tri6HSPXQ-e{?OOgXLWXVW(P~) z5fMq)94`(1_wQdZ;1YsX)RuS%?~|RcEsKC0mP}0<1I`yE{{Dt#L=1t|NP;eHqo`8%^h4ivWzMQv}Yve5r_5D zr)?nw^gV#Hbpc3}t{GY)+S}i64f_At+Z!qEdlnxY6vU6`vFddaR%jbg>H$jYDGHd;4=jLOUKF-WZ&d zC2Vdnv5$aNfh@RXJQI#7$;oxi_du#557pEXWbS$&@vIN!JgVNNMASOXqgqA@JnmM@ zCA08gwAV1v9rw!u3$Aru#CTHgC9*zME%fKlAInez`uB|mKl&mfBF5^ykC!GTMMd?l z44)hA?(Xg#a!#sOR8;VAaw;=@yF5SUW-Y9|1`u@I|7xG{=$FiO{3OQm@MXc;(VIax z&Aq_~q5qO83E4O}T01)KUyY57P{7j&mHXcwu#zMuB_%u=0pwLcKwzxwIVlqNg&fyn zAYJj~V*l6dlZqj*l7SMdUcq1b!h$?(Y{*0(=a;U|+pH`$#Ojid4{X74rmi`hlmoEt zAOI@U06Ku<&V-x`42fISU&rJ#7z`7D$pDdc_4O&%x^MQhJu(za^N}JaCx-~8ALrMr zjWMnH;u1ft*vfU@x4g$_+R^}!hw|LMP2T@%s?L)%PcI)8p`fJH+T1MreEjum)TNab z%h?8BWk9|{LoqitH)9hL4rfY+qfh5sL(QTB1wwxQR5hx8srYZN=E6!hVUr`Sdk!#z zpdj>MH#|T!+S}W4ekF`rD=I1?AzkZVU!uYK0I4khDQL0V*l3<$&tYq8J5`tCVcGl2 z@{GuF)R@6|3p3LTyq~gz123Wpz}AL_24!XCrWC1H01dEQ3r0mnwROd^a2x#s-$+D9 z7gbg!ocaB`Jit1prj6QGGVzg-xDQ1p)9~Qrx+@JB;|VbD=^3MOG!ytTUfMES^g+0de@gK zlM0SaKuAdF@4`ZhNuysM0NLXZos#u5cozf;bjZocC6HF&W?w*v{IG_DqKv4!Pb`>FOQy#e3i$v zwz26ltg!0_h~}}m`B$H$hzYyHwPEmpQIDTIDFuj4fRd7OBwH)v<#|ZSCTm=GB2+`d5!R}8e9f&WfU5qV@6P|N*7Luv)oOf+m&-lmr-yP1Q8MoPY!&VPSg2I@Se3*>X1P3pRue}7#!xBP?E+#JV5@h8VV-379~ zVaPZ;U>c@`9;b^F9xCd8F7(>bS_Yhf85xYA+c$9>&ob2MSs+VRpto_5Pxr#W@WR4M z3>q5Z`T5BWad58eLcw=80+Vo%h=@O&gmU0H+cy z4ADhE8Wa@!?r%mEy?lwo?{mUFRA3*Fq4ZteG?jOnRRk4K@il!wCa$i&K!(w} zF)kb+ubZh&-Eif_SW+@$25GH|QRaP!oP=9?dgvfIJz4%JwX=VouN>*7}R?W@kXcOh73IG==FrQsMc)qS{gejfic7X08NNmBx?ABoO)U_2pwkqA|zZ0 zS~|WF_jT*Xtgd=o96SnsBmSm7jrkvjWH^7ge#gTDJxz`F z;g83QZOEy~Aur+<1`Mh8mG@22BPLNh@m4qSWNzLM7JEze@02r+ghl`S~%OdpPs+^MtsOl4Et_C_gmlC#2)SyVZ+O)VS zb5&aR-Ab16r~LZ$kJ!{KL6ZsqW>oCgxQyzw7Ej(9%#r3dd#3wl@>&NC`#&3V5$`HMyP;FaC<+Wli*mP{H@ z$qaFL&{#zuKIEMyCV`y1A3i(|5eV7XKqW{=13a+D_o^lM9FR;L*g#X7?4~dsIa3XC zyKF*2EJ!>|u7%X+`Vu>Mbf)fBOZ=_#qUUjc9rO2g=5fa+uY=m!C~km_Igmf>ycUIC|Kx{*FlmM@w;A5;a^QLN_n{ z-RCD*0Zh`;nEC~*>8~7VquW}j%9%@hoU0e-+vz6 zNo0x>xZ`($GwVkiQ&wgd-6pH7hQz8z_E(aq?)s22GdplfS04UVV*(GCcVqyV9x?eL zWkh5zyGo8u2;jz+O#zI%qo!|%8E~0IPympANXXa#T3UBHKl+2SB1smG4k>@l#A0|% zj1p8R21nUQZV3v_nhj;&4vVPCIr6|7a05;7jgJYp5z0gbS634s94M%Kj8lFp4#?cg zmqXrt`ZlY&SiwDxH*b;QFvWG7InFXb2&rky6EuX5)M7N$ELn~!XP;mh4j7J zQXQ_=oJW;I6rH^vCBniz(_9HPSxM5J7bUT;8}&$Q@=#M zm8sCIIesJ=WK18!P>&LrW>*hJ>E*@z^NTc=fI#FxV`Kh=#m&rb#6^{%&xl(rNy72G zk2}nUb2*h+1pzZtr)49;a$4*VEZ;ahSU>iMYl(6%Hb(9%LXi4*W8-bTLIxxvl2fNH z_o9k_VxL(OBFvV_bD_45GmEAGQ6en#J!yehR7M`>>A55(jk8FdlkDwp=R8eGSYBNXD=OlT9(fQ(ft?ZViOo@U zvX=mwezirgu{oLd)K@^jKf|)~8^4Hd-xnh*2?>ekWp|+f&&H>18P+bBz{ZPMovcjg z8BxT_p@Bp9|3e`{BG(UY-MW=1{G4ReJpSQLqMHH&vFrT*)j$;1rM(WY@M(mzwUeNZ zYd(~%#i;XvDE$(7F+lF}?#maGEWu~}$$|CtmzW7`K{hf-2Ml2|F5-8Uvn3)xhpQcm z$`Bj62-}SjLCLhMr{_K2_1Z8u6)i1L2GUf=lZ2kNOin&&umj#oRCF{P4u2*A0bj~&3n|}W$y8Wa= z!O6)fc>5nPp==;HM%q^v@r&V6Fg5U@Cr@pwRK&HwOIgdtXtgPe!JapP5?z^`SYXA;#b=yP~UxW<)x!T zhNLh#jNkP=yQiT+NXch{j-V5FLIC#)r}xK`N&-<)QQ#zDHe6qM0~G*)Kt)5FUs(wS z{4NcML zGl}3MD`(x^-9WF1m8mE%Pv8JczXK$e|I&3mPBM$1i2}%U5Evmly?l*L?d^)@NqYHL zDH0iKpG7_Pmaqff6GuU&4ks3VQ3=}+0di;l;zdMaB9&3S7dg;>Lf^bW19_Ni;d4EF zY-osjFSwUTE`b* zbYj>tjxWQ?VSvJ)7$89?NO>ZGGC4Wat*L4jnNjrk!s=F=zf3KU=+3; z!GlCMSb=( zu??B2_s(#fZ2$#A6lZI0W)=_-fbcortSqXi0E&bZ5e*HO%*yiSW;CR+xuxM)InJwo zCJKuxj{lmMFSC)Xt;|f;V5ZIR@Nk$Uu)?3U?CT}gJk|8C$RQrUEIokl2f6kepn@PP z!%JwuBhb#cxH{in9m%H!>kIO`JiAqA4Jrrt>m?}_Q>F?OLx(t1eUFj`abMF4+XQS* zR@#a)%XNjON&hd>;r~W7_`mZJGw`uFz>V(BoL-`%3gF>SzAlzqTA3{zJZoR@de^;o zGmcz`<0s+GfCfKHGIHtjIg!z&@sHa2#bk{VXX6$b4BTc9EO*dmjK+L zis`TJTOG^2&#PSjN#NjSQHd8})6sq6G`=z>WVB|vId|9Vz$RcIv7-{-=jSKDY&bmORSj{N)sUryB|1ZF5PGD+29Ra987PS+AoREUHsA2^mcPL$mO zMD(uBWzcE>Kd9RlQcRecgn+IJRbE~?ig6Yf>Ivyu8IlPmosj*^FOo)~piQ*=azupy zGncLt0y9KFiqv$T5e4Gnk`HK{mOBR*WW68X1}WXa;%f7hb&y2zV&&wnp(uSfCRs&~s}OxFI2Dx`w|dA6T|W zXc6I5S8s+@9zQE85$rtpcfNb@&(>~Q@@vnwA}870AB`uA$lnlIf&aN7EBmq7_gv!O z-ya-O_Azsa?HJ>!um^6Gttg5^)O2ySPH#8kLm}qCioCCO_Rh#GJ6!YkCS8G4s_ex#c@=U04W}${q+-Bql@9WnM$bAeOnmQMgK@kp%AVwZa<2FNG zWR{)ot(gye2dbP;#b#L*l)&uLAA5QRi+k+6+L$<`{UY7l2Gte;%MOI=y7i^(IycvQ zGoW}N_YHOZ=4>tFT>6aM_mrA1IbBH~cIu-JkzQ9dL5O zF;+iGn(BX5tYV>SwTBuoTDU*=uNtU`namK4NPGKbzCT1|>poveB?WXY^x;Q_Cdh}3 zjJ$yMV*+uEfz=^Vx)t2Hhc({E)Tn5dNb&%%K@!D_#n{!($o~EvKDSVN*!wzfowv>_ zA#!f6+h(+1MUgn~t|!VpC@hv*2j7&GMENXQZMM{MZ#Cc~Kblv;0*3ExQm3b^xEzta_cJ-m*BKRKi{{N8vQC5h2tA?LAONIryL+#r{gUl;9rs< zjreC`0l%QO<8)9qMCyC<3^IPfm*w7*|kz~0c`z%bWutb)C8eo$c#RYxYi zp+x1lBZjV;Kw6ske#`~>moL5p-=eebuW=~c0D@>PH}&)@l+KvTKuGlY&0o_a*Pr-_ zCby1PErrAD^SAeuJKLIG;R+$|h=%dA3ZphQd_bI(AWjHvbxvo-#)^%H8#t7eMWFVa z@W@N6xba%isOA8%Ir(Hhukdc?>VPp5Mcztsv?Ow~YV3UX>gE4&zYz#YOnje{4F!L5 zo9ws5ERwCj&H#KY_`W4m=6hIK1UdNwqzsSQaAF zHwmx~8PxBHq?CYcFT(fSBKH0Jz^&>0`OQmeIyy-RNZKB#2F1U5PkC!LPrrJsRtzIB zPym=$On>ZeVrk@1k={6KBx+R;Gre}^ueIvf=c^QX|Y#%#sopH-qL1x z;Ge+~AiTQ)VSrN=@6J@~CB=`sOuV}dg*#XLL?a3!j2|{1qJmx%O9n+3cnn&K0#uo!>ntGA0I6>Khb93>a89D2NZy}(dMtYT_7l;z zkETZfkq`OQ&*=tk#n-uxPYTsOc`_Or8oFi;5AqfwA5?`0w{rBBz{oac8AIhm{X!L( zgX^WIzXfNbv+)^cgeOhsy;--d;*x(7r=K(E613QPykN)atGoP{VqvUUhKS6Sy3$bw z*iICQ{LKXL)1YGK+XbyG7xLW?^=)2QAFpX1`&Q{FPR3EDrNI94TrK7@lpOD|l0b6H z>-1_nBSGeA*a#rluRbLs_rHwPlKdWOnK!4e)zfE`b0@np#m|1RP1PPJvtzL90u7>2 zSOWC<{EvuHLi5L^8=M4LgalvkXlXZTR7@W`&VExgH4P$Wxf}R>Rnm(%lk?5k()re!vX9bh9dm4)*WVTrQxsS*otVt@Sj37rIf zncr7-960L*9k-*izFE(&4y=!rD(#BimJf9wI>{UiqJ^rLaAeIW= zxpOg4c1tD{96~KAn%Ik{5yh6Z=7X6HHd6+*yp&8_ifE!$>Gndk`k1Lm+cXBdf0ulL zQ&1q~34T%#$S>h&n0`nm-Mct>QnYn(6_ZcjkmD(5{~NDj65xPzfxs{HyE>f>56sV} zZEDZr=y95%+31v_!iguxysqC=9vcHq|p-} zm=OGUOp=g1SNR5zv>=N5_BU+kd&%T&_P>q?8>g}A`0{)_@kp~o0%E(n8fKP%h~QqB zTYG^CSR2^Bu2T0y`Z8bZJ@2 z5vaxJF0}sKO4vPfWAHjSVSwm|Uzm(V@Fm4WW#!=6xsz{pcib_vq$C4L_>Za4b_+0a zNucgbi(_KM%W(T@YfFaUjR(L@Lq$80wVvrOzDoz0TMger}jNe)#eJO-@b>0C$*UiP+gO#u{g7aVZ%F){t)oFy6y+ zGq6PC^}U--U!-~3>fBGd#L2CYuP zO0C#98s%mi@@^(v)lxE3;6joaR^z7TwEA0ThTX~vA`hg@LG;TF4o`J(Uv2pi`uc9( z)i`BB8YDKUyDVTJY;5xLJ2}d%O@)oTzt8@4>D-c%V(ff-9UKr4S>-QNu2T7Yyyj4U zW0ErR4d(ZSjJGs4oC`GEQ8N0?F9K9MkTsQ!aTj6)z`>5oye>x@00}vE&Na)-&(yCV zS;xSI7xdYWMk^$xL;yMQ$Ion8xbp$Tg?^`VQBUAAUel^nFb^`(2 zU?rfE?w&Z`PulmB`$`1d+7(Vg2Z$alTF|AEWv)%>q(sqR*qg#_EuX#ampleeR1m6t zc%sg3iG>#>tD=H|1Z$z_BTVaouh6~j55{Eu>uvzj+pBimgwhbg^qd#>ANlcDO*+U_SDutsRDo_o92Hl z0(2fB_2iR>UmK08oEU+pi^@rjF6>pt7{hoSnfKckUD7V>J>fsdegNn^k_zorNR%vR zd@)SI{c~e$QRvHC)nZ=j_G40vxfRz}=v<ps4^qAa$195m?Sd$0TGYBeK7+}|%yy+T&E&inHR7&yN)gy!Jj zZcrnPy7Fr_;kt+v=Y|>H&fz60bYC&Xu#7%%?dO(h#M;`rs(Q&*JSB}|Y3VzZ+g_M7 zEu-*sDfQ%R-Iv@i7KLp^Hd8wUaOa(N$`oPJ3?cb3;heS?`PU)MM zfB+!`1X752pIiD0z>({t;i#&ac+M_9ep3aWsil9`omBJV{6M-gf8VTl7m)zOz3gML%QsS8Hgal z3i>@tX}&R504ZddN=DJi!Y>&{%dsMSoL@kR!%UIdU)K)psd3}J0VOA9u!*OFdh_#U zLPGLJ)qA&9)$oO>z8)cqU4MTPCExMPo02cQ_h66lP8C{(!*KM!KV=Gi^hL1=hZvTf zXY*%n%i*}3rwcO;mzBp?lFOyQBcD6nFA2|cMab{}JuI>r(7ZTZd3kY?QL4_)ivXIG zwas8=!9{UGf`p{oiym`@wc%pRNAPnYhv_qdJUt0Gdn$iN$s&6RjJo@7zfPUy`$V9% zj*X6L)NrBsd;wME$nID2gQnF1zde`L%(E9y_qB)>6NLeSyIlVhQmF1XPC zfWU%+Scqa|$o${F1V||}I@HW0!7GDGp^TR=5I5S852>|5Wk0o;15am5aO={s6=`Jf zyY57vK?`k*?HMX8?$g^`vC7~=FzDz;7LPW+ui^i|;B@KdhN=_5A4csNdT{V8XX@fS zPD`GS8gr7}<0L~hd#Ca^snxpNmbPhXiVB}5u?fo4P|NY&b~CDkTv-2v>-gX~MO|GC zbXaapf3{fas#u*E&Q;;~Fj<~A#lx!GZY6VYbQcG)bIjQL;1VFg;GCQs!x7`*t8S{+ zRR6p3Iz!S>rjcbw18OlU^a*J{^jWh2tmvDXt~b^RUHJMhw(1e|X_6@;5k9x9on__T&{?4)vByJ z1!jd8xdI1=S^R>zoTtNf8ei@-CvfZc_^SOYLs>gh>?5b8#WpPClt544Iv&Y|wxpw~f|0V$b z6NsY8`huN)S|dI5sSb!~gMShfjWQFJj)adMJv!K)Wz^Ers*^e32Pp98XEBYd zs_bkm0RP+n{rQf9APGkY{*?`Yd}|~5xQvX9WaQ+s02V{9warYO1dXU27Vwaus}6;8 z@-O0DLc$Fo8X%dXa44YvW?##|z`z;^#y*eVY@3vGy&z57^Nkn4kdcuov!A2@l6y!> z3cZD;B}%;XRMwBi50&^Q%DVO{sosj)6~E3WPJwF5FDe=mDBB%%)zd(UShjzh;73nP z9EfZh>*~S+puH2x5-ij$%kOc4p3t)Ae=v}I*y@*7ZlBeOy_EnJm-4^5sMX+3`24vS z$>W1Z4WI{mvh*1tk_-s^+zqIYY;1C=FcMM=1_g(NlmOY1tBwF!Qi-v$wifjF_s0l; zPPvF17#Jl0{uTlJm6Y}Ud#S14X>j?A;fMrMzhDv)5(A)cCG_YFLp=r{f5WT~`1tr% zu*8otcl|EJOUufhl7t5dbd0SH=OtxiusnS5z#JHdKY-9@2feC5jQc+^MTI&Hl0=_H z6=RdK7X_kWmiS+th9ZfiP$McL=hllKXMq0e1iw_>O%7e%;Y0l)cHMs&umNiz>smmU z^#-hF0~nG&9>lTZ-Al4cI2_%pkhRjyy3Y2#%zg3a(@r&J6Oc2xC614*5eNco$> zmwzcLC=@|MZo)W&?pOQnymZkV6~^-Naw}O`S)BEmM*qgaC0!H$;e@5ET+w{&)blmg z!ib3^fet7x^a8!>w*QX}@2|o!dlMxkmo?ehVZfNvXix*b@^Y_EnV*&Y%lVcY9aNSj z?E&z%w`c<}$wzhc(A`g4t=Xka)_&;k? zR#jDi!%P0bcCx}=gk|N+*RM?XW9Y(Jlw#&U0?=cPen(n*x$t{tW>ZVcf-I8=FIR-Y%aO{I^@*ixUB8NdK{81pXvp zsH$RU8Ew;gy72CP1YPh}CjrX7g)bmrr{kXtk z%G4J6K#?5*F^n=Xz>4K^wRrdtoZJafRKicTk4Z`4K;CZppT)9ehnc!?XrE4~y#gk@ zEDyyZoWWR`kBNy`KrKJDG(K6#&sNJFRLalKhgeuGcm>X5{QqZL+6UEqrizEDCcwDcUTUYVJu926Es|6~I(5r0M*4}QuK9XILV+tT@a@~Tax0iu_AbQ+c)&@8{!CJ+5h8o`k;N)F`!;L0U$mW1 zWS002b#`LHyE=ClJ7Yh52mv`zg9o`xOU#|zuKt!QdZ}4+Q4Le2ModTu3X*`;=x}}q zb7fB09EDTY_3Kxt0ndGCHwVXwfq<_Ncy6C#V_|8or?B^U9N$|AP42~lBRw)Q@&k^@ z4>)W*f`ab_IuaF_&7qEmJb(gvM+T0boei^h+0Tv^>80F@fNoy|rMOb0hk}z=Ea|qU zb4%S`YDM=&PyDSP?wb>Pi$AlVS$Pb;9gzf00YYM8&!B?N1MF^c3JN48UI-KkuDip? z$Y`mvZPwnUgUTD~PoKq|ne$8=?;_nN92-lh&J9b7W!SIO!FAHXHLGMLNWH(mZ)rbK zW)6MuKfI5(kgeY;zdRF0O?xLX60+1*>U4&`iOjpaFzlgzy#Ni%s;sOkrU?&g3dtN;QB&OQ!Q(N&Yh zW7mIUF};vW_0}dfNzO5aK5n=GkRQ32hlmZ?TWw@)EbwZ}s6d_t*dD%H4-`FO>lB!Y z8_u_Ck4^g2umzTlU1?L^MG%OsAxM z+x-9i11$fKwb1{udMHNypFZ32|L;>>*Ojlt1k|!@>6)%r?r}#QyNCJUxxORJBG_}T z|46)xMlbXrP}zF$rZ{Q5O%yJrg4m0A8hK%s*s4KQR%$Er-{>5&6pJc_Y358O6eL(r z(NWPCvQ$XtK5#N_x=^}&caciy3eA$qPSeC^WA4)?lbowCXW5fUl$gp z>_TOtppYqn$H&Y(NEbp$O#Gan6)q*=(0RCqKDF*ZBgOywaP_K2+MCSGvyd?Bmz5uS z-Wi=dcSJN1%3Lh$`uH_q!*^ZUa}O)D;SK3GvqnP~I~lLTcbv#`*CYmx{%AmN4(~_Y z{e51a%R_7bvMRg(#wC2LL;=1{`^kwvqKe{2WXu)r-k#_W6H7*v>wRWs9PQlPv>$fd z2WP>Bk6df`eU7I^vvW%#Qu66w@tk3gc_b23QcQPFrjki19`xks8{4Lmk6+{G zt5c&Q7nk<&J;|FWJQlL{{WWf(eHUQctbZ@i3ju+Vq4xB=B&Il0@(2#j`II7vjub9a zv&AW<5wG)GW8UV<*{kWd^!a$mH=_F-jeqazQwz-H($u{%S&;>eosax0%m0%AQL(>2 zuiq2F!i()o7xtVmX3z_9O5g=tzRBHb0|PK z0TxhbPmc;XNd)5W%8GfpVKIEF2}#p|Posb}+&~D6iLpTP4cFlqI13sY8XwPGKNbar zCDPlsZ(Ed(Q|NjhuIYC7_kY;ha`?Bl_8y2g6250;VPOZy$Gz9rMriMVa?u4>478*? zLWE5_9Os_zpFl1GVrBt1&&>RCrJugLr)Mu4zO51ugp=ovj+AlTti!{@%wTwrShBLR z1O)||jg5_glfwdZD3Z`tCa-#vwY9aUc6O?3>+6c&|8ztAn*J-U&pPhIhYyOQkzLZD zjM%sTR~uIwlT;W+Z%VZ8w4@m}6E&7gNDV8^wMj0ZO`T4gG|ewsF8jeSaVlvGtre~` ztdVo631TY=Wp~a*xTuY##w=~>3e-trldS~Ofibo9&~N|V`{&(rpZ7iIdG9$VCJG0? z)T^N(bFyP??K$M`Jf7Gxz8x6gve{tKBhn+wi`LtE_(U*Fhx+S+O_$2FR%oj(9aj^?wWO?IbK(vZRi-*kQH z)XVR{cST#CSi#b8VB4pMKr!TU`RIno{X^pY!;{#-5>WC@Xo9LK{zgZJKQjRY@RRzX1{XoU74 zlQ+&lH}U$-3?}mcm#g@?RdtZ#+dv4Y2g86@WaZ@e=7M81+I}GN=`~U?#{K$+84Wtu z)OD-0$JoJQ3Gf;>>UO&!MWAnFK97`n^bkDvc&dCEPVj-< zI#c|SfTX+IT5)JTvFJ7l-X_<2Mg@Z-o4F7sBv{a5CQ59C21>mfwuJD5NZx6?JsK#5 z&6((DaSj&dq5u1v@UyV-!aGR1it!edO9BCpUUYgpcSj`esTG0Tt~A{dKztmM%E@H+ IUF6;S2g&@`TL1t6 diff --git a/docs/_sandboxed_i_file_8h_source.html b/docs/_sandboxed_i_file_8h_source.html deleted file mode 100644 index abd8d246..00000000 --- a/docs/_sandboxed_i_file_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/SandboxedIFile.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
SandboxedIFile.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/fs/IFile.h>
10 #include <tc/SharedPtr.h>
11 
12 namespace tc { namespace fs {
13 
18  class SandboxedIFile : public IFile
19  {
20  public:
29  SandboxedIFile(const tc::SharedPtr<tc::fs::IFile>& file_ptr, uint64_t file_base_offset, uint64_t virtual_size);
30 
31  uint64_t size();
32  void seek(uint64_t offset);
33  uint64_t pos();
34  void read(byte_t* data, size_t len);
35  void write(const byte_t* data, size_t len);
36 
37  private:
38  const std::string kClassName = "tc::fs::SandboxedIFile";
39 
41  uint64_t mFileBaseOffset;
42  uint64_t mVirtualSize;
43 
44  uint64_t mVirtualOffset;
45  };
46 
47 }} // namespace tc::fs
Root namespace for libtoolchain.
Definition: Exception.h:12
-
void seek(uint64_t offset)
Set the file position.
-
void read(byte_t *data, size_t len)
Read data from the file.
- -
An interface for implementing a basic File handler.
Definition: IFile.h:26
-
Declaration of tc::SharedPtr.
-
SandboxedIFile(const tc::SharedPtr< tc::fs::IFile > &file_ptr, uint64_t file_base_offset, uint64_t virtual_size)
Default constuctor.
-
void write(const byte_t *data, size_t len)
Write data to the file.
-
uint64_t pos()
Get the file position.
-
A wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of ...
-
uint64_t size()
Get size of the file.
-
uint8_t byte_t
Typedef uint8_t to byte_t to more explicity indicate its role in memory related contexts.
Definition: types.h:19
-
Declaration of tc::fs::IFile.
-
-
- - - - diff --git a/docs/_sandboxed_i_file_system_8h.html b/docs/_sandboxed_i_file_system_8h.html deleted file mode 100644 index 21871f2a..00000000 --- a/docs/_sandboxed_i_file_system_8h.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -libtoolchain: tc/fs/SandboxedIFileSystem.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
SandboxedIFileSystem.h File Reference
-
-
- -

Declaration of tc::fs::SandboxedIFileSystem. -More...

-
#include <tc/fs/IFileSystem.h>
-#include <tc/SharedPtr.h>
-
-Include dependency graph for SandboxedIFileSystem.h:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::fs::SandboxedIFileSystem
 A wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem directory tree. More...
 
- - - - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of tc::fs::SandboxedIFileSystem.

-
Author
Jack (jakcron)
-
Version
0.1
-
Date
2018/12/23
- -

Definition in file SandboxedIFileSystem.h.

-
-
- - - - diff --git a/docs/_sandboxed_i_file_system_8h__dep__incl.map b/docs/_sandboxed_i_file_system_8h__dep__incl.map deleted file mode 100644 index f0111890..00000000 --- a/docs/_sandboxed_i_file_system_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_sandboxed_i_file_system_8h__dep__incl.md5 b/docs/_sandboxed_i_file_system_8h__dep__incl.md5 deleted file mode 100644 index aaefdb84..00000000 --- a/docs/_sandboxed_i_file_system_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -117704387417cb319ab5a1dd3e2369f9 \ No newline at end of file diff --git a/docs/_sandboxed_i_file_system_8h__dep__incl.png b/docs/_sandboxed_i_file_system_8h__dep__incl.png deleted file mode 100644 index bb23b7de6a51f17e066f90998818f99398920c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5295 zcmd6rcT`hbo5rJ8L5hMDfgmFNBGOTMk={Y7bfimf(u+#(Akv$FT&f8zfYJoPfRxZ% z=!!t-T>=T;X3gALcjjC3@2puYl0f#^>zubd&+pwa+L}r?iJ`<02;`=Uvb+v>9|ph8 zHweJ%nSS6Xcq6biXoElq_$sBBc^pXmAJZp{U1Q=iNs_k<0fj#+X-`H1xf zlA$qzb`LV2l|bL@Mc%f(S^^ca(oxTrdiRY<FT%669_7h1W6mfT7%9X>l+0jZipP?6geNj=ZP0cfF-eL^0(NT6z z>sP~R*I4Cc|72yNkYyrDAt#>pz3aZ*MfBKp)*;3?ygC4n$DiX*+J$K+IOT=i=2^wX zbLa%^GC%S$5xh~$;CU(9q8mNajYOUpa?6q`e-mI@{pW5f(c#)X%uLv&C`M&<^=pf6 zp=b05tEkYjhJk?r=jqyr>T13>Z{9>lN8gu}%$t~)kb<8M=80dsc5UsV{sWS!r=qNE`LieGU0Pa7ZmznV+#hajr*`m+73uE3G;-X1eRqUr2L}_Y ztE6nx(}s7|hTmHZIQpc-sDjv$K5ZD8J{=9`nYC2APk>h*%;@ z_T4G#q@|6GzU)U%e?EAC(U-hR`qReiRUbL*z65YPL?Gidst$ zo`+cOEq6m45XKE|3z`lNf5zS6UM^0ODk?8mkq!-%P zO^pPip`lS_(VoA!XqnDqrmCt+{2(p1sE9fJp-~b1D95dhiJ4h;L9=)`IXnCNNQs(J zwdEBR6_v7a$5cmtecveeZ&+blNsxuQ=U)kMO}~EGfdn`CY(Xu9a(ocD=1P|P_g{UD zBBP|EQ*n3aYxdpw)sw;!9udLsyKUOwf}YsgFA(*LwCzi$bKYosFCw2K>_%X@&=w4_ zvA5R+&x$?Tm~Qf5xhzH&7CGtQr%!K>{-v=|>*D1lNJK>R(6~Mt?dJnRi>Zb#>bO}9ONv3XLqcgJv}{TWoO?XR$_drqtgj9 zYlbMRsutDOzC}r$#UE`*5PJ&BrNQU9d<;_HSkZgb8h&5i>JFQ9b&qG-1~vt+ugN1 z|GhWoI+}=XFBN;woqT!ug9ou=V|t1ABvp-#q40LRShLTTz*GZ6o`}aAZj**xq%=O| z@X#BxvC(YC@fYTRgv27`lr1GC#n0b=X=`iXGA>;)lt(|baz$Pj6j)@qAdI;i8X7=e zBT4Bxb49&G{C3}mphj!9P@#A)sf%;3x2dUnM@K6|g>o(X-?@U$wi+RzZfjl8kLQC9 zG)&FR{LlB0S4a)KL7E2#2U~tG$6-DE{r#)VTeDXSLh}pGe{!hji6KUxYkPYO6)Pou zLn5Q7xeTXFmL;`Vl8W1}#<4O@X1-T`eU;`NJ^pP&DsX%jgkBO~s- z4U6HL57^+Iot@o1K4u4TSYEbDbzFDoj-~F;5=1Vpj+N{F9mkOmDpP2**YTziB=N4O ztfl396?DDuOGtQlIG^9HCGI?f$L#xJM_87iePYNN9VHYRo0^)6&&75~R#L?BKJ?am z`m|$hxcI05naI#LRb&0SVIdis5LqY}fUWZ%4c(`BUMXE#m`R!C2^o$ z+Q7}tO+`)3@AXTaT|M(lI1%Ly5)x~$$A=Fe$jQlHwYEx9Q&Y3Dv3XqJgIii!#E#Z6 z7~=XoZ|Nq|AIK!(OxM{a4}yXMzh$B@+p6;NrTNxC2O+40gv8+w#iV;0wzg~#5aRwE z;UorepIuPb^!;#9h#3|k)0R^pLr=@~Bqv6Ox96H~Iyy|wjdNP#a%%HkoSieJg2f^t zBI42ta;>baV0kw| zeT(|L|0c=a!!t#ib~8AlaB^{gp5J2 zN=rGU&!$m_UrRwpy#9j_qFp)Oa<<*vg+%^XU5!#LVV0I&c&}xG9u&9s_4Nf^WyiNL zGNKdq!gcO*L}Ozkey3P5!Ky3z_SE#W$Lb)1grwx_242^*NLW>s%>^E(o+S`**?U2W=L2_+o~c>zUG@~6<*)uM>^i$fc6d$>{SfZ)mIgy`A^hto z40UUDd!e07#?tbBd3pJ}^mH8q14SJj3h>-A=$d^ml;q@Akd>9yZ|nvfEGUG*Zkd>v zY;J9dBU~0rI9OTTF=L#r3vC+DpECjRvOC_K#%3FvnAFtO6_=DmfG&K$Wm+x{WS^Oh zEdod@$O>|Ov{Xe+O)%3AsKe|huP81<*zW0S0VOSMbY33Al`B_3W$Bum4<^tHE32vf zh@df-DIHD8%PP0l!c%D`py{prUtKJgc|ZG zd{Q}H>$R$hD>M+dM%SC2`Ia_|1#n4Aw(Xt6bgqO%HZ(H9i8UowKZjD=Z7y|yl|eXemz{QbbvqGv37G?utiTz zJ-e*`bZ(QT;IqfTL(egW?N-yZwh&VK$MI=ghPAG9Vv#rL6`wt$t+N|oe*Ac1@qw8V z-~uIZgD*D>9z1xkyT8xO!;`qS=719d5n*}!IQ_4`*zE?g6@Xzv+**(B^!D}wA%O-4 z2HK(WH9(^QWf_~807?Y6w6{m1-P#AfCC~$bvRxZ0JjYJ9+igsIlvh$J)+x_?>;eUL zU^n#s31|wM_#?OP0g(+0`|al|yrSM~veI#4$@r-4hlTuC1*ljqGdnlI2fR z?FO)Nim8NWiu=M!`uN3(QnWYsSNcFi`Rxbqf}Ne$J^NuO_+X4u5*!ZiNc*gmuo)As ztt`tLE=$48MD>>3=u`Tggc3D!Nxp#ROF)9`9?H?`>W#%06i}MY=CSry)z<2SijRiH zNB+sgRA@m$Az4>bV?S1=Pj$y`bT(*iWaY-pw!==@C<94nz+H*oyhTMmd~WlC&U2q< z!FMb_?{~zm{K8WLZ{{7DnzCAQ4Ckj{<{BRw>Q7;zxuRVzbpC^JmD@ChPf^yUWd8tF zI9xC3>SApT?6h05o;;nIsaD6xs2dyAQ*X>25n)(ffyqH;DJ+0nFRZ9gY&+Y|4$&I> z7RlQ#;Z&0y?g2J`m*Gpm7xc~uRB~SMjKK96SC!~0ZJ*;8-eO-3Olk%qi{d?fW{yE(AiK7MXyZQgZ?c#G7HlamF8+xYTZ~S0#k^ ze7CWuDITV6UqAew<_R;s9$sPxl#M78kF#UAsKptABjCBKo0@9sGa9Cr9gq zmsYP_$i~j+Le=uQ`F`Sct|9}cOzDN)qtDl`XZT~+hvV;x&RY5@C`cA7(%qs=XY%zh z5hY7%R8cYd_U3xhyoomfv1l&kf57x5{{AC{M1{%W$~PkZ8*l#~Er~hao{LLJNSF?V zLKAEJ_8!)qG~4u2sKNKI$l*~F=HL7K>%EC^+rYGHyovsZ4KK?8^yj!vfi*KQNH0;N z)&A+O`ER#g)iaPI91|aZZPB;=jDbZl-mmO*YHG?IhdpY0sNpRqJEjGY(!Y){^R|yLv&ISa&$B`g+-~>d0GI2!5oen8XErC+>B36)h%rpYRJeIdO;CJ zNM;B8(#FQd8y))O$rUZhBPt#qo+^_@7@S5+LYYJTZB|zK#sKEC&sKKFA!F!yjVmC7 z&m=TFYl8*S@Eoz1729N?zr#X;0s=nsu&@;OHGtTODJdxdAdZE#w3s#m%E=203xfdz z=xe(&cYb>C5-j-)@SEX%WkrR+r{m;gax-P+=-yFjjE$BJJ6IUB+d-(FE0O|8J9`V= zc!`C$-@I+V-+b~~^_ey(9=3FHic>AInyP-@g2hzMHv1-Zgb~tj@v^fMfO-evy8`%e z3w@m;fPz_&lZ(q5a3B^1@Djfph=9`2WbmLtBy#~=cmNv$=14?LT-4M=OHWT< zjPv*NgLsQ4tkHw(0Y@$Zg~X!lQTZ!h$)v9>0#3Mg{W_fsdUm!ScXl%U$%_L}$wP~_ z+%I2b!n`UHStWk4Fk$S$gF@ux<;iJikP##_P2TGi!^6W^ZQzeJ?n|Ans|TGVyvZpk zPZSic>+9=J&CCF^xFG|$^yuga_xWz82+>pNz5V^pg$0Yy2$!uH#5Do}3M#5D;H*f% zR4VG~@*fR!b#<-X*KJ}%-5{lvFHs(PSME^#Se_j!Xh+J##ALTshZs-CVxQ<4(zly5OaDGSUE0}kn~)+D z_+;G?>oV>6E<9W!D7XMb@}kyTwDZO^rBTi1rq!3ogH<Js zxctb-bk|Z3_i8qd(k^vsB3*EWGTMx2&LUX1Ti}-44Q?hU@)2tJ>J{vKq3iW0XiIWd<0a!)zv9JDvEH(r$qCRS2S0Ul8lTDOizUu zL15~WI^UIp++q-u*VZ1ALp)OKw3ebM3YnOix*;Pkf6c?g!?el$H8|F~&A{-HOwru@ z9_%iWeh@AQTFH*6hO#<_n;l!((GzYP_xTR#wc8i0tfa zC@!sOzTTzLb4Ar|Ft>Mi=__|lS(1c*evkYXic*revJ&_72KY - - - - - - - - diff --git a/docs/_sandboxed_i_file_system_8h__incl.md5 b/docs/_sandboxed_i_file_system_8h__incl.md5 deleted file mode 100644 index 747021de..00000000 --- a/docs/_sandboxed_i_file_system_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4cf92b2d2ff8d456b9d9e1f6071709bd \ No newline at end of file diff --git a/docs/_sandboxed_i_file_system_8h__incl.png b/docs/_sandboxed_i_file_system_8h__incl.png deleted file mode 100644 index 800dc27f3b49d7b5f519e55be86b57667fdb5323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37040 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 - - - - - - -libtoolchain: tc/fs/SandboxedIFileSystem.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
SandboxedIFileSystem.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/fs/IFileSystem.h>
10 #include <tc/SharedPtr.h>
11 
12 namespace tc { namespace fs {
13 
19  {
20  public:
27 
29  void deleteFile(const tc::fs::Path& path);
31  void setCurrentDirectory(const tc::fs::Path& path);
32  void createDirectory(const tc::fs::Path& path);
33  void deleteDirectory(const tc::fs::Path& path);
35 
36  private:
37  const std::string kClassName = "tc::fs::SandboxedIFileSystem";
38 
40  tc::fs::Path mRootPath;
41  tc::fs::Path mCurrentDirectory;
42 
43  void sandboxPathToRealPath(const tc::fs::Path& sandbox_path, tc::fs::Path& real_path);
44  void realPathToSandboxPath(const tc::fs::Path& real_path, tc::fs::Path& sandbox_path);
45  void sanitiseInputPath(const tc::fs::Path& unsafe_path, tc::fs::Path& safe_path) const;
46  };
47 
48 }} // namespace tc::fs
SandboxedIFileSystem(const tc::SharedPtr< tc::fs::IFileSystem > &fs_ptr, const tc::fs::Path &root_path)
Default constuctor.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
tc::fs::IFile * openFile(const tc::fs::Path &path, tc::fs::FileAccessMode mode)
Open a file.
-
void setCurrentDirectory(const tc::fs::Path &path)
Change the current directory.
-
Provides basic info about a directory with-in a FileSystem.
Definition: DirectoryInfo.h:23
- -
void createDirectory(const tc::fs::Path &path)
Create a new directory.
-
An interface for implementing a basic File handler.
Definition: IFile.h:26
-
Declaration of tc::SharedPtr.
-
void getCurrentDirectory(tc::fs::Path &path)
Get the full path of the current directory.
-
A wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem dire...
-
void deleteFile(const tc::fs::Path &path)
Delete a file.
-
Represents a unicode path for a filesystem.
Definition: Path.h:19
-
Declaration of tc::fs::IFileSystem.
-
FileAccessMode
Definition: IFileSystem.h:18
-
void getDirectoryListing(const tc::fs::Path &path, tc::fs::DirectoryInfo &info)
Get directory listing a directory.
-
An interface for implementing a basic FileSystem handler.
Definition: IFileSystem.h:40
-
void deleteDirectory(const tc::fs::Path &path)
Delete a directory.
-
-
- - - - diff --git a/docs/_shared_ptr_8h.html b/docs/_shared_ptr_8h.html deleted file mode 100644 index 76ae7c76..00000000 --- a/docs/_shared_ptr_8h.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -libtoolchain: tc/SharedPtr.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
SharedPtr.h File Reference
-
-
- -

Declaration of tc::SharedPtr. -More...

-
#include <tc/types.h>
-
-Include dependency graph for SharedPtr.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  tc::SharedPtr< T >
 A smart pointer which auto-deletes the embedded ptr when all references are gone. More...
 
- - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
-

Detailed Description

-

Declaration of tc::SharedPtr.

-
Author
Jack (jakcron)
-
Version
0.2
-
Date
2018/12/30
- -

Definition in file SharedPtr.h.

-
-
- - - - diff --git a/docs/_shared_ptr_8h__dep__incl.map b/docs/_shared_ptr_8h__dep__incl.map deleted file mode 100644 index c443f69f..00000000 --- a/docs/_shared_ptr_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/_shared_ptr_8h__dep__incl.md5 b/docs/_shared_ptr_8h__dep__incl.md5 deleted file mode 100644 index 73ea6f65..00000000 --- a/docs/_shared_ptr_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -60a8f18db07159e540cdb97d466dab9d \ No newline at end of file diff --git a/docs/_shared_ptr_8h__dep__incl.png b/docs/_shared_ptr_8h__dep__incl.png deleted file mode 100644 index e6b191397dc105cd91255f173722adc6c3f4c0bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20657 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 ILiA1e9puoc761SM diff --git a/docs/_shared_ptr_8h__incl.map b/docs/_shared_ptr_8h__incl.map deleted file mode 100644 index 95f892f3..00000000 --- a/docs/_shared_ptr_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_shared_ptr_8h__incl.md5 b/docs/_shared_ptr_8h__incl.md5 deleted file mode 100644 index c9e4fb9e..00000000 --- a/docs/_shared_ptr_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3b08d877d2e9dfd13ecca2ea36a35a6a \ No newline at end of file diff --git a/docs/_shared_ptr_8h__incl.png b/docs/_shared_ptr_8h__incl.png deleted file mode 100644 index 5d851b749404139d4f40bd9716406a166c8973f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13247 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 jwZ8cO@s*R^OEk%2HZy$C68G*FBB= diff --git a/docs/_shared_ptr_8h_source.html b/docs/_shared_ptr_8h_source.html deleted file mode 100644 index e80d04b1..00000000 --- a/docs/_shared_ptr_8h_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -libtoolchain: tc/SharedPtr.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
SharedPtr.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <tc/types.h>
10 
11 namespace tc {
12 
19  template <class T>
20  class SharedPtr
21  {
22  public:
29  SharedPtr();
30 
37  SharedPtr(T* ptr);
38 
40  SharedPtr(const SharedPtr<T>& other);
41 
43  SharedPtr(SharedPtr<T>&& other);
44 
46  ~SharedPtr();
47 
49  void operator=(T* ptr);
50 
52  SharedPtr<T>& operator=(const SharedPtr<T>& other);
53 
56 
63  T& operator*() const;
64 
71  T* operator->() const;
72 
77  T* get() const;
78 
83  bool isNull() const;
84 
93  void release();
94  private:
95  T* mPtr;
96  size_t* mRefCnt;
97 
98  void deletePtr();
99  };
100 
101  template <class T>
103  mPtr(nullptr),
104  mRefCnt(nullptr)
105  {
106  }
107 
108  template <class T>
109  inline SharedPtr<T>::SharedPtr(T* ptr) :
110  SharedPtr()
111  {
112  *this = ptr;
113  }
114 
115  template <class T>
116  inline SharedPtr<T>::SharedPtr(const SharedPtr<T>& other) :
117  SharedPtr()
118  {
119  *this = other;
120  }
121 
122  template <class T>
124  SharedPtr()
125  {
126  *this = std::move(other);
127  }
128 
129 
130  template <class T>
132  {
133  deletePtr();
134  }
135 
136  template <class T>
137  inline void SharedPtr<T>::operator=(T* ptr)
138  {
139  deletePtr();
140  if (ptr != nullptr)
141  {
142  mPtr = ptr;
143  mRefCnt = new size_t;
144  *mRefCnt = 1;
145  }
146  else
147  {
148  mPtr = nullptr;
149  mRefCnt = nullptr;
150  }
151 
152  }
153 
154  template <class T>
156  {
157  deletePtr();
158 
159  if (other.mPtr != nullptr)
160  {
161  mPtr = other.mPtr;
162  mRefCnt = other.mRefCnt;
163  *mRefCnt += 1;
164  }
165  else
166  {
167  mPtr = nullptr;
168  mRefCnt = nullptr;
169  }
170 
171  return *this;
172  }
173 
174  template <class T>
176  {
177  deletePtr();
178 
179  // re-assign members
180  mPtr = other.mPtr;
181  mRefCnt = other.mRefCnt;
182 
183  // set source members to nullptrs
184  other.mPtr = nullptr;
185  other.mRefCnt = nullptr;
186 
187  return *this;
188  }
189 
190  template <class T>
191  inline T& SharedPtr<T>::operator*() const
192  {
193  return *mPtr;
194  }
195 
196  template <class T>
197  inline T* SharedPtr<T>::operator->() const
198  {
199  return mPtr;
200  }
201 
202  template <class T>
203  inline T* SharedPtr<T>::get() const
204  {
205  return mPtr;
206  }
207 
208  template <class T>
209  inline bool SharedPtr<T>::isNull() const
210  {
211  return mPtr == nullptr;
212  }
213 
214  template <class T>
215  inline void SharedPtr<T>::release()
216  {
217  deletePtr();
218  }
219 
220  template <class T>
221  inline void SharedPtr<T>::deletePtr()
222  {
223  // if this is an empty refernce
224  if (mRefCnt == nullptr)
225  {
226  mPtr = nullptr;
227  mRefCnt = nullptr;
228  }
229  // else if this is the last reference
230  else if (*mRefCnt == 1)
231  {
232  // delete memory
233  delete mPtr;
234  delete mRefCnt;
235 
236  // make ptrs null
237  mPtr = nullptr;
238  mRefCnt = nullptr;
239  }
240  // else if this is not the last reference
241  else if (*mRefCnt > 1)
242  {
243  // decrement reference count
244  *mRefCnt -= 1;
245 
246  // make ptrs null
247  mPtr = nullptr;
248  mRefCnt = nullptr;
249  }
250  }
251 
252 } // namespace tc
Declaration of generic types used by libtoolchain.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
void release()
Release the managed pointer.
Definition: SharedPtr.h:215
-
A smart pointer which auto-deletes the embedded ptr when all references are gone. ...
Definition: SharedPtr.h:20
-
SharedPtr()
Default constructor.
Definition: SharedPtr.h:102
-
T * operator->() const
Access members of the managed pointer.
Definition: SharedPtr.h:197
-
T & operator*() const
Dereference the managed pointer.
Definition: SharedPtr.h:191
-
~SharedPtr()
Destructor.
Definition: SharedPtr.h:131
-
bool isNull() const
Determine if the managed pointer is null.
Definition: SharedPtr.h:209
-
void operator=(T *ptr)
Claim ownership of raw pointer.
Definition: SharedPtr.h:137
-
-
- - - - diff --git a/docs/annotated.html b/docs/annotated.html deleted file mode 100644 index 1c5b5f75..00000000 --- a/docs/annotated.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -libtoolchain: Class List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - -
 NtcRoot namespace for libtoolchain
 NfsNamespace of the filesystem library
 CDirectoryInfoProvides basic info about a directory with-in a FileSystem
 CIFileAn interface for implementing a basic File handler
 CIFileSystemAn interface for implementing a basic FileSystem handler
 CLocalFileSystemAn IFileSystem wrapper around the existing OS FileSystem API
 CPathRepresents a unicode path for a filesystem
 CSandboxedIFileA wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of the IFile object
 CSandboxedIFileSystemA wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem directory tree
 CExceptionAn extension of std::exception that allows optionally specifying a module name
 COptionalA wrapper class, where the existence of the wrapped value is optional
 CSharedPtrA smart pointer which auto-deletes the embedded ptr when all references are gone
 Cbe_uint16_tWrapper that allows accessing a big-endian uint16_t regardless of processor endianness
 Cbe_uint32_tWrapper that allows accessing a big-endian uint32_t regardless of processor endianness
 Cbe_uint64_tWrapper that allows accessing a big-endian uint64_t regardless of processor endianness
 Cle_uint16_tWrapper that allows accessing a little-endian uint16_t regardless of processor endianness
 Cle_uint32_tWrapper that allows accessing a little-endian uint32_t regardless of processor endianness
 Cle_uint64_tWrapper that allows accessing a little-endian uint64_t regardless of processor endianness
-
-
-
- - - - diff --git a/docs/annotated_dup.js b/docs/annotated_dup.js deleted file mode 100644 index c80639f9..00000000 --- a/docs/annotated_dup.js +++ /dev/null @@ -1,10 +0,0 @@ -var annotated_dup = -[ - [ "tc", "namespacetc.html", "namespacetc" ], - [ "be_uint16_t", "structbe__uint16__t.html", "structbe__uint16__t" ], - [ "be_uint32_t", "structbe__uint32__t.html", "structbe__uint32__t" ], - [ "be_uint64_t", "structbe__uint64__t.html", "structbe__uint64__t" ], - [ "le_uint16_t", "structle__uint16__t.html", "structle__uint16__t" ], - [ "le_uint32_t", "structle__uint32__t.html", "structle__uint32__t" ], - [ "le_uint64_t", "structle__uint64__t.html", "structle__uint64__t" ] -]; \ No newline at end of file diff --git a/docs/bc_s.png b/docs/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/bdwn.png b/docs/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -libtoolchain: Class Index - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Class Index
-
-
-
b | d | e | i | l | o | p | s
- - - - - - - - - - - -
  b  
-
  e  
-
  l  
-
  p  
-
SharedPtr (tc)   
be_uint16_t   Exception (tc)   le_uint16_t   Path (tc::fs)   
be_uint32_t   
  i  
-
le_uint32_t   
  s  
-
be_uint64_t   le_uint64_t   
  d  
-
IFile (tc::fs)   LocalFileSystem (tc::fs)   SandboxedIFile (tc::fs)   
IFileSystem (tc::fs)   
  o  
-
SandboxedIFileSystem (tc::fs)   
DirectoryInfo (tc::fs)   
Optional (tc)   
-
b | d | e | i | l | o | p | s
-
-
- - - - diff --git a/docs/classtc_1_1_exception-members.html b/docs/classtc_1_1_exception-members.html deleted file mode 100644 index a7ae3dc1..00000000 --- a/docs/classtc_1_1_exception-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::Exception Member List
-
-
- -

This is the complete list of members for tc::Exception, including all inherited members.

- - - - - - - -
error() const noexcepttc::Exception
Exception() noexcepttc::Exception
Exception(const std::string &what) noexcepttc::Exception
Exception(const std::string &module, const std::string &what) noexcepttc::Exception
module() const noexcepttc::Exception
what() const noexcepttc::Exception
-
- - - - diff --git a/docs/classtc_1_1_exception.html b/docs/classtc_1_1_exception.html deleted file mode 100644 index a588e0e8..00000000 --- a/docs/classtc_1_1_exception.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -libtoolchain: tc::Exception Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::Exception Class Reference
-
-
- -

An extension of std::exception that allows optionally specifying a module name. - More...

- -

#include <tc/Exception.h>

-
-Inheritance diagram for tc::Exception:
-
-
Inheritance graph
-
- - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

Exception () noexcept
 Default Constructor.
 
 Exception (const std::string &what) noexcept
 Basic Parameterized Constructor. More...
 
 Exception (const std::string &module, const std::string &what) noexcept
 Parameterized Constructor. More...
 
-const char * what () const noexcept
 Get explanation for exception (inherited from std::exception)
 
-const char * module () const noexcept
 Get module tag.
 
const char * error () const noexcept
 Get explanation for exception. More...
 
-

Detailed Description

-

An extension of std::exception that allows optionally specifying a module name.

- -

Definition at line 18 of file Exception.h.

-

Constructor & Destructor Documentation

- -

◆ Exception() [1/2]

- -
-
- - - - - -
- - - - - - - - -
tc::Exception::Exception (const std::string & what)
-
-noexcept
-
- -

Basic Parameterized Constructor.

-

Inherited from std::exception

-
Parameters
- - -
[in]whatExplanation for exception
-
-
-
Postcondition
-
- -
-
- -

◆ Exception() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
tc::Exception::Exception (const std::string & module,
const std::string & what 
)
-
-noexcept
-
- -

Parameterized Constructor.

-
Parameters
- - - -
[in]moduleName of module that threw the exception
[in]whatExplanation for exception
-
-
-
Postcondition
-
- -
-
-

Member Function Documentation

- -

◆ error()

- -
-
- - - - - -
- - - - - - - -
const char* tc::Exception::error () const
-
-noexcept
-
- -

Get explanation for exception.

-

Omits the module tag from the description

-
Returns
exception description
- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1_exception.js b/docs/classtc_1_1_exception.js deleted file mode 100644 index 12a8a807..00000000 --- a/docs/classtc_1_1_exception.js +++ /dev/null @@ -1,9 +0,0 @@ -var classtc_1_1_exception = -[ - [ "Exception", "classtc_1_1_exception.html#abd14a4de5399f499d2d52853f0f30482", null ], - [ "Exception", "classtc_1_1_exception.html#a52534d2ad7b0f808c583c06312d08027", null ], - [ "Exception", "classtc_1_1_exception.html#a5ec4862d949017561422b45071507d02", null ], - [ "error", "classtc_1_1_exception.html#aec95c5655d5724ee3999abb52e0145ae", null ], - [ "module", "classtc_1_1_exception.html#abbf530e25e09e8deb0895ede2daf589d", null ], - [ "what", "classtc_1_1_exception.html#a8eff5742876ddad1d692aee6a3df7162", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1_exception__inherit__graph.map b/docs/classtc_1_1_exception__inherit__graph.map deleted file mode 100644 index ebbe2a7b..00000000 --- a/docs/classtc_1_1_exception__inherit__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/docs/classtc_1_1_exception__inherit__graph.md5 b/docs/classtc_1_1_exception__inherit__graph.md5 deleted file mode 100644 index bc004336..00000000 --- a/docs/classtc_1_1_exception__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -252d12f16d760aeba0ce9d548540e4a5 \ No newline at end of file diff --git a/docs/classtc_1_1_exception__inherit__graph.png b/docs/classtc_1_1_exception__inherit__graph.png deleted file mode 100644 index 437e6de0b5bdfcf7a719e21ed9b7d644918180b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5872 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 diff --git a/docs/classtc_1_1_optional-members.html b/docs/classtc_1_1_optional-members.html deleted file mode 100644 index 19ee9dff..00000000 --- a/docs/classtc_1_1_optional-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::Optional< T > Member List
-
-
- -

This is the complete list of members for tc::Optional< T >, including all inherited members.

- - - - - - - - - -
get() consttc::Optional< T >inline
isNull() consttc::Optional< T >inline
makeNull()tc::Optional< T >inline
operator=(const T &value)tc::Optional< T >inline
operator=(const Optional< T > &other)tc::Optional< T >inline
Optional()tc::Optional< T >inline
Optional(const T &value)tc::Optional< T >inline
Optional(const Optional< T > &other)tc::Optional< T >inline
-
- - - - diff --git a/docs/classtc_1_1_optional.html b/docs/classtc_1_1_optional.html deleted file mode 100644 index 2320f314..00000000 --- a/docs/classtc_1_1_optional.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -libtoolchain: tc::Optional< T > Class Template Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::Optional< T > Class Template Reference
-
-
- -

A wrapper class, where the existence of the wrapped value is optional. - More...

- -

#include <tc/Optional.h>

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

-Public Member Functions

 Optional ()
 Default constructor. More...
 
 Optional (const T &value)
 Initialising constructor with value to wrap. More...
 
 Optional (const Optional< T > &other)
 Copy constructor. More...
 
-void operator= (const T &value)
 Operator to wrap a value.
 
-void operator= (const Optional< T > &other)
 Operator to duplicate another Optional.
 
T & get () const
 Access the wrapped value. More...
 
bool isNull () const
 Determine if the Optional value exists. More...
 
void makeNull ()
 Release the wrapped value. More...
 
-

Detailed Description

-

template<class T>
-class tc::Optional< T >

- -

A wrapper class, where the existence of the wrapped value is optional.

- -

Definition at line 19 of file Optional.h.

-

Constructor & Destructor Documentation

- -

◆ Optional() [1/3]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
tc::Optional< T >::Optional ()
-
-inline
-
- -

Default constructor.

-

This Optional shall be null initially.

- -

Definition at line 69 of file Optional.h.

- -
-
- -

◆ Optional() [2/3]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
tc::Optional< T >::Optional (const T & value)
-
-inline
-
- -

Initialising constructor with value to wrap.

-
Parameters
- - -
valueconst T& Reference to value to wrap
-
-
-

This Optional shall be not null initially.

- -

Definition at line 75 of file Optional.h.

- -
-
- -

◆ Optional() [3/3]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - - -
tc::Optional< T >::Optional (const Optional< T > & other)
-
-inline
-
- -

Copy constructor.

-
Parameters
- - -
otherconst Optional<T>& Reference to Optional object to copy
-
-
-

This Optional shall be not null initially.

- -

Definition at line 82 of file Optional.h.

- -
-
-

Member Function Documentation

- -

◆ get()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T & tc::Optional< T >::get () const
-
-inline
-
- -

Access the wrapped value.

-
Returns
T& reference to value
- -

Definition at line 117 of file Optional.h.

-
-Here is the caller graph for this function:
-
-
- - - -
- -
-
- -

◆ isNull()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
bool tc::Optional< T >::isNull () const
-
-inline
-
- -

Determine if the Optional value exists.

-
Returns
bool true if the value exists
- -

Definition at line 123 of file Optional.h.

-
-Here is the caller graph for this function:
-
-
- - - -
- -
-
- -

◆ makeNull()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void tc::Optional< T >::makeNull ()
-
-inline
-
- -

Release the wrapped value.

-

This will destroy the wrapped value and make this Optional null. If this Optional is already null, this does nothing.

- -

Definition at line 129 of file Optional.h.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1_optional.js b/docs/classtc_1_1_optional.js deleted file mode 100644 index 38ff77cc..00000000 --- a/docs/classtc_1_1_optional.js +++ /dev/null @@ -1,11 +0,0 @@ -var classtc_1_1_optional = -[ - [ "Optional", "classtc_1_1_optional.html#a972ac8b4e9b1ba5980b4bc6adc617651", null ], - [ "Optional", "classtc_1_1_optional.html#a90dc290ecb96955d604eb80ae749c65a", null ], - [ "Optional", "classtc_1_1_optional.html#a03e196684441dcbef77473e00c2ee82f", null ], - [ "get", "classtc_1_1_optional.html#a9f53a65980dc3b328b9a8bbd326bf8f5", null ], - [ "isNull", "classtc_1_1_optional.html#a1cf0ad6726a4de55d92fceab13ede701", null ], - [ "makeNull", "classtc_1_1_optional.html#a49f535f906c475a39ec55c5c2f707f2c", null ], - [ "operator=", "classtc_1_1_optional.html#a1531f1b98d26aaf02315df792fb85f0c", null ], - [ "operator=", "classtc_1_1_optional.html#a1a44b0f0c2d2349125637ce6965a5a7c", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.map b/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.map deleted file mode 100644 index facb9b1f..00000000 --- a/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.md5 b/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.md5 deleted file mode 100644 index 33f62b2c..00000000 --- a/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -e53738d1461a3e71b34f08791974de0d \ No newline at end of file diff --git a/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.png b/docs/classtc_1_1_optional_a1cf0ad6726a4de55d92fceab13ede701_icgraph.png deleted file mode 100644 index 2fcdf2efdb050e8c8031455ba66783adf4055d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3492 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 - - diff --git a/docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.md5 b/docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.md5 deleted file mode 100644 index b2d3a927..00000000 --- a/docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -bb4f82317d145538d272a9c9da32ab71 \ No newline at end of file diff --git a/docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.png b/docs/classtc_1_1_optional_a49f535f906c475a39ec55c5c2f707f2c_icgraph.png deleted file mode 100644 index 926c4d1cf3a181227d76ab50bb9bd65434f0f5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3947 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 - - diff --git a/docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.md5 b/docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.md5 deleted file mode 100644 index ba6f5347..00000000 --- a/docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -29dbf799271edbcbd58052331813d480 \ No newline at end of file diff --git a/docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.png b/docs/classtc_1_1_optional_a9f53a65980dc3b328b9a8bbd326bf8f5_icgraph.png deleted file mode 100644 index eab0dc06d5541a2441294e5090e30b242e22a727..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3480 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 diff --git a/docs/classtc_1_1_shared_ptr-members.html b/docs/classtc_1_1_shared_ptr-members.html deleted file mode 100644 index 48d30780..00000000 --- a/docs/classtc_1_1_shared_ptr-members.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::SharedPtr< T > Member List
-
-
- -

This is the complete list of members for tc::SharedPtr< T >, including all inherited members.

- - - - - - - - - - - - - - -
get() consttc::SharedPtr< T >inline
isNull() consttc::SharedPtr< T >inline
operator*() consttc::SharedPtr< T >inline
operator->() consttc::SharedPtr< T >inline
operator=(T *ptr)tc::SharedPtr< T >inline
operator=(const SharedPtr< T > &other)tc::SharedPtr< T >inline
operator=(SharedPtr< T > &&other)tc::SharedPtr< T >inline
release()tc::SharedPtr< T >inline
SharedPtr()tc::SharedPtr< T >inline
SharedPtr(T *ptr)tc::SharedPtr< T >inline
SharedPtr(const SharedPtr< T > &other)tc::SharedPtr< T >inline
SharedPtr(SharedPtr< T > &&other)tc::SharedPtr< T >inline
~SharedPtr()tc::SharedPtr< T >inline
-
- - - - diff --git a/docs/classtc_1_1_shared_ptr.html b/docs/classtc_1_1_shared_ptr.html deleted file mode 100644 index 49acc8e9..00000000 --- a/docs/classtc_1_1_shared_ptr.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - -libtoolchain: tc::SharedPtr< T > Class Template Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::SharedPtr< T > Class Template Reference
-
-
- -

A smart pointer which auto-deletes the embedded ptr when all references are gone. - More...

- -

#include <tc/SharedPtr.h>

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

-Public Member Functions

 SharedPtr ()
 Default constructor. More...
 
 SharedPtr (T *ptr)
 Parameterized Constructor. More...
 
SharedPtr (const SharedPtr< T > &other)
 Copy constructor.
 
SharedPtr (SharedPtr< T > &&other)
 Move constructor.
 
~SharedPtr ()
 Destructor.
 
-void operator= (T *ptr)
 Claim ownership of raw pointer.
 
-SharedPtr< T > & operator= (const SharedPtr< T > &other)
 Copy operator.
 
-SharedPtr< T > & operator= (SharedPtr< T > &&other)
 Move operator.
 
T & operator* () const
 Dereference the managed pointer. More...
 
T * operator-> () const
 Access members of the managed pointer. More...
 
T * get () const
 Access the managed pointer. More...
 
bool isNull () const
 Determine if the managed pointer is null. More...
 
void release ()
 Release the managed pointer. More...
 
-

Detailed Description

-

template<class T>
-class tc::SharedPtr< T >

- -

A smart pointer which auto-deletes the embedded ptr when all references are gone.

-

This smart pointer counts all the copies of itself that exist, and when all copies are destroyed, then the ptr is deleted.

- -

Definition at line 20 of file SharedPtr.h.

-

Constructor & Destructor Documentation

- -

◆ SharedPtr() [1/2]

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
tc::SharedPtr< T >::SharedPtr ()
-
-inline
-
- -

Default constructor.

-
Postcondition
    -
  • The managed pointer shall be null
  • -
-
- -

Definition at line 102 of file SharedPtr.h.

- -
-
- -

◆ SharedPtr() [2/2]

- -
-
-
-template<class T>
- - - - - -
- - - - - - - - -
tc::SharedPtr< T >::SharedPtr (T * ptr)
-
-inline
-
- -

Parameterized Constructor.

-
Returns
T& Derefenced pointer
-
Note
This has undefined behavour when the managed pointer is null.
- -

Definition at line 109 of file SharedPtr.h.

- -
-
-

Member Function Documentation

- -

◆ get()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T * tc::SharedPtr< T >::get () const
-
-inline
-
- -

Access the managed pointer.

-
Returns
T* raw pointer
- -

Definition at line 203 of file SharedPtr.h.

- -
-
- -

◆ isNull()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
bool tc::SharedPtr< T >::isNull () const
-
-inline
-
- -

Determine if the managed pointer is null.

-
Returns
bool true if the managed ptr is nullptr
- -

Definition at line 209 of file SharedPtr.h.

- -
-
- -

◆ operator*()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T & tc::SharedPtr< T >::operator* () const
-
-inline
-
- -

Dereference the managed pointer.

-
Returns
T& Derefenced pointer
-
Note
This has undefined behavour when the managed pointer is null.
- -

Definition at line 191 of file SharedPtr.h.

- -
-
- -

◆ operator->()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
T * tc::SharedPtr< T >::operator-> () const
-
-inline
-
- -

Access members of the managed pointer.

-
Returns
T* raw pointer
-
Note
This has undefined behavour when the managed pointer is null.
- -

Definition at line 197 of file SharedPtr.h.

- -
-
- -

◆ release()

- -
-
-
-template<class T >
- - - - - -
- - - - - - - -
void tc::SharedPtr< T >::release ()
-
-inline
-
- -

Release the managed pointer.

-

Only if this is the last instance of SharedPtr managing this pointer, will the pointer be deleted.

-
Postcondition
    -
  • After calling this method, the managed pointer shall become null.
  • -
-
- -

Definition at line 215 of file SharedPtr.h.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1_shared_ptr.js b/docs/classtc_1_1_shared_ptr.js deleted file mode 100644 index 06f8df3b..00000000 --- a/docs/classtc_1_1_shared_ptr.js +++ /dev/null @@ -1,16 +0,0 @@ -var classtc_1_1_shared_ptr = -[ - [ "SharedPtr", "classtc_1_1_shared_ptr.html#a094dc5cf94a08a7cfd99411eafe41275", null ], - [ "SharedPtr", "classtc_1_1_shared_ptr.html#a051fd7ddb7cb95c17e80a38af2a2de64", null ], - [ "SharedPtr", "classtc_1_1_shared_ptr.html#af4b295d45958d0c9c4d6d1bb16f0d4c3", null ], - [ "SharedPtr", "classtc_1_1_shared_ptr.html#a01059315d5fbff8faaa1186b3dd85b01", null ], - [ "~SharedPtr", "classtc_1_1_shared_ptr.html#a21f49a9897a7a039f42204f581f5c3fb", null ], - [ "get", "classtc_1_1_shared_ptr.html#a909d9934f21d124273279a04e11fd15c", null ], - [ "isNull", "classtc_1_1_shared_ptr.html#a0062441314d4ad3605772767fa464662", null ], - [ "operator*", "classtc_1_1_shared_ptr.html#a30683994eee814e7451b784a9108fcfa", null ], - [ "operator->", "classtc_1_1_shared_ptr.html#abe2cb4ff330a6084555af0bb8d8b649e", null ], - [ "operator=", "classtc_1_1_shared_ptr.html#a1158286b59ae2ed40a855a2d0c38f561", null ], - [ "operator=", "classtc_1_1_shared_ptr.html#a69832076d772f6dded50ad830bfe1a2d", null ], - [ "operator=", "classtc_1_1_shared_ptr.html#aba56780a6a66931359ed49f5205c26f5", null ], - [ "release", "classtc_1_1_shared_ptr.html#a02c4189243ba0fe844f986b30edda6ca", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_directory_info-members.html b/docs/classtc_1_1fs_1_1_directory_info-members.html deleted file mode 100644 index d6454438..00000000 --- a/docs/classtc_1_1fs_1_1_directory_info-members.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::DirectoryInfo Member List
-
-
- -

This is the complete list of members for tc::fs::DirectoryInfo, including all inherited members.

- - - - - - - - - - - - - -
DirectoryInfo()tc::fs::DirectoryInfo
DirectoryInfo(const tc::fs::Path &path, const std::vector< std::string > &dir_list, const std::vector< std::string > &file_list)tc::fs::DirectoryInfo
DirectoryInfo(const DirectoryInfo &other)tc::fs::DirectoryInfo
DirectoryInfo(DirectoryInfo &&other)tc::fs::DirectoryInfo
getDirectoryList() consttc::fs::DirectoryInfo
getFileList() consttc::fs::DirectoryInfo
getPath() consttc::fs::DirectoryInfo
operator=(const DirectoryInfo &other)tc::fs::DirectoryInfo
operator=(DirectoryInfo &&other)tc::fs::DirectoryInfo
setDirectoryList(const std::vector< std::string > &list)tc::fs::DirectoryInfo
setFileList(const std::vector< std::string > &list)tc::fs::DirectoryInfo
setPath(const tc::fs::Path &path)tc::fs::DirectoryInfo
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_directory_info.html b/docs/classtc_1_1fs_1_1_directory_info.html deleted file mode 100644 index 0b4c7824..00000000 --- a/docs/classtc_1_1fs_1_1_directory_info.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::DirectoryInfo Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::DirectoryInfo Class Reference
-
-
- -

Provides basic info about a directory with-in a FileSystem. - More...

- -

#include <tc/fs/DirectoryInfo.h>

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

-Public Member Functions

DirectoryInfo ()
 Default Constructor.
 
DirectoryInfo (const tc::fs::Path &path, const std::vector< std::string > &dir_list, const std::vector< std::string > &file_list)
 Parametrized Constructor.
 
DirectoryInfo (const DirectoryInfo &other)
 Copy Constructor.
 
DirectoryInfo (DirectoryInfo &&other)
 Move Constructor.
 
-DirectoryInfooperator= (const DirectoryInfo &other)
 Copy Operator.
 
-DirectoryInfooperator= (DirectoryInfo &&other)
 Move Operator.
 
const tc::fs::PathgetPath () const
 Get the native path of the directory. More...
 
void setPath (const tc::fs::Path &path)
 Set the native path of the directory. More...
 
const std::vector< std::string > & getDirectoryList () const
 Get the list of directories. More...
 
void setDirectoryList (const std::vector< std::string > &list)
 Set the list of child directories. More...
 
const std::vector< std::string > & getFileList () const
 Get the list of files. More...
 
void setFileList (const std::vector< std::string > &list)
 Set the list of files. More...
 
-

Detailed Description

-

Provides basic info about a directory with-in a FileSystem.

-

The includes the absolute path of the directory, and lists of child directory and file names.

-
Note
All strings are UTF-8
- -

Definition at line 23 of file DirectoryInfo.h.

-

Member Function Documentation

- -

◆ getDirectoryList()

- -
-
- - - - - - - -
const std::vector<std::string>& tc::fs::DirectoryInfo::getDirectoryList () const
-
- -

Get the list of directories.

-
Returns
List of directories
- -
-
- -

◆ getFileList()

- -
-
- - - - - - - -
const std::vector<std::string>& tc::fs::DirectoryInfo::getFileList () const
-
- -

Get the list of files.

-
Returns
List of files
- -
-
- -

◆ getPath()

- -
-
- - - - - - - -
const tc::fs::Path& tc::fs::DirectoryInfo::getPath () const
-
- -

Get the native path of the directory.

-
Returns
Path to directory
- -
-
- -

◆ setDirectoryList()

- -
-
- - - - - - - - -
void tc::fs::DirectoryInfo::setDirectoryList (const std::vector< std::string > & list)
-
- -

Set the list of child directories.

-
Parameters
- - -
listList of child directories
-
-
- -
-
- -

◆ setFileList()

- -
-
- - - - - - - - -
void tc::fs::DirectoryInfo::setFileList (const std::vector< std::string > & list)
-
- -

Set the list of files.

-
Parameters
- - -
listList of files
-
-
- -
-
- -

◆ setPath()

- -
-
- - - - - - - - -
void tc::fs::DirectoryInfo::setPath (const tc::fs::Pathpath)
-
- -

Set the native path of the directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_directory_info.js b/docs/classtc_1_1fs_1_1_directory_info.js deleted file mode 100644 index f8ed41b7..00000000 --- a/docs/classtc_1_1fs_1_1_directory_info.js +++ /dev/null @@ -1,15 +0,0 @@ -var classtc_1_1fs_1_1_directory_info = -[ - [ "DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html#af6bbc021f4bf276deef62d92fcbced42", null ], - [ "DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html#ae8a687020501b9ba8e85a9d198f11ddb", null ], - [ "DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html#a6bad410e0ef8959bfc39703d1fbbf600", null ], - [ "DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html#abf29942970d90c52ab10d4824eac9309", null ], - [ "getDirectoryList", "classtc_1_1fs_1_1_directory_info.html#accc428b913c4ba1c0a5b76a93aace95d", null ], - [ "getFileList", "classtc_1_1fs_1_1_directory_info.html#a4f7df65368b96c8299ff697b567c3722", null ], - [ "getPath", "classtc_1_1fs_1_1_directory_info.html#a6f4cc36812817e57e2892204cbfa4b55", null ], - [ "operator=", "classtc_1_1fs_1_1_directory_info.html#a4a7830fd210f864cefd7222e27061dd7", null ], - [ "operator=", "classtc_1_1fs_1_1_directory_info.html#a77cfcfdf9b5990c1908747939fbd54f2", null ], - [ "setDirectoryList", "classtc_1_1fs_1_1_directory_info.html#a750bd051532906e1bceed767117554bb", null ], - [ "setFileList", "classtc_1_1fs_1_1_directory_info.html#a1ceb5834cfb727a5b15f2e335003ff58", null ], - [ "setPath", "classtc_1_1fs_1_1_directory_info.html#a68c7e63963af80c41c5cd027d9fa30c5", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_i_file-members.html b/docs/classtc_1_1fs_1_1_i_file-members.html deleted file mode 100644 index f9fae78c..00000000 --- a/docs/classtc_1_1fs_1_1_i_file-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::IFile Member List
-
-
- -

This is the complete list of members for tc::fs::IFile, including all inherited members.

- - - - - - - -
pos()=0tc::fs::IFilepure virtual
read(byte_t *data, size_t len)=0tc::fs::IFilepure virtual
seek(uint64_t offset)=0tc::fs::IFilepure virtual
size()=0tc::fs::IFilepure virtual
write(const byte_t *data, size_t len)=0tc::fs::IFilepure virtual
~IFile()=defaulttc::fs::IFilevirtual
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_i_file.html b/docs/classtc_1_1fs_1_1_i_file.html deleted file mode 100644 index 88567937..00000000 --- a/docs/classtc_1_1fs_1_1_i_file.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::IFile Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::IFile Class Referenceabstract
-
-
- -

An interface for implementing a basic File handler. - More...

- -

#include <tc/fs/IFile.h>

-
-Inheritance diagram for tc::fs::IFile:
-
-
Inheritance graph
- - - -
- - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-virtual ~IFile ()=default
 Destructor.
 
virtual uint64_t size ()=0
 Get size of the file. More...
 
virtual void seek (uint64_t offset)=0
 Set the file position. More...
 
virtual uint64_t pos ()=0
 Get the file position. More...
 
virtual void read (byte_t *data, size_t len)=0
 Read data from the file. More...
 
virtual void write (const byte_t *data, size_t len)=0
 Write data to the file. More...
 
-

Detailed Description

-

An interface for implementing a basic File handler.

-

Defines expcted functionality required to process/access a file.

-

The usage of size_t in read()/write() reflects the intention that size_t can represent sizes relevant to the run-time of a program. Whereas the usage of uint64_t in size()/seek()/pos() reflects the realty that files exist independent of the operating system which the programs run under. To that end it is important to accept this and preserve the true sizes of the files, while also working with-in the limitations of the operating system by using size_t where memory is processed.

- -

Definition at line 26 of file IFile.h.

-

Member Function Documentation

- -

◆ pos()

- -
-
- - - - - -
- - - - - - - -
virtual uint64_t tc::fs::IFile::pos ()
-
-pure virtual
-
- -

Get the file position.

-
Returns
file position
- -

Implemented in tc::fs::SandboxedIFile.

- -
-
- -

◆ read()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual void tc::fs::IFile::read (byte_tdata,
size_t len 
)
-
-pure virtual
-
- -

Read data from the file.

-
Parameters
- - - -
[out]dataPointer to memory where data will be written to
[in]lenLength of data to read
-
-
-
Exceptions
- - -
tc::ExceptionIf read length exceeds file capacity
-
-
- -

Implemented in tc::fs::SandboxedIFile.

- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - -
virtual void tc::fs::IFile::seek (uint64_t offset)
-
-pure virtual
-
- -

Set the file position.

-
Parameters
- - -
[in]offsetfile position
-
-
-
Postcondition
If the offset is beyond the file size, the position will be at the end of file.
- -

Implemented in tc::fs::SandboxedIFile.

- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
virtual uint64_t tc::fs::IFile::size ()
-
-pure virtual
-
- -

Get size of the file.

-
Returns
file size
- -

Implemented in tc::fs::SandboxedIFile.

- -
-
- -

◆ write()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual void tc::fs::IFile::write (const byte_tdata,
size_t len 
)
-
-pure virtual
-
- -

Write data to the file.

-
Parameters
- - - -
[in]dataPointer to memory where data will be sourced from
[in]lenLength of data to write
-
-
- -

Implemented in tc::fs::SandboxedIFile.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_i_file.js b/docs/classtc_1_1fs_1_1_i_file.js deleted file mode 100644 index ce6e9351..00000000 --- a/docs/classtc_1_1fs_1_1_i_file.js +++ /dev/null @@ -1,9 +0,0 @@ -var classtc_1_1fs_1_1_i_file = -[ - [ "~IFile", "classtc_1_1fs_1_1_i_file.html#a7dbf28208c6da2cc60fddd8031068893", null ], - [ "pos", "classtc_1_1fs_1_1_i_file.html#a619c7ca5151a034b86425f7bda7d979a", null ], - [ "read", "classtc_1_1fs_1_1_i_file.html#a1b810986d94d937e14a4d821d8e98031", null ], - [ "seek", "classtc_1_1fs_1_1_i_file.html#afa6787f7404bf874be99f304e1c793e7", null ], - [ "size", "classtc_1_1fs_1_1_i_file.html#aa108aecb5219d5ea0bdf554d942259ef", null ], - [ "write", "classtc_1_1fs_1_1_i_file.html#a00ee588bac3fe64122b3fe22a1bd7d07", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_i_file__inherit__graph.map b/docs/classtc_1_1fs_1_1_i_file__inherit__graph.map deleted file mode 100644 index bcc8e2ff..00000000 --- a/docs/classtc_1_1fs_1_1_i_file__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/classtc_1_1fs_1_1_i_file__inherit__graph.md5 b/docs/classtc_1_1fs_1_1_i_file__inherit__graph.md5 deleted file mode 100644 index 8e21141a..00000000 --- a/docs/classtc_1_1fs_1_1_i_file__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -31e2c9648f6e2f17d0afb135e7a8c6c8 \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_i_file__inherit__graph.png b/docs/classtc_1_1fs_1_1_i_file__inherit__graph.png deleted file mode 100644 index 38203cc8eeb995d2a95e51024062f0a5a3234724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8617 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 diff --git a/docs/classtc_1_1fs_1_1_i_file_system-members.html b/docs/classtc_1_1fs_1_1_i_file_system-members.html deleted file mode 100644 index 42adfd7d..00000000 --- a/docs/classtc_1_1fs_1_1_i_file_system-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -

-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::IFileSystem Member List
-
-
- -

This is the complete list of members for tc::fs::IFileSystem, including all inherited members.

- - - - - - - - - -
createDirectory(const tc::fs::Path &path)=0tc::fs::IFileSystempure virtual
deleteDirectory(const tc::fs::Path &path)=0tc::fs::IFileSystempure virtual
deleteFile(const tc::fs::Path &path)=0tc::fs::IFileSystempure virtual
getCurrentDirectory(tc::fs::Path &path)=0tc::fs::IFileSystempure virtual
getDirectoryListing(const tc::fs::Path &path, tc::fs::DirectoryInfo &info)=0tc::fs::IFileSystempure virtual
openFile(const tc::fs::Path &path, tc::fs::FileAccessMode mode)=0tc::fs::IFileSystempure virtual
setCurrentDirectory(const tc::fs::Path &path)=0tc::fs::IFileSystempure virtual
~IFileSystem()=default (defined in tc::fs::IFileSystem)tc::fs::IFileSystemvirtual
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_i_file_system.html b/docs/classtc_1_1fs_1_1_i_file_system.html deleted file mode 100644 index eccc653e..00000000 --- a/docs/classtc_1_1fs_1_1_i_file_system.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::IFileSystem Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::IFileSystem Class Referenceabstract
-
-
- -

An interface for implementing a basic FileSystem handler. - More...

- -

#include <tc/fs/IFileSystem.h>

-
-Inheritance diagram for tc::fs::IFileSystem:
-
-
Inheritance graph
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

virtual tc::fs::IFileopenFile (const tc::fs::Path &path, tc::fs::FileAccessMode mode)=0
 Open a file. More...
 
virtual void deleteFile (const tc::fs::Path &path)=0
 Delete a file. More...
 
virtual void getCurrentDirectory (tc::fs::Path &path)=0
 Get the full path of the current directory. More...
 
virtual void setCurrentDirectory (const tc::fs::Path &path)=0
 Change the current directory. More...
 
virtual void createDirectory (const tc::fs::Path &path)=0
 Create a new directory. More...
 
virtual void deleteDirectory (const tc::fs::Path &path)=0
 Delete a directory. More...
 
virtual void getDirectoryListing (const tc::fs::Path &path, tc::fs::DirectoryInfo &info)=0
 Get directory listing a directory. More...
 
-

Detailed Description

-

An interface for implementing a basic FileSystem handler.

-

Defines expected functionality including:

    -
  • File access (open,delete)
  • -
  • Directory traversal (get current directory, change current directory)
  • -
  • Directory management (create,remove)
  • -
  • Directory listing
  • -
-
Note
IFileSystem uses the tc::fs::Path class to represent a path, not as a literal string.
-
-It is up to the implementation of IFileSystem to validate and process tc::fs::Path objects.
-
-It is up to the implementation to enforce tc::fs::FileAccessMode.
- -

Definition at line 40 of file IFileSystem.h.

-

Member Function Documentation

- -

◆ createDirectory()

- -
-
- - - - - -
- - - - - - - - -
virtual void tc::fs::IFileSystem::createDirectory (const tc::fs::Pathpath)
-
-pure virtual
-
- -

Create a new directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
-
Postcondition
If the directory already exists, this does nothing
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be created (invalid path, or access rights)
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
- -

◆ deleteDirectory()

- -
-
- - - - - -
- - - - - - - - -
virtual void tc::fs::IFileSystem::deleteDirectory (const tc::fs::Pathpath)
-
-pure virtual
-
- -

Delete a directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be deleted (invalid path, or access rights)
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
- -

◆ deleteFile()

- -
-
- - - - - -
- - - - - - - - -
virtual void tc::fs::IFileSystem::deleteFile (const tc::fs::Pathpath)
-
-pure virtual
-
- -

Delete a file.

-
Parameters
- - -
[in]pathPath to file
-
-
-
Exceptions
- - -
tc::ExceptionIf the file cannot be removed (invalid path, or access rights)
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
- -

◆ getCurrentDirectory()

- -
-
- - - - - -
- - - - - - - - -
virtual void tc::fs::IFileSystem::getCurrentDirectory (tc::fs::Pathpath)
-
-pure virtual
-
- -

Get the full path of the current directory.

-
Parameters
- - -
[out]pathPath object to populate
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
- -

◆ getDirectoryListing()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual void tc::fs::IFileSystem::getDirectoryListing (const tc::fs::Pathpath,
tc::fs::DirectoryInfoinfo 
)
-
-pure virtual
-
- -

Get directory listing a directory.

-
Parameters
- - - -
[in]pathPath to directory
[out]infoDirectoryInfo object to populate
-
-
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be accessed (invalid path, or access rights)
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
- -

◆ openFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual tc::fs::IFile* tc::fs::IFileSystem::openFile (const tc::fs::Pathpath,
tc::fs::FileAccessMode mode 
)
-
-pure virtual
-
- -

Open a file.

-
Parameters
- - - -
[in]pathPath to file
[in]modeAccess mode
-
-
-
Returns
Pointer to IFile object
-
Exceptions
- - -
tc::ExceptionIf the file cannot be accessed (invalid path, or access rights)
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
- -

◆ setCurrentDirectory()

- -
-
- - - - - -
- - - - - - - - -
virtual void tc::fs::IFileSystem::setCurrentDirectory (const tc::fs::Pathpath)
-
-pure virtual
-
- -

Change the current directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
- -

Implemented in tc::fs::LocalFileSystem, and tc::fs::SandboxedIFileSystem.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_i_file_system.js b/docs/classtc_1_1fs_1_1_i_file_system.js deleted file mode 100644 index 9740d428..00000000 --- a/docs/classtc_1_1fs_1_1_i_file_system.js +++ /dev/null @@ -1,11 +0,0 @@ -var classtc_1_1fs_1_1_i_file_system = -[ - [ "~IFileSystem", "classtc_1_1fs_1_1_i_file_system.html#a2df82e7a1f8b7d993b8d4732ce1164b8", null ], - [ "createDirectory", "classtc_1_1fs_1_1_i_file_system.html#a7b90f72f206159efd414bb07012fc331", null ], - [ "deleteDirectory", "classtc_1_1fs_1_1_i_file_system.html#a5b11adf91bfeaebe1cf6567f5acc5b3f", null ], - [ "deleteFile", "classtc_1_1fs_1_1_i_file_system.html#a490578f57f7207b1ad735adf96765e54", null ], - [ "getCurrentDirectory", "classtc_1_1fs_1_1_i_file_system.html#acc0faea5ebbe95699fa981793ae310f8", null ], - [ "getDirectoryListing", "classtc_1_1fs_1_1_i_file_system.html#aab8e5155524ad8ec1b6c9ed48ab024e7", null ], - [ "openFile", "classtc_1_1fs_1_1_i_file_system.html#af103f58e1b856bac5011a83d839ef7b9", null ], - [ "setCurrentDirectory", "classtc_1_1fs_1_1_i_file_system.html#a77d972053206c137eb113c3e8aa6f5c5", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.map b/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.map deleted file mode 100644 index 204bd950..00000000 --- a/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.md5 b/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.md5 deleted file mode 100644 index aabae487..00000000 --- a/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b65ebf2b1b263b5744bd0bcdead39890 \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.png b/docs/classtc_1_1fs_1_1_i_file_system__inherit__graph.png deleted file mode 100644 index 1a31eae82be5c18606f57881e5de26f2cfdee481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21763 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 - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::LocalFileSystem Member List
-
-
- -

This is the complete list of members for tc::fs::LocalFileSystem, including all inherited members.

- - - - - - - - - - -
createDirectory(const tc::fs::Path &path)tc::fs::LocalFileSystemvirtual
deleteDirectory(const tc::fs::Path &path)tc::fs::LocalFileSystemvirtual
deleteFile(const tc::fs::Path &path)tc::fs::LocalFileSystemvirtual
getCurrentDirectory(tc::fs::Path &path)tc::fs::LocalFileSystemvirtual
getDirectoryListing(const tc::fs::Path &path, tc::fs::DirectoryInfo &info)tc::fs::LocalFileSystemvirtual
LocalFileSystem()tc::fs::LocalFileSystem
openFile(const tc::fs::Path &path, tc::fs::FileAccessMode mode)tc::fs::LocalFileSystemvirtual
setCurrentDirectory(const tc::fs::Path &path)tc::fs::LocalFileSystemvirtual
~IFileSystem()=default (defined in tc::fs::IFileSystem)tc::fs::IFileSystemvirtual
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_local_file_system.html b/docs/classtc_1_1fs_1_1_local_file_system.html deleted file mode 100644 index 7150bb1c..00000000 --- a/docs/classtc_1_1fs_1_1_local_file_system.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::LocalFileSystem Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::LocalFileSystem Class Reference
-
-
- -

An IFileSystem wrapper around the existing OS FileSystem API. - More...

- -

#include <tc/fs/LocalFileSystem.h>

-
-Inheritance diagram for tc::fs::LocalFileSystem:
-
-
Inheritance graph
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

LocalFileSystem ()
 Default Constructor.
 
tc::fs::IFileopenFile (const tc::fs::Path &path, tc::fs::FileAccessMode mode)
 Open a file. More...
 
void deleteFile (const tc::fs::Path &path)
 Delete a file. More...
 
void getCurrentDirectory (tc::fs::Path &path)
 Get the full path of the current directory. More...
 
void setCurrentDirectory (const tc::fs::Path &path)
 Change the current directory. More...
 
void createDirectory (const tc::fs::Path &path)
 Create a new directory. More...
 
void deleteDirectory (const tc::fs::Path &path)
 Delete a directory. More...
 
void getDirectoryListing (const tc::fs::Path &path, tc::fs::DirectoryInfo &info)
 Get directory listing a directory. More...
 
-

Detailed Description

-

An IFileSystem wrapper around the existing OS FileSystem API.

- -

Definition at line 21 of file LocalFileSystem.h.

-

Member Function Documentation

- -

◆ createDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::LocalFileSystem::createDirectory (const tc::fs::Pathpath)
-
-virtual
-
- -

Create a new directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
-
Postcondition
If the directory already exists, this does nothing
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be created (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ deleteDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::LocalFileSystem::deleteDirectory (const tc::fs::Pathpath)
-
-virtual
-
- -

Delete a directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be deleted (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ deleteFile()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::LocalFileSystem::deleteFile (const tc::fs::Pathpath)
-
-virtual
-
- -

Delete a file.

-
Parameters
- - -
[in]pathPath to file
-
-
-
Exceptions
- - -
tc::ExceptionIf the file cannot be removed (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ getCurrentDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::LocalFileSystem::getCurrentDirectory (tc::fs::Pathpath)
-
-virtual
-
- -

Get the full path of the current directory.

-
Parameters
- - -
[out]pathPath object to populate
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ getDirectoryListing()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void tc::fs::LocalFileSystem::getDirectoryListing (const tc::fs::Pathpath,
tc::fs::DirectoryInfoinfo 
)
-
-virtual
-
- -

Get directory listing a directory.

-
Parameters
- - - -
[in]pathPath to directory
[out]infoDirectoryInfo object to populate
-
-
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be accessed (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ openFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
tc::fs::IFile* tc::fs::LocalFileSystem::openFile (const tc::fs::Pathpath,
tc::fs::FileAccessMode mode 
)
-
-virtual
-
- -

Open a file.

-
Parameters
- - - -
[in]pathPath to file
[in]modeAccess mode
-
-
-
Returns
Pointer to IFile object
-
Exceptions
- - -
tc::ExceptionIf the file cannot be accessed (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ setCurrentDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::LocalFileSystem::setCurrentDirectory (const tc::fs::Pathpath)
-
-virtual
-
- -

Change the current directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_local_file_system.js b/docs/classtc_1_1fs_1_1_local_file_system.js deleted file mode 100644 index f44348c3..00000000 --- a/docs/classtc_1_1fs_1_1_local_file_system.js +++ /dev/null @@ -1,11 +0,0 @@ -var classtc_1_1fs_1_1_local_file_system = -[ - [ "LocalFileSystem", "classtc_1_1fs_1_1_local_file_system.html#a7e3630dcdcbee9bbc4cd7cbf7a0e51a7", null ], - [ "createDirectory", "classtc_1_1fs_1_1_local_file_system.html#acc801f5562add52ef4648953dcec21ec", null ], - [ "deleteDirectory", "classtc_1_1fs_1_1_local_file_system.html#a6d67ef4752d7dceff8775829ce8e11c3", null ], - [ "deleteFile", "classtc_1_1fs_1_1_local_file_system.html#a890603ab0fc1514a07bbf006dc17f448", null ], - [ "getCurrentDirectory", "classtc_1_1fs_1_1_local_file_system.html#ae7258cc842dc1e18a9fc721e02529362", null ], - [ "getDirectoryListing", "classtc_1_1fs_1_1_local_file_system.html#a93d59f19036e435e001c97a3dd2851da", null ], - [ "openFile", "classtc_1_1fs_1_1_local_file_system.html#ad891140c2d12503d380cf8e56c939b63", null ], - [ "setCurrentDirectory", "classtc_1_1fs_1_1_local_file_system.html#a3eea45dc63381a88bfe9c3b4d4044287", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.map b/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.map deleted file mode 100644 index b4ce1f63..00000000 --- a/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.md5 b/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.md5 deleted file mode 100644 index 40514e88..00000000 --- a/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1fe98bc27d3e1e8e84a760a01457376e \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.png b/docs/classtc_1_1fs_1_1_local_file_system__inherit__graph.png deleted file mode 100644 index 39092bc08d4a086a7b34f7c1926f717b1957f0a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15624 zcmcJ$1yogQ`!BjckdQ9vl1>Tf7F4=JP`VqHRFp6xQUNTjf+B|@Re^V>cG!p6bda5 z`y%|-aAw*8KQ3CT-c&^WLH^BdE=ok97*WcK@_Ifmw=#T<^lbk8`N|WNjs27;o8##V z8hhKfzdG}YF4L3a<;cxkP#@)Cy`(c#v3Ko_!c}dw3rZf>g$E8_v2hkZXL=!x8I;2l z$b;Kn+5h{j!)~ynjmIv`VvwrAY~tEP*Owpr;@=-hZS_SB4sr#6s4#uZ48~{I1`#S2XCsRcloHp0sZrKC;K2BAAEH!+=?9JD>9hn zWlvYHyhuwc&F6)GmRD9H@Kw)NR#xOyRWG4B&y#PuxbVvSKG4OZ6(b4@3!{|sxhmp1 z^Yrx8FUk43ox-~Aqnim?S+SyDACcPF*lf9OtbHze8X2h|FE4*~AyL84PhxX(b1Hgb zY^>|_aD&{{ZKXGfgM*_jf|T9d$|@L(kluW(RKK{mSWZvx`G`m9z1BTU4H7*LvfQSo zJFG7H`ug%5WbNJEH(0ln+h=BIE1LEqI~|CLiE-;w($XULzkgb)oiM$C5|fm)`aYPk z^Yf>hVbDKE;oHq6L>U+upaQ;qvkeIiwP*`KtE{YS3&Omlb@%Q-|JT#KFZUWeP1^b} z+#fs$2@FKr+}iTknU^5j=sO0!41p*m+u1w=SLzP`l#{QSy^dJ3+td=78dD_Tw?#UvyWUcRJF$jDId zj-gW>e{J$Xt)je~t*WYuB;2H4Usw0~!NI{TH8ng=PEMxX-Q9eXde{8AIs;de5F+$| zk4iyDS2uM5Zg*TF zyC&C|fv4xSwYg@=h{#CGgzCb=FziqTgDqthE#+1ryTOlYL+^vJ5)%?gY>#1St(QN> z_g89hu(bZ#yA<*CDP!J^XUwyWo>zK$dP0a4($do-l9I^Z-dn+C3L*0L_O5oB7I{0( z&M9xxg%)t9^>GG~!YwPSyv~K>v)sIS{~&5g$~aitq#D?Bsi~=*U%zG@tbGnw%aBOA z^Umv;=feaNy(#&Gr0k0qFS;a5b#{h~j*llSFI$hy%nlDyF~J@h8hWo@bEGAX0xR8R<$BQG;;bzC%9ulO;R}7rKPyAiHUGScMcDgG&Eu+f0dV)+dDg3he3Hq zJ%3I{EA2-{%C4c<`uO+rDH#V3d)$|7_Uh{RsJ5?P8JL)uKKAsy-){XAlby|272~`1F)nOpNm6RwR>QxS(*^bZ7-pt9&x1Q-6 z&{7BI7TwVwf?Da0Wzh6H+Em77Qe-5G^V}GZZ}C4PAtfbU+}Kd%;^t00F)?ejzH5x* zd!l7wXLs}9@UUlRp`)inx5%hg>FGM(E-ck@UaSmra&mI#=;(7EqsoBM(b22Ztri^@ z7gtwr;o;#uZElvv!NFld50oqWz0#LLdj0zKz0EH|2GbLMt-Vp#=jwW=y!4s5zt)_S zKBZ*-9kK2;Lqbg*85D$GHDR4WeEX!kC(19<83P?HGBT2gfg$#KIDrQpLD9}4Qv~zi zYm@q`w*8bmrcIPkvfm_VHFE5<=mi}{Sfu<l^FWN1!`<9IR@4 zb}OvqNbqP*dd^{QhLl(iMNCk(8l$4atT^-WVzP_l(%DKguQyv$Tto}CS z|LXZe7zI1jY1w3^*Gd1QYyZD_Q~r7DF`Oay-T6obZL&~FS7cC(m)-ts0fU0M<>VVp z$>)4Fdnm5?t*zO=(<6Q?7{3|oKTgMuR1eyludlCV$H-&ejXG|fKh1S@6j_f?IWH2> zV#CeAqnDzj5p`Ac_xBHXPAv5~-eIyGd>IiCfco`o|I?lD&pGybRA~nX4<^5SsimrT z^(yLcV}g5Tt~ZHWTT3edioC76`ywH|R9mV3D=ls9z~W+#f~EdXpFX6!wM0}`3l>br zDQRgD$^6>64u^O@Jx%lF%a@_?Z(DB*{W**!weQOHG{z@5daHCm3C%QmsyffWH}nLc zT_B6Bl@{RWZGQOkvrgY-|i2JOp0t9~h|e+%RBaWqm(4N8jDu zeY_aO|H3OFA>r!%Z)&y=rKO}Kym>X1gpBER(wwi`+j9trh_K!NKFBKj`+)SV_cnc1 zO%0h-(IJ&EH+K~5l&8Pb($cIA=whH%ytjO-%INXQ%4HImYB!!yDMD+ddkBI)7 z{(iN^?QPA|gSG308X3JTG5Hut$jERJFRQ4~M9_n+F|>0uMv9ce;f0^s4h{~C{E2rT zOrsRAM@B~Uh9AAFtgE{LP=QnzYEMv5kdX{`VPhi-Mq1U$-Me>(CnrDReaeu$49Gyt z?|_3%MJ@paQ61~<-C54FD)%?>!+^%Y(|XCrvHV& z@kT}Kiv`&~zer{^s2|AA|ACcw%OwoRum&2 zAHm$*9GqBKVj^i!aPY$VdL%S!!9JLxR)a6aePHH&>rd^7hT@Zi;a3SG1KI-<8{5U3 zF|>hz^PF8=1RnqLsVefh?ZMFwi04H;HYzSDDU?dcmg9|+Fgh=DBVWCoo>2tFo}V&o zHe6g>pIwO}*w(=p@fBd6tEsD7xVgn{OjLA?k0);oJ--1!XXC*Kq5nQiP}w(Q>5Au0i?v8LmnC=7s^A9#A2xWimTmZ;6JEz6@Cr~K8q_L4Yih?%?aH_MjbEWI7 z1U3fxHxg)YxA7QcXrV%&?*+**q8Pv8swgYJ2c&CZX&E$-F8U@?={8MiU#b#q_8x}K zLk0>mvXBq43`<8_(_-E~X!-6mFdivVlaq()7HKR%muT?WWj_D;K@;er_zsZt0PIpbAJCfy9RmHEauP2=S+!k8W$dpp1rKP1DW|ovpPxV^D_==N1 z06@!)AJ9!u^Uw~jiijjnv4u*%oKyoIgZseKbJ|GU|Ln*n%;XYrZfBw$X2~gz@%U+D z+U-uvmraDjV`HI!zzkj+hXQDsX??`1zXeN)&PrgT6c#`OOP=-Q zTpTraTi!Xowx!&b!UJvFxv;583fXHU?Td67!#s=VjzXS9cL(5?Ise3su~(Oqc}==K zDa+PWVAXbh;30)J`_B75-9@Ly1UT&`$zUB0-Uaob>fsqO{e?*deW~;IcdAWXT7~<3 zrHi|X8mZX|IYdA)ae1%nOFeFnaJ`8w|KNde7(UHK==#wNvh<>EbJm4@Iy1)1E;34z z+X5HIC5$LEt`?Ck8{ z+3nePtKhSH1II_z#OF{@2cTc;(FMa*Q)>~Z0M;AeaRV?@NnumQ$o1#H0R z*0g)^t;f>E`%etb%rs?ygYDDE{b`ThNU3m7;e<-krVnvbXfugAZ989iO^)-f@087Zo__rHrp>fI}AQ+-{L zpO2xLDfRyR_t`GM@o0MKv=RbKOUvAvxgvX>Qf3YgY-qwp&3@O=FI-?E!_}W?$lWez zP#h6G8hd4!_;c=I#X!@>`0FdMZ0oqM@e?dVpZ|RA)_h3urNJZ5*h-tcw3x29&o~2E z7^Q$EhTq{j=H<(mfsBT|t>Mfarjzu-du3SR`uQAG5n=`g!t5;@-2~PrhwJ*2Q&Y?W z0@}{U@QTV|F*~P$1CL1^9*~_Rn)EUw=r6<+6k%u=F1EF|qhF%nF(2$ru#BI0mu;T` z_14($S3p-z&XqR27dMhm3H^or_vzskxbcio&dYl%eVx!8ZW|ci?HjiXT3>fW5709( z=)GgMvBKg{mnP#cA%1TeyQjC8gr>ZtB;LgC^YnDOp1ywk|4#x~Thlk^rmzU!1c6N3|Hl)0N zyd3o_2q`Y~;@Ecdln@t>hjNQ}Ci&>Nvc2)Hk`g9&=ri@8NWagCqwg{WrPnzVvb}%I z#HVIETT%&HKb=OBZx%m?X*0&ns(8)VBHU~-BO@b~U3b1!^VJC7PXPU} z@F9~879C*%PojiHv?X;5)!u`kFjZsa=!gs8>(}|&wo9Rnt?lA~=-1Au%luPnS4jML zk#8Bb@ZJ5mt{sa%q9?0l>3gtBd=a0Tr7k)=JiPO0@_>)SxTrYpwu%aFri_1NUkX2z zSW2p9vOzJf*zgvNZjV3b{#7183(U_A6rZJEbE5FtoE*0O1*Z|2QWq3s5^&)wTQMIu9;XMB8IE#u+5jjT2=_qW;*_3a?u3C`E1oI|_DOzah@ z2IY4m=I71tG(Nx~Cns<4JLGC_Z-22CY5xEe7A0e2Y5+g+nVB(gQxKFR>HWi+-bgXX z9aufcALW&{6ZHBOHf1O+1B0-U5gh=v3!r@M92_VDj*>Y)Uh?V!{1*#^0&ea6&#zCQ zkHi_Z*F}dSXA-YpQPWYYptOy%{QgG$m5{g>FDL~ctZG?WTPxnVdsi8%13~^F9EHQg z3W$>9yWRZr7SOe)@$tmIOV327n%1!|UAh7kVj0FOtL*u4o?fWNNOK-@X{NoAPMQ6o znab(UZOv~3={I3=Fhpz^vQPxd$w4Q(d3v;^s-~v)w4#E4e}{uJxwltE@X7fjL;(^9tMM()0^qu^gn&-m8!bBjefo@o#HSOq6*cp!j!_PlZgFX;Yc4#}zJ#2Oo&D7v?&VHfTmph_D6RR0g+O3~u({hm zeTqHwr&RI>vUe#nGt;Q$(OcLMPUB_ra9!c{p`*n`?lEPLK6Bhwq#m_hq;M4ajpZm* zB0`}r?^5_j&V_BPE0;^+^}zGAG~AmvZ&FfHw$06%_6OvMkk+PBk`37V-g3~122m}y zsOTp2v|GSOB4T6N5j6^CeF%}GkaEhLQ2l*le$5BW- zT^WO2M7P4Ud1wEVECQ1#ubQI@)ziaZ_uKly0b=0*D%r&YdS+&^jg1m4Y;3tOUoKtd z3rSC>x&KMgg>9`0j-syi-?8-o<<(JJ9Vxh~st~w_=g$>Ee0|!|B10wfNKD*wolFRh zJZeiKFYBpeMEq9@2@_6(7NYk}itfwbzksql^hZu#?D2>LsUB5VbgBEVyw7a* z57#}7O-!uzmV3l}_gFw2c2Yg?!{tD*m)Cpr00A)Jt5aP-m`3+!?05{pO< zTa-KOU@>v=_d`QO7cSy~K1_z{iA)tdlqkXdAQ0K|B?TGr=6PXN+WjydZy@|Hndi1b zrj)M&@Mdh3jZ4=#R1YqlY26S(t~(n?nCO8sTjV)q zxZjtTLtrahVPgwRtq>Z$w4zvV_4j*$B-7gPV}tZBG;hPnk`Rkuf;7Qkl0GeFGo#qy_Cqd)4~sP zg4c$Gz)09(lmAleOjqzudn~3E{zo52f6Fv?t(0y^ne=(7SH|_)3t}T%*i27jV!8o& zn_F9l0QgvfR?+{U&iEyB^St($#sz)J0Ge4>V1mm@hNevHnwcyByq3X`V1a3<+hD*x zePTVp9hq9{HS=C|mXC=^-gzeQ0v1{MSdW*??fpp0!csc#9gX@kz%T-iqa0Np8X6k? zU!7~kln%s8ryMdJvE1{gLCIm_=2msSqoF~tFKWW8LF^w>>XlYBg+?pgg@uV}0b5SY z|5O+-y2nC0=A+%N%W#s-J)9$#==HaRwQ4Uk3~&9fFqbTwx`~tjr@~wOK6D6yMe}Fkgu$pg{(1?ClzV^Z@m7diaF02vGV0Ol^B2aJz5LD84dtJl1 z>dj`up5I`#H!OX^iBmT{EFq%r+B${Lsl;&hHviRV>+?Ew=e6QVJ?#`-lBTjTDjJ$7 z;wv|@f!w%zc)SNy<3(Q_b8>>P@E65|8yl*%HGV~}t(=-))|}?<#avJx4&`q~?b>MSB3UwLy8 zDjzDX&|T)k8YaB*?D1N;ILM&L7f)$@QsJLcM%!sOQRkEPyR z4zfMh=R6iV<8%%(<>;NAJi9?-g0n_6pvCod6&NQGRaF8^iUO)Q8AFPW&FZ;k8(#Ti zk}h=V`46@Jeq~CGVE*W7TxS@#2XSR(JXIbgB_-Ct(&*|mWJvy*K@9}K@^i@F|8ov~ z{c%`&D9u3wOfB4Z|Jwrm1fjlTYq}ohR}e6_`@}I*#Ml@gKYhCS=uy+;nO1qc_Z?$u z9dIBV1@gt>l|YBsUF^E#639H(bKV z$dfr=Ug7>KtU{6VK>FXDxl)A?1@xTC0bc0>x*-gGCQ-L<%+k%TaWu8*ODa-h7-Y+} z|ELEMQqsIbN0q+fzfT+SZDD1F)uX9%LJj&22M^EYPPPQ;zyJn~$S?GqIP?8)6FIL` z`86UD&keS8Jr(~ho&-oB5kk88_jfG`*4JIpP^Sk}XrlGR_mZZ3QcdQA+*`V>83eWGYobBvT;uFRW1D%&~bi%w7KE|1iQ;I&A_34I{mC*TN zMf{6vPGlfLdh9OxpIp*eRv^{G%r88T>`4r78?C_t=W2J{q=NZclIb^nH1#1b9sNUe z5HsC;e4=f;eSM<4Yn`5CS63%@e3ZZvmY?of``jvTXo%(N+L7wR{cbt^fP7buhe`maW1(Y@5q*)7%^#1@D7_u<5yuDoF~iX(K?7Ibu^q3!dF zi_9KU{}(R9Hie%RG|$|ih#d>mX{I?5({@Pp*tu(yXt{Hc?;+s2BuHb5omhevI| zMn4y-2e-D$9&LY(1&B)Ug-vGYht5+NQ2++Tp_fe4^}n(E1R{12;BT+`E-bIDDNJte zS0YQE4<5{KY`k)R2$)_GfL(jX!}Ioa6pFSA$pUo1xdwum$Hc{j`zcHI19%e8V|0@~ zXpPmJ;i+JQXj#i;DG$mmHdAHgDy=84x|*7~qvO=KiC2dFk9OW;;nx2Iz;}g_5k){i z08$VlUm|29UDU0PTSK4zy8h=M7{7Nq2+>g6EoXcvIS#T#7?FqvCnYTn=565Al(Fsk zcuGxj$LncyQ~Kv!QJ1aOM@zsd>?%-AF{)*ag?Bhl*WuIC)9)M|-GDttO+&NNot2y% z#;TfZ4l>Zr?yfvgs}27ywn5NoJG;Bv!8UngJD^}~%>ug>g@R@51gTM5SGS{odwIF@ zjz?~8Zl(X3m#wkCzchkVLE=J<{4B`-&Bsju#QRQ@4>6$du<&p!z+LVqdp2Mxw$IMe zfh&!>P3ll1Dc^ebLlT8}{wNekgExUh)wxWE0i~u!$^=|Vq1K299H1cV9$?6W_lHeL z7+zGw4to9qa3%iMUnJo2xti=fjgD5leVfW_d+wRbblt*WhNKv9+x}y-CZ9m{bP zaZI;VR21aoQ1>H}5aTI5ON-+<)kOT2n}~Y1IaPZpK0Y4CmyD&A6&ecUv}3p@&^$xI z7+UI#Am!law@dclcwO(l)QxXTC+a#A06H2%Q16@7&28^3qDp6n zd=C!~q_hZV#TY%aI3j!dJhG%8QlO!sRo2#GqRPx#>7V@hEh;n%I9ABEKTcwXBu5Jy zLOR5H=VBiJ7`JGm{=D5ELOA zTo&k#=mDd_Rn|QTB1_E7%tNhDo|II9aZ3QT8&Xoj35F6eoFcG~3n-Au!a!wY0;wL@ z{(Bf_#H6IbAiUDTjzYo-<>h?U)zv#wP8ACvVz}SGZ&k}r9&rH$VF7b&Bv9|Z`(ZHj)b?cTKl=_`Jcd`o#FzxK@ z@(T(OsU3+60O7VmMQ*D)csyMNQ!5~a@KHjTerPZ0Xn#K*D=TaN`@X)u>yV%Uk_zje zlY<5%D9itd3Y!U`{y=%bP18GA9lpLs38Gw1US4o+E;AnGRa9GFK4Oz$GwCe3IXWtU zO8`2-Ro59YVG)rZh7p@Z-VyS*C>$gA%2a<=CaW>4rK zDPbE1D7wG@`|2w8{rmS()jtcEJ&I|Pnz3HLf=K}aE|Z7|1sL=`pp`IRxuUJ3)879R z&_-48lwZR&$Z#OrA2CQlbFz1Gx^8Hg;%NfWnc}iCva_|-)wZrKOyHm#oSYD2L4(@5 zYST-Wx(lHk*Z^n}5)wq%7?Z6}WZ#(TBW4On4rG@vFM(Is-(0wQkD8u729&;~o<#Or zs;V8{U;VKR4GnF5K{AEZ2C!4X6mO9;of`kWMJ>@SnP6}=Esu8=e16V)@4`F)PELsI zXfTqXe?XWes;vz!9V|8HuPqsG4V|TDNWc@qz{0u$&JKLhO(>))kEI){8yjz2ow_2) zU8b7hRv1*6J_7?7(d!x;8{IuUZ3g#77DWXGk@O7`MWCdjdJp}7yJ?>Q&=@ft-R#_5 z926p#18ItaI0W1n%k~f)qdI3Q6eC0)AUrVn#*PpOBf5}~P}A?DX`@PWv^P!3$rNnr zX(8Zlb$t1fI@aRskGIm5qcMfu2kjpb(v$LXyhX8abEQqC)cWC1X%S#f2awTVO&WP+I?YtWvbTKMgC%RIh zk^t5_Ggl=q9N_)OY%U>Go+!VoYeh*GX$|hYk57ZdQnnTg^ELUk6qZPd96C`gVUqtJ z(gOd97jCToiLx^xic(m+mCv>cGU^x=RzcL2*X%SUI1;{l%Q2Cm3J$?F7zO`{UKa9u zq0vQ+D!eK!EH1`|hM?x1P;Ht8D=4sEXR1K~RRUYN4S@%dk+?6?)0ejDzlLRHWsN$v zKgw=spoAK}DkKyPDhMqd-CKeZ{JYh71JI0L2+r^h4-W@cR8+KYZOyzTMQ#dAkkC*} zdTGDT(Rj03$D|Ptip!U+PWD!GF16I9eEfI|R0A4_hk;tw0bMJnpkNG~|71Sj2vGrn zz>*S&bTdSwd5^`wF*66vG8%FVNY8=n7VuT0xA$0G=bFBhi{UU8mzTR5(u^P$Dg;T8 z7Jx`mGc!%IyIvSv>O)5_c@-f+WC<=b$g~0V^`f904S`gdqxBS$I`lF!GKf5=sE7eB zSLzBd%u4GX618*@e0T*ECT*WtkY#k-&=7r^hUSu+n_GX{HDr+4J36B8RL7kD+q@2e zoDvEVOX}Rd4ywJXsQ6Ih@Hs9${nETm5INZHiP2VX!i!+N}rT`w&gNcxuR6+uA~$o@?> zKNLl#It-wB$nqfI54jS^Vj)NoI7uf6v}jE{;mxpD@u&nbz{|(R#y01xN+_FmsdViXo8dvbol4g={$^%#il{ndyc;5yUrzHAAK z5Df8dFzB=Z1@7#)`}p}Wi;Gi%|9rgH$InEBjd-tU0Y+5Lw>?n&iT<#au<`H|;lNNk zVGRvpJZ3GlSOm1@M?C;ZA|L-g73ljiIXMsA*~b6nC}suU?!U$|z%?8Yx4})e7|vBf znC)PubQHiaaDgejyu6HBA4`W3G7!w$l&l>e`;-~i;@aBUR@T&Dph|EWk(-(&b9d7l z^v%@2!y0UgFmPN!r9jPr-NSTXENGQOJ1c4Q0 zn%S&aI}@tFR8w1v_>-V`!*S`r(G4CA=Z0$xNJ+V@YeJ7|YHqeLHxGd7h}ueou>}d1 zt9<};2m!xde#f;N=q1bY+PGF_v!An35ypTeh&s5n`nPXK05q&BIs>CAx2!Ds#6BR8(RKieadB}0P%j-Y zJRqf_$3Z~se|mtnvlpm2Qi-Hbt5y)(XMSa@7<#hK&)`M}@1Qz0h0B*yy!5dIu3Za_ zi6KBXqj?(&ZaMT?8OD(8{QMB*7VtN%t*zVOz%b9T@$r=)&j%$G4jI#5a1vWn<>UVw zWBYDdIrlru*L{bkPZz1aAKF`e^CJ&21F#pY*hU3rBH-5z6$3 z9Y7`c1J{hf&Gs*>Enui6B_&zPf~ybngAup|^eza<%0Z^GP%RZ5uoqx-W?5MVM2`fF zuA-uXLV0?6BHsts2zdiwI)w8pU*z-~8XK7*=wC>{{H@*qiHv*_d%Hbdw?}w2s@BKMv)M3pKTL>WMuYVz8ntP zO`h9VP^mnwfLm$d;1B_B*%CAYn{w>xMXiu3s}GAH^Ypu$n$pAVFWUUEcC`kZDSzcD z*jVi!K7>>3t)l=cY3b+$fmc(0T^`U2Tow@=8{}pL)j$L8zfjl+`2Rid3&_jyiewsU z?q(!GDIoxA=Iwp(oW4uYqU6ASTG-lp22k?O+k2Q0!28Z4ZX-{shcD%`g91171(<^n zV(Rh~!-G&)D3Bqf*Ao%7d5V!NOwf6-clGorZ$@PD1H9|#=m_4pYCXbAQga25O-{&} zQN2i&g(KT97-tBN=GNymK^!i@7c4o^??*>2!djgCdr0L3ORV>vJ z5F4t504mZdq0c^h_6)V0E(K8|=*VrY=ZE|N>#8Bx5v;5WhY$bfQ_QTam?m}3@-V0b zg@im-hnP@%>Y3bz<@1oodmqm5_$lOdqI#H1MP3MZT^xBZdY-17T*YDuGk0~mo<9ta zDhOC8Xh(g>m%)@l;?j_T!j+q`)v0}-&nXgDnCF$QoLPk-x7j}m{l+#;D)9pV^?+r~ z@>1a!sDY|LVY=FBwd!bAVhF2+Wn|Fp*K_PHr%Fvtl{PbeG|noVluL`5;@?Hyfk0j^ zuJ+bHzuh*c>tm~e^lbJjmBvs1o}5@!YCe_fpI`fgD07I$8ol#E#Q49J1!aiRv->~Z z>SH6sdCD5DdTe{aL1M(2%}-hB)) zIU(C}SEbPFTB5Jr@B%u~36gu|gEbvmDIX$0vX^zgEpvMAebX)M;Dr>%tNxim|3AIOO8>-_VL+`PP9FjzagBcd7QT6Bt5A31+3;G%z` z{mvEA<)KK}C8lm~e?PVLi&sp+Eq3G5b@wQjbiFQJI>*+|hfrP6kYErf+SsuEn0Xrv z!`4>91j%dA4KGkkAL^28dcuXJi{EDhtscSYV3{H=J%qo2tDy3^U0;9l8Tt14^XH99 zg8Ioa1_(BAEhM>4+=gEkwPrP*X~7|O7EK=6g_Qb~24>1jVwWzKT=csLfz@ZS!2s}( zQvjd>k^P`&&+uUjUxf^B`E}B~Ls5TKRaLN<7CH!JLqK9i4V=o}W|n9SmwhH43}~_b ztu?rI^TC8Na`mpWNET^xu9*g$_sMFTORlqxUE28xR+y%a{z%de@DB2zM3c`hI&lAf z_95sJT(5s}Qb&~ntL=p3)9#OV+m;_<=bn@X~Y^n9jG93n3h6Z7<9 z{Sqvby320AiHnbCLXrm`ORcy#DSVqRMUGPu5i!2$E|#cKfT98{a#KM89lCxXM9DfJ zHLtylI-;Hh?Pup;O}B9Bj%uU#Ho>J!m&QF9Ai@Q;WyO-5+|heb%&vTrcmqsoYZXps z%Xs|{dOAFNewWE!-(MRk&~b`JUmwODdrauJIVpf~@uDT90#_kubR(Aj87LqEpT9Uh z0Q`l@PWW>J(KKKf<$+=B5;pxgkDg|E_DxlUk^$Z4@yfNkS~Y{Bb3WG{pJ~fU8|O@U zz5~!xXmypC*U71RY!$LD;5mlDcoD%``ugWwwB`4a$)mHadY9zH=R~hRweyDmJtPo9 zX6-{=mSpJTC7x;~9fjWV!`0P}|D0#}^lf9~-0W;QwfcuJX7}rv9cLh;=nk3hknr%R zXRUw=K}gH4sQ463s!#5Eo6SUVW7$!BW>|V1wwy}gt#-C#0AZ@Ht){3&nlIJeDXO8) z%dL|z=GHr7eGCCcgp@*q-TifPe+F(BL{O!L?h-%y0d?300oqCk3L{xCLIxQ{2p#C? z=v4abTB6L)SUL7i{XGJ4|_TRI_VFyDHpoCP5YSgnO9{uVhv+%)nE!$#I)0xooy z(&sQum|y+9yBZH9QDFMr0BJ3ZfG!f44zLlFmRg<=(CfM8hlpMTz#2$Q?vp>~lTE%t zknkr&fr#1N9(t+DX@ZYd<`E^gL75y#dmAn~H^vh6tVoF}G#x=Rh1qBcvl}EKXG0#K z?m8PUR3ep3k+6e-6`5A7L9y2?-<2yDAY*8matwiSa}WS5?R0RT#2HxWB^fihIeLCu zS+Rh6Lc*eqfagJ8VH6Rm8(0Z$m)>)XF3p=OnrdZf{&Ri?N(O@I;PDb3US1G0dQWAd zb7knId;*4sw1DxMI6fN&?RgO%_@FB!FO`-D*S-pt?;BHCyV>L@<(Butyk>%qoC1l%r5jB)IR6atG>7B_%k3bdj0=_;>*ep2I-P7D+6dgfGB|oKpK= zfnW@XC)`Gie;l&fRB)J)h4^BZ6-X2WG{SOgsuogXN`MlJ2UxC%K&T-C5a=RkBgn&5 zupU4bs4j#}sYQNJaA8ZXeA^FB5fi8&0AD6s{3Rj#5%r8lRM1Y+QHYcNQf(^7-84QM zA#GtSnMpNx;y}lDXC4g#TLS*44^l;RZ+ayZ3S>!eu7?wfkp6uTLOM98)csMRZl-*a zc7HMM2Tci^pt>T{qFce!P%ohRxx@BG4cU_qf}E+nAdC+!rF!(L5}6PRk(ClyRj;~C z2_GLHGXl&AuUAx z_Gj^LrnSv4ZxB-18HVV&K&~m$*{@!WTWehdFgE%2K05^L0ItV?1ckJ60HaEe9!c@= z@F3f@i7~nGowCzS3THhrUk?!xk=|KTVrFs>Nn=XPTJ49K;ow-%{Vg|GLauVnI8`(k z#^DwzuTYAYjB#q>Tjjl2TVF?_8UPHzJ|x`;P$P*PJtC9W7yE$>Oj}zvL*!i$>SF>z z3sNrf@C7LJU7dK!8~Qb-?D`80H@7r*okuH^Z|U{}9vK=MLIE{^EbivlR))4dp%84P zbx$4gm@Jr@kjhIe4O3P~vm9@J=*@Gtkt|)rB?xjr5D?fMl-x!%E|A*|8;}DZp#^$jUy!TvXWpr_I@qfz^2tkhE!t4(KG-B@asARsok?=Gi5=*q4qA}r(apCugtocGx zI<FZR>u|8dX@j|cQv`Ys z$j1o45sm-*voYhwh`yerT*oIQLvRm_t7A;nFI!qGNB1pmIj9AB6`ZCdn7^ZYZKeA^ z|J3{H$(P$|EDn{kG2>Mwj%RNL^TkTWd?Ap{V_bs`Pc<05vBe+x{5kdiE<#`!_I%2v z5XtES_lEx51|$d^l}|6E11$f^9asjJ`4u@ICH@TqTteQ@zY7@UI`B1kEF{>p+0O#h zZ=)J}VxhZK`^DGNoSCcSO`COnZKU zFT@d;N?MAWmfDk;3cS*LMn*_5F)=MgJ_Ese(V8R>Yn<1^MnYpfCTSD=@85p^TmO5& zPI0NJ5db-sfTSHm1*Wb=8mY*A7m7D_)$KELf=?yYWGyrOJp&I*Av8IN5F<_jWaTh0 zFc_Jc(cub7hECM-$ER7C;mO4l6N6@52Tz5Se?9|e-TU!l0QgUn1ctVnp(Ntb{;n`p>yzu)uy>T`4o7lN>@C$cov-LyV6BBoC0&K@1ElC}4%G z-tDhKjuMF23)TQ6?Rm!(7tuvN*Z>TM+)9lxJ|`ECt`C|U-!54s^M5+9&qgQI(hk0| zaAc&2RHT9?R#xS&tRtKbtoW&TQ9uYrfz~m`|Jg8ofJVC{fsLy~{f8l=x8h#SAFf;Q QXfsM#Nkg$*!93`H0L17KlK=n! diff --git a/docs/classtc_1_1fs_1_1_path-members.html b/docs/classtc_1_1fs_1_1_path-members.html deleted file mode 100644 index 75914865..00000000 --- a/docs/classtc_1_1fs_1_1_path-members.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::Path Member List
-
-
- -

This is the complete list of members for tc::fs::Path, including all inherited members.

- - - - - - - - - - - - - - - - - - -
getPathElementList() consttc::fs::Path
kUnixPathDelimitertc::fs::Pathstatic
kWindowsPathDelimitertc::fs::Pathstatic
operator!=(const Path &other) consttc::fs::Path
operator+(const Path &other) consttc::fs::Path
operator+=(const Path &other)tc::fs::Path
operator=(const Path &other)tc::fs::Path
operator=(Path &&other)tc::fs::Path
operator==(const Path &other) consttc::fs::Path
Path()tc::fs::Path
Path(const std::vector< std::string > &path_elements)tc::fs::Path
Path(const Path &other)tc::fs::Path
Path(Path &&other)tc::fs::Path
Path(const std::string &path)tc::fs::Path
Path(const std::u16string &path)tc::fs::Path
Path(const std::u32string &path)tc::fs::Path
setPathElementList(const std::vector< std::string > &list)tc::fs::Path
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_path.html b/docs/classtc_1_1fs_1_1_path.html deleted file mode 100644 index 3ca8dc69..00000000 --- a/docs/classtc_1_1fs_1_1_path.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::Path Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::Path Class Reference
-
-
- -

Represents a unicode path for a filesystem. - More...

- -

#include <tc/fs/Path.h>

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

-Public Member Functions

Path ()
 Default Constructor.
 
Path (const std::vector< std::string > &path_elements)
 Parameterized Constructor.
 
Path (const Path &other)
 Copy constructor.
 
Path (Path &&other)
 Move constructor.
 
 Path (const std::string &path)
 Create Path from a literal UTF-8 encoded string. More...
 
 Path (const std::u16string &path)
 Create Path from a literal UTF-16 encoded string. More...
 
 Path (const std::u32string &path)
 Create Path from a literal UTF-32 encoded string. More...
 
-Pathoperator= (const Path &other)
 Copy operator.
 
-Pathoperator= (Path &&other)
 Move operator.
 
-Path operator+ (const Path &other) const
 Addition operator.
 
-void operator+= (const Path &other)
 Append operator.
 
-bool operator== (const Path &other) const
 Equality operator.
 
-bool operator!= (const Path &other) const
 Inequality operator.
 
const std::vector< std::string > & getPathElementList () const
 Get the path as a list of path elements. More...
 
void setPathElementList (const std::vector< std::string > &list)
 Set the list of path elements. More...
 
- - - - - -

-Static Public Attributes

static const char kWindowsPathDelimiter = '\\'
 
static const char kUnixPathDelimiter = '/'
 
-

Detailed Description

-

Represents a unicode path for a filesystem.

-

This stores a path as a vector of path elements.

- -

Definition at line 19 of file Path.h.

-

Constructor & Destructor Documentation

- -

◆ Path() [1/3]

- -
-
- - - - - - - - -
tc::fs::Path::Path (const std::string & path)
-
- -

Create Path from a literal UTF-8 encoded string.

-
Parameters
- - -
[in]pathUTF-8 encoded path
-
-
-
Precondition
    -
  • path can have either forward or backward slash path delimiters ('/' or '\') but not both
  • -
-
-
Note
No filtering or processing of special characters is done (e.g. '.', '~')
- -
-
- -

◆ Path() [2/3]

- -
-
- - - - - - - - -
tc::fs::Path::Path (const std::u16string & path)
-
- -

Create Path from a literal UTF-16 encoded string.

-
Parameters
- - -
[in]pathUTF-16 encoded path
-
-
-
Precondition
    -
  • path can have either forward or backward slash path delimiters ('/' or '\') but not both
  • -
-
-
Note
No filtering or processing of special characters is done (e.g. '.', '~')
- -
-
- -

◆ Path() [3/3]

- -
-
- - - - - - - - -
tc::fs::Path::Path (const std::u32string & path)
-
- -

Create Path from a literal UTF-32 encoded string.

-
Parameters
- - -
[in]pathUTF-32 encoded path
-
-
-
Precondition
    -
  • path can have either forward or backward slash path delimiters ('/' or '\') but not both
  • -
-
-
Note
No filtering or processing of special characters is done (e.g. '.', '~')
- -
-
-

Member Function Documentation

- -

◆ getPathElementList()

- -
-
- - - - - - - -
const std::vector<std::string>& tc::fs::Path::getPathElementList () const
-
- -

Get the path as a list of path elements.

-
Returns
path element list
- -
-
- -

◆ setPathElementList()

- -
-
- - - - - - - - -
void tc::fs::Path::setPathElementList (const std::vector< std::string > & list)
-
- -

Set the list of path elements.

-
Parameters
- - -
[in]listpath element list
-
-
- -
-
-

Member Data Documentation

- -

◆ kUnixPathDelimiter

- -
-
- - - - - -
- - - - -
const char tc::fs::Path::kUnixPathDelimiter = '/'
-
-static
-
-

Path delimiter used on Linux/Unix based systems

- -

Definition at line 23 of file Path.h.

- -
-
- -

◆ kWindowsPathDelimiter

- -
-
- - - - - -
- - - - -
const char tc::fs::Path::kWindowsPathDelimiter = '\\'
-
-static
-
-

Path delimiter used on Microsoft Windows based systems

- -

Definition at line 22 of file Path.h.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_path.js b/docs/classtc_1_1fs_1_1_path.js deleted file mode 100644 index 52a2b6a9..00000000 --- a/docs/classtc_1_1fs_1_1_path.js +++ /dev/null @@ -1,18 +0,0 @@ -var classtc_1_1fs_1_1_path = -[ - [ "Path", "classtc_1_1fs_1_1_path.html#a2bfe9075884ad8f30d70213471406134", null ], - [ "Path", "classtc_1_1fs_1_1_path.html#a58c780f9f6eb40453fb8d9db0ac16874", null ], - [ "Path", "classtc_1_1fs_1_1_path.html#afe304ae681dca77e668f279f4bcecf08", null ], - [ "Path", "classtc_1_1fs_1_1_path.html#aa3717f0f10177c33fb7bd737280e8535", null ], - [ "Path", "classtc_1_1fs_1_1_path.html#ae7c1f1a5bb5d45cfadd0fd8a0cf0efd3", null ], - [ "Path", "classtc_1_1fs_1_1_path.html#a166032fb19e728339c5a31b56f133bec", null ], - [ "Path", "classtc_1_1fs_1_1_path.html#abb195bc28559c627acfe4d8d2b954592", null ], - [ "getPathElementList", "classtc_1_1fs_1_1_path.html#a6941fd92599595d4860bac6a871806c4", null ], - [ "operator!=", "classtc_1_1fs_1_1_path.html#a281f4eb2e509185b750857b57de82bfc", null ], - [ "operator+", "classtc_1_1fs_1_1_path.html#a9e8051ab038f1d539a6d1544491df94c", null ], - [ "operator+=", "classtc_1_1fs_1_1_path.html#a9cd9c337d16348b455a6528e5823e444", null ], - [ "operator=", "classtc_1_1fs_1_1_path.html#a6b1c253e9f76aaab85c0a38ea8dc6671", null ], - [ "operator=", "classtc_1_1fs_1_1_path.html#a1f31d9b34e93ff04e0e8240f6a9eebe2", null ], - [ "operator==", "classtc_1_1fs_1_1_path.html#aaac12bb402ae2b03c7648dd817e31a64", null ], - [ "setPathElementList", "classtc_1_1fs_1_1_path.html#abc3c83f689c05ae947d111f7a1c0db8e", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file-members.html b/docs/classtc_1_1fs_1_1_sandboxed_i_file-members.html deleted file mode 100644 index 0742610e..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::SandboxedIFile Member List
-
-
- -

This is the complete list of members for tc::fs::SandboxedIFile, including all inherited members.

- - - - - - - - -
pos()tc::fs::SandboxedIFilevirtual
read(byte_t *data, size_t len)tc::fs::SandboxedIFilevirtual
SandboxedIFile(const tc::SharedPtr< tc::fs::IFile > &file_ptr, uint64_t file_base_offset, uint64_t virtual_size)tc::fs::SandboxedIFile
seek(uint64_t offset)tc::fs::SandboxedIFilevirtual
size()tc::fs::SandboxedIFilevirtual
write(const byte_t *data, size_t len)tc::fs::SandboxedIFilevirtual
~IFile()=defaulttc::fs::IFilevirtual
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file.html b/docs/classtc_1_1fs_1_1_sandboxed_i_file.html deleted file mode 100644 index 5acd90e4..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::SandboxedIFile Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::SandboxedIFile Class Reference
-
-
- -

A wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of the IFile object. - More...

- -

#include <tc/fs/SandboxedIFile.h>

-
-Inheritance diagram for tc::fs::SandboxedIFile:
-
-
Inheritance graph
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 SandboxedIFile (const tc::SharedPtr< tc::fs::IFile > &file_ptr, uint64_t file_base_offset, uint64_t virtual_size)
 Default constuctor. More...
 
uint64_t size ()
 Get size of the file. More...
 
void seek (uint64_t offset)
 Set the file position. More...
 
uint64_t pos ()
 Get the file position. More...
 
void read (byte_t *data, size_t len)
 Read data from the file. More...
 
void write (const byte_t *data, size_t len)
 Write data to the file. More...
 
- Public Member Functions inherited from tc::fs::IFile
-virtual ~IFile ()=default
 Destructor.
 
-

Detailed Description

-

A wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of the IFile object.

- -

Definition at line 18 of file SandboxedIFile.h.

-

Constructor & Destructor Documentation

- -

◆ SandboxedIFile()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
tc::fs::SandboxedIFile::SandboxedIFile (const tc::SharedPtr< tc::fs::IFile > & file_ptr,
uint64_t file_base_offset,
uint64_t virtual_size 
)
-
- -

Default constuctor.

-
Parameters
- - - - -
[in]file_ptrPointer to IFile object to be sandboxed
[in]file_base_offsetOffset in the base file that serves as offset 0 in the sandbox file
[in]virtual_sizeArtificial size of the sandbox file
-
-
-
Precondition
The carve out presented by the sandbox should exist in the base file.
- -
-
-

Member Function Documentation

- -

◆ pos()

- -
-
- - - - - -
- - - - - - - -
uint64_t tc::fs::SandboxedIFile::pos ()
-
-virtual
-
- -

Get the file position.

-
Returns
file position
- -

Implements tc::fs::IFile.

- -
-
- -

◆ read()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void tc::fs::SandboxedIFile::read (byte_tdata,
size_t len 
)
-
-virtual
-
- -

Read data from the file.

-
Parameters
- - - -
[out]dataPointer to memory where data will be written to
[in]lenLength of data to read
-
-
-
Exceptions
- - -
tc::ExceptionIf read length exceeds file capacity
-
-
- -

Implements tc::fs::IFile.

- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::SandboxedIFile::seek (uint64_t offset)
-
-virtual
-
- -

Set the file position.

-
Parameters
- - -
[in]offsetfile position
-
-
-
Postcondition
If the offset is beyond the file size, the position will be at the end of file.
- -

Implements tc::fs::IFile.

- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
uint64_t tc::fs::SandboxedIFile::size ()
-
-virtual
-
- -

Get size of the file.

-
Returns
file size
- -

Implements tc::fs::IFile.

- -
-
- -

◆ write()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void tc::fs::SandboxedIFile::write (const byte_tdata,
size_t len 
)
-
-virtual
-
- -

Write data to the file.

-
Parameters
- - - -
[in]dataPointer to memory where data will be sourced from
[in]lenLength of data to write
-
-
- -

Implements tc::fs::IFile.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file.js b/docs/classtc_1_1fs_1_1_sandboxed_i_file.js deleted file mode 100644 index 6dcfff7c..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file.js +++ /dev/null @@ -1,9 +0,0 @@ -var classtc_1_1fs_1_1_sandboxed_i_file = -[ - [ "SandboxedIFile", "classtc_1_1fs_1_1_sandboxed_i_file.html#adee42c40b7a49367d3a4894869d834ae", null ], - [ "pos", "classtc_1_1fs_1_1_sandboxed_i_file.html#ae27b7f5cefd443ded8b8f9fb186b5551", null ], - [ "read", "classtc_1_1fs_1_1_sandboxed_i_file.html#aa9ea0d9c2302934647bd65a5ef52f8c5", null ], - [ "seek", "classtc_1_1fs_1_1_sandboxed_i_file.html#a7e7c71e042ef68df3f5f02131fd3be05", null ], - [ "size", "classtc_1_1fs_1_1_sandboxed_i_file.html#a0dc6032cb3e05926bdfa018e45074925", null ], - [ "write", "classtc_1_1fs_1_1_sandboxed_i_file.html#a6871ce2257d3bf15516a482181e11f52", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.map b/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.map deleted file mode 100644 index 1b22de01..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.md5 b/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.md5 deleted file mode 100644 index 0687a6c4..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -56908761b4e1846c51ebcd4557b7f761 \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.png b/docs/classtc_1_1fs_1_1_sandboxed_i_file__inherit__graph.png deleted file mode 100644 index 1201d95bafc27710128dc1db3e69b62e28f1ef29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8291 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 diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system-members.html b/docs/classtc_1_1fs_1_1_sandboxed_i_file_system-members.html deleted file mode 100644 index 79c9116e..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system-members.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc::fs::SandboxedIFileSystem Member List
-
-
- -

This is the complete list of members for tc::fs::SandboxedIFileSystem, including all inherited members.

- - - - - - - - - - -
createDirectory(const tc::fs::Path &path)tc::fs::SandboxedIFileSystemvirtual
deleteDirectory(const tc::fs::Path &path)tc::fs::SandboxedIFileSystemvirtual
deleteFile(const tc::fs::Path &path)tc::fs::SandboxedIFileSystemvirtual
getCurrentDirectory(tc::fs::Path &path)tc::fs::SandboxedIFileSystemvirtual
getDirectoryListing(const tc::fs::Path &path, tc::fs::DirectoryInfo &info)tc::fs::SandboxedIFileSystemvirtual
openFile(const tc::fs::Path &path, tc::fs::FileAccessMode mode)tc::fs::SandboxedIFileSystemvirtual
SandboxedIFileSystem(const tc::SharedPtr< tc::fs::IFileSystem > &fs_ptr, const tc::fs::Path &root_path)tc::fs::SandboxedIFileSystem
setCurrentDirectory(const tc::fs::Path &path)tc::fs::SandboxedIFileSystemvirtual
~IFileSystem()=default (defined in tc::fs::IFileSystem)tc::fs::IFileSystemvirtual
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system.html b/docs/classtc_1_1fs_1_1_sandboxed_i_file_system.html deleted file mode 100644 index 0cdfae76..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - - - - -libtoolchain: tc::fs::SandboxedIFileSystem Class Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs::SandboxedIFileSystem Class Reference
-
-
- -

A wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem directory tree. - More...

- -

#include <tc/fs/SandboxedIFileSystem.h>

-
-Inheritance diagram for tc::fs::SandboxedIFileSystem:
-
-
Inheritance graph
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 SandboxedIFileSystem (const tc::SharedPtr< tc::fs::IFileSystem > &fs_ptr, const tc::fs::Path &root_path)
 Default constuctor. More...
 
tc::fs::IFileopenFile (const tc::fs::Path &path, tc::fs::FileAccessMode mode)
 Open a file. More...
 
void deleteFile (const tc::fs::Path &path)
 Delete a file. More...
 
void getCurrentDirectory (tc::fs::Path &path)
 Get the full path of the current directory. More...
 
void setCurrentDirectory (const tc::fs::Path &path)
 Change the current directory. More...
 
void createDirectory (const tc::fs::Path &path)
 Create a new directory. More...
 
void deleteDirectory (const tc::fs::Path &path)
 Delete a directory. More...
 
void getDirectoryListing (const tc::fs::Path &path, tc::fs::DirectoryInfo &info)
 Get directory listing a directory. More...
 
-

Detailed Description

-

A wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem directory tree.

- -

Definition at line 18 of file SandboxedIFileSystem.h.

-

Constructor & Destructor Documentation

- -

◆ SandboxedIFileSystem()

- -
-
- - - - - - - - - - - - - - - - - - -
tc::fs::SandboxedIFileSystem::SandboxedIFileSystem (const tc::SharedPtr< tc::fs::IFileSystem > & fs_ptr,
const tc::fs::Pathroot_path 
)
-
- -

Default constuctor.

-
Parameters
- - - -
[in]fs_ptrPointer to IFileSystem object to be sandboxed
[in]root_pathThe path to the subdirectory used as the sandboxed root directory.
-
-
- -
-
-

Member Function Documentation

- -

◆ createDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::SandboxedIFileSystem::createDirectory (const tc::fs::Pathpath)
-
-virtual
-
- -

Create a new directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
-
Postcondition
If the directory already exists, this does nothing
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be created (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ deleteDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::SandboxedIFileSystem::deleteDirectory (const tc::fs::Pathpath)
-
-virtual
-
- -

Delete a directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be deleted (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ deleteFile()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::SandboxedIFileSystem::deleteFile (const tc::fs::Pathpath)
-
-virtual
-
- -

Delete a file.

-
Parameters
- - -
[in]pathPath to file
-
-
-
Exceptions
- - -
tc::ExceptionIf the file cannot be removed (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ getCurrentDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::SandboxedIFileSystem::getCurrentDirectory (tc::fs::Pathpath)
-
-virtual
-
- -

Get the full path of the current directory.

-
Parameters
- - -
[out]pathPath object to populate
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ getDirectoryListing()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void tc::fs::SandboxedIFileSystem::getDirectoryListing (const tc::fs::Pathpath,
tc::fs::DirectoryInfoinfo 
)
-
-virtual
-
- -

Get directory listing a directory.

-
Parameters
- - - -
[in]pathPath to directory
[out]infoDirectoryInfo object to populate
-
-
-
Exceptions
- - -
tc::ExceptionIf the directory cannot be accessed (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ openFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
tc::fs::IFile* tc::fs::SandboxedIFileSystem::openFile (const tc::fs::Pathpath,
tc::fs::FileAccessMode mode 
)
-
-virtual
-
- -

Open a file.

-
Parameters
- - - -
[in]pathPath to file
[in]modeAccess mode
-
-
-
Returns
Pointer to IFile object
-
Exceptions
- - -
tc::ExceptionIf the file cannot be accessed (invalid path, or access rights)
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
- -

◆ setCurrentDirectory()

- -
-
- - - - - -
- - - - - - - - -
void tc::fs::SandboxedIFileSystem::setCurrentDirectory (const tc::fs::Pathpath)
-
-virtual
-
- -

Change the current directory.

-
Parameters
- - -
[in]pathPath to directory
-
-
- -

Implements tc::fs::IFileSystem.

- -
-
-
The documentation for this class was generated from the following file: -
-
- - - - diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system.js b/docs/classtc_1_1fs_1_1_sandboxed_i_file_system.js deleted file mode 100644 index 1012ef7e..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system.js +++ /dev/null @@ -1,11 +0,0 @@ -var classtc_1_1fs_1_1_sandboxed_i_file_system = -[ - [ "SandboxedIFileSystem", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#a6a6bc2a44e6a1897b95fae12dc88d130", null ], - [ "createDirectory", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#a077f94d25e577a1774a5438638a2e09b", null ], - [ "deleteDirectory", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#aafc06b493e9174f7f477bf730e704ad7", null ], - [ "deleteFile", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#a2b7e8ad014dd689ed874c8f2a8eb8d01", null ], - [ "getCurrentDirectory", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#a97e559e7e23a9a543775926d52eaf3c4", null ], - [ "getDirectoryListing", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#adf596d27abdc145e5256d3484261249a", null ], - [ "openFile", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#adc9f0a2b08b9d26cf06df5bb5f803023", null ], - [ "setCurrentDirectory", "classtc_1_1fs_1_1_sandboxed_i_file_system.html#ab6c221783cb6d0318ff2d6a4687ac034", null ] -]; \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.map b/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.map deleted file mode 100644 index 24e2764e..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.md5 b/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.md5 deleted file mode 100644 index 2a10c434..00000000 --- a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -446dbe97da25d8a445794d8685f128d9 \ No newline at end of file diff --git a/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.png b/docs/classtc_1_1fs_1_1_sandboxed_i_file_system__inherit__graph.png deleted file mode 100644 index 364b49b729ac61e5941efadb5e1dce3738e26d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17652 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 diff --git a/docs/dir_000000_000001.html b/docs/dir_000000_000001.html deleted file mode 100644 index d1ffeded..00000000 --- a/docs/dir_000000_000001.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -libtoolchain: tc -> fs Relation - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- - - - - - diff --git a/docs/dir_000000_000002.html b/docs/dir_000000_000002.html deleted file mode 100644 index ac00992a..00000000 --- a/docs/dir_000000_000002.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -libtoolchain: tc -> string Relation - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-

tc → string Relation

File in tcIncludes file in tc/string
string.htranscode.h
-
- - - - diff --git a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html b/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html deleted file mode 100644 index d7e88185..00000000 --- a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -libtoolchain: tc Directory Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
tc Directory Reference
-
-
-
-Directory dependency graph for tc:
-
-
tc
- - - - - - - -
- - -

-Directories

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

-Files

file  endian.h [code]
 Declaration of macros and classes to unwrap primatives in an endian agnostic way.
 
file  Exception.h [code]
 Declaration of tc::Exception.
 
file  fs.h [code]
 Declaration of the filesystem library.
 
file  Optional.h [code]
 Declaration of tc::Optional.
 
file  SharedPtr.h [code]
 Declaration of tc::SharedPtr.
 
file  string.h [code]
 Declaration of the string library.
 
file  tc.h [code]
 Declaration of the libtoolchain namespace.
 
file  types.h [code]
 Declaration of generic types used by libtoolchain.
 
-
-
- - - - diff --git a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.js b/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.js deleted file mode 100644 index 94410e02..00000000 --- a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2.js +++ /dev/null @@ -1,19 +0,0 @@ -var dir_5c0377dbe05fe53c77b1bbc0693bb1e2 = -[ - [ "fs", "dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.html", "dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81" ], - [ "string", "dir_780a451f3c62174452e0ed3dbe456aff.html", "dir_780a451f3c62174452e0ed3dbe456aff" ], - [ "endian.h", "endian_8h.html", "endian_8h" ], - [ "Exception.h", "_exception_8h.html", [ - [ "Exception", "classtc_1_1_exception.html", "classtc_1_1_exception" ] - ] ], - [ "fs.h", "fs_8h.html", null ], - [ "Optional.h", "_optional_8h.html", [ - [ "Optional", "classtc_1_1_optional.html", "classtc_1_1_optional" ] - ] ], - [ "SharedPtr.h", "_shared_ptr_8h.html", [ - [ "SharedPtr", "classtc_1_1_shared_ptr.html", "classtc_1_1_shared_ptr" ] - ] ], - [ "string.h", "string_8h.html", null ], - [ "tc.h", "tc_8h.html", null ], - [ "types.h", "types_8h.html", "types_8h" ] -]; \ No newline at end of file diff --git a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.map b/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.map deleted file mode 100644 index 191b9060..00000000 --- a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.md5 b/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.md5 deleted file mode 100644 index dc1beade..00000000 --- a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -a60426b095cb51f91722408f36a3c6bc \ No newline at end of file diff --git a/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.png b/docs/dir_5c0377dbe05fe53c77b1bbc0693bb1e2_dep.png deleted file mode 100644 index 453071945b93a897f71ce2477af515e0e6ed4e18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3093 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%0A%c}5mvPp=M(=4^&chW diff --git a/docs/dir_780a451f3c62174452e0ed3dbe456aff.html b/docs/dir_780a451f3c62174452e0ed3dbe456aff.html deleted file mode 100644 index 983babb0..00000000 --- a/docs/dir_780a451f3c62174452e0ed3dbe456aff.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -libtoolchain: tc/string Directory Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
string Directory Reference
-
-
- - - - - -

-Files

file  transcode.h [code]
 Declaration of functions to transcode between UTF-8/UTF-16/UTF-32.
 
-
-
- - - - diff --git a/docs/dir_780a451f3c62174452e0ed3dbe456aff.js b/docs/dir_780a451f3c62174452e0ed3dbe456aff.js deleted file mode 100644 index 7906628c..00000000 --- a/docs/dir_780a451f3c62174452e0ed3dbe456aff.js +++ /dev/null @@ -1,4 +0,0 @@ -var dir_780a451f3c62174452e0ed3dbe456aff = -[ - [ "transcode.h", "transcode_8h.html", "transcode_8h" ] -]; \ No newline at end of file diff --git a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.html b/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.html deleted file mode 100644 index f9d74371..00000000 --- a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -libtoolchain: tc/fs Directory Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
fs Directory Reference
-
-
-
-Directory dependency graph for fs:
-
-
tc/fs
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  DirectoryInfo.h [code]
 Declaration of tc::fs::DirectoryInfo.
 
file  IFile.h [code]
 Declaration of tc::fs::IFile.
 
file  IFileSystem.h [code]
 Declaration of tc::fs::IFileSystem.
 
file  LocalFileSystem.h [code]
 Declaration of tc::fs::LocalFileSystem.
 
file  Path.h [code]
 Declaration of tc::fs::Path.
 
file  SandboxedIFile.h [code]
 Declaration of tc::fs::SandboxedIFile.
 
file  SandboxedIFileSystem.h [code]
 Declaration of tc::fs::SandboxedIFileSystem.
 
-
-
- - - - diff --git a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.js b/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.js deleted file mode 100644 index a51150a1..00000000 --- a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81.js +++ /dev/null @@ -1,22 +0,0 @@ -var dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81 = -[ - [ "DirectoryInfo.h", "_directory_info_8h.html", [ - [ "DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html", "classtc_1_1fs_1_1_directory_info" ] - ] ], - [ "IFile.h", "_i_file_8h.html", [ - [ "IFile", "classtc_1_1fs_1_1_i_file.html", "classtc_1_1fs_1_1_i_file" ] - ] ], - [ "IFileSystem.h", "_i_file_system_8h.html", "_i_file_system_8h" ], - [ "LocalFileSystem.h", "_local_file_system_8h.html", [ - [ "LocalFileSystem", "classtc_1_1fs_1_1_local_file_system.html", "classtc_1_1fs_1_1_local_file_system" ] - ] ], - [ "Path.h", "_path_8h.html", [ - [ "Path", "classtc_1_1fs_1_1_path.html", "classtc_1_1fs_1_1_path" ] - ] ], - [ "SandboxedIFile.h", "_sandboxed_i_file_8h.html", [ - [ "SandboxedIFile", "classtc_1_1fs_1_1_sandboxed_i_file.html", "classtc_1_1fs_1_1_sandboxed_i_file" ] - ] ], - [ "SandboxedIFileSystem.h", "_sandboxed_i_file_system_8h.html", [ - [ "SandboxedIFileSystem", "classtc_1_1fs_1_1_sandboxed_i_file_system.html", "classtc_1_1fs_1_1_sandboxed_i_file_system" ] - ] ] -]; \ No newline at end of file diff --git a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.map b/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.map deleted file mode 100644 index 190c4ce8..00000000 --- a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.md5 b/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.md5 deleted file mode 100644 index 1ba5167b..00000000 --- a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -6eda6b05766ea754823add9a5df5056c \ No newline at end of file diff --git a/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.png b/docs/dir_f9e05ccca3a5f7bb3eb22bf01a6a9b81_dep.png deleted file mode 100644 index 5d9ec95954b72b3c4506e932f8578f73967a1553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229 zcmeAS@N?(olHy`uVBq!ia0vp^wLo0Y!3HD`d7RY)Qfx`y?k)`fL2$v|<&zm0SeiUt z978JRyuIt6F}Ymk_(%VswO4QUeO1^pQ#&&1WooNO7pvf&h-uwhq^vG@r$0Zq?vcw% z*A~q)hg-@#vSkjf>X4fzcGAi#<9w>7GtWOpZ}w}tyLRr}R=jD6p2~SXr<+|5=3lw5 zfAjh0UA7A=>*6auKM_AP`N~s^KIVmww%In!SpK3#WbTAT!a*fYU49-HIW?^mUDcN$ z3ud_5`M-Pp+Sx`feqH1fRUTg6y`PFdcggi1H#Gbx`{$p7-SUakKRh^i-a}>Gv(mmj zi3z*`oGWan8+44abi0TGZ?i?w9|cS?sb{V^RE0BR+;1bLKEH z%(4HkdhFP~qYn~Trt8-?&zvb=@XTlZS;5{@zlC=uiFC%elz(5oVs&-Z)A?4S$L3mJ zp0?bm-RRff-=0^l?AcxM=JVBq&mUJVcK`Tk-<4gZp*zaoFF*SD_V#>5nRlBlCPs#Y zS806}zqY25dF|TV7jOUa$epj+aW_xK{$B5`TfEzj8@DO#I{umO&p)@ETOs|k%_ra3 z{$3$yrO2(@&K}EyZ|o|S?vt@htoBLPSTudgl!S_koR1YxPX&GXGRMK6-~UDZ;yagb zVum=@Xn+VNZ}%=O-8wsJRYqw^4bT4lAGfYg)~V7lYjRk?dG%`k?5IsEdU|-2C31e& zyRtW&JJ+0%nQ6Q;<>HDpC6dwJ)fkbB)v6A)Ul$k8Kk&Nt^fw9C#z)teK6{o{_%6nN zUHty+>M2bQg-h+LzOWbVl(Cujb(^~;hsed*vu86feEk~Q-QU~iwz2Ya^@>$dy}i=4 z9WHt|rOsP)y?Fe1GDE}4mGKNVe|KK!>*L>0o-dwvXGgbldtc)Jf40EDGCOY4rt~Z5 zW{#NNbm^HsY}wbRC4Ya%Z)j}XziHFeZSKZRMpc!StVtU=V|IVDm6FO5;M&{o@<=O2 zuef~4Etik)YFDcJi*492;n>a1;uB9l73g)_P@HbOY(SZUj#t0cSYN`Bk$bnz z$i(FH^*Oo^HSvE z-Z=SZ&*uEM5#xI6q_O4nC6}^``}P&Dee^WXC+Jie?2u)c zaPm)X*2zUeJbCV=TaTZJI<|mdK II;Vst016F75C8xG diff --git a/docs/doc.png b/docs/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/doxygen.css b/docs/doxygen.css deleted file mode 100644 index 266c8b3a..00000000 --- a/docs/doxygen.css +++ /dev/null @@ -1,1596 +0,0 @@ -/* The standard CSS for doxygen 1.8.14 */ - -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 deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 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 diff --git a/docs/dynsections.js b/docs/dynsections.js deleted file mode 100644 index 537e3e49..00000000 --- a/docs/dynsections.js +++ /dev/null @@ -1,127 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -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 - - - - - - -libtoolchain: tc/endian.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
endian.h File Reference
-
-
- -

Declaration of macros and classes to unwrap primatives in an endian agnostic way. -More...

-
#include <cinttypes>
-
-Include dependency graph for endian.h:
-
-
-
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

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

-Classes

struct  le_uint16_t
 Wrapper that allows accessing a little-endian uint16_t regardless of processor endianness. More...
 
struct  be_uint16_t
 Wrapper that allows accessing a big-endian uint16_t regardless of processor endianness. More...
 
struct  le_uint32_t
 Wrapper that allows accessing a little-endian uint32_t regardless of processor endianness. More...
 
struct  be_uint32_t
 Wrapper that allows accessing a big-endian uint32_t regardless of processor endianness. More...
 
struct  le_uint64_t
 Wrapper that allows accessing a little-endian uint64_t regardless of processor endianness. More...
 
struct  be_uint64_t
 Wrapper that allows accessing a big-endian uint64_t regardless of processor endianness. More...
 
-

Detailed Description

-

Declaration of macros and classes to unwrap primatives in an endian agnostic way.

-
Author
Jack (jakcron)
-
Version
0.1
-
Date
2019/01/15
- -

Definition in file endian.h.

-
-
- - - - diff --git a/docs/endian_8h.js b/docs/endian_8h.js deleted file mode 100644 index f56c6530..00000000 --- a/docs/endian_8h.js +++ /dev/null @@ -1,9 +0,0 @@ -var endian_8h = -[ - [ "le_uint16_t", "structle__uint16__t.html", "structle__uint16__t" ], - [ "be_uint16_t", "structbe__uint16__t.html", "structbe__uint16__t" ], - [ "le_uint32_t", "structle__uint32__t.html", "structle__uint32__t" ], - [ "be_uint32_t", "structbe__uint32__t.html", "structbe__uint32__t" ], - [ "le_uint64_t", "structle__uint64__t.html", "structle__uint64__t" ], - [ "be_uint64_t", "structbe__uint64__t.html", "structbe__uint64__t" ] -]; \ No newline at end of file diff --git a/docs/endian_8h__dep__incl.map b/docs/endian_8h__dep__incl.map deleted file mode 100644 index 2e4eba9d..00000000 --- a/docs/endian_8h__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/endian_8h__dep__incl.md5 b/docs/endian_8h__dep__incl.md5 deleted file mode 100644 index 635be212..00000000 --- a/docs/endian_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -940e66d96a387640fa5462018ef29e7e \ No newline at end of file diff --git a/docs/endian_8h__dep__incl.png b/docs/endian_8h__dep__incl.png deleted file mode 100644 index da85b0f6450b96ded8c4d8ad5d87712ca946b266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93682 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 - diff --git a/docs/endian_8h__incl.md5 b/docs/endian_8h__incl.md5 deleted file mode 100644 index 40c6c23c..00000000 --- a/docs/endian_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5f6f0bcb499799af1201860a9ce8d016 \ No newline at end of file diff --git a/docs/endian_8h__incl.png b/docs/endian_8h__incl.png deleted file mode 100644 index 88d8081d675489087763f060d9192bd47466e986..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2718 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 - - - - - - -libtoolchain: tc/endian.h Source File - - - - - - - - - - - - - - -

-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
endian.h
-
-
-Go to the documentation of this file.
1 
8 #pragma once
9 #include <cinttypes>
10 
11 static inline uint16_t __local_bswap16(uint16_t x) {
12  return ((x << 8) & 0xff00) | ((x >> 8) & 0x00ff);
13 }
14 
15 
16 static inline uint32_t __local_bswap32(uint32_t x) {
17  return ((x << 24) & 0xff000000 ) |
18  ((x << 8) & 0x00ff0000 ) |
19  ((x >> 8) & 0x0000ff00 ) |
20  ((x >> 24) & 0x000000ff );
21 }
22 
23 static inline uint64_t __local_bswap64(uint64_t x)
24 {
25  return (uint64_t)__local_bswap32(x>>32) |
26  ((uint64_t)__local_bswap32(x&0xFFFFFFFF) << 32);
27 }
28 
29 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
30 static inline uint64_t __be_uint64(uint64_t a) { return __local_bswap64(a); }
31 static inline uint32_t __be_uint32(uint32_t a) { return __local_bswap32(a); }
32 static inline uint16_t __be_uint16(uint16_t a) { return __local_bswap16(a); }
33 static inline uint64_t __le_uint64(uint64_t a) { return a; }
34 static inline uint32_t __le_uint32(uint32_t a) { return a; }
35 static inline uint16_t __le_uint16(uint16_t a) { return a; }
36 #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
37 static inline uint64_t __be_uint64(uint64_t a) { return a; }
38 static inline uint32_t __be_uint32(uint32_t a) { return a; }
39 static inline uint16_t __be_uint16(uint16_t a) { return a; }
40 static inline uint64_t __le_uint64(uint64_t a) { return __local_bswap64(a); }
41 static inline uint32_t __le_uint32(uint32_t a) { return __local_bswap32(a); }
42 static inline uint16_t __le_uint16(uint16_t a) { return __local_bswap16(a); }
43 #endif
44 
49 struct le_uint16_t {
50 public:
52  inline uint16_t unwrap() const { return __le_uint16(mVar);}
54  inline void wrap(uint16_t var) { mVar = __le_uint16(var); }
55 private:
56  uint16_t mVar;
57 };
58 
63 struct be_uint16_t {
64 public:
66  inline uint16_t unwrap() const { return __be_uint16(mVar);}
68  inline void wrap(uint16_t var) { mVar = __be_uint16(var); }
69 private:
70  uint16_t mVar;
71 };
72 
77 struct le_uint32_t {
78 public:
80  inline uint32_t unwrap() const { return __le_uint32(mVar);}
82  inline void wrap(uint32_t var) { mVar = __le_uint32(var); }
83 private:
84  uint32_t mVar;
85 };
86 
91 struct be_uint32_t {
92 public:
94  inline uint32_t unwrap() const { return __be_uint32(mVar);}
96  inline void wrap(uint32_t var) { mVar = __be_uint32(var); }
97 private:
98  uint32_t mVar;
99 };
100 
105 struct le_uint64_t {
106 public:
108  inline uint64_t unwrap() const { return __le_uint64(mVar);}
110  inline void wrap(uint64_t var) { mVar = __le_uint64(var); }
111 private:
112  uint64_t mVar;
113 };
114 
119 struct be_uint64_t {
120 public:
122  inline uint64_t unwrap() const { return __be_uint64(mVar);}
124  inline void wrap(uint64_t var) { mVar = __be_uint64(var); }
125 private:
126  uint64_t mVar;
127 };
Wrapper that allows accessing a little-endian uint32_t regardless of processor endianness.
Definition: endian.h:77
-
Wrapper that allows accessing a big-endian uint64_t regardless of processor endianness.
Definition: endian.h:119
-
void wrap(uint32_t var)
Wrap value.
Definition: endian.h:96
-
void wrap(uint32_t var)
Wrap value.
Definition: endian.h:82
-
uint16_t unwrap() const
Unwrap value.
Definition: endian.h:66
-
uint16_t unwrap() const
Unwrap value.
Definition: endian.h:52
-
void wrap(uint16_t var)
Wrap value.
Definition: endian.h:68
-
Wrapper that allows accessing a big-endian uint32_t regardless of processor endianness.
Definition: endian.h:91
-
void wrap(uint64_t var)
Wrap value.
Definition: endian.h:124
-
uint32_t unwrap() const
Unwrap value.
Definition: endian.h:94
-
Wrapper that allows accessing a little-endian uint16_t regardless of processor endianness.
Definition: endian.h:49
-
void wrap(uint64_t var)
Wrap value.
Definition: endian.h:110
-
uint32_t unwrap() const
Unwrap value.
Definition: endian.h:80
-
uint64_t unwrap() const
Unwrap value.
Definition: endian.h:108
-
Wrapper that allows accessing a little-endian uint64_t regardless of processor endianness.
Definition: endian.h:105
-
uint64_t unwrap() const
Unwrap value.
Definition: endian.h:122
-
void wrap(uint16_t var)
Wrap value.
Definition: endian.h:54
-
Wrapper that allows accessing a big-endian uint16_t regardless of processor endianness.
Definition: endian.h:63
-
-
- - - - diff --git a/docs/files.html b/docs/files.html deleted file mode 100644 index 1e114e18..00000000 --- a/docs/files.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -libtoolchain: File List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - - -
  tc
  fs
 DirectoryInfo.hDeclaration of tc::fs::DirectoryInfo
 IFile.hDeclaration of tc::fs::IFile
 IFileSystem.hDeclaration of tc::fs::IFileSystem
 LocalFileSystem.hDeclaration of tc::fs::LocalFileSystem
 Path.hDeclaration of tc::fs::Path
 SandboxedIFile.hDeclaration of tc::fs::SandboxedIFile
 SandboxedIFileSystem.hDeclaration of tc::fs::SandboxedIFileSystem
  string
 transcode.hDeclaration of functions to transcode between UTF-8/UTF-16/UTF-32
 endian.hDeclaration of macros and classes to unwrap primatives in an endian agnostic way
 Exception.hDeclaration of tc::Exception
 fs.hDeclaration of the filesystem library
 Optional.hDeclaration of tc::Optional
 SharedPtr.hDeclaration of tc::SharedPtr
 string.hDeclaration of the string library
 tc.hDeclaration of the libtoolchain namespace
 types.hDeclaration of generic types used by libtoolchain
-
-
-
- - - - diff --git a/docs/files.js b/docs/files.js deleted file mode 100644 index 51968b2e..00000000 --- a/docs/files.js +++ /dev/null @@ -1,4 +0,0 @@ -var files = -[ - [ "tc", "dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html", "dir_5c0377dbe05fe53c77b1bbc0693bb1e2" ] -]; \ No newline at end of file diff --git a/docs/files_dup.js b/docs/files_dup.js deleted file mode 100644 index f970d102..00000000 --- a/docs/files_dup.js +++ /dev/null @@ -1,4 +0,0 @@ -var files_dup = -[ - [ "tc", "dir_5c0377dbe05fe53c77b1bbc0693bb1e2.html", "dir_5c0377dbe05fe53c77b1bbc0693bb1e2" ] -]; \ No newline at end of file diff --git a/docs/folderclosed.png b/docs/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/fs_8h.html b/docs/fs_8h.html deleted file mode 100644 index 97a5dcea..00000000 --- a/docs/fs_8h.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -libtoolchain: tc/fs.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
fs.h File Reference
-
-
- -

Declaration of the filesystem library. -More...

-
#include <tc/types.h>
-#include <tc/Exception.h>
-#include <tc/fs/Path.h>
-#include <tc/fs/DirectoryInfo.h>
-#include <tc/fs/IFile.h>
-#include <tc/fs/IFileSystem.h>
-#include <tc/fs/SandboxedIFile.h>
-#include <tc/fs/SandboxedIFileSystem.h>
-#include <tc/fs/LocalFileSystem.h>
-
-Include dependency graph for fs.h:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 tc::fs
 Namespace of the filesystem library.
 
-

Detailed Description

-

Declaration of the filesystem library.

- -

Definition in file fs.h.

-
-
- - - - diff --git a/docs/fs_8h__dep__incl.map b/docs/fs_8h__dep__incl.map deleted file mode 100644 index 280e8726..00000000 --- a/docs/fs_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/fs_8h__dep__incl.md5 b/docs/fs_8h__dep__incl.md5 deleted file mode 100644 index 604b992a..00000000 --- a/docs/fs_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2dfb047aaff802cc855353f54c075bf2 \ No newline at end of file diff --git a/docs/fs_8h__dep__incl.png b/docs/fs_8h__dep__incl.png deleted file mode 100644 index 556b8d7d9753397985178747db731a9c09304137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1733 zcmV;$20HnPP)|NW+LC2pWqp$ToEJ*H<{+ckA5*QFwoG@uvVoc zhf1Y7d-iPPN=r+B8`js?S5#Ew^Z8m@T1+NWQne)m zWgi^JmzI`(8#XjFR8Uah_xo`imrA8c)s_sDeX6Ug0YIbC004$z4<02zgfW!J7< zTV7r!VthWIP$(1#1ku3&(AU?e*Xs`*I#ga>-re1uaD0cuQB_rS^ytxt4<9n&bNB9D z0BCM*1^}zo+S}WE{rdHWh6azv)7aQZ#Ps*~@7uR8CO8lXT)up{tgP(u z!C)|c{DFaid-v|0J9o}(Hv4=&+I^zw?CjL*_1m^>+rEAK`Sa)V^YbG$DV55YU<|`} zJYF~)7KucM4zh_=h+di3ZK z01OTe?%lgLKKSR)pTS`8!i5X1t*s>`B{elQk@*%)(k28+`uzCu0|1JPi|^mRKQ%Sw zcDrxgx<$CXe*Jp?{{0D$s;Q~z?(SY#SXf$G;_-NVJ|6(=cKi45-;=FBmIUkT)yd7x z&Ck!*Xf$@ay`rKb5C|9yhCm=tSXg-K)F~82eLf%Yo{2#q5Eu*wlgU(HUoV%-FI~E{ ze*Jm?sIRZzvuBS;Buaw~022NE&XXrkbUNLO7cbH>Gy@oo#+;lSi^US@;nr{LhVx-J zoDaKU$R`*?nMsu3@9E2zFVmi;zdxW<3VG@N?S1|FH76%$MHe1LQ&Ur#69NDLg79;5 ztA)Zp=@?wA)kZ6<@S%zJ_FeqY z0E9y5vuC4pr=#7+Zhw!W7yuv$(%d{mcRJdAES4eS5)H$!-ri4MFXc;UO3>@$_4?nw zbrRaHk%_WD|Y;F7`0eve9O`3W3>*UXo6+v1IhNC~(q6vl2rlvuf@>2f(jU?ePs#gCMdD+u5 zv1^xHD%}|AnVt1*+O#pzp{c>Znit1$ne0qk+b{!(xa)0p!}+iq&WGJ_KJ13`VKq^(X{ETrO8C zc`5r$O-;q#lAZ{g%~o1kN-{W&Q1-zv%_cpnmC0lPfTF0; zXxzGWt5hnjs;Y|Y>z<#V->_kWP$(o5979h}&(57YB@)S%D_4>cieK-ne#4K`>5RnO zxN&3m?%iW!W22*^g@uK+wY5aQ*=%lXY$O>R4FIUsYQNv#($WF|UaxocVzgTAYWo+c z`Y03%o6SbFCnhFZTU&{?Mx$9=TqGGB7MGiOiE - - - - - - - - - - - - diff --git a/docs/fs_8h__incl.md5 b/docs/fs_8h__incl.md5 deleted file mode 100644 index d7a78119..00000000 --- a/docs/fs_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3d6ef3576c41d6afe2f3b720bc46dda2 \ No newline at end of file diff --git a/docs/fs_8h__incl.png b/docs/fs_8h__incl.png deleted file mode 100644 index 66ecc402c9801e3b13e20b899e275884bda7f500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76500 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LbG6r3w5*1oJ4MxHj2!<3 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 - - - - - - -libtoolchain: tc/fs.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- - - - diff --git a/docs/functions.html b/docs/functions.html deleted file mode 100644 index 5ddcffae..00000000 --- a/docs/functions.html +++ /dev/null @@ -1,338 +0,0 @@ - - - - - - - -libtoolchain: Class Members - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- c -

- - -

- d -

- - -

- e -

- - -

- g -

- - -

- i -

- - -

- k -

- - -

- l -

- - -

- m -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- u -

- - -

- w -

- - -

- ~ -

-
-
- - - - diff --git a/docs/functions_func.html b/docs/functions_func.html deleted file mode 100644 index 8e091d92..00000000 --- a/docs/functions_func.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - - -libtoolchain: Class Members - Functions - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-  - -

- c -

- - -

- d -

- - -

- e -

- - -

- g -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- u -

- - -

- w -

- - -

- ~ -

-
-
- - - - diff --git a/docs/functions_vars.html b/docs/functions_vars.html deleted file mode 100644 index 8e648640..00000000 --- a/docs/functions_vars.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -libtoolchain: Class Members - Variables - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
- - - - diff --git a/docs/globals.html b/docs/globals.html deleted file mode 100644 index e78c58a6..00000000 --- a/docs/globals.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -libtoolchain: File Members - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
Here is a list of all documented file members with links to the documentation:
-
-
- - - - diff --git a/docs/globals_type.html b/docs/globals_type.html deleted file mode 100644 index 8b8398d7..00000000 --- a/docs/globals_type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -libtoolchain: File Members - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
- - - - diff --git a/docs/graph_legend.html b/docs/graph_legend.html deleted file mode 100644 index 935184f3..00000000 --- a/docs/graph_legend.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -libtoolchain: Graph Legend - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.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 deleted file mode 100644 index a06ed050..00000000 --- a/docs/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/docs/graph_legend.png b/docs/graph_legend.png deleted file mode 100644 index 81788d8b778e11ebf43d6a041820fcaf7ec9a65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19465 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%0Av4SqcN@e|5`jp~UDrU|Bek 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 - - - - - - -libtoolchain: Class Hierarchy - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - -
 Cbe_uint16_tWrapper that allows accessing a big-endian uint16_t regardless of processor endianness
 Cbe_uint32_tWrapper that allows accessing a big-endian uint32_t regardless of processor endianness
 Cbe_uint64_tWrapper that allows accessing a big-endian uint64_t regardless of processor endianness
 Ctc::fs::DirectoryInfoProvides basic info about a directory with-in a FileSystem
 Cexception
 Ctc::ExceptionAn extension of std::exception that allows optionally specifying a module name
 Ctc::fs::IFileAn interface for implementing a basic File handler
 Ctc::fs::SandboxedIFileA wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of the IFile object
 Ctc::fs::IFileSystemAn interface for implementing a basic FileSystem handler
 Ctc::fs::LocalFileSystemAn IFileSystem wrapper around the existing OS FileSystem API
 Ctc::fs::SandboxedIFileSystemA wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem directory tree
 Cle_uint16_tWrapper that allows accessing a little-endian uint16_t regardless of processor endianness
 Cle_uint32_tWrapper that allows accessing a little-endian uint32_t regardless of processor endianness
 Cle_uint64_tWrapper that allows accessing a little-endian uint64_t regardless of processor endianness
 Ctc::Optional< T >A wrapper class, where the existence of the wrapped value is optional
 Ctc::fs::PathRepresents a unicode path for a filesystem
 Ctc::SharedPtr< T >A smart pointer which auto-deletes the embedded ptr when all references are gone
 Ctc::SharedPtr< tc::fs::IFile >
 Ctc::SharedPtr< tc::fs::IFileSystem >
-
-
-
- - - - diff --git a/docs/hierarchy.js b/docs/hierarchy.js deleted file mode 100644 index e8b94c09..00000000 --- a/docs/hierarchy.js +++ /dev/null @@ -1,25 +0,0 @@ -var hierarchy = -[ - [ "be_uint16_t", "structbe__uint16__t.html", null ], - [ "be_uint32_t", "structbe__uint32__t.html", null ], - [ "be_uint64_t", "structbe__uint64__t.html", null ], - [ "tc::fs::DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html", null ], - [ "exception", null, [ - [ "tc::Exception", "classtc_1_1_exception.html", null ] - ] ], - [ "tc::fs::IFile", "classtc_1_1fs_1_1_i_file.html", [ - [ "tc::fs::SandboxedIFile", "classtc_1_1fs_1_1_sandboxed_i_file.html", null ] - ] ], - [ "tc::fs::IFileSystem", "classtc_1_1fs_1_1_i_file_system.html", [ - [ "tc::fs::LocalFileSystem", "classtc_1_1fs_1_1_local_file_system.html", null ], - [ "tc::fs::SandboxedIFileSystem", "classtc_1_1fs_1_1_sandboxed_i_file_system.html", null ] - ] ], - [ "le_uint16_t", "structle__uint16__t.html", null ], - [ "le_uint32_t", "structle__uint32__t.html", null ], - [ "le_uint64_t", "structle__uint64__t.html", null ], - [ "tc::Optional< T >", "classtc_1_1_optional.html", null ], - [ "tc::fs::Path", "classtc_1_1fs_1_1_path.html", null ], - [ "tc::SharedPtr< T >", "classtc_1_1_shared_ptr.html", null ], - [ "tc::SharedPtr< tc::fs::IFile >", "classtc_1_1_shared_ptr.html", null ], - [ "tc::SharedPtr< tc::fs::IFileSystem >", "classtc_1_1_shared_ptr.html", null ] -]; \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 5239e6af..00000000 --- a/docs/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -libtoolchain: libtoolchain - API Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
libtoolchain - API Reference
-
-
-

Notice: This API is currently under development and is subject to change without notice.

-
-
- - - - diff --git a/docs/inherit_graph_0.map b/docs/inherit_graph_0.map deleted file mode 100644 index 65051767..00000000 --- a/docs/inherit_graph_0.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_0.md5 b/docs/inherit_graph_0.md5 deleted file mode 100644 index ccc6498d..00000000 --- a/docs/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -a0ebca7604e35f912c453e05322dd86c \ No newline at end of file diff --git a/docs/inherit_graph_0.png b/docs/inherit_graph_0.png deleted file mode 100644 index fc9834aa8da5f7106fa261e07845132bbc1d6de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1007 zcmV@+kqkR;jP-~aaZCO?#X3PP;P%1XQ4 zo^JN*>+9v^C1Hlc;r;!6tJV7a{G4z)9FD!cy~D%9i;D}t-@mf5A}16sS&DUZbVSp% zR;wK!AAf&;2Y_fay0o-ZRaK={t0yKV1VND8D1PD+W3iJUh~wj9v)N2h)avRg0JOBU z0D!?@h%b10dh&X`Ne5(eb8};3qq(`cv9a;w3CxR{T=Z(b2&$jNk8XZEYPM9?qCOBdKCZTzBM9 zTU#3+)YsQPJUjpZ%d&dCKCytJC^?5((r+{x0id*0Zf)h|{)?8AU?ReyQ{9Q1^}bc$S_R&7vMPV>gwu;?Xg%40PgSarE4m|t4gI(Q52Qv zlCfB+BZnvAJX^loRIXU_9 z@qrNHd46hYO0U0EXBDIW! z$@Bc!*qBbIGZ+jun~mpr$<&ge(gDA3@c$2~Vim+kX|a&y+fWYau6rmi|5WB8dk)3Q zk0|-ft~`bqC}Lrth=qY776uXx-sN)TzmB3nLad&ip8VHQ6cB&=f-f$Vo`r!T76yt~ d7${<4@DH~MyRhSHKvw_&002ovPDHLkV1mlV*$V&w diff --git a/docs/inherit_graph_1.map b/docs/inherit_graph_1.map deleted file mode 100644 index 6efba562..00000000 --- a/docs/inherit_graph_1.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_1.md5 b/docs/inherit_graph_1.md5 deleted file mode 100644 index 1b376327..00000000 --- a/docs/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -2c20bdb4d7292eae7ca9d2c5971d6c79 \ No newline at end of file diff --git a/docs/inherit_graph_1.png b/docs/inherit_graph_1.png deleted file mode 100644 index 256f27dcb9b97afbbc762c6ae2c765e1ca22f4b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 zcmV-N1i1T&P)3plY@P@LE}J3CuhS^23{@({gVuTUuB z&A(0-K@c{ZE$1oaDK?vpAc#ay@y9_{t2I~o(* zL?RN2G#X7X7|bRVTk=9Ip-^ZtnNsz>zrP0pfp~L$eSL3lZ+Cas>2wMNg2BN-0O;=S zzPr0SIy!PV9DzVUtJP)`iZxUMX0tiT^AQ}!0bqN3ySBDgEEW$94Lv_UQxrv#q|s=s zs;c7i`NPA*udlCZrYG5nP5{{1*=cHOLQ!;nex9Nzkw^pp7>3aUIy*ZT78Ypx{QSJU zyqqM-qN1XclM~wMa5#889^>jsq0$2YX0!P(Phul`v07VO-EOzT;gHE>larGaMVU;d zuC6YEAY3k2b93|P=xCbhNp_N0DwQe}3TytH0DwWbkLqmh#?*{;a zATSI=5ClPxwzf8(&zDUFVDw8Q5&$SJX806~V=x%}e!ohk(r7fa$7Zw1gs9$kVqsrj?=$DC={~W?P;dRVle=?zrSbB=~ud}1_lPM zuC4$8!!WH@dwF>Y0IRF3Gcz;$`}-Rk8v=pgQ+vwHC&e-t3?7fi>2w;6#@^mu0O;xI z85lB`6$(XZX=(h}s@3X>iVC4ns8*}}e*fv|Y5IM| zNeY!7_&!Zq<5KFCA=RS{u0QuPqzOdkG77IABSip(J0!}Oz`~eupkq^5^GsOS^ N002ovPDHLkV1hiA_niO$ diff --git a/docs/inherit_graph_10.map b/docs/inherit_graph_10.map deleted file mode 100644 index c2c39228..00000000 --- a/docs/inherit_graph_10.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_10.md5 b/docs/inherit_graph_10.md5 deleted file mode 100644 index db1bddb0..00000000 --- a/docs/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -5b0e322bbf8dfd5fb309e6ce9161776f \ No newline at end of file diff --git a/docs/inherit_graph_10.png b/docs/inherit_graph_10.png deleted file mode 100644 index c9c5b753e186e493940c64e6b5937f4f21f24999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1073 zcmV-11kU@3P)85m*^rv^y?6M$Rh0zC<>yD=weBA&`K&&upjD*CARxHEG+ZYbj-p}Uq16XJu}RE z=b87;KD&+rmSusEm7>3$!2bZ^5gy_Z9^w%mA=;oQYJPtHZ>92k(CKvJ0nDT+dSgz1AeH#ZBF&u?U4U?8Q3)FV8^BRs?-Jj5eB1@*{mHcO?_ zJcI%SsZ^@h>-~Oz?pmMEm&c?$U-szc=0+xyDMFj$Z$H&M0 z{rzMzIXF1@;~8e+lXri17={UjLV3*e`ufT+OnrTQ9$Em9$z*c58~|!+YL=Iml}cqa z8m+9X{J{(}@#THg-rf!XwY9YX@bU36H8rJDsj921hlhv5;V?JG=ko~!f|M8)0)Wfq z(rUG3Wn~Qw4K|xCi!hzy;$i?uCX)c*bUIsFTFT4IRVtO$YE7RA0QUCwnwpv<63O)R z^jFsl0Kg(_Y;2_Tq~rB^`7v{Ib6Ty|xPTSMdL(}y3_BH^7LZR#nG#Cs9g8}XNmPZE)9K7n7!HR^OG~X* zD`yQ&(+tC8(V{n1EEackbX;Fwvn-oPB(AQmxQiSe9RYyX>rMCQ;NXB|S%zV_0ofOr z?$Nj2Ykt4Kv9XbhH5yHCZ*Pvms;a8P!^4x46O~HU-Q9h9dYb96;^Ei!{{FtZyQ@~K z0YD@Y`Tc&qUa!;XR##UuX%z|u0AQ!c#J4NF@6D`pjlCMNtb23z>%H?G8tt9?>)n07FAV6B832kLTjzVr*=T z_bU>K@OKrBQ93(2Z8lpl7z~9%MMXtou{cK|N-P$O$KyhwFdmOjPEGE-1mz4Y*LN|~_R?P|5Uq@<*|xp`-2CyS7) zDVgfX?Ch*WB2lZ=OG`^8lSwX@qZy`Xvs{NKy&efzq#`;T4x`b?{@eeQaAzav0TKDV zhKG2Bhj@gCc!Y;|gok*9hj@hNlk+2o!%_G=eh>He_jPr3XwN4e8I8t5QMc1O00000NkvXXu0mjf#-aw~ diff --git a/docs/inherit_graph_11.map b/docs/inherit_graph_11.map deleted file mode 100644 index 15993fcc..00000000 --- a/docs/inherit_graph_11.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_11.md5 b/docs/inherit_graph_11.md5 deleted file mode 100644 index 99499953..00000000 --- a/docs/inherit_graph_11.md5 +++ /dev/null @@ -1 +0,0 @@ -91c69bf967ea8140c23ee07249d4538f \ No newline at end of file diff --git a/docs/inherit_graph_11.png b/docs/inherit_graph_11.png deleted file mode 100644 index cba06915a62414404c2b9b362dcaa7973175f349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1541 zcmV+g2KxDlP)#Kgq8w{%IFn3&M(^+XTiA2dEbeqQ}tY8VWLkB7c9CKFL6xPUnB)g+NewWHK3p43$cC z`cC`_T8!=OZ4^aAD`v4+Zr{GWyu94n+Pb>B`s~@W;o)J4MB?#yj;+OFv7SDC8d}|u z$<56*7z_r3L8(*%01W>j5D3ns9!@|ellgf3(Q38F#{3No!|vR<<955f9;?;LAd|_6o}hPzNF)LP#Kpw{0Nif3R4PqOOk}g!ckkXco6RtWcoY!r zp`oG1#>TL)KSd)VA}|aa8XAIOGcz*+fq>0sS65d%91dbFVji>EeDB^p6h#vf5-<#N zI2-@~27@s*HI~G(`9Xo3u=I7@*98P_G{r2{D;HC2c`0b2SiII|$ zGCe&F?T;Tn%H{F^1C2%_sTgnGyg^YErd6xe-cI;@KB*WkmkU9VwY4?qm&@gRJ|E6) zad8m_006XFt<&lJ^y!n;YQ=F}p-@04F{j;b9~>Oa$jC@bOY80JwOA}CnYBM(zkZcU zr3ncMIXO9Vb8{Y#C%`&*`Nv`~nM{pFbCSZ4xVX6a`FS5_Pft&Fb~a3Fx7(rf!-o${ zCX-Z*y}dnRq*|?JGMR908yg$md1|#<9LHy8XC)GeNF=JPtn?8BzR?vG74P1?JGS$a z+!-#HYkYh>Gc)trwQG94{@9%UVw~#JmdoYt?Cd~WrBXFFHwTU{DJf}cY9f9+9UdOG zwzd`&6u`&L%}r=*Y;173T+$>Q4hKPyt*tHisMG1<E1?(**)SRaF%XsHv&Z>2xbA zD-8_|B_$=qT3!$YDJm*@^ytyf&d%D}+KU%2N=r*go3vW3Hk%DW5Sz{R^5shaz^`Aw zygyA%O-_wDkx1n6c$SuyMn^|uVq!u_ z74$K6baW&Zi=(2Va2$6y92kbh$H%i+tm5KgqtWQUseLxM)oQJ)s}l-^k&%%%Zro^Y zZnoKM-mrmz0UnQsqUghi5AAk4u@*6p(P%6$FOQ9l<#M@Co;-0l95~@e3927__s%9UV8AqdIeghGQVVnjzrKX~xqqPw_Y zs3Hc6qTSuy7v04LLlrS-04)Zkpv9mNv=|hE diff --git a/docs/inherit_graph_12.map b/docs/inherit_graph_12.map deleted file mode 100644 index c779af58..00000000 --- a/docs/inherit_graph_12.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_12.md5 b/docs/inherit_graph_12.md5 deleted file mode 100644 index 23afd1ab..00000000 --- a/docs/inherit_graph_12.md5 +++ /dev/null @@ -1 +0,0 @@ -dbe77b9ef39c9c932b7da185555cdd6d \ No newline at end of file diff --git a/docs/inherit_graph_12.png b/docs/inherit_graph_12.png deleted file mode 100644 index abf292263c32750c4f4b727437f9d902af9dc73b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1638 zcmV-s2ATPZP)z^zumKtga<@Uli;hTz*YB5-d zg7j{IRI3-GlwPzqQDOEX$rmA&)7-)rks0;}=C!0?Y|Ns&%r@HE0*RNk|G#Y3F0BD-d&g}xAXeIt9Cno^_kw|1Y%SoMOr7#!_ z27^J|v*h!n)9C;Jn>K9%0L;zJwYIiuG@8P~!iI*1>FH@W24x$GO_JoDJ9on2Fl^S; z)O`8!1$iDC8Y(R2y|9R4A27jYf0p)-B}i#ful)wrz8{TpY()t=6KV zq7551n9b%yA|VJudwY9XS=sva>-Bp5@bGZjRjgUF1^~cuoOn4B=aN^xfBznf#g@8V z*}atpv1m&@PuH$pD=#nidc7Wxr@Fe@VzI#f>FMdackia!6h&25Rw|XsLx&FCym>Pi z3?jDxfFnnauq^9vINz3O#x9Wb4+g;Lmw-yWK3y&dkjC{r(dtPVC>mU$PvD za}?X?=xAeOV_{)oC=^nAU$}5#e0+T2jTMu6o|dIkNlD4$$B&^sHa6yT zIv0(A=lOT<-q~!nJ$v@# zcs%eetyar0473La2P-QpOG--a-MfdT>+0%4Iw97sU3=ibfzO{m3+Z%1&g1cTS65ec zb#+x$RYymMSh)rEB$aR9zO}Zt78Mm8J$m%nvu8ZdFS<)BtW$1ouGi~bbXG_-8tv}x zo|~IPJuv#;aRBh?(-D0Z+S=M=GKrd~j6o8K#Ia+?nwy&`in@LKw)l}kp+Etk-4BPuBO@cl z#l_-lv3R-+fzAsG3d+jLhKGk;E*C1O%VBD2%IEV1gTcLf_e%b}G9gQySe69<)YsQr ztyZts>+|`{W;4<(5{Yznc1rBLyuAAQdZW?!^yyQYrX3E)xpU{>4wVBOki^bC4-#;}qH83!6>C&almm{X4qGD)h z$l-8&{P=yJ&`_<~>3X)!3e% z9;4AH;Qv5Mhad<%&%+CS=5QQ`vUKLa-!;TPFyZfenL-f6QbhuyQo2mAPVxZjBoDAo z@&M~353o-10P7?V(%c$*dU{qr4vd&!FbKc&Bhu((G#Xbc9?ZNL3m(0;0V-PSec}IT4*&oF07*qoM6N<$f(&Fj%K!iX diff --git a/docs/inherit_graph_13.map b/docs/inherit_graph_13.map deleted file mode 100644 index c847c4be..00000000 --- a/docs/inherit_graph_13.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_13.md5 b/docs/inherit_graph_13.md5 deleted file mode 100644 index 9eb3cb53..00000000 --- a/docs/inherit_graph_13.md5 +++ /dev/null @@ -1 +0,0 @@ -ad12fc11171be55d807e01a9455079f0 \ No newline at end of file diff --git a/docs/inherit_graph_13.png b/docs/inherit_graph_13.png deleted file mode 100644 index 0d669e4651b09ecc862c002c5225049d21a5f982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcmV+d2>thoP)`~S1cCG>2y-wqSNVQu~?{m z3?7en@ZiCrp&`nf`+Lk=r@_HNKA#_3V<%6Z?C|I&qqVh_kQ0f+;h43|pWyL$uV25$9(#IvL?RKI z1^_r5j@Zmb0rQq%e`I6?05CBz5l?sGsT&=ILZMJ7@Hz9IPcoSd0FaT90RRYx!&OyP zB9SO9Ev=-aWPE%aErYE#gfy4Sy?OJd*Xus|m`tWnD5TM7ghJu!)vL?P%crNO5d^8Nt(_^ehcUANfc^XT`+Pow!GI3R#Kc5WQc_u2 z*~rL9b8|BQ;Kz?2XzP3T?rm*t_4#}{olc=pxLhu))tZ-=cjnBQnwlDcKwvZ)-EQ~e z$B);qUl0D9PZo>C=krZYPCA{=BS((x*s+7q9fEPpxBmYA($dnjv^2NdP1R6DCvrZ; zrBh~RW_x=(ntuQOz0qi#)dLuY-@bjT)9JQu-I|n?)Y8)OuO9%seEAYB003|}9MjX& zA3l8W`~3)lpwq(PaG{~ zRaFUv!hih$;PdCtSQ_0+Iy*ZH3JPR0Sy@>bUZlpSwYsCD!{hOEc6MI4aAEGUHbZak*TTO7-*SPqa+rVuIDZc=2L(c6Lfi%BD@5 zG#bs+)D-#(;MOH9t<&kaT&`FwuB)q4sZ;`ifN&HJ27?t973t~eJRYy4q{Qd*!7yA~ zTPu}HSFBjEefxIw*oORh-NSe1Pv>l}*L&^SwauG14-E}bH5Ac_T=!TAZjZfp@19br zM3^s-$UqPThGFzT|F=Qo8u$PcbH6uNSS;4Uh(rpb6Fp#bq6dsl^dRv%Ra8{)c)S=Y z;zJ=UGO+u!xGvTf2PEIIEF|B*f7k2v_}kc+fgngM7UOf+Z1%Zx=i;}#7)Y>AUauF1 zVWChMzbQVSFAxX_nL3>=e#?u21h0Ge&;S6Sy}cd#72MR+gl5JZ8Xzqk84AI_jSOBa z5)!PF*=z;?xZQ35fZy*|DwXJ^%lY%?j~_q&>(?&;0H4pVudheTpn9IEpwcxK(#>dB(FJG?L>(N*S zdI=PzF8KYbiNK>rk1*r-Rw6?o1he11eM2wu4;(n~^y$;+KKvypzAvYiRjXFLdiAQW zuTLZr?b);E&6_v#I;0VCLK;ZW6+a8anw6t{h?%i1QnnEH&A*97T9*^B_A08gwwrv|B z%9Rinkxl@B!otF)rY4WaGd4E1WXY1`vl)%}VEi_pghHW0p;%a#7)X%GWOBJ2pTqh;-#*X?W`Cjwj861` g(TN@~I?;oF0A*dRbr_AhLjV8(07*qoM6N<$f~ZvVApigX diff --git a/docs/inherit_graph_14.map b/docs/inherit_graph_14.map deleted file mode 100644 index 7b2406de..00000000 --- a/docs/inherit_graph_14.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_14.md5 b/docs/inherit_graph_14.md5 deleted file mode 100644 index 4244a8f9..00000000 --- a/docs/inherit_graph_14.md5 +++ /dev/null @@ -1 +0,0 @@ -1632e9680eb817aec46a6ddb118e7bc8 \ No newline at end of file diff --git a/docs/inherit_graph_14.png b/docs/inherit_graph_14.png deleted file mode 100644 index eeaa9b0b7f7986fdfa50a5483cbe1957ec39b925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2329 zcmV+!3Fh{RP)VKJ1f zKcXp8tpY2>Ka?OU)Sx7V)R{kWnnYxVnV{3GXgIWJrsmI)n(haidbj)e<9xoC+wR?* z+p^F6-q&B}9?v&0UiG!lgaMh zz5BOZp}@oA@h)AuggySYpN5BrpFMlF>@HE5)7jZ6lgaQkbYi30+S=vvhk~4>q$IN% z>V9$!D4kpbN+;KV(#bVgR-JS@-L-4iwr$(SU@(G%gR`@<4F&`J6OBge@9%fI#s2<& z8jS|W$6&Eo2?+^9LqkqC_vcu$P6Go2zP`Tp8B0%3@9yrdtE>C*<3~wJNn>N9SS+@0 zC_9kJWD^q;fO%^+{^;l^06?u)J2D+d`dWw2=kxh|e9e;g6PL>c00aaC004|e zV@^&^U|^u1pI=H!%IxecY=fOPW@RRm`RLK3nVA{*7#kZqI5>!n+|tq#8XC%EGIMit zVNHE~eMCeAgTV+43@j`x#72Aj_U+cKTie^)5d_J~%3`zG>({RriA3}B^C*fI6%~br zg{@t?mdE3Dbaar;V)g3P000C*@Y69H+^oywvOxF~A1 z+Re=^EiG+ybW|dd005?^r=j&@$BtE3S8KJ}{QP`ApFcc2+|$z&6%}>m%9VnG0)K!1 z`uh6u@$r{0UvAm51^jP6$>nmbR;$ry`uqD&pFSNO9c?xpv%xXny1TnmQ&au?{Km(} zowXF!A?_!KbP5RxX=rGG<-WeY`uh4sJusO}A3uJ~&(Ghzd$*gLTUAxnzkUGl?%g}s z005v=D(C0tzkKj;dNSASil^>3&3PD84QM8 zF2_vB<#IrFKaoxcKlqzBZ~XoJQ&Uslzkl!arC1av+)sEmZQ6ugFmky(FE7tZW0T1w z5C{|s1y&Om7q_smfIXU>-ShMFr%s*9%*>R@WDg!Z!2gL(r(+Iat3NX{)7ja{;c%cf z5WG1XfrI<{`i6ytb#!#Jx3^;#suh;B6n0>zPFk%N03Z|!v$C=j3Po>kuSg`q9965; zB_$D+Z!JrUrEs$vI=Kdv zPOgEYI%Q^NvREuTI^q)$dbwPfs5l9IUIWW3$^X`(9nQ=!&X#Oz)HIV`=pJDi40&lU6PTJ zaqiqXSgF(Lyu7?VfBsDBr`beEt01fm%+Nw6(SQ z`1l|Qf}*HIBH6WTmnA>V_7kZU06=15qDG^Ev7dy51dT>hTwDwQn3|fxFAI#}!hn|T zi;2ex@p3%)>CMj0u359Du&@xy14B4g`kLuv#)}s(NOdA6GGLiBU1BsE0|EkCT3S#P zjgODNefzd0Kh1O^wE_TWYimPM6vmG6W#XYdHZ}&c0VhwMeEs^h^`#*42X#VG^uvb_ zLZQ&d$LHwLqphv2*876R?k7^6h=~mA>5_{VFN#E>$;n9%50ByDVM~6RO@wI0io>MN zLlzbmYHMp_V`F#h*nwHM1t;H6cnk)EUav1JD^sadsi~<)jvT>q&rXDx$grL+NlHqR zN~JY5HT(DPhq+x_{3Kej&s&vB)!W-UGBUDf&mJ@Fmx?pLa}OUrTv1V>QmG~#0FWgztfxz2V`Gg*V{UG)P$;zSC%|Plh*p;5B#NTV&CQ94iCiw%WHPn4 zw?BRQbi;-Xj!fK{=bl6&;cz$}9v(Y)?tK3IIk64C4D34hh=~l;YPtkP(F+$YFc=KA zT5ZKoe1^i36-y2iov*8_7e`si`{}@e15;B| zf7=V^u#)%FN`lhKHK25I4Je&l1CsX$;y+tcEHj;*oiNpc@!Ni4v)Oz;e|cS^Ac4!} z@_0Oa4Q+)*A66>V{p1=@I=KdvPObr^lWXt~P~MdIf#38M00000NkvXXu0mjfdy9D0 diff --git a/docs/inherit_graph_2.map b/docs/inherit_graph_2.map deleted file mode 100644 index 7e85dce7..00000000 --- a/docs/inherit_graph_2.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_2.md5 b/docs/inherit_graph_2.md5 deleted file mode 100644 index 09b26583..00000000 --- a/docs/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -ca7785ccf4cb411b2d0213cef99ed21a \ No newline at end of file diff --git a/docs/inherit_graph_2.png b/docs/inherit_graph_2.png deleted file mode 100644 index fd90afd2ff24defa10b13ae8c72c23b58dc38485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmV+}1kwA6P)Ct@=9!we_cZ0rZ*}gu z_ntZT@4aW{q68rXBAM~)rxPe7M6oas#lk=o3xgtIgiz@L0K47( zhez1RT&%XXHoxD0c6O%GXy)hV5keM=rK_upVHl6c)6&v1Gc%KBdV-xGR(E%IC={|< ztpM=&_$cgUSym#Etgo-D)#|dcvf<(3P$+~D+S}XHYPByfFX_b+hWe6!CYHzJ;hPSJ zqo$??A*9i0?(gq;=fS~&R;&Fo-Be;79UUQrIF932F6`y+ADx|@G);TG-qzOEk&%&` zn;Vr%b#-;cPtTrMNv=DYP*+#S8x0K&cXxLHz%YzLp@0zWu>E|!{_svOeU2|6^TRuAQFkNEL&V$jJv2W`DTIl`~AG(^ZBZ) zs{uf%RK|bOP$=YfyVFd6e}4yn+uPgZIsHnR6-7}bNwO>(k5f`oa(a3?IXNknN~KaM z0BE(^g@uK0E$a)uDc1D#bRZBoKR-8{&4Yu30MOsxZ!(#J!QkcPWqW)3#>Pg{i3C9a zz|PLj^Ye46F-ZxB!@My%IyyEsM$`1g#l`IGY+qj=$8o~5L(}x?>S`vTuo0fg%xjj@ z=~S!LGMQ{@YKnjH#bPmo!JtqmD2f^y8VZNQsUj>cE)oP$Uthn!zYoc3R(yx@_S@T= zPN$PfrMxp1i|O@xxm;dZS!pyHW3gC5p-EG-5<;a1{=UHfKYSJ|FFr~Og>SwMGa=P= z59Q>a%4|G6i(=(Qlw3YtJcbyEVqqYPg@Gs*21yFM!{Nw%9tA-Xv3h!Xa-T;*Aob^rhX07*qoM6N<$f-^z+w*UYD diff --git a/docs/inherit_graph_3.map b/docs/inherit_graph_3.map deleted file mode 100644 index 1a73ebc9..00000000 --- a/docs/inherit_graph_3.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_3.md5 b/docs/inherit_graph_3.md5 deleted file mode 100644 index faa97bcb..00000000 --- a/docs/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -8471e56b9278113b0271576fd0fb487b \ No newline at end of file diff --git a/docs/inherit_graph_3.png b/docs/inherit_graph_3.png deleted file mode 100644 index e571de04b3d6108a34047f4db4362fa32fb94129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)}r%hsGAT-9rBcagNGoZFakS-P;^Ks z3Az*!(xu-AK_dt{Xi~QbI&=y2&`k=0jXf+Kw88}?WYP9L2+O{@>$9u1F7bR$`^+=X z%5MY52V1W=|fe>gG==Jrragw#bPsRCd zI@UoHMXj%|EA282)8F4;XXJT)U|>LMIX*sixm+Yk&dtqzeSN79rJjxn)YsP+iA0ok zzrVjfK0d@{u~Y{VzG;hi-(7YmzS5Vtt~a7w9=M9l}cq}V`FG& z$YQZ9FE8^vFY6|Ko5W|Sksyext1GwLO;ObL_BH^FkB zH3Go&^fbqD@pv2nK0iODyRvb3o+k+6@bJ*-bXqKy`T2Q{WktFH&`vIU(C?NfFxtt&f_xJa=x3}qZnqin=FxYbT zCdgbh)Wfo@&1Msq6h$GA2ns)7IvfrFFqzcW)6>%f0MTgFYPABu&d$!n#DvPTnrN$o z91aIf)3sLQI4+aPG;yw0s{ru!_9kCPm$pjGW-~=m;?%2FtKHq*nj)yAErDidXT#wz z!!Xa!&t9+h=;%n+jU-6`I6prx7K=(gvXn}tCc6s@3xPm@rs=1rr?s^;pU>BFsAfn9 zlGY(zE|*tUR%|w#*=+Xv{iRY#>D1=tCP|XR!^1Z>Hy}5p#ZIg}S1J{c$J5)}tCYHy zeQ|NoYPH(!_E0EPE|+Cf%Z5?{8iurHf&Mm)0^z$Dg0{Y5jVN8O1YQ1p`;F{BERa4z z=$ReAVhFH62(Um1us{f8hIBHS)V~hHA|ueu%#8kZ7#5 - - diff --git a/docs/inherit_graph_4.md5 b/docs/inherit_graph_4.md5 deleted file mode 100644 index a88edced..00000000 --- a/docs/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -cf0f0c31f172d62b7e98d08c452d7660 \ No newline at end of file diff --git a/docs/inherit_graph_4.png b/docs/inherit_graph_4.png deleted file mode 100644 index 2e5b3e66f5cb04635d703716419b9af60bf86015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmV;<12O!GP)|P!O?{BK{$K5D6tp1zRXKgPO*CL-;~%)1LLGEg$zxckf;9 z-g~&bC6rJU1u)quD|P~<4i0If{+?9WKP=N-Y!%=B?mzeX%Sq55MV(Fupk6j5Q4k~-QC?~Ru~_Ug zOXW+^1X(N=pU;;r$sX1I8K`*Nz%l`M16g|$z&QD8hU+wMLwdnQ-c7ov$NCE(n6Bt z+}xa^C|0W#04R!5CvgsAqlFG}=PfkwMU@#ao8jZTUr!AEm0Py?$ zA0nxpd8(5V6)lsKLMI=38HD5<2coHJRT1O z0y!qjvJ3zZ4-fizl;z4~U|`_t>IwiTigLT%mzS3Su(Gl;Jw3g@zrVh|ZZ@00evF)a zOHglb@95|#&-1spw+@G6b#+yD8cC7>u(`RJNF=h&(M1$Rwej}$Ha0dE3WY8%E*2IR z+S=L@iNxgO~L?V&X)6?8%(MVe=H}L%;{eP1w z2!D$q$n~r71+sl!DFylW?KgJ+VL^ovQOMo#D~13ILVyJ!z=9Cy6zQ$4t-|L~vgin6 w7^d)flq^JXf0#=jT!Ro`K?txQ1XvJ)zxh&M8kU=kX8-^I07*qoM6N<$f-$bX@Bjb+ diff --git a/docs/inherit_graph_5.map b/docs/inherit_graph_5.map deleted file mode 100644 index 84a52459..00000000 --- a/docs/inherit_graph_5.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_5.md5 b/docs/inherit_graph_5.md5 deleted file mode 100644 index 7f5cd864..00000000 --- a/docs/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -20eb6f95c210092b99d5552aac3b171d \ No newline at end of file diff --git a/docs/inherit_graph_5.png b/docs/inherit_graph_5.png deleted file mode 100644 index 4b99d0c7416fa6c1e006dcf0e813c753af7e2742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmV;t14I0YP)1SpGXnJKoVbQEOrwG9fEG1`~w_x5Z@3~5J5#K zMT_X7f^-lBbrI|&I8^K4;-Z6tV4X#!a`;LSP=N?gfe1Lvjgym;<>loCaVAX%2f z;c(tlDk8$+uq?}Fk0W!?&dyH0@+mqPhDr0#8bp8!M1TrJfC@w)XMtj|SY{>r2EP^O zuPN9G;(300dfKix9*ua9pW3kxRL*+!l1gfm8 z3_b@bF;nRaKQ?n3a{4y1KfGii*L(K}At8#(R5vk|e#nykr;1 z9E!*<3shfUe|LAM+Xn{+k|YtQ*a>uWbc8Y1G)>>FxmW-0-_g;55Q;{lt*xy?Lqj(= zH*UB4^72xj{&xadTs6LqEX$%O8cm+(iBqu6511~O3jiDri+sw<%K>10eckDF0>I+p zVtaf0)zy{X?{~Z1$z&1$lF6j1s->l+-`YnuepIAgE|>AqDT)$_M6wKie}4yn+uK{~ zJW6ac5d?wfc~w=7IAvvJr>CbA6B8`UvMdV#k|fQ}&VGL<_WVeozP>)c-ye_1FD@?H z+S*oES1pHe90vfKo10HhPj+K0NhA`wF+4mxGBSb?IzK<3nwskE?bS5R{9GV}mX?;j z5-MlR&s(lFD3wZiy - - diff --git a/docs/inherit_graph_6.md5 b/docs/inherit_graph_6.md5 deleted file mode 100644 index 8e0ca786..00000000 --- a/docs/inherit_graph_6.md5 +++ /dev/null @@ -1 +0,0 @@ -044e7896ee43aaec57ea867f43bbb089 \ No newline at end of file diff --git a/docs/inherit_graph_6.png b/docs/inherit_graph_6.png deleted file mode 100644 index d32ffbb1861cfd06a2bba5b3ad985fa199a52088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3341 zcmV+o4f67dP)Px>$4Nv%RCodHT?LGkyAz)~++FX0;O-vWdBGhXe#i?XxFt9Q2ohYv!#xCthr0%O z$RWWcz~Sz8(Et4ArThQb+uPe?kK0}7B)4DNnYQyyXWHqsANVN-GGHWNB;f55*yr!< z92)+N1dIg!lYlW+qX|X=J|Y2QtUfYOhD{>@W2{C8j0Ai{0x|9ReEs@0g@lCI7n{6` z5=fUW9VJVa%tdPNBJ0qh1HF0k#=DsMO}Uvre?BEjl<2#+53{m<`t*q&KYsijk;%9w zfu~QO(uWTpTqE{Es*M{r(v2H8ypXfshb7qF>eZ_Wc4!Y_R#r`rCr=)oG*1^LaOB7l z7b(4$tYgQH)TK)o?`7~8=WO4;eN?$}WruGWW@U9qWeSZ1j08L`0b{Hl9|FUGk$`Iw zFvjYdoD7wbfX5|ZjMd{qU>GnGa7_Z?2AEu{?tN76-@m7?U%yJ&`|8!J)T2iaTC`{p zrAd><`XDcI?=MW0bRJ&(gGM(|%@`5w`uy87rchP@)YRHi*$e3BG;%7NH=bli=C2 zxAf0H!L(}CzZ4vNhbNN6K5490S-T^@UAuNs_UzfIP@zI$nu!%FR+zHrC`g?;wM_CY zTeg&A6mK|^i!x)yWr_J)~0AD8-OQl^D||NecMtx~2;DKxil-=>Qf zFH-U1#Yvax!MJ<(E&*SlKmkgeII$Fe{`{HHE>_CRmoL-HmoKSEks{LOvuDrf-Me>k z)`@;{Rk8|hF5iT!4IsE+m1c!?tDN>}Mj~_qM`Sa%~Yu2p7x2>X^ ziFfZl(Y9^pnV)~@$dPN(um0ZY+c)3)@X21*>C>kd357SFI5+h7_b2E9KJ^c8%>j~|~-oH#+y5$Frx&Ye4gd-(97toUu)wxwpxnh6d+nEavZ;46Rr z{FEU>2EpMSA3S(K88c?2Teofz>Z8wu2@~4tx|P5ua#r9&S;c2P)}jd0OP4NH{L+dC z0$Qi4SFf(vh}5A&hZGNx8Zcmhv~l?GVabmhH%{_{2M<;}2#NIY=FAbCt3P{7Qyn@iR2eh& zQ2_zHRA69ll`dV+@BRuD7-FmA$plYUYSye-F0o)QYg7tvJb~j|T{1pM@7}#zdWBuUih(W52p=%-h&UZMlXj~^E_@^RzFRXoWnzKEhQjupWo1xY<#RizGe7rNTJcW+g!STVspfBsxmtXNU> z2=4?Myf;AWTmAa=g(}LFd2gtA z6;+omT~fU2slI*tO1u60_ZP-txIA+y7#R%m;K75!6z@qSzhcD-$z!6JIB}u~chja# zif2SMckW!l@eHW6v9@T@Lb1E6u3fvPAlz21T1kH>uUD_0q_yy1tS}@9Z{fm)f^I9Gqr$KAUj>cD|3s%Os?Dr?sMY?QrJh74g1)M~K4 zXsnQlRo2eN6STvI4O8pauSZhG40@p_Q5Y+)P+~wZBK@Zgm|ajYtbF(+@| z!m|mn;qvu(%T2w{I7h7=%NI4yAbU;!(D2*{FT{_OyKYa;YEQ4=W0>QV_4$ zLV|kWdC#6bwkkZc5*w)G8#iuDLxv2o;UY?$K7E@OEC^;7cQd_y{gGnEj6tEHU!@w) zH%_a+fB%{O`fIUMn&?3K`{(@OZk&xL8XZ1-xUFr-o>wee9tpU|2cqCj((u;wQJWVHhMv$9xqIyM|JAdkutQCG-*=eg-P6CZ5NK( zi%gl@#)>@(pmpok-}M_97$|w{OMqinm}=ChVcXAQUx1*36|~^cCIUmeLfX)HdA+|x zp%xa>2nMj*fMmFU{;)^Y3IIavTXCOP1KQDmi2(Z?1FlKH*?79rLZe2F!ril?KD(hZ ze(d>Br%s(j7qEBaZHH~I2|7&n*ki)z0JCS$rp1f@KM_JNv0nz*N13s2b#^aa_lFpX z71+IYsz=yUM+LZTtWbE&hzJttuLMq=Iwe6MFo;29cZPE2%t>q3tRY1HF!Lcmgfs*I z1H$GUvt{SbokidXQen2%fEkqc9}-kT83IV!VA=h&O#+(U{t1Dyiy?snZS>$%2g5+G z%kAsBk}pyu69okoq7ftN)6JXjXx+M#w0ZMcp4GqbD(i1sWgWE@KYncb`|q}nP|;ep zc5R;@?$6nH!qD6W-U<=M3lls%FHHOhI>Nx9dm4COD@QHtx=PWMDN{Jo-b&IiM0TS^ z7f}Em(ts0$GiT0F)v8r>QJ5$66#XGUsR02^tkk*>lv@`BO&1kUw=YG&CBO;OjNk0`JP^oRQRLIJek0|0jlg8-Zrz!TbnYYQ9(6$972d2=h7+i8D)KX!j|(3B~E zvJ#D9#c9uzQ(opP1`nbiMmcig7IM@$Ce6ZJ$v?)w$Lvob+paxK|~~unUz08 zRr$L}HDksM$+Li^8$`v}y;N+#lGo8$)MJ-K@xDaL5e#V9u%WFzME=H%86!9yU_!JP z^$-Z)y@CW6K(KP2CtnRPS!IoP4R1Vwa~2KeEskxhwGQbg$0<~W z3KbN)w{pUOw%9;~o()@~`5X_CJWdwMl`Ch9zVdO7=#_2@K}6oiq6rB^@$sAlr+^24 z`osZvKB|#6QP!tVA62462^1^X2QNB;;}ul&9=Zb1`o>2(lE)8w07^%hZG}z}&H_ws zM}u|0hy;UK9VOG{5j|nl;f1!@g%;r=T&_VI>z6NI6n}fE_`FS{Y){bhIhrkRO(4{d z0drK(O7|maXU1x6@9EPw9F;z#{`g~(9N`oyG}MarSUNICH=0R%Svwm~UFT;!VIYpi z6nesLt2%x9v_e_~qQN*~(Rdse+5?}HDqdObizS+jQxKdSU}1?$aAvG-?^$_P62ShU zWXX~`>+%x^#`b|GT^WbX_zMs00|c6mXGxt5^Tfpm{CN^mq)15Z+Le_*ecjNL{J7J% zy{w&$r#t;bR99b^u%~0sOD-~Rnu%_RGGmP{#$jme0=pFqiY{JV z=_fESnNMCdbmiT=nFhC&5LEId@Ht~ekP7E#28;yUkpKdez6QTeXwugtZ}>G5h@=FJ zu|`s0hTKTNQxY)7>M6;aevJeoDS>eJtkzp0k!n_?`Q9 zcHJ?IvEp`z^^WZCEV#(NJHE%oonl`F+{HHk$hT)l54MNfQ2LgYl^Z`C=voU*+DO1i zz$+zS{>w+N92Ucrk$?jUm;jRlp_n2g0dJImF;;IJ6~mK}fCC8_V|5@DQ)DFIjS~1D X0FoAFAZraM00000NkvXXu0mjf15`sk diff --git a/docs/inherit_graph_7.map b/docs/inherit_graph_7.map deleted file mode 100644 index 4c3f5e14..00000000 --- a/docs/inherit_graph_7.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/inherit_graph_7.md5 b/docs/inherit_graph_7.md5 deleted file mode 100644 index 631d38bc..00000000 --- a/docs/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -4a087f08c1bd63118620378ef4726c56 \ No newline at end of file diff --git a/docs/inherit_graph_7.png b/docs/inherit_graph_7.png deleted file mode 100644 index da43faf4f6eafdf2f04df1f76e9bcbdee3a194b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmV+q2JrcbP)hQpI=5o2FrlyWv5`v3`g$1+OOmD%Mo!-8Edt7=DN7LBY7}bLI zGyZ`*;~&T~{((H>AIIuhM@NTPEKVR%K%=OrNT<_nZ*P--vfJ$ff#5%tnTR~Q-OkY= z;fb>nw`UHALn4tRFp}5n9T*r`TwF{b7XV;3o84~r#>U3z=x87iP$(3BzaIb~5{Vu@ ze3)2Gki>LiC&`I3iQBVCBto6zapCj%B9VwxDor3403eY_a&mHT9IvjfHknKpFJ654 z@+ANuD=VwNzdx~>Ac^V3PLdO661Qj9uU`iM$P*tN zykAixSQ(Rm;K0eNo$VzK#>-+cb>D|cS^XJcng@yC;^Py0vr>93M zm1bsUwzs$c`SXWWZImj%-+%x9eThUOl}hz`eJ~iLm%Vc3N=r)%*>iVy_w3oTKYsj( z5+)D`j7FnEp%95gPo6x9Wr%n!0FcJy4^kEq@<+0e*N0*c8`pVoH})CcX#)&MDh!t&1R#^uvjc&v6x<#4C?Fa zCnqNfg6Qw>SE*Dkm&StyWu8Q?t6dYPDMBa{1%OkLhJUeE5)^ zogE5=AcPYW6PGSsV#)&m+_`hd=kpB>4FLeWUhk1Za4)z@rBbO>^p>PNlgVV$)6-=9 z>(?)n$rNLv-|tUNO&u5*Agv+@A`*#k`+!#=61WucxGni^5x5{ zYU!%}{{4$#*z)o+d1x}3N=r-WWy9fcUS8g(PoE%!N~QAIvu8|s0Dv!FzL3?(_9KVj zm^ftfEUD+lwY9a9k`gkO$z%-;4KXHWWMs_E&3*g!t)QTwuCC5vvBdlAXS3Ogi;J1< zGMS7FTrO8`ZZ7$#SzBAXwzhVpT93yQ3Wcb$B_$>6>+AHgLZR^X?b}A9(d+eo{PpFVvWW8(h){@&i+*w~oI2TrGRd3m|Fw^ysxMwPvB<3>0f?(6GoYHEsW#Ykcq;%MkM z%2@WZP$*PUQIVdW4j~K%gL=I_KR;h25@|G=ot+)B5B&}vwck*6CMG6|ii%F3K3!g3 z{_fp7jzoCyS4I~uT+nK@TU%S)_4oJpJ32aYb92RFu}-HW2!d5DeL4`rot>S#ckgCr zXX7~D)zuXY2BXSC2;17)($dlbfdJJ44(?}Baa0B75ZnvS+|LB`6)_kLYPA}oUt)36 z+uQ4OI;sCp{%^={G4u~)Ec+zlFoMD0=H}+e$jF;FZ%$AKdPf`wU%!66di82^b8~fd z^$E&A*I67?RaJSt-jh~=t}`BjJmVk8GyZ`*;~y-~AO?fs_;nx-V|{%+>LnSAXKJ - - - diff --git a/docs/inherit_graph_8.md5 b/docs/inherit_graph_8.md5 deleted file mode 100644 index 7943e446..00000000 --- a/docs/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -76d7c1072b7fc60cec1266b81f13cbe8 \ No newline at end of file diff --git a/docs/inherit_graph_8.png b/docs/inherit_graph_8.png deleted file mode 100644 index bf0df7ce26bacda4e07275ae396262049cce6599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2764 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 diff --git a/docs/inherit_graph_9.map b/docs/inherit_graph_9.map deleted file mode 100644 index 22c1b4de..00000000 --- a/docs/inherit_graph_9.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/inherit_graph_9.md5 b/docs/inherit_graph_9.md5 deleted file mode 100644 index fd3c243d..00000000 --- a/docs/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -1501bc526e42700cd924ae095b4b051e \ No newline at end of file diff --git a/docs/inherit_graph_9.png b/docs/inherit_graph_9.png deleted file mode 100644 index ba8279f2aa46afc894164d48262acda52edb40ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4511 zcmZ9Q1y~ea)W>HD>7^8qSe8~qK%}JKWu@x{q+7b1rB^znrDH`(x>G_*q+5DH5fPD+ zM&cX&^7&?;XLfd=i@c&$f>1D-v)nqlDA zEemCNByjWR^SYxX1pp|u6_NjFqjGjuTr{ZX7J+^0d2}>!G+qeNBig48+^=66e7QZ) ziof%U{2AX6lahAf=~y{yzlFiWrZXG451H|E#A6LmuPPnw8l1*l9jrlhZv&jv{t;RS z5~>&mX9lgW7lX5344RwN57Xd)I0LaB@I1qaLoR1_I9tAVG+2m}I Md) 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 f?JEE>SvR - - - - - - -libtoolchain: Class Hierarchy - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
- - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - -
- - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
-
-
- - - - diff --git a/docs/jquery.js b/docs/jquery.js deleted file mode 100644 index 2771c749..00000000 --- a/docs/jquery.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -/*! - * 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=$(' - - -
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
-
- - - - - diff --git a/docs/namespacemembers_enum.html b/docs/namespacemembers_enum.html deleted file mode 100644 index fd921d5d..00000000 --- a/docs/namespacemembers_enum.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -libtoolchain: Namespace Members - - - - - - - - - - - - - - -
-
-
- - - - - -
-
libtoolchain -  v0.1.0 -
-
- - - - - - - - - -
- -
-
-
- -
- -
-
- - -
- -
- -
    -
  • FileAccessMode -: tc::fs -
  • -
-
-
- - - - diff --git a/docs/namespacemembers_eval.html b/docs/namespacemembers_eval.html deleted file mode 100644 index c4b6ca4f..00000000 --- a/docs/namespacemembers_eval.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -libtoolchain: Namespace Members - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
- - - - diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html deleted file mode 100644 index db470186..00000000 --- a/docs/namespacemembers_func.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -libtoolchain: Namespace Members - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
- - - - diff --git a/docs/namespaces.html b/docs/namespaces.html deleted file mode 100644 index 15ff2e77..00000000 --- a/docs/namespaces.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -libtoolchain: Namespace List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Namespace List
-
-
-
Here is a list of all documented namespaces with brief descriptions:
-
[detail level 12]
- - - -
 NtcRoot namespace for libtoolchain
 NfsNamespace of the filesystem library
 NstringNamespace of the string library
-
-
-
- - - - diff --git a/docs/namespaces.js b/docs/namespaces.js deleted file mode 100644 index c00f692c..00000000 --- a/docs/namespaces.js +++ /dev/null @@ -1,4 +0,0 @@ -var namespaces = -[ - [ "tc", "namespacetc.html", "namespacetc" ] -]; \ No newline at end of file diff --git a/docs/namespaces_dup.js b/docs/namespaces_dup.js deleted file mode 100644 index 37591a93..00000000 --- a/docs/namespaces_dup.js +++ /dev/null @@ -1,4 +0,0 @@ -var namespaces_dup = -[ - [ "tc", "namespacetc.html", "namespacetc" ] -]; \ No newline at end of file diff --git a/docs/namespacetc.html b/docs/namespacetc.html deleted file mode 100644 index 89d4561c..00000000 --- a/docs/namespacetc.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -libtoolchain: tc Namespace Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc Namespace Reference
-
-
- -

Root namespace for libtoolchain. -More...

- - - - - - - - -

-Namespaces

 fs
 Namespace of the filesystem library.
 
 string
 Namespace of the string library.
 
- - - - - - - - - - -

-Classes

class  Exception
 An extension of std::exception that allows optionally specifying a module name. More...
 
class  Optional
 A wrapper class, where the existence of the wrapped value is optional. More...
 
class  SharedPtr
 A smart pointer which auto-deletes the embedded ptr when all references are gone. More...
 
-

Detailed Description

-

Root namespace for libtoolchain.

-
-
- - - - diff --git a/docs/namespacetc.js b/docs/namespacetc.js deleted file mode 100644 index 657b25f8..00000000 --- a/docs/namespacetc.js +++ /dev/null @@ -1,7 +0,0 @@ -var namespacetc = -[ - [ "fs", "namespacetc_1_1fs.html", "namespacetc_1_1fs" ], - [ "Exception", "classtc_1_1_exception.html", "classtc_1_1_exception" ], - [ "Optional", "classtc_1_1_optional.html", "classtc_1_1_optional" ], - [ "SharedPtr", "classtc_1_1_shared_ptr.html", "classtc_1_1_shared_ptr" ] -]; \ No newline at end of file diff --git a/docs/namespacetc_1_1fs.html b/docs/namespacetc_1_1fs.html deleted file mode 100644 index 307ef8f2..00000000 --- a/docs/namespacetc_1_1fs.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -libtoolchain: tc::fs Namespace Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::fs Namespace Reference
-
-
- -

Namespace of the filesystem library. -More...

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

-Classes

class  DirectoryInfo
 Provides basic info about a directory with-in a FileSystem. More...
 
class  IFile
 An interface for implementing a basic File handler. More...
 
class  IFileSystem
 An interface for implementing a basic FileSystem handler. More...
 
class  LocalFileSystem
 An IFileSystem wrapper around the existing OS FileSystem API. More...
 
class  Path
 Represents a unicode path for a filesystem. More...
 
class  SandboxedIFile
 A wrapper around an existing IFile object that exposes a carve out (user specified offset & size) of the IFile object. More...
 
class  SandboxedIFileSystem
 A wrapper around an existing IFileSystem object that exposes a subset of the wrapped IFileSystem directory tree. More...
 
- - - -

-Enumerations

enum  FileAccessMode { FAM_READ, -FAM_EDIT, -FAM_CREATE - }
 
-

Detailed Description

-

Namespace of the filesystem library.

-

Enumeration Type Documentation

- -

◆ FileAccessMode

- -
-
- - - - -
enum tc::fs::FileAccessMode
-
-

FileAccessMode This enum is used with openFile() to determine the access mode

- - - - -
Enumerator
FAM_READ 

Access file with READ-ONLY permissions

-
FAM_EDIT 

Access file with READ-WRITE permissions

-
FAM_CREATE 

Create a new file or overwrite an existing file (READ-WRITE permissions)

-
- -

Definition at line 18 of file IFileSystem.h.

- -
-
-
-
- - - - diff --git a/docs/namespacetc_1_1fs.js b/docs/namespacetc_1_1fs.js deleted file mode 100644 index 96379ee0..00000000 --- a/docs/namespacetc_1_1fs.js +++ /dev/null @@ -1,10 +0,0 @@ -var namespacetc_1_1fs = -[ - [ "DirectoryInfo", "classtc_1_1fs_1_1_directory_info.html", "classtc_1_1fs_1_1_directory_info" ], - [ "IFile", "classtc_1_1fs_1_1_i_file.html", "classtc_1_1fs_1_1_i_file" ], - [ "IFileSystem", "classtc_1_1fs_1_1_i_file_system.html", "classtc_1_1fs_1_1_i_file_system" ], - [ "LocalFileSystem", "classtc_1_1fs_1_1_local_file_system.html", "classtc_1_1fs_1_1_local_file_system" ], - [ "Path", "classtc_1_1fs_1_1_path.html", "classtc_1_1fs_1_1_path" ], - [ "SandboxedIFile", "classtc_1_1fs_1_1_sandboxed_i_file.html", "classtc_1_1fs_1_1_sandboxed_i_file" ], - [ "SandboxedIFileSystem", "classtc_1_1fs_1_1_sandboxed_i_file_system.html", "classtc_1_1fs_1_1_sandboxed_i_file_system" ] -]; \ No newline at end of file diff --git a/docs/namespacetc_1_1string.html b/docs/namespacetc_1_1string.html deleted file mode 100644 index 7bbcaaab..00000000 --- a/docs/namespacetc_1_1string.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - -libtoolchain: tc::string Namespace Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc::string Namespace Reference
-
-
- -

Namespace of the string library. -More...

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

-Functions

void transcodeUTF8ToUTF32 (const std::string &src, std::u32string &dst)
 Transcode a UTF-8 string to UTF-32. More...
 
void transcodeUTF16ToUTF32 (const std::u16string &src, std::u32string &dst)
 Transcode a UTF-16 string to UTF-32. More...
 
void transcodeUTF32ToUTF8 (const std::u32string &src, std::string &dst)
 Transcode a UTF-32 string to UTF-8. More...
 
void transcodeUTF32ToUTF16 (const std::u32string &src, std::u16string &dst)
 Transcode a UTF-32 string to UTF-16. More...
 
void transcodeUTF8ToUTF16 (const std::string &src, std::u16string &dst)
 Transcode a UTF-8 string to UTF-16. More...
 
void transcodeUTF16ToUTF8 (const std::u16string &src, std::string &dst)
 Transcode a UTF-16 string to UTF-8. More...
 
-

Detailed Description

-

Namespace of the string library.

-

Function Documentation

- -

◆ transcodeUTF16ToUTF32()

- -
-
- - - - - - - - - - - - - - - - - - -
void tc::string::transcodeUTF16ToUTF32 (const std::u16string & src,
std::u32string & dst 
)
-
- -

Transcode a UTF-16 string to UTF-32.

-
Parameters
- - - -
[in]srcSource UTF-16 string
[out]dstDestination UTF-32 string
-
-
-
Exceptions
- - -
tc::ExceptionWhen src is an invalid string
-
-
- -
-
- -

◆ transcodeUTF16ToUTF8()

- -
-
- - - - - - - - - - - - - - - - - - -
void tc::string::transcodeUTF16ToUTF8 (const std::u16string & src,
std::string & dst 
)
-
- -

Transcode a UTF-16 string to UTF-8.

-
Parameters
- - - -
[in]srcSource UTF-16 string
[out]dstDestination UTF-8 string
-
-
-
Exceptions
- - -
tc::ExceptionWhen src is an invalid string
-
-
- -
-
- -

◆ transcodeUTF32ToUTF16()

- -
-
- - - - - - - - - - - - - - - - - - -
void tc::string::transcodeUTF32ToUTF16 (const std::u32string & src,
std::u16string & dst 
)
-
- -

Transcode a UTF-32 string to UTF-16.

-
Parameters
- - - -
[in]srcSource UTF-32 string
[out]dstDestination UTF-16 string
-
-
-
Exceptions
- - -
tc::ExceptionWhen src is an invalid string
-
-
- -
-
- -

◆ transcodeUTF32ToUTF8()

- -
-
- - - - - - - - - - - - - - - - - - -
void tc::string::transcodeUTF32ToUTF8 (const std::u32string & src,
std::string & dst 
)
-
- -

Transcode a UTF-32 string to UTF-8.

-
Parameters
- - - -
[in]srcSource UTF-32 string
[out]dstDestination UTF-8 string
-
-
-
Exceptions
- - -
tc::ExceptionWhen src is an invalid string
-
-
- -
-
- -

◆ transcodeUTF8ToUTF16()

- -
-
- - - - - - - - - - - - - - - - - - -
void tc::string::transcodeUTF8ToUTF16 (const std::string & src,
std::u16string & dst 
)
-
- -

Transcode a UTF-8 string to UTF-16.

-
Parameters
- - - -
[in]srcSource UTF-8 string
[out]dstDestination UTF-16 string
-
-
-
Exceptions
- - -
tc::ExceptionWhen src is an invalid string
-
-
- -
-
- -

◆ transcodeUTF8ToUTF32()

- -
-
- - - - - - - - - - - - - - - - - - -
void tc::string::transcodeUTF8ToUTF32 (const std::string & src,
std::u32string & dst 
)
-
- -

Transcode a UTF-8 string to UTF-32.

-
Parameters
- - - -
[in]srcSource UTF-8 string
[out]dstDestination UTF-32 string
-
-
-
Exceptions
- - -
tc::ExceptionWhen src is an invalid string
-
-
- -
-
-
-
- - - - diff --git a/docs/nav_f.png b/docs/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/docs/nav_g.png b/docs/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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@0HFXL=0 ? varName.substring(i+1) : varName; - return eval(n.replace(/\-/g,'_')); -} - -function stripPath(uri) -{ - return uri.substring(uri.lastIndexOf('/')+1); -} - -function stripPath2(uri) -{ - var i = uri.lastIndexOf('/'); - var s = uri.substring(i+1); - var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); - return m ? uri.substring(i-6) : s; -} - -function hashValue() -{ - return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); -} - -function hashUrl() -{ - return '#'+hashValue(); -} - -function pathName() -{ - return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); -} - -function localStorageSupported() -{ - try { - return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; - } - catch(e) { - return false; - } -} - - -function storeLink(link) -{ - if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { - window.localStorage.setItem('navpath',link); - } -} - -function deleteLink() -{ - if (localStorageSupported()) { - window.localStorage.setItem('navpath',''); - } -} - -function cachedLink() -{ - if (localStorageSupported()) { - return window.localStorage.getItem('navpath'); - } else { - return ''; - } -} - -function getScript(scriptName,func,show) -{ - var head = document.getElementsByTagName("head")[0]; - var script = document.createElement('script'); - script.id = scriptName; - script.type = 'text/javascript'; - script.onload = func; - script.src = scriptName+'.js'; - if ($.browser.msie && $.browser.version<=8) { - // script.onload does not work with older versions of IE - script.onreadystatechange = function() { - if (script.readyState=='complete' || script.readyState=='loaded') { - func(); if (show) showRoot(); - } - } - } - head.appendChild(script); -} - -function createIndent(o,domNode,node,level) -{ - var level=-1; - var n = node; - while (n.parentNode) { level++; n=n.parentNode; } - if (node.childrenData) { - var imgNode = document.createElement("span"); - imgNode.className = 'arrow'; - imgNode.style.paddingLeft=(16*level).toString()+'px'; - imgNode.innerHTML=arrowRight; - node.plus_img = imgNode; - node.expandToggle = document.createElement("a"); - node.expandToggle.href = "javascript:void(0)"; - node.expandToggle.onclick = function() { - if (node.expanded) { - $(node.getChildrenUL()).slideUp("fast"); - node.plus_img.innerHTML=arrowRight; - node.expanded = false; - } else { - expandNode(o, node, false, false); - } - } - node.expandToggle.appendChild(imgNode); - domNode.appendChild(node.expandToggle); - } else { - var span = document.createElement("span"); - span.className = 'arrow'; - span.style.width = 16*(level+1)+'px'; - span.innerHTML = ' '; - domNode.appendChild(span); - } -} - -var animationInProgress = false; - -function gotoAnchor(anchor,aname,updateLocation) -{ - var pos, docContent = $('#doc-content'); - var ancParent = $(anchor.parent()); - if (ancParent.hasClass('memItemLeft') || - ancParent.hasClass('fieldname') || - ancParent.hasClass('fieldtype') || - ancParent.is(':header')) - { - pos = ancParent.position().top; - } else if (anchor.position()) { - pos = anchor.position().top; - } - if (pos) { - var dist = Math.abs(Math.min( - pos-docContent.offset().top, - docContent[0].scrollHeight- - docContent.height()-docContent.scrollTop())); - animationInProgress=true; - docContent.animate({ - scrollTop: pos + docContent.scrollTop() - docContent.offset().top - },Math.max(50,Math.min(500,dist)),function(){ - if (updateLocation) window.location.href=aname; - animationInProgress=false; - }); - } -} - -function newNode(o, po, text, link, childrenData, lastNode) -{ - var node = new Object(); - node.children = Array(); - node.childrenData = childrenData; - node.depth = po.depth + 1; - node.relpath = po.relpath; - node.isLast = lastNode; - - node.li = document.createElement("li"); - po.getChildrenUL().appendChild(node.li); - node.parentNode = po; - - node.itemDiv = document.createElement("div"); - node.itemDiv.className = "item"; - - node.labelSpan = document.createElement("span"); - node.labelSpan.className = "label"; - - createIndent(o,node.itemDiv,node,0); - node.itemDiv.appendChild(node.labelSpan); - node.li.appendChild(node.itemDiv); - - var a = document.createElement("a"); - node.labelSpan.appendChild(a); - node.label = document.createTextNode(text); - node.expanded = false; - a.appendChild(node.label); - if (link) { - var url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - link = url; - } else { - url = node.relpath+link; - } - a.className = stripPath(link.replace('#',':')); - if (link.indexOf('#')!=-1) { - var aname = '#'+link.split('#')[1]; - var srcPage = stripPath(pathName()); - var targetPage = stripPath(link.split('#')[0]); - a.href = srcPage!=targetPage ? url : "javascript:void(0)"; - a.onclick = function(){ - storeLink(link); - if (!$(a).parent().parent().hasClass('selected')) - { - $('.item').removeClass('selected'); - $('.item').removeAttr('id'); - $(a).parent().parent().addClass('selected'); - $(a).parent().parent().attr('id','selected'); - } - var anchor = $(aname); - gotoAnchor(anchor,aname,true); - }; - } else { - a.href = url; - a.onclick = function() { storeLink(link); } - } - } else { - if (childrenData != null) - { - a.className = "nolink"; - a.href = "javascript:void(0)"; - a.onclick = node.expandToggle.onclick; - } - } - - node.childrenUL = null; - node.getChildrenUL = function() { - if (!node.childrenUL) { - node.childrenUL = document.createElement("ul"); - node.childrenUL.className = "children_ul"; - node.childrenUL.style.display = "none"; - node.li.appendChild(node.childrenUL); - } - return node.childrenUL; - }; - - return node; -} - -function showRoot() -{ - var headerHeight = $("#top").height(); - var footerHeight = $("#nav-path").height(); - var windowHeight = $(window).height() - headerHeight - footerHeight; - (function (){ // retry until we can scroll to the selected item - try { - var navtree=$('#nav-tree'); - navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); - } catch (err) { - setTimeout(arguments.callee, 0); - } - })(); -} - -function expandNode(o, node, imm, showRoot) -{ - if (node.childrenData && !node.expanded) { - if (typeof(node.childrenData)==='string') { - var varName = node.childrenData; - getScript(node.relpath+varName,function(){ - node.childrenData = getData(varName); - expandNode(o, node, imm, showRoot); - }, showRoot); - } else { - if (!node.childrenVisited) { - getNode(o, node); - } if (imm || ($.browser.msie && $.browser.version>8)) { - // somehow slideDown jumps to the start of tree for IE9 :-( - $(node.getChildrenUL()).show(); - } else { - $(node.getChildrenUL()).slideDown("fast"); - } - node.plus_img.innerHTML = arrowDown; - node.expanded = true; - } - } -} - -function glowEffect(n,duration) -{ - n.addClass('glow').delay(duration).queue(function(next){ - $(this).removeClass('glow');next(); - }); -} - -function highlightAnchor() -{ - var aname = hashUrl(); - var anchor = $(aname); - if (anchor.parent().attr('class')=='memItemLeft'){ - var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); - glowEffect(rows.children(),300); // member without details - } else if (anchor.parent().attr('class')=='fieldname'){ - glowEffect(anchor.parent().parent(),1000); // enum value - } else if (anchor.parent().attr('class')=='fieldtype'){ - glowEffect(anchor.parent().parent(),1000); // struct field - } else if (anchor.parent().is(":header")) { - glowEffect(anchor.parent(),1000); // section header - } else { - glowEffect(anchor.next(),1000); // normal member - } - gotoAnchor(anchor,aname,false); -} - -function selectAndHighlight(hash,n) -{ - var a; - if (hash) { - var link=stripPath(pathName())+':'+hash.substring(1); - a=$('.item a[class$="'+link+'"]'); - } - if (a && a.length) { - a.parent().parent().addClass('selected'); - a.parent().parent().attr('id','selected'); - highlightAnchor(); - } else if (n) { - $(n.itemDiv).addClass('selected'); - $(n.itemDiv).attr('id','selected'); - } - if ($('#nav-tree-contents .item:first').hasClass('selected')) { - $('#nav-sync').css('top','30px'); - } else { - $('#nav-sync').css('top','5px'); - } - showRoot(); -} - -function showNode(o, node, index, hash) -{ - if (node && node.childrenData) { - if (typeof(node.childrenData)==='string') { - var varName = node.childrenData; - getScript(node.relpath+varName,function(){ - node.childrenData = getData(varName); - showNode(o,node,index,hash); - },true); - } else { - if (!node.childrenVisited) { - getNode(o, node); - } - $(node.getChildrenUL()).css({'display':'block'}); - node.plus_img.innerHTML = arrowDown; - node.expanded = true; - var n = node.children[o.breadcrumbs[index]]; - if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); - else hash=''; - } - if (hash.match(/^#l\d+$/)) { - var anchor=$('a[name='+hash.substring(1)+']'); - glowEffect(anchor.parent(),1000); // line number - hash=''; // strip line number anchors - } - var url=root+hash; - var i=-1; - while (NAVTREEINDEX[i+1]<=url) i++; - if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath) - } else { - getScript(relpath+'navtreeindex'+i,function(){ - navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath); - } - },true); - } -} - -function showSyncOff(n,relpath) -{ - n.html(''); -} - -function showSyncOn(n,relpath) -{ - n.html(''); -} - -function toggleSyncButton(relpath) -{ - var navSync = $('#nav-sync'); - if (navSync.hasClass('sync')) { - navSync.removeClass('sync'); - showSyncOff(navSync,relpath); - storeLink(stripPath2(pathName())+hashUrl()); - } else { - navSync.addClass('sync'); - showSyncOn(navSync,relpath); - deleteLink(); - } -} - -function initNavTree(toroot,relpath) -{ - var o = new Object(); - o.toroot = toroot; - o.node = new Object(); - o.node.li = document.getElementById("nav-tree-contents"); - o.node.childrenData = NAVTREE; - o.node.children = new Array(); - o.node.childrenUL = document.createElement("ul"); - o.node.getChildrenUL = function() { return o.node.childrenUL; }; - o.node.li.appendChild(o.node.childrenUL); - o.node.depth = 0; - o.node.relpath = relpath; - o.node.expanded = false; - o.node.isLast = true; - o.node.plus_img = document.createElement("span"); - o.node.plus_img.className = 'arrow'; - o.node.plus_img.innerHTML = arrowRight; - - if (localStorageSupported()) { - var navSync = $('#nav-sync'); - if (cachedLink()) { - showSyncOff(navSync,relpath); - navSync.removeClass('sync'); - } else { - showSyncOn(navSync,relpath); - } - navSync.click(function(){ toggleSyncButton(relpath); }); - } - - $(window).load(function(){ - navTo(o,toroot,hashUrl(),relpath); - showRoot(); - }); - - $(window).bind('hashchange', function(){ - if (window.location.hash && window.location.hash.length>1){ - var a; - if ($(location).attr('hash')){ - var clslink=stripPath(pathName())+':'+hashValue(); - a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM=desktop_vp) { - if (!collapsed) { - collapseExpand(); - } - } else if (width>desktop_vp && collapsedWidth0) { - restoreWidth(0); - collapsed=true; - } - else { - var width = readCookie('width'); - if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } - collapsed=false; - } - } - - header = $("#top"); - sidenav = $("#side-nav"); - content = $("#doc-content"); - navtree = $("#nav-tree"); - footer = $("#nav-path"); - $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); - $(sidenav).resizable({ minWidth: 0 }); - $(window).resize(function() { resizeHeight(); }); - var device = navigator.userAgent.toLowerCase(); - var touch_device = device.match(/(iphone|ipod|ipad|android)/); - if (touch_device) { /* wider split bar for touch only devices */ - $(sidenav).css({ paddingRight:'20px' }); - $('.ui-resizable-e').css({ width:'20px' }); - $('#nav-sync').css({ right:'34px' }); - barWidth=20; - } - var width = readCookie('width'); - if (width) { restoreWidth(width); } else { resizeWidth(); } - resizeHeight(); - var url = location.href; - var i=url.indexOf("#"); - if (i>=0) window.location.hash=url.substr(i); - var _preventDefault = function(evt) { evt.preventDefault(); }; - $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(".ui-resizable-handle").dblclick(collapseExpand); - $(window).load(resizeHeight); -} -/* @license-end */ diff --git a/docs/search/all_0.html b/docs/search/all_0.html deleted file mode 100644 index 5125b940..00000000 --- a/docs/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_0.js b/docs/search/all_0.js deleted file mode 100644 index 2cc8fc0c..00000000 --- a/docs/search/all_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['be_5fuint16_5ft',['be_uint16_t',['../structbe__uint16__t.html',1,'']]], - ['be_5fuint32_5ft',['be_uint32_t',['../structbe__uint32__t.html',1,'']]], - ['be_5fuint64_5ft',['be_uint64_t',['../structbe__uint64__t.html',1,'']]], - ['byte_5ft',['byte_t',['../types_8h.html#a5f2bd8130655730e7899c385aca6a2b1',1,'types.h']]] -]; diff --git a/docs/search/all_1.html b/docs/search/all_1.html deleted file mode 100644 index b8ff8711..00000000 --- a/docs/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_1.js b/docs/search/all_1.js deleted file mode 100644 index 9a8f9331..00000000 --- a/docs/search/all_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['createdirectory',['createDirectory',['../classtc_1_1fs_1_1_i_file_system.html#a7b90f72f206159efd414bb07012fc331',1,'tc::fs::IFileSystem::createDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#acc801f5562add52ef4648953dcec21ec',1,'tc::fs::LocalFileSystem::createDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a077f94d25e577a1774a5438638a2e09b',1,'tc::fs::SandboxedIFileSystem::createDirectory()']]] -]; diff --git a/docs/search/all_10.html b/docs/search/all_10.html deleted file mode 100644 index 50bc449e..00000000 --- a/docs/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_10.js b/docs/search/all_10.js deleted file mode 100644 index d8d1e06e..00000000 --- a/docs/search/all_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['what',['what',['../classtc_1_1_exception.html#a8eff5742876ddad1d692aee6a3df7162',1,'tc::Exception']]], - ['wrap',['wrap',['../structle__uint16__t.html#a19cc35adcd419f50f31d7fa6ea9e329e',1,'le_uint16_t::wrap()'],['../structbe__uint16__t.html#a82cd0277bb0e8510d8da76437eafafc5',1,'be_uint16_t::wrap()'],['../structle__uint32__t.html#a3d230bf7cba5ebea53202795025402ec',1,'le_uint32_t::wrap()'],['../structbe__uint32__t.html#a670d372348149e1d86e00813df8e0fa2',1,'be_uint32_t::wrap()'],['../structle__uint64__t.html#ade8b1aa54109d88962882d9899a40d4e',1,'le_uint64_t::wrap()'],['../structbe__uint64__t.html#aabd90815f6ff3888c58365a6e1fcf1d3',1,'be_uint64_t::wrap()']]], - ['write',['write',['../classtc_1_1fs_1_1_i_file.html#a00ee588bac3fe64122b3fe22a1bd7d07',1,'tc::fs::IFile::write()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#a6871ce2257d3bf15516a482181e11f52',1,'tc::fs::SandboxedIFile::write()']]] -]; diff --git a/docs/search/all_11.html b/docs/search/all_11.html deleted file mode 100644 index b35c8bf0..00000000 --- a/docs/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_11.js b/docs/search/all_11.js deleted file mode 100644 index ace97cc4..00000000 --- a/docs/search/all_11.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_7eifile',['~IFile',['../classtc_1_1fs_1_1_i_file.html#a7dbf28208c6da2cc60fddd8031068893',1,'tc::fs::IFile']]], - ['_7esharedptr',['~SharedPtr',['../classtc_1_1_shared_ptr.html#a21f49a9897a7a039f42204f581f5c3fb',1,'tc::SharedPtr']]] -]; diff --git a/docs/search/all_2.html b/docs/search/all_2.html deleted file mode 100644 index 2f17735e..00000000 --- a/docs/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_2.js b/docs/search/all_2.js deleted file mode 100644 index 17395ecb..00000000 --- a/docs/search/all_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['deletedirectory',['deleteDirectory',['../classtc_1_1fs_1_1_i_file_system.html#a5b11adf91bfeaebe1cf6567f5acc5b3f',1,'tc::fs::IFileSystem::deleteDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#a6d67ef4752d7dceff8775829ce8e11c3',1,'tc::fs::LocalFileSystem::deleteDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#aafc06b493e9174f7f477bf730e704ad7',1,'tc::fs::SandboxedIFileSystem::deleteDirectory()']]], - ['deletefile',['deleteFile',['../classtc_1_1fs_1_1_i_file_system.html#a490578f57f7207b1ad735adf96765e54',1,'tc::fs::IFileSystem::deleteFile()'],['../classtc_1_1fs_1_1_local_file_system.html#a890603ab0fc1514a07bbf006dc17f448',1,'tc::fs::LocalFileSystem::deleteFile()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a2b7e8ad014dd689ed874c8f2a8eb8d01',1,'tc::fs::SandboxedIFileSystem::deleteFile()']]], - ['directoryinfo',['DirectoryInfo',['../classtc_1_1fs_1_1_directory_info.html',1,'tc::fs::DirectoryInfo'],['../classtc_1_1fs_1_1_directory_info.html#af6bbc021f4bf276deef62d92fcbced42',1,'tc::fs::DirectoryInfo::DirectoryInfo()'],['../classtc_1_1fs_1_1_directory_info.html#ae8a687020501b9ba8e85a9d198f11ddb',1,'tc::fs::DirectoryInfo::DirectoryInfo(const tc::fs::Path &path, const std::vector< std::string > &dir_list, const std::vector< std::string > &file_list)'],['../classtc_1_1fs_1_1_directory_info.html#a6bad410e0ef8959bfc39703d1fbbf600',1,'tc::fs::DirectoryInfo::DirectoryInfo(const DirectoryInfo &other)'],['../classtc_1_1fs_1_1_directory_info.html#abf29942970d90c52ab10d4824eac9309',1,'tc::fs::DirectoryInfo::DirectoryInfo(DirectoryInfo &&other)']]], - ['directoryinfo_2eh',['DirectoryInfo.h',['../_directory_info_8h.html',1,'']]] -]; diff --git a/docs/search/all_3.html b/docs/search/all_3.html deleted file mode 100644 index a3e6f7db..00000000 --- a/docs/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_3.js b/docs/search/all_3.js deleted file mode 100644 index ad99ea9b..00000000 --- a/docs/search/all_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['endian_2eh',['endian.h',['../endian_8h.html',1,'']]], - ['error',['error',['../classtc_1_1_exception.html#aec95c5655d5724ee3999abb52e0145ae',1,'tc::Exception']]], - ['exception',['Exception',['../classtc_1_1_exception.html',1,'tc::Exception'],['../classtc_1_1_exception.html#abd14a4de5399f499d2d52853f0f30482',1,'tc::Exception::Exception() noexcept'],['../classtc_1_1_exception.html#a52534d2ad7b0f808c583c06312d08027',1,'tc::Exception::Exception(const std::string &what) noexcept'],['../classtc_1_1_exception.html#a5ec4862d949017561422b45071507d02',1,'tc::Exception::Exception(const std::string &module, const std::string &what) noexcept']]], - ['exception_2eh',['Exception.h',['../_exception_8h.html',1,'']]] -]; diff --git a/docs/search/all_4.html b/docs/search/all_4.html deleted file mode 100644 index 6452295d..00000000 --- a/docs/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_4.js b/docs/search/all_4.js deleted file mode 100644 index 1a3e7f67..00000000 --- a/docs/search/all_4.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['fam_5fcreate',['FAM_CREATE',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243a5e488e9d5880ae82509086ad5abe2e97',1,'tc::fs']]], - ['fam_5fedit',['FAM_EDIT',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243ab46da1e04799968751c18e282194259b',1,'tc::fs']]], - ['fam_5fread',['FAM_READ',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243adf70b294d2a6bd7f269354df6d573f0e',1,'tc::fs']]], - ['fileaccessmode',['FileAccessMode',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243',1,'tc::fs']]], - ['fs_2eh',['fs.h',['../fs_8h.html',1,'']]] -]; diff --git a/docs/search/all_5.html b/docs/search/all_5.html deleted file mode 100644 index e59e1d53..00000000 --- a/docs/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_5.js b/docs/search/all_5.js deleted file mode 100644 index cc2a3c24..00000000 --- a/docs/search/all_5.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['get',['get',['../classtc_1_1_optional.html#a9f53a65980dc3b328b9a8bbd326bf8f5',1,'tc::Optional::get()'],['../classtc_1_1_shared_ptr.html#a909d9934f21d124273279a04e11fd15c',1,'tc::SharedPtr::get()']]], - ['getcurrentdirectory',['getCurrentDirectory',['../classtc_1_1fs_1_1_i_file_system.html#acc0faea5ebbe95699fa981793ae310f8',1,'tc::fs::IFileSystem::getCurrentDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#ae7258cc842dc1e18a9fc721e02529362',1,'tc::fs::LocalFileSystem::getCurrentDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a97e559e7e23a9a543775926d52eaf3c4',1,'tc::fs::SandboxedIFileSystem::getCurrentDirectory()']]], - ['getdirectorylist',['getDirectoryList',['../classtc_1_1fs_1_1_directory_info.html#accc428b913c4ba1c0a5b76a93aace95d',1,'tc::fs::DirectoryInfo']]], - ['getdirectorylisting',['getDirectoryListing',['../classtc_1_1fs_1_1_i_file_system.html#aab8e5155524ad8ec1b6c9ed48ab024e7',1,'tc::fs::IFileSystem::getDirectoryListing()'],['../classtc_1_1fs_1_1_local_file_system.html#a93d59f19036e435e001c97a3dd2851da',1,'tc::fs::LocalFileSystem::getDirectoryListing()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#adf596d27abdc145e5256d3484261249a',1,'tc::fs::SandboxedIFileSystem::getDirectoryListing()']]], - ['getfilelist',['getFileList',['../classtc_1_1fs_1_1_directory_info.html#a4f7df65368b96c8299ff697b567c3722',1,'tc::fs::DirectoryInfo']]], - ['getpath',['getPath',['../classtc_1_1fs_1_1_directory_info.html#a6f4cc36812817e57e2892204cbfa4b55',1,'tc::fs::DirectoryInfo']]], - ['getpathelementlist',['getPathElementList',['../classtc_1_1fs_1_1_path.html#a6941fd92599595d4860bac6a871806c4',1,'tc::fs::Path']]] -]; diff --git a/docs/search/all_6.html b/docs/search/all_6.html deleted file mode 100644 index f75a754e..00000000 --- a/docs/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_6.js b/docs/search/all_6.js deleted file mode 100644 index bb8677a6..00000000 --- a/docs/search/all_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['ifile',['IFile',['../classtc_1_1fs_1_1_i_file.html',1,'tc::fs']]], - ['ifile_2eh',['IFile.h',['../_i_file_8h.html',1,'']]], - ['ifilesystem',['IFileSystem',['../classtc_1_1fs_1_1_i_file_system.html',1,'tc::fs']]], - ['ifilesystem_2eh',['IFileSystem.h',['../_i_file_system_8h.html',1,'']]], - ['isnull',['isNull',['../classtc_1_1_optional.html#a1cf0ad6726a4de55d92fceab13ede701',1,'tc::Optional::isNull()'],['../classtc_1_1_shared_ptr.html#a0062441314d4ad3605772767fa464662',1,'tc::SharedPtr::isNull()']]] -]; diff --git a/docs/search/all_7.html b/docs/search/all_7.html deleted file mode 100644 index 88acd946..00000000 --- a/docs/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_7.js b/docs/search/all_7.js deleted file mode 100644 index 0d1c1240..00000000 --- a/docs/search/all_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['kunixpathdelimiter',['kUnixPathDelimiter',['../classtc_1_1fs_1_1_path.html#a5d29904c84565ead7ed1f2746416182b',1,'tc::fs::Path']]], - ['kwindowspathdelimiter',['kWindowsPathDelimiter',['../classtc_1_1fs_1_1_path.html#aba0d0b1b9e112f43ab89f53150da53e2',1,'tc::fs::Path']]] -]; diff --git a/docs/search/all_8.html b/docs/search/all_8.html deleted file mode 100644 index b74d5fd8..00000000 --- a/docs/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_8.js b/docs/search/all_8.js deleted file mode 100644 index 60abd6ae..00000000 --- a/docs/search/all_8.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['libtoolchain_20_2d_20api_20reference',['libtoolchain - API Reference',['../index.html',1,'']]], - ['le_5fuint16_5ft',['le_uint16_t',['../structle__uint16__t.html',1,'']]], - ['le_5fuint32_5ft',['le_uint32_t',['../structle__uint32__t.html',1,'']]], - ['le_5fuint64_5ft',['le_uint64_t',['../structle__uint64__t.html',1,'']]], - ['localfilesystem',['LocalFileSystem',['../classtc_1_1fs_1_1_local_file_system.html',1,'tc::fs::LocalFileSystem'],['../classtc_1_1fs_1_1_local_file_system.html#a7e3630dcdcbee9bbc4cd7cbf7a0e51a7',1,'tc::fs::LocalFileSystem::LocalFileSystem()']]], - ['localfilesystem_2eh',['LocalFileSystem.h',['../_local_file_system_8h.html',1,'']]] -]; diff --git a/docs/search/all_9.html b/docs/search/all_9.html deleted file mode 100644 index 95e88dd2..00000000 --- a/docs/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_9.js b/docs/search/all_9.js deleted file mode 100644 index e1542b50..00000000 --- a/docs/search/all_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['makenull',['makeNull',['../classtc_1_1_optional.html#a49f535f906c475a39ec55c5c2f707f2c',1,'tc::Optional']]], - ['module',['module',['../classtc_1_1_exception.html#abbf530e25e09e8deb0895ede2daf589d',1,'tc::Exception']]] -]; diff --git a/docs/search/all_a.html b/docs/search/all_a.html deleted file mode 100644 index 3148a8e5..00000000 --- a/docs/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_a.js b/docs/search/all_a.js deleted file mode 100644 index 65364638..00000000 --- a/docs/search/all_a.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['openfile',['openFile',['../classtc_1_1fs_1_1_i_file_system.html#af103f58e1b856bac5011a83d839ef7b9',1,'tc::fs::IFileSystem::openFile()'],['../classtc_1_1fs_1_1_local_file_system.html#ad891140c2d12503d380cf8e56c939b63',1,'tc::fs::LocalFileSystem::openFile()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#adc9f0a2b08b9d26cf06df5bb5f803023',1,'tc::fs::SandboxedIFileSystem::openFile()']]], - ['operator_21_3d',['operator!=',['../classtc_1_1fs_1_1_path.html#a281f4eb2e509185b750857b57de82bfc',1,'tc::fs::Path']]], - ['operator_2a',['operator*',['../classtc_1_1_shared_ptr.html#a30683994eee814e7451b784a9108fcfa',1,'tc::SharedPtr']]], - ['operator_2b',['operator+',['../classtc_1_1fs_1_1_path.html#a9e8051ab038f1d539a6d1544491df94c',1,'tc::fs::Path']]], - ['operator_2b_3d',['operator+=',['../classtc_1_1fs_1_1_path.html#a9cd9c337d16348b455a6528e5823e444',1,'tc::fs::Path']]], - ['operator_2d_3e',['operator->',['../classtc_1_1_shared_ptr.html#abe2cb4ff330a6084555af0bb8d8b649e',1,'tc::SharedPtr']]], - ['operator_3d',['operator=',['../classtc_1_1fs_1_1_directory_info.html#a4a7830fd210f864cefd7222e27061dd7',1,'tc::fs::DirectoryInfo::operator=(const DirectoryInfo &other)'],['../classtc_1_1fs_1_1_directory_info.html#a77cfcfdf9b5990c1908747939fbd54f2',1,'tc::fs::DirectoryInfo::operator=(DirectoryInfo &&other)'],['../classtc_1_1fs_1_1_path.html#a6b1c253e9f76aaab85c0a38ea8dc6671',1,'tc::fs::Path::operator=(const Path &other)'],['../classtc_1_1fs_1_1_path.html#a1f31d9b34e93ff04e0e8240f6a9eebe2',1,'tc::fs::Path::operator=(Path &&other)'],['../classtc_1_1_optional.html#a1531f1b98d26aaf02315df792fb85f0c',1,'tc::Optional::operator=(const T &value)'],['../classtc_1_1_optional.html#a1a44b0f0c2d2349125637ce6965a5a7c',1,'tc::Optional::operator=(const Optional< T > &other)'],['../classtc_1_1_shared_ptr.html#a1158286b59ae2ed40a855a2d0c38f561',1,'tc::SharedPtr::operator=(T *ptr)'],['../classtc_1_1_shared_ptr.html#a69832076d772f6dded50ad830bfe1a2d',1,'tc::SharedPtr::operator=(const SharedPtr< T > &other)'],['../classtc_1_1_shared_ptr.html#aba56780a6a66931359ed49f5205c26f5',1,'tc::SharedPtr::operator=(SharedPtr< T > &&other)']]], - ['operator_3d_3d',['operator==',['../classtc_1_1fs_1_1_path.html#aaac12bb402ae2b03c7648dd817e31a64',1,'tc::fs::Path']]], - ['optional',['Optional',['../classtc_1_1_optional.html',1,'tc::Optional< T >'],['../classtc_1_1_optional.html#a972ac8b4e9b1ba5980b4bc6adc617651',1,'tc::Optional::Optional()'],['../classtc_1_1_optional.html#a90dc290ecb96955d604eb80ae749c65a',1,'tc::Optional::Optional(const T &value)'],['../classtc_1_1_optional.html#a03e196684441dcbef77473e00c2ee82f',1,'tc::Optional::Optional(const Optional< T > &other)']]], - ['optional_2eh',['Optional.h',['../_optional_8h.html',1,'']]] -]; diff --git a/docs/search/all_b.html b/docs/search/all_b.html deleted file mode 100644 index f2a3c8d0..00000000 --- a/docs/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_b.js b/docs/search/all_b.js deleted file mode 100644 index 4de55946..00000000 --- a/docs/search/all_b.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['path',['Path',['../classtc_1_1fs_1_1_path.html',1,'tc::fs::Path'],['../classtc_1_1fs_1_1_path.html#a2bfe9075884ad8f30d70213471406134',1,'tc::fs::Path::Path()'],['../classtc_1_1fs_1_1_path.html#a58c780f9f6eb40453fb8d9db0ac16874',1,'tc::fs::Path::Path(const std::vector< std::string > &path_elements)'],['../classtc_1_1fs_1_1_path.html#afe304ae681dca77e668f279f4bcecf08',1,'tc::fs::Path::Path(const Path &other)'],['../classtc_1_1fs_1_1_path.html#aa3717f0f10177c33fb7bd737280e8535',1,'tc::fs::Path::Path(Path &&other)'],['../classtc_1_1fs_1_1_path.html#ae7c1f1a5bb5d45cfadd0fd8a0cf0efd3',1,'tc::fs::Path::Path(const std::string &path)'],['../classtc_1_1fs_1_1_path.html#a166032fb19e728339c5a31b56f133bec',1,'tc::fs::Path::Path(const std::u16string &path)'],['../classtc_1_1fs_1_1_path.html#abb195bc28559c627acfe4d8d2b954592',1,'tc::fs::Path::Path(const std::u32string &path)']]], - ['path_2eh',['Path.h',['../_path_8h.html',1,'']]], - ['pos',['pos',['../classtc_1_1fs_1_1_i_file.html#a619c7ca5151a034b86425f7bda7d979a',1,'tc::fs::IFile::pos()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#ae27b7f5cefd443ded8b8f9fb186b5551',1,'tc::fs::SandboxedIFile::pos()']]] -]; diff --git a/docs/search/all_c.html b/docs/search/all_c.html deleted file mode 100644 index 63768107..00000000 --- a/docs/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_c.js b/docs/search/all_c.js deleted file mode 100644 index 2eaa5407..00000000 --- a/docs/search/all_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['read',['read',['../classtc_1_1fs_1_1_i_file.html#a1b810986d94d937e14a4d821d8e98031',1,'tc::fs::IFile::read()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#aa9ea0d9c2302934647bd65a5ef52f8c5',1,'tc::fs::SandboxedIFile::read()']]], - ['release',['release',['../classtc_1_1_shared_ptr.html#a02c4189243ba0fe844f986b30edda6ca',1,'tc::SharedPtr']]] -]; diff --git a/docs/search/all_d.html b/docs/search/all_d.html deleted file mode 100644 index cc52c79f..00000000 --- a/docs/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_d.js b/docs/search/all_d.js deleted file mode 100644 index f41ffb7c..00000000 --- a/docs/search/all_d.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['sandboxedifile',['SandboxedIFile',['../classtc_1_1fs_1_1_sandboxed_i_file.html',1,'tc::fs::SandboxedIFile'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#adee42c40b7a49367d3a4894869d834ae',1,'tc::fs::SandboxedIFile::SandboxedIFile()']]], - ['sandboxedifile_2eh',['SandboxedIFile.h',['../_sandboxed_i_file_8h.html',1,'']]], - ['sandboxedifilesystem',['SandboxedIFileSystem',['../classtc_1_1fs_1_1_sandboxed_i_file_system.html',1,'tc::fs::SandboxedIFileSystem'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a6a6bc2a44e6a1897b95fae12dc88d130',1,'tc::fs::SandboxedIFileSystem::SandboxedIFileSystem()']]], - ['sandboxedifilesystem_2eh',['SandboxedIFileSystem.h',['../_sandboxed_i_file_system_8h.html',1,'']]], - ['seek',['seek',['../classtc_1_1fs_1_1_i_file.html#afa6787f7404bf874be99f304e1c793e7',1,'tc::fs::IFile::seek()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#a7e7c71e042ef68df3f5f02131fd3be05',1,'tc::fs::SandboxedIFile::seek()']]], - ['setcurrentdirectory',['setCurrentDirectory',['../classtc_1_1fs_1_1_i_file_system.html#a77d972053206c137eb113c3e8aa6f5c5',1,'tc::fs::IFileSystem::setCurrentDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#a3eea45dc63381a88bfe9c3b4d4044287',1,'tc::fs::LocalFileSystem::setCurrentDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#ab6c221783cb6d0318ff2d6a4687ac034',1,'tc::fs::SandboxedIFileSystem::setCurrentDirectory()']]], - ['setdirectorylist',['setDirectoryList',['../classtc_1_1fs_1_1_directory_info.html#a750bd051532906e1bceed767117554bb',1,'tc::fs::DirectoryInfo']]], - ['setfilelist',['setFileList',['../classtc_1_1fs_1_1_directory_info.html#a1ceb5834cfb727a5b15f2e335003ff58',1,'tc::fs::DirectoryInfo']]], - ['setpath',['setPath',['../classtc_1_1fs_1_1_directory_info.html#a68c7e63963af80c41c5cd027d9fa30c5',1,'tc::fs::DirectoryInfo']]], - ['setpathelementlist',['setPathElementList',['../classtc_1_1fs_1_1_path.html#abc3c83f689c05ae947d111f7a1c0db8e',1,'tc::fs::Path']]], - ['sharedptr',['SharedPtr',['../classtc_1_1_shared_ptr.html',1,'tc::SharedPtr< T >'],['../classtc_1_1_shared_ptr.html#a094dc5cf94a08a7cfd99411eafe41275',1,'tc::SharedPtr::SharedPtr()'],['../classtc_1_1_shared_ptr.html#a051fd7ddb7cb95c17e80a38af2a2de64',1,'tc::SharedPtr::SharedPtr(T *ptr)'],['../classtc_1_1_shared_ptr.html#af4b295d45958d0c9c4d6d1bb16f0d4c3',1,'tc::SharedPtr::SharedPtr(const SharedPtr< T > &other)'],['../classtc_1_1_shared_ptr.html#a01059315d5fbff8faaa1186b3dd85b01',1,'tc::SharedPtr::SharedPtr(SharedPtr< T > &&other)']]], - ['sharedptr_2eh',['SharedPtr.h',['../_shared_ptr_8h.html',1,'']]], - ['sharedptr_3c_20tc_3a_3afs_3a_3aifile_20_3e',['SharedPtr< tc::fs::IFile >',['../classtc_1_1_shared_ptr.html',1,'tc']]], - ['sharedptr_3c_20tc_3a_3afs_3a_3aifilesystem_20_3e',['SharedPtr< tc::fs::IFileSystem >',['../classtc_1_1_shared_ptr.html',1,'tc']]], - ['size',['size',['../classtc_1_1fs_1_1_i_file.html#aa108aecb5219d5ea0bdf554d942259ef',1,'tc::fs::IFile::size()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#a0dc6032cb3e05926bdfa018e45074925',1,'tc::fs::SandboxedIFile::size()']]], - ['string_2eh',['string.h',['../string_8h.html',1,'']]] -]; diff --git a/docs/search/all_e.html b/docs/search/all_e.html deleted file mode 100644 index 85b39bd4..00000000 --- a/docs/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_e.js b/docs/search/all_e.js deleted file mode 100644 index 0b2d8781..00000000 --- a/docs/search/all_e.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['fs',['fs',['../namespacetc_1_1fs.html',1,'tc']]], - ['string',['string',['../namespacetc_1_1string.html',1,'tc']]], - ['tc',['tc',['../namespacetc.html',1,'']]], - ['tc_2eh',['tc.h',['../tc_8h.html',1,'']]], - ['transcode_2eh',['transcode.h',['../transcode_8h.html',1,'']]], - ['transcodeutf16toutf32',['transcodeUTF16ToUTF32',['../namespacetc_1_1string.html#a681a2266e627c99459c0630ad6caac7d',1,'tc::string']]], - ['transcodeutf16toutf8',['transcodeUTF16ToUTF8',['../namespacetc_1_1string.html#a209fa80f383eebc6e4646143ed2a5b43',1,'tc::string']]], - ['transcodeutf32toutf16',['transcodeUTF32ToUTF16',['../namespacetc_1_1string.html#ae9b114fbc613439c7bbea86a30ced250',1,'tc::string']]], - ['transcodeutf32toutf8',['transcodeUTF32ToUTF8',['../namespacetc_1_1string.html#a801623aee47479983330076175988691',1,'tc::string']]], - ['transcodeutf8toutf16',['transcodeUTF8ToUTF16',['../namespacetc_1_1string.html#a05a310e56be7811d17e2c246dcf917b5',1,'tc::string']]], - ['transcodeutf8toutf32',['transcodeUTF8ToUTF32',['../namespacetc_1_1string.html#ae5ec735ee7d2f24629ce3c9e8bb0d9f1',1,'tc::string']]], - ['types_2eh',['types.h',['../types_8h.html',1,'']]] -]; diff --git a/docs/search/all_f.html b/docs/search/all_f.html deleted file mode 100644 index 89fa15a6..00000000 --- a/docs/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/all_f.js b/docs/search/all_f.js deleted file mode 100644 index 54ee943f..00000000 --- a/docs/search/all_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['unwrap',['unwrap',['../structle__uint16__t.html#a619d501185283b9eddae8d3df0f15ed4',1,'le_uint16_t::unwrap()'],['../structbe__uint16__t.html#a25c39d2d422feb839343ff8e109c229e',1,'be_uint16_t::unwrap()'],['../structle__uint32__t.html#a6ae9ae0b1b912afa6c64711330ad398a',1,'le_uint32_t::unwrap()'],['../structbe__uint32__t.html#a9bc8fd06e8a42d29b8c3a295612e1130',1,'be_uint32_t::unwrap()'],['../structle__uint64__t.html#a2d2d412c4bf672e378a42fdd1cf885ce',1,'le_uint64_t::unwrap()'],['../structbe__uint64__t.html#a9b271f889a1f91de708230d9394fb039',1,'be_uint64_t::unwrap()']]] -]; diff --git a/docs/search/classes_0.html b/docs/search/classes_0.html deleted file mode 100644 index e935fdf7..00000000 --- a/docs/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js deleted file mode 100644 index 8d25870b..00000000 --- a/docs/search/classes_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['be_5fuint16_5ft',['be_uint16_t',['../structbe__uint16__t.html',1,'']]], - ['be_5fuint32_5ft',['be_uint32_t',['../structbe__uint32__t.html',1,'']]], - ['be_5fuint64_5ft',['be_uint64_t',['../structbe__uint64__t.html',1,'']]] -]; diff --git a/docs/search/classes_1.html b/docs/search/classes_1.html deleted file mode 100644 index 3df6e80a..00000000 --- a/docs/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js deleted file mode 100644 index 4d4a27cb..00000000 --- a/docs/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['directoryinfo',['DirectoryInfo',['../classtc_1_1fs_1_1_directory_info.html',1,'tc::fs']]] -]; diff --git a/docs/search/classes_2.html b/docs/search/classes_2.html deleted file mode 100644 index 028694ff..00000000 --- a/docs/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js deleted file mode 100644 index 4ac18300..00000000 --- a/docs/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['exception',['Exception',['../classtc_1_1_exception.html',1,'tc']]] -]; diff --git a/docs/search/classes_3.html b/docs/search/classes_3.html deleted file mode 100644 index 2b1abe38..00000000 --- a/docs/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js deleted file mode 100644 index a6197506..00000000 --- a/docs/search/classes_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ifile',['IFile',['../classtc_1_1fs_1_1_i_file.html',1,'tc::fs']]], - ['ifilesystem',['IFileSystem',['../classtc_1_1fs_1_1_i_file_system.html',1,'tc::fs']]] -]; diff --git a/docs/search/classes_4.html b/docs/search/classes_4.html deleted file mode 100644 index 87352149..00000000 --- a/docs/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js deleted file mode 100644 index 637ac140..00000000 --- a/docs/search/classes_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['le_5fuint16_5ft',['le_uint16_t',['../structle__uint16__t.html',1,'']]], - ['le_5fuint32_5ft',['le_uint32_t',['../structle__uint32__t.html',1,'']]], - ['le_5fuint64_5ft',['le_uint64_t',['../structle__uint64__t.html',1,'']]], - ['localfilesystem',['LocalFileSystem',['../classtc_1_1fs_1_1_local_file_system.html',1,'tc::fs']]] -]; diff --git a/docs/search/classes_5.html b/docs/search/classes_5.html deleted file mode 100644 index ba8b1c69..00000000 --- a/docs/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js deleted file mode 100644 index 8e38ba06..00000000 --- a/docs/search/classes_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['optional',['Optional',['../classtc_1_1_optional.html',1,'tc']]] -]; diff --git a/docs/search/classes_6.html b/docs/search/classes_6.html deleted file mode 100644 index f5850938..00000000 --- a/docs/search/classes_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js deleted file mode 100644 index ebc80515..00000000 --- a/docs/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['path',['Path',['../classtc_1_1fs_1_1_path.html',1,'tc::fs']]] -]; diff --git a/docs/search/classes_7.html b/docs/search/classes_7.html deleted file mode 100644 index 6418529c..00000000 --- a/docs/search/classes_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js deleted file mode 100644 index 205de002..00000000 --- a/docs/search/classes_7.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['sandboxedifile',['SandboxedIFile',['../classtc_1_1fs_1_1_sandboxed_i_file.html',1,'tc::fs']]], - ['sandboxedifilesystem',['SandboxedIFileSystem',['../classtc_1_1fs_1_1_sandboxed_i_file_system.html',1,'tc::fs']]], - ['sharedptr',['SharedPtr',['../classtc_1_1_shared_ptr.html',1,'tc']]], - ['sharedptr_3c_20tc_3a_3afs_3a_3aifile_20_3e',['SharedPtr< tc::fs::IFile >',['../classtc_1_1_shared_ptr.html',1,'tc']]], - ['sharedptr_3c_20tc_3a_3afs_3a_3aifilesystem_20_3e',['SharedPtr< tc::fs::IFileSystem >',['../classtc_1_1_shared_ptr.html',1,'tc']]] -]; diff --git a/docs/search/close.png b/docs/search/close.png deleted file mode 100644 index 9342d3dfeea7b7c4ee610987e717804b5a42ceb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/search/enums_0.html b/docs/search/enums_0.html deleted file mode 100644 index 9efcd1b7..00000000 --- a/docs/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/enums_0.js b/docs/search/enums_0.js deleted file mode 100644 index e116836a..00000000 --- a/docs/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fileaccessmode',['FileAccessMode',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243',1,'tc::fs']]] -]; diff --git a/docs/search/enumvalues_0.html b/docs/search/enumvalues_0.html deleted file mode 100644 index 03fdfad9..00000000 --- a/docs/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/enumvalues_0.js b/docs/search/enumvalues_0.js deleted file mode 100644 index 7f945e1d..00000000 --- a/docs/search/enumvalues_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fam_5fcreate',['FAM_CREATE',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243a5e488e9d5880ae82509086ad5abe2e97',1,'tc::fs']]], - ['fam_5fedit',['FAM_EDIT',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243ab46da1e04799968751c18e282194259b',1,'tc::fs']]], - ['fam_5fread',['FAM_READ',['../namespacetc_1_1fs.html#a1d1ada056f216d2ed93459999aa70243adf70b294d2a6bd7f269354df6d573f0e',1,'tc::fs']]] -]; diff --git a/docs/search/files_0.html b/docs/search/files_0.html deleted file mode 100644 index 49606c82..00000000 --- a/docs/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_0.js b/docs/search/files_0.js deleted file mode 100644 index ffcf2f22..00000000 --- a/docs/search/files_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['directoryinfo_2eh',['DirectoryInfo.h',['../_directory_info_8h.html',1,'']]] -]; diff --git a/docs/search/files_1.html b/docs/search/files_1.html deleted file mode 100644 index c8871748..00000000 --- a/docs/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_1.js b/docs/search/files_1.js deleted file mode 100644 index 8445c236..00000000 --- a/docs/search/files_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['endian_2eh',['endian.h',['../endian_8h.html',1,'']]], - ['exception_2eh',['Exception.h',['../_exception_8h.html',1,'']]] -]; diff --git a/docs/search/files_2.html b/docs/search/files_2.html deleted file mode 100644 index 99bdf21c..00000000 --- a/docs/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_2.js b/docs/search/files_2.js deleted file mode 100644 index 36225906..00000000 --- a/docs/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fs_2eh',['fs.h',['../fs_8h.html',1,'']]] -]; diff --git a/docs/search/files_3.html b/docs/search/files_3.html deleted file mode 100644 index f8e543a8..00000000 --- a/docs/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_3.js b/docs/search/files_3.js deleted file mode 100644 index 0181e091..00000000 --- a/docs/search/files_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ifile_2eh',['IFile.h',['../_i_file_8h.html',1,'']]], - ['ifilesystem_2eh',['IFileSystem.h',['../_i_file_system_8h.html',1,'']]] -]; diff --git a/docs/search/files_4.html b/docs/search/files_4.html deleted file mode 100644 index 2ebb46c7..00000000 --- a/docs/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_4.js b/docs/search/files_4.js deleted file mode 100644 index 122d630e..00000000 --- a/docs/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['localfilesystem_2eh',['LocalFileSystem.h',['../_local_file_system_8h.html',1,'']]] -]; diff --git a/docs/search/files_5.html b/docs/search/files_5.html deleted file mode 100644 index 268b7eb5..00000000 --- a/docs/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_5.js b/docs/search/files_5.js deleted file mode 100644 index 18f3471d..00000000 --- a/docs/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['optional_2eh',['Optional.h',['../_optional_8h.html',1,'']]] -]; diff --git a/docs/search/files_6.html b/docs/search/files_6.html deleted file mode 100644 index 98fc6666..00000000 --- a/docs/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_6.js b/docs/search/files_6.js deleted file mode 100644 index 92f29521..00000000 --- a/docs/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['path_2eh',['Path.h',['../_path_8h.html',1,'']]] -]; diff --git a/docs/search/files_7.html b/docs/search/files_7.html deleted file mode 100644 index 49507ded..00000000 --- a/docs/search/files_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_7.js b/docs/search/files_7.js deleted file mode 100644 index d38d97c7..00000000 --- a/docs/search/files_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['sandboxedifile_2eh',['SandboxedIFile.h',['../_sandboxed_i_file_8h.html',1,'']]], - ['sandboxedifilesystem_2eh',['SandboxedIFileSystem.h',['../_sandboxed_i_file_system_8h.html',1,'']]], - ['sharedptr_2eh',['SharedPtr.h',['../_shared_ptr_8h.html',1,'']]], - ['string_2eh',['string.h',['../string_8h.html',1,'']]] -]; diff --git a/docs/search/files_8.html b/docs/search/files_8.html deleted file mode 100644 index 12c6630b..00000000 --- a/docs/search/files_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/files_8.js b/docs/search/files_8.js deleted file mode 100644 index c4b102e4..00000000 --- a/docs/search/files_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['tc_2eh',['tc.h',['../tc_8h.html',1,'']]], - ['transcode_2eh',['transcode.h',['../transcode_8h.html',1,'']]], - ['types_2eh',['types.h',['../types_8h.html',1,'']]] -]; diff --git a/docs/search/functions_0.html b/docs/search/functions_0.html deleted file mode 100644 index 0539c8ce..00000000 --- a/docs/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js deleted file mode 100644 index 9a8f9331..00000000 --- a/docs/search/functions_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['createdirectory',['createDirectory',['../classtc_1_1fs_1_1_i_file_system.html#a7b90f72f206159efd414bb07012fc331',1,'tc::fs::IFileSystem::createDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#acc801f5562add52ef4648953dcec21ec',1,'tc::fs::LocalFileSystem::createDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a077f94d25e577a1774a5438638a2e09b',1,'tc::fs::SandboxedIFileSystem::createDirectory()']]] -]; diff --git a/docs/search/functions_1.html b/docs/search/functions_1.html deleted file mode 100644 index 4878b3d1..00000000 --- a/docs/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js deleted file mode 100644 index 16eb9670..00000000 --- a/docs/search/functions_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['deletedirectory',['deleteDirectory',['../classtc_1_1fs_1_1_i_file_system.html#a5b11adf91bfeaebe1cf6567f5acc5b3f',1,'tc::fs::IFileSystem::deleteDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#a6d67ef4752d7dceff8775829ce8e11c3',1,'tc::fs::LocalFileSystem::deleteDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#aafc06b493e9174f7f477bf730e704ad7',1,'tc::fs::SandboxedIFileSystem::deleteDirectory()']]], - ['deletefile',['deleteFile',['../classtc_1_1fs_1_1_i_file_system.html#a490578f57f7207b1ad735adf96765e54',1,'tc::fs::IFileSystem::deleteFile()'],['../classtc_1_1fs_1_1_local_file_system.html#a890603ab0fc1514a07bbf006dc17f448',1,'tc::fs::LocalFileSystem::deleteFile()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a2b7e8ad014dd689ed874c8f2a8eb8d01',1,'tc::fs::SandboxedIFileSystem::deleteFile()']]], - ['directoryinfo',['DirectoryInfo',['../classtc_1_1fs_1_1_directory_info.html#af6bbc021f4bf276deef62d92fcbced42',1,'tc::fs::DirectoryInfo::DirectoryInfo()'],['../classtc_1_1fs_1_1_directory_info.html#ae8a687020501b9ba8e85a9d198f11ddb',1,'tc::fs::DirectoryInfo::DirectoryInfo(const tc::fs::Path &path, const std::vector< std::string > &dir_list, const std::vector< std::string > &file_list)'],['../classtc_1_1fs_1_1_directory_info.html#a6bad410e0ef8959bfc39703d1fbbf600',1,'tc::fs::DirectoryInfo::DirectoryInfo(const DirectoryInfo &other)'],['../classtc_1_1fs_1_1_directory_info.html#abf29942970d90c52ab10d4824eac9309',1,'tc::fs::DirectoryInfo::DirectoryInfo(DirectoryInfo &&other)']]] -]; diff --git a/docs/search/functions_2.html b/docs/search/functions_2.html deleted file mode 100644 index 67d2a392..00000000 --- a/docs/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js deleted file mode 100644 index 4e11ed87..00000000 --- a/docs/search/functions_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['error',['error',['../classtc_1_1_exception.html#aec95c5655d5724ee3999abb52e0145ae',1,'tc::Exception']]], - ['exception',['Exception',['../classtc_1_1_exception.html#abd14a4de5399f499d2d52853f0f30482',1,'tc::Exception::Exception() noexcept'],['../classtc_1_1_exception.html#a52534d2ad7b0f808c583c06312d08027',1,'tc::Exception::Exception(const std::string &what) noexcept'],['../classtc_1_1_exception.html#a5ec4862d949017561422b45071507d02',1,'tc::Exception::Exception(const std::string &module, const std::string &what) noexcept']]] -]; diff --git a/docs/search/functions_3.html b/docs/search/functions_3.html deleted file mode 100644 index 1f0eedb3..00000000 --- a/docs/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js deleted file mode 100644 index cc2a3c24..00000000 --- a/docs/search/functions_3.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['get',['get',['../classtc_1_1_optional.html#a9f53a65980dc3b328b9a8bbd326bf8f5',1,'tc::Optional::get()'],['../classtc_1_1_shared_ptr.html#a909d9934f21d124273279a04e11fd15c',1,'tc::SharedPtr::get()']]], - ['getcurrentdirectory',['getCurrentDirectory',['../classtc_1_1fs_1_1_i_file_system.html#acc0faea5ebbe95699fa981793ae310f8',1,'tc::fs::IFileSystem::getCurrentDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#ae7258cc842dc1e18a9fc721e02529362',1,'tc::fs::LocalFileSystem::getCurrentDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a97e559e7e23a9a543775926d52eaf3c4',1,'tc::fs::SandboxedIFileSystem::getCurrentDirectory()']]], - ['getdirectorylist',['getDirectoryList',['../classtc_1_1fs_1_1_directory_info.html#accc428b913c4ba1c0a5b76a93aace95d',1,'tc::fs::DirectoryInfo']]], - ['getdirectorylisting',['getDirectoryListing',['../classtc_1_1fs_1_1_i_file_system.html#aab8e5155524ad8ec1b6c9ed48ab024e7',1,'tc::fs::IFileSystem::getDirectoryListing()'],['../classtc_1_1fs_1_1_local_file_system.html#a93d59f19036e435e001c97a3dd2851da',1,'tc::fs::LocalFileSystem::getDirectoryListing()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#adf596d27abdc145e5256d3484261249a',1,'tc::fs::SandboxedIFileSystem::getDirectoryListing()']]], - ['getfilelist',['getFileList',['../classtc_1_1fs_1_1_directory_info.html#a4f7df65368b96c8299ff697b567c3722',1,'tc::fs::DirectoryInfo']]], - ['getpath',['getPath',['../classtc_1_1fs_1_1_directory_info.html#a6f4cc36812817e57e2892204cbfa4b55',1,'tc::fs::DirectoryInfo']]], - ['getpathelementlist',['getPathElementList',['../classtc_1_1fs_1_1_path.html#a6941fd92599595d4860bac6a871806c4',1,'tc::fs::Path']]] -]; diff --git a/docs/search/functions_4.html b/docs/search/functions_4.html deleted file mode 100644 index c5bf87a4..00000000 --- a/docs/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js deleted file mode 100644 index 99baf81d..00000000 --- a/docs/search/functions_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['isnull',['isNull',['../classtc_1_1_optional.html#a1cf0ad6726a4de55d92fceab13ede701',1,'tc::Optional::isNull()'],['../classtc_1_1_shared_ptr.html#a0062441314d4ad3605772767fa464662',1,'tc::SharedPtr::isNull()']]] -]; diff --git a/docs/search/functions_5.html b/docs/search/functions_5.html deleted file mode 100644 index a34446ce..00000000 --- a/docs/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js deleted file mode 100644 index d14933f9..00000000 --- a/docs/search/functions_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['localfilesystem',['LocalFileSystem',['../classtc_1_1fs_1_1_local_file_system.html#a7e3630dcdcbee9bbc4cd7cbf7a0e51a7',1,'tc::fs::LocalFileSystem']]] -]; diff --git a/docs/search/functions_6.html b/docs/search/functions_6.html deleted file mode 100644 index 6fd4b1f3..00000000 --- a/docs/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js deleted file mode 100644 index e1542b50..00000000 --- a/docs/search/functions_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['makenull',['makeNull',['../classtc_1_1_optional.html#a49f535f906c475a39ec55c5c2f707f2c',1,'tc::Optional']]], - ['module',['module',['../classtc_1_1_exception.html#abbf530e25e09e8deb0895ede2daf589d',1,'tc::Exception']]] -]; diff --git a/docs/search/functions_7.html b/docs/search/functions_7.html deleted file mode 100644 index 6e09abf1..00000000 --- a/docs/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js deleted file mode 100644 index 00c0fd50..00000000 --- a/docs/search/functions_7.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['openfile',['openFile',['../classtc_1_1fs_1_1_i_file_system.html#af103f58e1b856bac5011a83d839ef7b9',1,'tc::fs::IFileSystem::openFile()'],['../classtc_1_1fs_1_1_local_file_system.html#ad891140c2d12503d380cf8e56c939b63',1,'tc::fs::LocalFileSystem::openFile()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#adc9f0a2b08b9d26cf06df5bb5f803023',1,'tc::fs::SandboxedIFileSystem::openFile()']]], - ['operator_21_3d',['operator!=',['../classtc_1_1fs_1_1_path.html#a281f4eb2e509185b750857b57de82bfc',1,'tc::fs::Path']]], - ['operator_2a',['operator*',['../classtc_1_1_shared_ptr.html#a30683994eee814e7451b784a9108fcfa',1,'tc::SharedPtr']]], - ['operator_2b',['operator+',['../classtc_1_1fs_1_1_path.html#a9e8051ab038f1d539a6d1544491df94c',1,'tc::fs::Path']]], - ['operator_2b_3d',['operator+=',['../classtc_1_1fs_1_1_path.html#a9cd9c337d16348b455a6528e5823e444',1,'tc::fs::Path']]], - ['operator_2d_3e',['operator->',['../classtc_1_1_shared_ptr.html#abe2cb4ff330a6084555af0bb8d8b649e',1,'tc::SharedPtr']]], - ['operator_3d',['operator=',['../classtc_1_1fs_1_1_directory_info.html#a4a7830fd210f864cefd7222e27061dd7',1,'tc::fs::DirectoryInfo::operator=(const DirectoryInfo &other)'],['../classtc_1_1fs_1_1_directory_info.html#a77cfcfdf9b5990c1908747939fbd54f2',1,'tc::fs::DirectoryInfo::operator=(DirectoryInfo &&other)'],['../classtc_1_1fs_1_1_path.html#a6b1c253e9f76aaab85c0a38ea8dc6671',1,'tc::fs::Path::operator=(const Path &other)'],['../classtc_1_1fs_1_1_path.html#a1f31d9b34e93ff04e0e8240f6a9eebe2',1,'tc::fs::Path::operator=(Path &&other)'],['../classtc_1_1_optional.html#a1531f1b98d26aaf02315df792fb85f0c',1,'tc::Optional::operator=(const T &value)'],['../classtc_1_1_optional.html#a1a44b0f0c2d2349125637ce6965a5a7c',1,'tc::Optional::operator=(const Optional< T > &other)'],['../classtc_1_1_shared_ptr.html#a1158286b59ae2ed40a855a2d0c38f561',1,'tc::SharedPtr::operator=(T *ptr)'],['../classtc_1_1_shared_ptr.html#a69832076d772f6dded50ad830bfe1a2d',1,'tc::SharedPtr::operator=(const SharedPtr< T > &other)'],['../classtc_1_1_shared_ptr.html#aba56780a6a66931359ed49f5205c26f5',1,'tc::SharedPtr::operator=(SharedPtr< T > &&other)']]], - ['operator_3d_3d',['operator==',['../classtc_1_1fs_1_1_path.html#aaac12bb402ae2b03c7648dd817e31a64',1,'tc::fs::Path']]], - ['optional',['Optional',['../classtc_1_1_optional.html#a972ac8b4e9b1ba5980b4bc6adc617651',1,'tc::Optional::Optional()'],['../classtc_1_1_optional.html#a90dc290ecb96955d604eb80ae749c65a',1,'tc::Optional::Optional(const T &value)'],['../classtc_1_1_optional.html#a03e196684441dcbef77473e00c2ee82f',1,'tc::Optional::Optional(const Optional< T > &other)']]] -]; diff --git a/docs/search/functions_8.html b/docs/search/functions_8.html deleted file mode 100644 index d59ea971..00000000 --- a/docs/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js deleted file mode 100644 index 1c56536d..00000000 --- a/docs/search/functions_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['path',['Path',['../classtc_1_1fs_1_1_path.html#a2bfe9075884ad8f30d70213471406134',1,'tc::fs::Path::Path()'],['../classtc_1_1fs_1_1_path.html#a58c780f9f6eb40453fb8d9db0ac16874',1,'tc::fs::Path::Path(const std::vector< std::string > &path_elements)'],['../classtc_1_1fs_1_1_path.html#afe304ae681dca77e668f279f4bcecf08',1,'tc::fs::Path::Path(const Path &other)'],['../classtc_1_1fs_1_1_path.html#aa3717f0f10177c33fb7bd737280e8535',1,'tc::fs::Path::Path(Path &&other)'],['../classtc_1_1fs_1_1_path.html#ae7c1f1a5bb5d45cfadd0fd8a0cf0efd3',1,'tc::fs::Path::Path(const std::string &path)'],['../classtc_1_1fs_1_1_path.html#a166032fb19e728339c5a31b56f133bec',1,'tc::fs::Path::Path(const std::u16string &path)'],['../classtc_1_1fs_1_1_path.html#abb195bc28559c627acfe4d8d2b954592',1,'tc::fs::Path::Path(const std::u32string &path)']]], - ['pos',['pos',['../classtc_1_1fs_1_1_i_file.html#a619c7ca5151a034b86425f7bda7d979a',1,'tc::fs::IFile::pos()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#ae27b7f5cefd443ded8b8f9fb186b5551',1,'tc::fs::SandboxedIFile::pos()']]] -]; diff --git a/docs/search/functions_9.html b/docs/search/functions_9.html deleted file mode 100644 index 5ccec429..00000000 --- a/docs/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js deleted file mode 100644 index 2eaa5407..00000000 --- a/docs/search/functions_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['read',['read',['../classtc_1_1fs_1_1_i_file.html#a1b810986d94d937e14a4d821d8e98031',1,'tc::fs::IFile::read()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#aa9ea0d9c2302934647bd65a5ef52f8c5',1,'tc::fs::SandboxedIFile::read()']]], - ['release',['release',['../classtc_1_1_shared_ptr.html#a02c4189243ba0fe844f986b30edda6ca',1,'tc::SharedPtr']]] -]; diff --git a/docs/search/functions_a.html b/docs/search/functions_a.html deleted file mode 100644 index 3958eb7b..00000000 --- a/docs/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js deleted file mode 100644 index 2684ad89..00000000 --- a/docs/search/functions_a.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['sandboxedifile',['SandboxedIFile',['../classtc_1_1fs_1_1_sandboxed_i_file.html#adee42c40b7a49367d3a4894869d834ae',1,'tc::fs::SandboxedIFile']]], - ['sandboxedifilesystem',['SandboxedIFileSystem',['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#a6a6bc2a44e6a1897b95fae12dc88d130',1,'tc::fs::SandboxedIFileSystem']]], - ['seek',['seek',['../classtc_1_1fs_1_1_i_file.html#afa6787f7404bf874be99f304e1c793e7',1,'tc::fs::IFile::seek()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#a7e7c71e042ef68df3f5f02131fd3be05',1,'tc::fs::SandboxedIFile::seek()']]], - ['setcurrentdirectory',['setCurrentDirectory',['../classtc_1_1fs_1_1_i_file_system.html#a77d972053206c137eb113c3e8aa6f5c5',1,'tc::fs::IFileSystem::setCurrentDirectory()'],['../classtc_1_1fs_1_1_local_file_system.html#a3eea45dc63381a88bfe9c3b4d4044287',1,'tc::fs::LocalFileSystem::setCurrentDirectory()'],['../classtc_1_1fs_1_1_sandboxed_i_file_system.html#ab6c221783cb6d0318ff2d6a4687ac034',1,'tc::fs::SandboxedIFileSystem::setCurrentDirectory()']]], - ['setdirectorylist',['setDirectoryList',['../classtc_1_1fs_1_1_directory_info.html#a750bd051532906e1bceed767117554bb',1,'tc::fs::DirectoryInfo']]], - ['setfilelist',['setFileList',['../classtc_1_1fs_1_1_directory_info.html#a1ceb5834cfb727a5b15f2e335003ff58',1,'tc::fs::DirectoryInfo']]], - ['setpath',['setPath',['../classtc_1_1fs_1_1_directory_info.html#a68c7e63963af80c41c5cd027d9fa30c5',1,'tc::fs::DirectoryInfo']]], - ['setpathelementlist',['setPathElementList',['../classtc_1_1fs_1_1_path.html#abc3c83f689c05ae947d111f7a1c0db8e',1,'tc::fs::Path']]], - ['sharedptr',['SharedPtr',['../classtc_1_1_shared_ptr.html#a094dc5cf94a08a7cfd99411eafe41275',1,'tc::SharedPtr::SharedPtr()'],['../classtc_1_1_shared_ptr.html#a051fd7ddb7cb95c17e80a38af2a2de64',1,'tc::SharedPtr::SharedPtr(T *ptr)'],['../classtc_1_1_shared_ptr.html#af4b295d45958d0c9c4d6d1bb16f0d4c3',1,'tc::SharedPtr::SharedPtr(const SharedPtr< T > &other)'],['../classtc_1_1_shared_ptr.html#a01059315d5fbff8faaa1186b3dd85b01',1,'tc::SharedPtr::SharedPtr(SharedPtr< T > &&other)']]], - ['size',['size',['../classtc_1_1fs_1_1_i_file.html#aa108aecb5219d5ea0bdf554d942259ef',1,'tc::fs::IFile::size()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#a0dc6032cb3e05926bdfa018e45074925',1,'tc::fs::SandboxedIFile::size()']]] -]; diff --git a/docs/search/functions_b.html b/docs/search/functions_b.html deleted file mode 100644 index b99b702d..00000000 --- a/docs/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_b.js b/docs/search/functions_b.js deleted file mode 100644 index 3e2eefec..00000000 --- a/docs/search/functions_b.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['transcodeutf16toutf32',['transcodeUTF16ToUTF32',['../namespacetc_1_1string.html#a681a2266e627c99459c0630ad6caac7d',1,'tc::string']]], - ['transcodeutf16toutf8',['transcodeUTF16ToUTF8',['../namespacetc_1_1string.html#a209fa80f383eebc6e4646143ed2a5b43',1,'tc::string']]], - ['transcodeutf32toutf16',['transcodeUTF32ToUTF16',['../namespacetc_1_1string.html#ae9b114fbc613439c7bbea86a30ced250',1,'tc::string']]], - ['transcodeutf32toutf8',['transcodeUTF32ToUTF8',['../namespacetc_1_1string.html#a801623aee47479983330076175988691',1,'tc::string']]], - ['transcodeutf8toutf16',['transcodeUTF8ToUTF16',['../namespacetc_1_1string.html#a05a310e56be7811d17e2c246dcf917b5',1,'tc::string']]], - ['transcodeutf8toutf32',['transcodeUTF8ToUTF32',['../namespacetc_1_1string.html#ae5ec735ee7d2f24629ce3c9e8bb0d9f1',1,'tc::string']]] -]; diff --git a/docs/search/functions_c.html b/docs/search/functions_c.html deleted file mode 100644 index 3a33d874..00000000 --- a/docs/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_c.js b/docs/search/functions_c.js deleted file mode 100644 index 54ee943f..00000000 --- a/docs/search/functions_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['unwrap',['unwrap',['../structle__uint16__t.html#a619d501185283b9eddae8d3df0f15ed4',1,'le_uint16_t::unwrap()'],['../structbe__uint16__t.html#a25c39d2d422feb839343ff8e109c229e',1,'be_uint16_t::unwrap()'],['../structle__uint32__t.html#a6ae9ae0b1b912afa6c64711330ad398a',1,'le_uint32_t::unwrap()'],['../structbe__uint32__t.html#a9bc8fd06e8a42d29b8c3a295612e1130',1,'be_uint32_t::unwrap()'],['../structle__uint64__t.html#a2d2d412c4bf672e378a42fdd1cf885ce',1,'le_uint64_t::unwrap()'],['../structbe__uint64__t.html#a9b271f889a1f91de708230d9394fb039',1,'be_uint64_t::unwrap()']]] -]; diff --git a/docs/search/functions_d.html b/docs/search/functions_d.html deleted file mode 100644 index 31b75b88..00000000 --- a/docs/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_d.js b/docs/search/functions_d.js deleted file mode 100644 index d8d1e06e..00000000 --- a/docs/search/functions_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['what',['what',['../classtc_1_1_exception.html#a8eff5742876ddad1d692aee6a3df7162',1,'tc::Exception']]], - ['wrap',['wrap',['../structle__uint16__t.html#a19cc35adcd419f50f31d7fa6ea9e329e',1,'le_uint16_t::wrap()'],['../structbe__uint16__t.html#a82cd0277bb0e8510d8da76437eafafc5',1,'be_uint16_t::wrap()'],['../structle__uint32__t.html#a3d230bf7cba5ebea53202795025402ec',1,'le_uint32_t::wrap()'],['../structbe__uint32__t.html#a670d372348149e1d86e00813df8e0fa2',1,'be_uint32_t::wrap()'],['../structle__uint64__t.html#ade8b1aa54109d88962882d9899a40d4e',1,'le_uint64_t::wrap()'],['../structbe__uint64__t.html#aabd90815f6ff3888c58365a6e1fcf1d3',1,'be_uint64_t::wrap()']]], - ['write',['write',['../classtc_1_1fs_1_1_i_file.html#a00ee588bac3fe64122b3fe22a1bd7d07',1,'tc::fs::IFile::write()'],['../classtc_1_1fs_1_1_sandboxed_i_file.html#a6871ce2257d3bf15516a482181e11f52',1,'tc::fs::SandboxedIFile::write()']]] -]; diff --git a/docs/search/functions_e.html b/docs/search/functions_e.html deleted file mode 100644 index cddb9bb5..00000000 --- a/docs/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js deleted file mode 100644 index ace97cc4..00000000 --- a/docs/search/functions_e.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_7eifile',['~IFile',['../classtc_1_1fs_1_1_i_file.html#a7dbf28208c6da2cc60fddd8031068893',1,'tc::fs::IFile']]], - ['_7esharedptr',['~SharedPtr',['../classtc_1_1_shared_ptr.html#a21f49a9897a7a039f42204f581f5c3fb',1,'tc::SharedPtr']]] -]; diff --git a/docs/search/mag_sel.png b/docs/search/mag_sel.png deleted file mode 100644 index 81f6040a2092402b4d98f9ffa8855d12a0d4ca17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/search/namespaces_0.html b/docs/search/namespaces_0.html deleted file mode 100644 index f55ca63a..00000000 --- a/docs/search/namespaces_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/namespaces_0.js b/docs/search/namespaces_0.js deleted file mode 100644 index 01271a6b..00000000 --- a/docs/search/namespaces_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fs',['fs',['../namespacetc_1_1fs.html',1,'tc']]], - ['string',['string',['../namespacetc_1_1string.html',1,'tc']]], - ['tc',['tc',['../namespacetc.html',1,'']]] -]; diff --git a/docs/search/nomatches.html b/docs/search/nomatches.html deleted file mode 100644 index b1ded27e..00000000 --- a/docs/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/docs/search/pages_0.html b/docs/search/pages_0.html deleted file mode 100644 index d7528582..00000000 --- a/docs/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js deleted file mode 100644 index 6b54dfd2..00000000 --- a/docs/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['libtoolchain_20_2d_20api_20reference',['libtoolchain - API Reference',['../index.html',1,'']]] -]; diff --git a/docs/search/search.css b/docs/search/search.css deleted file mode 100644 index 3cf9df94..00000000 --- a/docs/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- 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 deleted file mode 100644 index a554ab9c..00000000 --- a/docs/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -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 diff --git a/docs/search/search_r.png b/docs/search/search_r.png deleted file mode 100644 index 97ee8b439687084201b79c6f776a41f495c6392a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/typedefs_0.js b/docs/search/typedefs_0.js deleted file mode 100644 index 026c86b4..00000000 --- a/docs/search/typedefs_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['byte_5ft',['byte_t',['../types_8h.html#a5f2bd8130655730e7899c385aca6a2b1',1,'types.h']]] -]; diff --git a/docs/search/variables_0.html b/docs/search/variables_0.html deleted file mode 100644 index 51f7bd6b..00000000 --- a/docs/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/search/variables_0.js b/docs/search/variables_0.js deleted file mode 100644 index 0d1c1240..00000000 --- a/docs/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['kunixpathdelimiter',['kUnixPathDelimiter',['../classtc_1_1fs_1_1_path.html#a5d29904c84565ead7ed1f2746416182b',1,'tc::fs::Path']]], - ['kwindowspathdelimiter',['kWindowsPathDelimiter',['../classtc_1_1fs_1_1_path.html#aba0d0b1b9e112f43ab89f53150da53e2',1,'tc::fs::Path']]] -]; diff --git a/docs/splitbar.png b/docs/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{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 diff --git a/docs/string_8h.html b/docs/string_8h.html deleted file mode 100644 index 47972561..00000000 --- a/docs/string_8h.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -libtoolchain: tc/string.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
string.h File Reference
-
-
- -

Declaration of the string library. -More...

-
#include <tc/types.h>
-#include <tc/string/transcode.h>
-
-Include dependency graph for string.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 tc::string
 Namespace of the string library.
 
-

Detailed Description

-

Declaration of the string library.

- -

Definition in file string.h.

-
-
- - - - diff --git a/docs/string_8h__dep__incl.map b/docs/string_8h__dep__incl.map deleted file mode 100644 index 969a4c52..00000000 --- a/docs/string_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/string_8h__dep__incl.md5 b/docs/string_8h__dep__incl.md5 deleted file mode 100644 index 24b3a254..00000000 --- a/docs/string_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a7c323bb8697f86149362253d1d3127d \ No newline at end of file diff --git a/docs/string_8h__dep__incl.png b/docs/string_8h__dep__incl.png deleted file mode 100644 index 5d69d1c90139eb255b99c0617d17694a6dc39697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2372 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 - - - - diff --git a/docs/string_8h__incl.md5 b/docs/string_8h__incl.md5 deleted file mode 100644 index f964a176..00000000 --- a/docs/string_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4559c3a7383e4ebf6caa4e13da4f2d28 \ No newline at end of file diff --git a/docs/string_8h__incl.png b/docs/string_8h__incl.png deleted file mode 100644 index ba2019364d30fd6306f612c121aae7326abd8b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15726 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 VpDp#;!Ep?cl~j}{6?-4_e*h{1@?Zb} diff --git a/docs/string_8h_source.html b/docs/string_8h_source.html deleted file mode 100644 index 46788ebe..00000000 --- a/docs/string_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -libtoolchain: tc/string.h Source File - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
string.h
-
-
-Go to the documentation of this file.
1 
5 #pragma once
6 #include <tc/types.h>
7 
12 #include <tc/string/transcode.h>
Declaration of generic types used by libtoolchain.
-
Declaration of functions to transcode between UTF-8/UTF-16/UTF-32.
-
-
- - - - diff --git a/docs/structbe__uint16__t-members.html b/docs/structbe__uint16__t-members.html deleted file mode 100644 index 048250ef..00000000 --- a/docs/structbe__uint16__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
be_uint16_t Member List
-
-
- -

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

- - - -
unwrap() constbe_uint16_tinline
wrap(uint16_t var)be_uint16_tinline
-
- - - - diff --git a/docs/structbe__uint16__t.html b/docs/structbe__uint16__t.html deleted file mode 100644 index 09d7a0d3..00000000 --- a/docs/structbe__uint16__t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -libtoolchain: be_uint16_t Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
be_uint16_t Struct Reference
-
-
- -

Wrapper that allows accessing a big-endian uint16_t regardless of processor endianness. - More...

- -

#include <tc/endian.h>

- - - - - - - - -

-Public Member Functions

-uint16_t unwrap () const
 Unwrap value.
 
-void wrap (uint16_t var)
 Wrap value.
 
-

Detailed Description

-

Wrapper that allows accessing a big-endian uint16_t regardless of processor endianness.

- -

Definition at line 63 of file endian.h.

-

The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/docs/structbe__uint16__t.js b/docs/structbe__uint16__t.js deleted file mode 100644 index 3a1a85d7..00000000 --- a/docs/structbe__uint16__t.js +++ /dev/null @@ -1,5 +0,0 @@ -var structbe__uint16__t = -[ - [ "unwrap", "structbe__uint16__t.html#a25c39d2d422feb839343ff8e109c229e", null ], - [ "wrap", "structbe__uint16__t.html#a82cd0277bb0e8510d8da76437eafafc5", null ] -]; \ No newline at end of file diff --git a/docs/structbe__uint32__t-members.html b/docs/structbe__uint32__t-members.html deleted file mode 100644 index 724e8da5..00000000 --- a/docs/structbe__uint32__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
be_uint32_t Member List
-
-
- -

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

- - - -
unwrap() constbe_uint32_tinline
wrap(uint32_t var)be_uint32_tinline
-
- - - - diff --git a/docs/structbe__uint32__t.html b/docs/structbe__uint32__t.html deleted file mode 100644 index 4fe77d5e..00000000 --- a/docs/structbe__uint32__t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -libtoolchain: be_uint32_t Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
be_uint32_t Struct Reference
-
-
- -

Wrapper that allows accessing a big-endian uint32_t regardless of processor endianness. - More...

- -

#include <tc/endian.h>

- - - - - - - - -

-Public Member Functions

-uint32_t unwrap () const
 Unwrap value.
 
-void wrap (uint32_t var)
 Wrap value.
 
-

Detailed Description

-

Wrapper that allows accessing a big-endian uint32_t regardless of processor endianness.

- -

Definition at line 91 of file endian.h.

-

The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/docs/structbe__uint32__t.js b/docs/structbe__uint32__t.js deleted file mode 100644 index f4271ec7..00000000 --- a/docs/structbe__uint32__t.js +++ /dev/null @@ -1,5 +0,0 @@ -var structbe__uint32__t = -[ - [ "unwrap", "structbe__uint32__t.html#a9bc8fd06e8a42d29b8c3a295612e1130", null ], - [ "wrap", "structbe__uint32__t.html#a670d372348149e1d86e00813df8e0fa2", null ] -]; \ No newline at end of file diff --git a/docs/structbe__uint64__t-members.html b/docs/structbe__uint64__t-members.html deleted file mode 100644 index dafde4df..00000000 --- a/docs/structbe__uint64__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
be_uint64_t Member List
-
-
- -

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

- - - -
unwrap() constbe_uint64_tinline
wrap(uint64_t var)be_uint64_tinline
-
- - - - diff --git a/docs/structbe__uint64__t.html b/docs/structbe__uint64__t.html deleted file mode 100644 index 8e807849..00000000 --- a/docs/structbe__uint64__t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -libtoolchain: be_uint64_t Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
be_uint64_t Struct Reference
-
-
- -

Wrapper that allows accessing a big-endian uint64_t regardless of processor endianness. - More...

- -

#include <tc/endian.h>

- - - - - - - - -

-Public Member Functions

-uint64_t unwrap () const
 Unwrap value.
 
-void wrap (uint64_t var)
 Wrap value.
 
-

Detailed Description

-

Wrapper that allows accessing a big-endian uint64_t regardless of processor endianness.

- -

Definition at line 119 of file endian.h.

-

The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/docs/structbe__uint64__t.js b/docs/structbe__uint64__t.js deleted file mode 100644 index 8bc55788..00000000 --- a/docs/structbe__uint64__t.js +++ /dev/null @@ -1,5 +0,0 @@ -var structbe__uint64__t = -[ - [ "unwrap", "structbe__uint64__t.html#a9b271f889a1f91de708230d9394fb039", null ], - [ "wrap", "structbe__uint64__t.html#aabd90815f6ff3888c58365a6e1fcf1d3", null ] -]; \ No newline at end of file diff --git a/docs/structle__uint16__t-members.html b/docs/structle__uint16__t-members.html deleted file mode 100644 index 57290ef9..00000000 --- a/docs/structle__uint16__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
le_uint16_t Member List
-
-
- -

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

- - - -
unwrap() constle_uint16_tinline
wrap(uint16_t var)le_uint16_tinline
-
- - - - diff --git a/docs/structle__uint16__t.html b/docs/structle__uint16__t.html deleted file mode 100644 index c5fda092..00000000 --- a/docs/structle__uint16__t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -libtoolchain: le_uint16_t Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
le_uint16_t Struct Reference
-
-
- -

Wrapper that allows accessing a little-endian uint16_t regardless of processor endianness. - More...

- -

#include <tc/endian.h>

- - - - - - - - -

-Public Member Functions

-uint16_t unwrap () const
 Unwrap value.
 
-void wrap (uint16_t var)
 Wrap value.
 
-

Detailed Description

-

Wrapper that allows accessing a little-endian uint16_t regardless of processor endianness.

- -

Definition at line 49 of file endian.h.

-

The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/docs/structle__uint16__t.js b/docs/structle__uint16__t.js deleted file mode 100644 index 61e31ed7..00000000 --- a/docs/structle__uint16__t.js +++ /dev/null @@ -1,5 +0,0 @@ -var structle__uint16__t = -[ - [ "unwrap", "structle__uint16__t.html#a619d501185283b9eddae8d3df0f15ed4", null ], - [ "wrap", "structle__uint16__t.html#a19cc35adcd419f50f31d7fa6ea9e329e", null ] -]; \ No newline at end of file diff --git a/docs/structle__uint32__t-members.html b/docs/structle__uint32__t-members.html deleted file mode 100644 index 0e64a29d..00000000 --- a/docs/structle__uint32__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
le_uint32_t Member List
-
-
- -

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

- - - -
unwrap() constle_uint32_tinline
wrap(uint32_t var)le_uint32_tinline
-
- - - - diff --git a/docs/structle__uint32__t.html b/docs/structle__uint32__t.html deleted file mode 100644 index 65117905..00000000 --- a/docs/structle__uint32__t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -libtoolchain: le_uint32_t Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
le_uint32_t Struct Reference
-
-
- -

Wrapper that allows accessing a little-endian uint32_t regardless of processor endianness. - More...

- -

#include <tc/endian.h>

- - - - - - - - -

-Public Member Functions

-uint32_t unwrap () const
 Unwrap value.
 
-void wrap (uint32_t var)
 Wrap value.
 
-

Detailed Description

-

Wrapper that allows accessing a little-endian uint32_t regardless of processor endianness.

- -

Definition at line 77 of file endian.h.

-

The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/docs/structle__uint32__t.js b/docs/structle__uint32__t.js deleted file mode 100644 index 2439b326..00000000 --- a/docs/structle__uint32__t.js +++ /dev/null @@ -1,5 +0,0 @@ -var structle__uint32__t = -[ - [ "unwrap", "structle__uint32__t.html#a6ae9ae0b1b912afa6c64711330ad398a", null ], - [ "wrap", "structle__uint32__t.html#a3d230bf7cba5ebea53202795025402ec", null ] -]; \ No newline at end of file diff --git a/docs/structle__uint64__t-members.html b/docs/structle__uint64__t-members.html deleted file mode 100644 index d2346285..00000000 --- a/docs/structle__uint64__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -libtoolchain: Member List - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
le_uint64_t Member List
-
-
- -

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

- - - -
unwrap() constle_uint64_tinline
wrap(uint64_t var)le_uint64_tinline
-
- - - - diff --git a/docs/structle__uint64__t.html b/docs/structle__uint64__t.html deleted file mode 100644 index f394d454..00000000 --- a/docs/structle__uint64__t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -libtoolchain: le_uint64_t Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
le_uint64_t Struct Reference
-
-
- -

Wrapper that allows accessing a little-endian uint64_t regardless of processor endianness. - More...

- -

#include <tc/endian.h>

- - - - - - - - -

-Public Member Functions

-uint64_t unwrap () const
 Unwrap value.
 
-void wrap (uint64_t var)
 Wrap value.
 
-

Detailed Description

-

Wrapper that allows accessing a little-endian uint64_t regardless of processor endianness.

- -

Definition at line 105 of file endian.h.

-

The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/docs/structle__uint64__t.js b/docs/structle__uint64__t.js deleted file mode 100644 index 25053dbc..00000000 --- a/docs/structle__uint64__t.js +++ /dev/null @@ -1,5 +0,0 @@ -var structle__uint64__t = -[ - [ "unwrap", "structle__uint64__t.html#a2d2d412c4bf672e378a42fdd1cf885ce", null ], - [ "wrap", "structle__uint64__t.html#ade8b1aa54109d88962882d9899a40d4e", null ] -]; \ No newline at end of file diff --git a/docs/sync_off.png b/docs/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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* diff --git a/docs/sync_on.png b/docs/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/tab_a.png b/docs/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/tab_b.png b/docs/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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^ diff --git a/docs/tabs.css b/docs/tabs.css deleted file mode 100644 index a28614b8..00000000 --- a/docs/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/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}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 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:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.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);-moz-border-radius:5px;-webkit-border-radius:5px;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{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;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{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;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{-moz-border-radius:0;-webkit-border-radius:0;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:white;text-shadow:0 1px 1px black}.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;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white 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;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);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:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.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;-moz-border-radius:5px;-webkit-border-radius:5px;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}} \ No newline at end of file diff --git a/docs/tc_8h.html b/docs/tc_8h.html deleted file mode 100644 index a72a0f3f..00000000 --- a/docs/tc_8h.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -libtoolchain: tc/tc.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - -
-
libtoolchain -  v0.1.0 -
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
tc.h File Reference
-
-
- -

Declaration of the libtoolchain namespace. -More...

-
#include <tc/types.h>
-#include <tc/Exception.h>
-#include <tc/Optional.h>
-#include <tc/SharedPtr.h>
-#include <tc/string.h>
-#include <tc/fs.h>
-
-Include dependency graph for tc.h:
-
-
- - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Namespaces

 tc
 Root namespace for libtoolchain.
 
-

Detailed Description

-

Declaration of the libtoolchain namespace.

- -

Definition in file tc.h.

-
-
- - - - diff --git a/docs/tc_8h__incl.map b/docs/tc_8h__incl.map deleted file mode 100644 index 0f29bca2..00000000 --- a/docs/tc_8h__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/docs/tc_8h__incl.md5 b/docs/tc_8h__incl.md5 deleted file mode 100644 index 8dde9780..00000000 --- a/docs/tc_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fe820a588a5a082a8a19ae46582c32fe \ No newline at end of file diff --git a/docs/tc_8h__incl.png b/docs/tc_8h__incl.png deleted file mode 100644 index 2eb758a391b05e81fa316260b30d91e977ab17d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128598 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

d=KCl%M~LURao{ug^;> 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

    bBPM-o}q6SsxuRi2bi$t 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 z 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

    DC1ei&_gxB3Z|0s{U)NIkR9ANT)G3;g@&bAB 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 YuioO6HR>6~f&8qhbp1-MqRE5*0al=(sQ>@~ diff --git a/docs/tc_8h_source.html b/docs/tc_8h_source.html deleted file mode 100644 index c37565b7..00000000 --- a/docs/tc_8h_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -libtoolchain: tc/tc.h Source File - - - - - - - - - - - - - - -

    -
    - - - - - - -
    -
    libtoolchain -  v0.1.0 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    tc.h
    -
    -
    -Go to the documentation of this file.
    1 
    5 #pragma once
    6 #include <tc/types.h>
    7 
    12 #include <tc/Exception.h>
    13 #include <tc/Optional.h>
    14 #include <tc/SharedPtr.h>
    15 #include <tc/string.h>
    16 #include <tc/fs.h>
    Declaration of tc::Optional.
    -
    Declaration of generic types used by libtoolchain.
    -
    Declaration of the string library.
    -
    Declaration of the filesystem library.
    -
    Declaration of tc::SharedPtr.
    -
    Declaration of tc::Exception.
    -
    -
    - - - - diff --git a/docs/transcode_8h.html b/docs/transcode_8h.html deleted file mode 100644 index 237a87cd..00000000 --- a/docs/transcode_8h.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -libtoolchain: tc/string/transcode.h File Reference - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    libtoolchain -  v0.1.0 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    - -
    -
    transcode.h File Reference
    -
    -
    - -

    Declaration of functions to transcode between UTF-8/UTF-16/UTF-32. -More...

    -
    #include <string>
    -
    -Include dependency graph for transcode.h:
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Namespaces

     tc
     Root namespace for libtoolchain.
     
     tc::string
     Namespace of the string library.
     
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    void tc::string::transcodeUTF8ToUTF32 (const std::string &src, std::u32string &dst)
     Transcode a UTF-8 string to UTF-32. More...
     
    void tc::string::transcodeUTF16ToUTF32 (const std::u16string &src, std::u32string &dst)
     Transcode a UTF-16 string to UTF-32. More...
     
    void tc::string::transcodeUTF32ToUTF8 (const std::u32string &src, std::string &dst)
     Transcode a UTF-32 string to UTF-8. More...
     
    void tc::string::transcodeUTF32ToUTF16 (const std::u32string &src, std::u16string &dst)
     Transcode a UTF-32 string to UTF-16. More...
     
    void tc::string::transcodeUTF8ToUTF16 (const std::string &src, std::u16string &dst)
     Transcode a UTF-8 string to UTF-16. More...
     
    void tc::string::transcodeUTF16ToUTF8 (const std::u16string &src, std::string &dst)
     Transcode a UTF-16 string to UTF-8. More...
     
    -

    Detailed Description

    -

    Declaration of functions to transcode between UTF-8/UTF-16/UTF-32.

    -
    Author
    Jack (jakcron)
    -
    Version
    0.1
    -
    Date
    2018/12/23
    - -

    Definition in file transcode.h.

    -
    -
    - - - - diff --git a/docs/transcode_8h.js b/docs/transcode_8h.js deleted file mode 100644 index fe3d6dac..00000000 --- a/docs/transcode_8h.js +++ /dev/null @@ -1,9 +0,0 @@ -var transcode_8h = -[ - [ "transcodeUTF16ToUTF32", "transcode_8h.html#a681a2266e627c99459c0630ad6caac7d", null ], - [ "transcodeUTF16ToUTF8", "transcode_8h.html#a209fa80f383eebc6e4646143ed2a5b43", null ], - [ "transcodeUTF32ToUTF16", "transcode_8h.html#ae9b114fbc613439c7bbea86a30ced250", null ], - [ "transcodeUTF32ToUTF8", "transcode_8h.html#a801623aee47479983330076175988691", null ], - [ "transcodeUTF8ToUTF16", "transcode_8h.html#a05a310e56be7811d17e2c246dcf917b5", null ], - [ "transcodeUTF8ToUTF32", "transcode_8h.html#ae5ec735ee7d2f24629ce3c9e8bb0d9f1", null ] -]; \ No newline at end of file diff --git a/docs/transcode_8h__dep__incl.map b/docs/transcode_8h__dep__incl.map deleted file mode 100644 index 7ecda72a..00000000 --- a/docs/transcode_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/transcode_8h__dep__incl.md5 b/docs/transcode_8h__dep__incl.md5 deleted file mode 100644 index e04191db..00000000 --- a/docs/transcode_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -971e7f4dcc7233f6c3dc6ae89eb95d27 \ No newline at end of file diff --git a/docs/transcode_8h__dep__incl.png b/docs/transcode_8h__dep__incl.png deleted file mode 100644 index 13263f74ec7d7566e2a8b8164b7edbd77d740bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4817 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 Qe^k(IO#_W`HM_9?0_eUEbpQYW diff --git a/docs/transcode_8h__incl.map b/docs/transcode_8h__incl.map deleted file mode 100644 index be5b20b0..00000000 --- a/docs/transcode_8h__incl.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/docs/transcode_8h__incl.md5 b/docs/transcode_8h__incl.md5 deleted file mode 100644 index c9ca1f5b..00000000 --- a/docs/transcode_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -62a38888430e0ae092c7cc7fa85da374 \ No newline at end of file diff --git a/docs/transcode_8h__incl.png b/docs/transcode_8h__incl.png deleted file mode 100644 index 1dcc55a4efaba9c5d6a08bc2b27ea3581f558f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3080 zcmcIm2Uio@8XY>KfFQky1w${=u5`iBLJ$O{1XKi3K#(3lI(UH)0fC!@8k&F-ibxYF zUP=f>dXwG+q($jQVtC_Q@4of^z?)e!XPvdCobT-Y?Y&VJH;vfYgxCN8U^g*_T7qLb zczLtZgLlt*`3!Jib}}`B0w=%EyylWL065)j0@b@6l)ar30#CCMBSkb@2*mVQd#`Z2 z`8@UA*;V587oTF+TT@|T4j2{wbZg1wQK!Fb=9vJr9yhMoPX+-MNU92Mg-?ovlr!@% zJbcbx-OLpYwfx%S&E#$mn?6b=9R z0-dUkDe;j8m+1LWtp1xZajb~dH znW(%!(AO6rnVMHqGwO#@G-paCWerCk8AJcR#6^dOGRksu&0N{7{7BPyw*T77{FXGP zF64by=Podk%aKg7lEx^D^t+|R#KeT^oSC?JHPktTc^xa5O?Q?v+RMRD@i3G0SyvYHi_pOeUn4e~h zE-Nd$Y?S0$izpcQ`qkCK;%rPS5Q)WN+uGVbefmVDQj3d=rFi2HN~){MBl}>KRu`Gnh(b9H3P|8WHRJg zCLGe>fXCtLAG9;0pi1iMZXwnYzYZqK?duT|K71tx;gl5|;7y)U2d;%2dieSI+1X82 zIg>ynZ0zk#_Zx!uRugz-fa{eLVp>6pGBTUfULR+hg7=0Bjo6uE0+^zI{`|SLw1m4K zKKU$bWSf$fuE1h_nL@2 z&fd~8H9g(96J}<{1XNGLi!3E1BtSw;RNOso=hQu`Fd`KXEx1FlW@2Kp`(u|vUCWKo zQC2<&bar;OoX|p2jB6ftb3@WHva=m5EEHX2ja)L|t8c7Ibbc%_@S%y1s!{I$E`cm! z1{oP6*aUu?6BQKfUhzH6#+I3xDSxlY*1;hgi#=RID-^$a^>Vr+S(od+v z!;R9=(C{c^V~ozryRcO16dF2X!U-U~hRnn;FkVqnGcCL_xLxXgzp==I7r%UY7GUMz zz`}~w`f~^s72zuwo9FtA1qNu3&9mm&^k^bIAe3k*B8`E`<4kFo_C>g0?=3rxoC?b~ z;@qg4C71CluB?r2+x@U zaL~~{P75<`@g}*9&qM7Pq?M14Psf9Z2wlK7dFA!imoHzU7+7GYrdC!~iH0Bx3JWi8 z71wH#`0oWp85T-mdOm-)1uUd7i;IhNbadL<+7H`WT6A`0F*w}0@mj=oS695}Xoh6y zHC#zZ=FJj@$QLipG&synOiawrE2J35#>N5*or%J~m0{9vz9r1e%ktUURVB045o8p7Bn#*HYeGb|@>%s^ zSC#Y05*S!qY%F=M+1}2s;n~4PS($7G9J#mJcYO4%zP{eZ+L~K+WMsreX>wt~F(M+u z#N<>J`VTcV9Z09u!oEyu-y;bKWcAAz6*V=sKlPjMDe$2Wo`u0+3C7||8Suiw!VY~p z;0*H(Sw8SnSRBsC$S7jBTOukdYMi%Nm;Cc!lWqa6&|*Ot+u7MMFfhms|M}*3Yk~DX zop1Ryn13TbKc7OOc(qW9ZDk>qcgw4?#*sJRUF4!{(-vIq9L} zv-BKRwB&saT>gCR6Mn#Bs%E_db*>S)tt6BvV_haGFV7sgySqz7^Ruw9Xok>4^{Qz1 z{pZ7ua;{&nkmRW-CF?(({h$hJi0|SDpXJW(GzrwiiZW|5iBMTN(A#_2p1OMPiI>;6 z$GKt1wSLi<*6(10^{niIczMO`UVP+VwQMpMc62wU)qCM@x|4I7s7y@iiece=rW1GUsCbFa(aC9WT5skw z6J@|C0Xha)+^QP;J)gV$k7d05U;p^OOj^xl?|-D_VzHWE7BMojz{`vbXx*!#KKq8< zI||}{65)G&HY0JZd1AUWFO3}cUjbzj=J!}YebQ2Q3tvtQ`c~w}&zb-?L7nF06g_{Q zL2;UfA+nj6p!Pzg17jA>n-p34`r#A>khDZ*#zDqtm)jfgj}@O;^en`I@09Ly=aAu; zR#%lBN;iIBnQoA$!BOuFPMA*d0K+fb3)1ZnCLS15Yz%buhs#}9;7XyRtC^W8n(JA9 z`jR&zZ7*}^M;DQ!ZBzP!Y-;-{bL04TG{M-8j<4_Evnm++%5)_#MuLy4Ox;LP5#n78 z;2q@aUOVaa2oIX?@u>6o{PuHW@C;kerTfp^#)peQDbg>p#L6wdovd!k=}OF#tK`r)*Bu+rtxz7uiLU@;u^X31NAs7EwzmF0}!zuyu~9vT{oilVc*;ary{wrG$lrad9E%CRtCPmXVU$2|Yg$ z6K@Q{p{3<9-S1SDB%;1V(ZZ7y4AfLqWNqIrG_2vXGy|V{dddN>ii_#5KYS=o^-{kh z$s@v10{XfGLW-vcH0`vswDz_(4ly0L3ds3auf!o~-OD@jcRzd~ZN4Rvzz&keY+M!X zB#{Kq#KIxMLP8n=8@I1tkF+LiudiQR)7QG!i1Y*(XJf-Z$pHih2cJ;)k{#q(B0rwc z8cR#1K{WxxQhR&*N9t}b=+DJ|`nSRT&QITg-hFX`8g*6C)6=tjbDJ=Rkj3uo_*74N z$m|}?M@WdB+XlS1r&Q5IClw*Oypoc~V2YRz-D9_FsHo_VF!(t?-1AV$9)XyensRb> zo+z^$85(*JsGY4F(cN$y?p02#`>U#| zN@Luo>pTSo1%(nj>xA8Ug*G|403fctA?#Q!_yAP+U@D>!(sVM{ormCd{ z`m^ARxIilsiIh`X9dh)v%64XSR7FV%bQaJq?&gj;2Zea%_MAI127}M)Cqa3fuz)~% zdV0{#k^!0sCY^>*$}VV*{gNfb)roi3tg1;_-8XgNjea%OoKCecHnc z1|JekaqIro_?M1>qhlUtEcE;7G`!jO^Z&d6#^tsM ZI*R)*J)%HO1sLrC6N8)33Vp}ue*rRL^O^tv diff --git a/docs/transcode_8h_source.html b/docs/transcode_8h_source.html deleted file mode 100644 index d2bfde81..00000000 --- a/docs/transcode_8h_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -libtoolchain: tc/string/transcode.h Source File - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    libtoolchain -  v0.1.0 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    transcode.h
    -
    -
    -Go to the documentation of this file.
    1 
    8 #pragma once
    9 #include <string>
    10 
    11 namespace tc { namespace string {
    12 
    20  void transcodeUTF8ToUTF32(const std::string& src, std::u32string& dst);
    21 
    29  void transcodeUTF16ToUTF32(const std::u16string& src, std::u32string& dst);
    30 
    38  void transcodeUTF32ToUTF8(const std::u32string& src, std::string& dst);
    39 
    47  void transcodeUTF32ToUTF16(const std::u32string& src, std::u16string& dst);
    48 
    56  void transcodeUTF8ToUTF16(const std::string& src, std::u16string& dst);
    57 
    65  void transcodeUTF16ToUTF8(const std::u16string& src, std::string& dst);
    66 
    67 }} // namespace tc::string
    void transcodeUTF8ToUTF16(const std::string &src, std::u16string &dst)
    Transcode a UTF-8 string to UTF-16.
    -
    void transcodeUTF8ToUTF32(const std::string &src, std::u32string &dst)
    Transcode a UTF-8 string to UTF-32.
    -
    Root namespace for libtoolchain.
    Definition: Exception.h:12
    -
    void transcodeUTF16ToUTF32(const std::u16string &src, std::u32string &dst)
    Transcode a UTF-16 string to UTF-32.
    -
    void transcodeUTF32ToUTF16(const std::u32string &src, std::u16string &dst)
    Transcode a UTF-32 string to UTF-16.
    -
    void transcodeUTF32ToUTF8(const std::u32string &src, std::string &dst)
    Transcode a UTF-32 string to UTF-8.
    -
    void transcodeUTF16ToUTF8(const std::u16string &src, std::string &dst)
    Transcode a UTF-16 string to UTF-8.
    -
    -
    - - - - diff --git a/docs/types_8h.html b/docs/types_8h.html deleted file mode 100644 index c0f6d085..00000000 --- a/docs/types_8h.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -libtoolchain: tc/types.h File Reference - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    libtoolchain -  v0.1.0 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    - -
    - -
    - -
    -
    types.h File Reference
    -
    -
    - -

    Declaration of generic types used by libtoolchain. -More...

    -
    #include <string>
    -#include <vector>
    -#include <cstdint>
    -#include <cstring>
    -#include <tc/endian.h>
    -
    -Include dependency graph for types.h:
    -
    -
    - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Typedefs

    -typedef uint8_t byte_t
     Typedef uint8_t to byte_t to more explicity indicate its role in memory related contexts.
     
    -

    Detailed Description

    -

    Declaration of generic types used by libtoolchain.

    -
    Author
    Jack (jakcron)
    -
    Version
    0.1
    -
    Date
    2019/01/15
    - -

    Definition in file types.h.

    -
    -
    - - - - diff --git a/docs/types_8h.js b/docs/types_8h.js deleted file mode 100644 index 4e934ee9..00000000 --- a/docs/types_8h.js +++ /dev/null @@ -1,4 +0,0 @@ -var types_8h = -[ - [ "byte_t", "types_8h.html#a5f2bd8130655730e7899c385aca6a2b1", null ] -]; \ No newline at end of file diff --git a/docs/types_8h__dep__incl.map b/docs/types_8h__dep__incl.map deleted file mode 100644 index e2c0e11a..00000000 --- a/docs/types_8h__dep__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/docs/types_8h__dep__incl.md5 b/docs/types_8h__dep__incl.md5 deleted file mode 100644 index 9a09747d..00000000 --- a/docs/types_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1ed6680bd6c6a93f8b4fd39c668bde20 \ No newline at end of file diff --git a/docs/types_8h__dep__incl.png b/docs/types_8h__dep__incl.png deleted file mode 100644 index 4af9b63c1870bec0b5f3ff0898474a935495b736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91815 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
      {SYhe2=^ErBd_25M@7 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 diff --git a/docs/types_8h__incl.map b/docs/types_8h__incl.map deleted file mode 100644 index 5b15af26..00000000 --- a/docs/types_8h__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/types_8h__incl.md5 b/docs/types_8h__incl.md5 deleted file mode 100644 index 6829969b..00000000 --- a/docs/types_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -95a8158d8d8cecb285b1b0e3384d00c6 \ No newline at end of file diff --git a/docs/types_8h__incl.png b/docs/types_8h__incl.png deleted file mode 100644 index 68ed6e87a2d2596451339ee5a1a0c5c661711f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10792 zcmd6NbySsKx9+A}QrLjB0zVohq-6u5lyvu|q`SL2R6wKzM7mQNHUiQi-69|jl9G3A z&;7n}&OPUj`|lk(1mWH9nrp^054jExEY9oHj% z3cg^P%F9Ya?vQ^zwidjFKlO)Mp)z!)B zZppfJDaZuLRch;$irj?zXU2=P1InJbr#011lGm{oM&gYZ+tq!=Ku^|9{#qX_r$UZ` zhYh3u_UE=Uv7bbN{@akEc*W+CmxA-b5DN>7my5%&m{tcAP9I7HyI^|R=Y|2kiL7RA z!Da|Oycb5n5K6R^bI2G<)Fl$GPx0(zq?axrHZ~T&d|-v2j*hP7sE1lVRTA5hwI#C0 z+{|oc;fu@R;o(XXnPLCHz*-YJ?5XUk%+uA?)u8w9q2NQ0tOa4e1i4|@45HGjGT;!8 z|MMu}t3wnz?ZA$X zXSQ>-IBsrk)$2Ca*2bo$sBrk2`;Ps5JprBXVUX=?csM3HIy$|C1l`xKU*Ge+CVBki zNtM|*5_C*V(}5IDD{E_1$cu+0-90^~x7UB(3%M}Y+s>j^Y2$zNdd1Dih^khgB;)AF zqm(VaxMkDieahB_Kpg#u;Wj;3YGt$j2X=xLMlt4{?RQ2AS?Nn+f&?NW2-mv8@GeFI zZbK3zZlN+VGLZ=hshj~vKV)KQMCuW4EJ_)XCnv5i@>L^EE2*d$SNtJ{sP);ZjOS)|6lr8+WMECr6McRC zO8Z4&d|FZMGtcMGF?(VuCsv!Xva)#i__|Mbrcof4!x=&C?Exj`n&tX9SXfw%&CT%H zYV)Tq8~Biw??q~!H>cAkc6J056cnY}Rj4{TI*D@mM7Uu@F<*K3`M=h_o;W<6HbTtI zXz$x-R~n-zC@26+<3S3`%JwwViEC`Y7jK}qt@|TLv{(d=4LI!CsGQ&`h($Z38U0qyDOH0TzNl6so z3&bQO!2_w>@b85xndNua$0P8yo;XKm=iq_@meR5^Ju&}-C9%fF#=hHS5K=|!mEvM*^Y@2Ah7O@}`4zfe*NPfOE@;8(UH9v5?+Nj!Y+ z=O+f~SYD>9s;X*q*}R8~hgW4jK>jWz1=Z@7z-FP*$$1(B!p+SMoMLyexnYq(>Z6yk ztdkS3|IMkE@1OP5_m9nSA;$gh{+X$QW68U@LojafOAf($AlF_4Ht} zYnBE|Ga{YE_Ek}yThK;p77i)%$MW)fYrP2$=f3{_{@UP_sWQC?mAvN+e0*dOA}T6e zJv}|}f**C$h9My#XogKrZSqEni|{L z#eMqpuw0%Yl>KGxrp$?)ni?rkg5&o0e-yICGk2V^84Lgro%9c-3s#wa#Z^cbAV7o@ z*qpvED*DG_IOCg&c_@+jsFhT%R!d6@kZXJuo|2MsakYF`z8VcaEa_ti5YscFD~1S$ zeW2_~48vZf!9@aGixipwHVc43r?Xw1u#{vulpNZdv`OEMM{h;K)V;jCn*S-o9uoxK zMGF2iQ)wbqFaV{VM=UH*n>z7ZTMx6<`8}ywwX$ZDg0K1I+dL82$Aehea;SJ4prJi^ zpBC4hC;Qr1A@}4GGFnrBH8>=j(Qow>OH~ z)n;m`Q$u}y&zIZa#Lx?z;^OV5+PI928qckKN=L`{!TvXfUrQ?Xr7SEYOU$j@333lW zfacz}wx)9YHEQmAHk(jbS}OA_kVUgRBh&k9>uV9lBmc-nAGBU;oM=IiM=XX71r6-QDyVr7MrmBP} z=F#CfUGS(fT`b+fRM{R$mm07dwV*v2gTR^So3|CY-~bLoQF0R#xQWS_+Lm2%vIf(` zpLpt;Q;g!b=J>R`hbPIxInjrxflb21n&k^IF%-u~e>P)QHw7=Y*u`Y*%CNtE(;}uw zjbB)}a&)PYvMMAb=cFQdQbW7AB+eizxhlga%VvJD8X;=Ce2Z4D{{`*UD_IUBag?AS zCS$9ax@@C>n>sQE1`!i``{2;f)YX+k+lC!=4NnvhpE9l|#19{unXdH+X;*)`sq1Mf zHh0+VOUed$pksFyK};)NKEJAnO$glg)W()TM0@8p{5 zHGNa%TC{y`3ONmTc`=u;sb21Zj+7_6socl16SALL{L@jKD`4lSz*0oP2= z9?jdyXRcxt+OxJYeo_rTInj$u80jcd6Fl6lv3M^LKnB#b^3yE8e)Ey^5Npee^IH6_ znd)`EazoD0h6X$!b|8h}VQ^5;_HdBaq>z5JvWF*1F`Zn+FBe*IUkoRwEmp4bu0|&` zVyf+sK*%d7C1v5w9~>11T<&rHx;n-OqMkS+9$7LkU*2bab=Fa=p~hnxTGO8`pSj?wf^HmwL zx9L7~K#Z?PYZ8d@ak3bSgs;`+q{gpb7uRp9_afh6=2@q_sq8Jo$N%zhuVEHw>6z{v z=gge0@%}T=vZ@r=YXYX=K+_DBe7wiMff=T zkF!1J2TvVwuO)poT%5*1{iUrPKylq!ZiZnc&R21=x?Ptj?M z&GL&tkHG_nsC**t3{@KJlUGM`*pb5f`7wP~%8v@dDL^`;h5Nxh#Y{v#b~yrX#R6zt znvqvk)&IHeu9unRa!5%D0XYXWERl$=?)LWO3u-dMONHbo%^nfVBde;R0-+Qgi$FDX z3Nmgdzg{K2`1GC^4mI?C%_u5H^Mxz!mpCrBUtT2p-jO9~)5sv;2GV9pVF zf*3df>3sF6ueTQG@sBs+VA}5qFV71GYKg*>J&)3uErIgwkYf8{b3eO^7-!EdEv1Se zv@`*Vd6%L&z>JwCFckB4tRhs9wdLZ)1XA(!NMp4D#V6#PL<5aC0wk=e+H~4bptZH- zAR^-i-`n3%BZtL5XB zZR?m{znEBAJwHxHn62}IRCVns2$D;9vj;l>s;CewZj;`4^;nvn==A{>D_eWTF2dT) zuW0&6E6sU>t6tP@o<0;O$k*zAONv&IzZm@X?R@||#;aXpmDP_on?$=fg>4JV8nb|z zYX5+UI0V|i1<$KXcA^0wpu9S_%&kx1nt-vk)FS1z9J*xJEWZwb@)dGV=l>%;54;UM z8+hme@U}>4Q{TIr?9|tkJRO*L6!9>}L#W{y|F}7s;T((_I5d|y(skM*C^`;+j{1k& zBK)qne*7zU0`>nQ#^o+|6Ro*=s;&Lr(cpvXg)_K?D?hykA{1icbPt)0dB{>nTOACeDIT>(_(>M~=BJO5;XLa}*#&KyG{ z64oXI8FGnmxfREIfa*gMkP(pDRf1t;k*}5f;REKUPuH=F&D<-gMsjAPXd{^-Fq_YE zOpCD9e4II9;HOq=ZjDVp7QPrIrMQ<&`YrpVqCwsZyS*s6^7F&`eddPRBnTp#(+B?Y zrPgR(1cSx!HG2vd%}BbW@+T=W!|hK)PnsnZ0lo@2h=(PJ>(1;~xQb^ZCN-ZwN7)!& zyeB2a5ZV<_I4hU08u?ZAfe;A}T{a3;xpEyDrChte-(yfCp^G$IJ}p%C>mQ&4@G*dd z4-=C|2A{*0SzEqK&Re=`b(d81tj$zqAO0Q~VPdvO+4XM&N2I9t^VrUKtE-D{y9%+h zyXd#ymMcB5-?3%AnJTk9JP62srabz>c9E*fBzb$n-PBlKUX4SWhbkvW+|fBVD#$Ci zOJ3vRaZNL${Q_%O?dv-XI6i6+gqOGGa9p0$?Z<=ic-w{d!3ND-AFEUrR@XrD2TH&w z&#OI3s&WNCVJf)*fJdHtb?CEK{@dS|SJ(4>q;|8_H8n#J5f${nvR}VyR7VAEJ?7L+ z=qh2-&`78rO{9UYLY ztb0$LOzR8>jgNjV&3t<+I9iY(6dc?FN}hZ1@zFE}eM7AYKYp-fianAXQ1-0T0J&aL za^7iY3hm*;(vD9r_i4C#3xI4#AP;HR+Y;(};Gy8-2kO*>!*`~LGM~CmO*J|ltPN-4 zLiQx?DJg08^?B+Y%e)5JQAS;z5ddOdP7bl^>z(tP0d54Z-=*^K_8RQ`xIIx!x?rUuVcdT^PY=EFv%L) z)hU2@rQoJ5nS9dBF2#{z`lCA_ud*_CC>2Uih6`pHq3_;JudbSmsDy1FkI62Z>`Wbu zeSc`@)}EAvVi>SU=+MHOoY()oq_h+h1%)oBx>~coU=hYj)-k+Ksow%EQ}daNwzht= zGVf4hPKq}F@4Ra#cs!IRO8^xLm@JrEdF+}DPc4k)2bQ&@MxzO%Fo8;9jQ}O zpWE0-Wm<&}nhHwFKYic65PtL`dhY4TaeX5Jv$yA6@^RqeGV;f|yO0f3LZ^W2&ZovV zd(2}|jQVQJJbYu^89d^2cT4v`y};0AGv10q|JgCc`|^zTDNSJN7;-x8K=?QjMG4>1B)ih>d7<=;1Oy7X)aMiz8@dnDLGTF(c-%|b<>X78b~GuO6&w-$ z$!~c~Pyj~_y)s6HgVaVEGrGw6OLvG_F* zMF1O*I_BachLx4oVbTMiAPg!rj$!0im*FwddIZ_?TK~Dw8%wDN?hlFlO7f{-IXFF? zb2vjM1`W$_?Ar=z;NJWQXu+!{RvtelfiWh**ph!-o-z*IFJL&{@IrK~j37ioA{tEJ z95RvFc3JPI`ME(Z#h4`S#%Bx9Lr)jX{;q63H`LvYeZ1+jwo_r$`^9C4h-f8>P~w{W z&mY23cZp{lDU9qpT!y|!?ZRHQ!8YDBhSTLY@j!oh<>fgBj&(%17{8X6#J*#JAYK6N&8FhYYy+%HN<7=h?F*P~z& zmP>=KF%*Up8!LP(40^B^FZ#NHTB*uan+YCRfdopyYu--}rE(W7HRMQH*hOIplL~JZ-X!yP~JP%6pa#PXR+B&vGOYqlj`CWgqkJIm;1bqB;;%00~FUFc1 zD9O1V#O2HTnK+DO57fA77_VsRe{rUOfN@7GyjRmnFEJcc2Wx#v9KJ_ig#gF~E6=o~ zE_RJ7V>>ud03iQnk~~+?bjcfj&w%^1Rh+V5L)@s!-wB*?FJo(fS9DMqp|pYzTPY?o1U_;;sc{Y>azb#t{WfFP9+b z5cIpNcK^y6AIyq2VM?uvo|To(WYCxXZf~vH5W}s~jvgGGM|Ozu?2}wr_w?=W|Ni~r zp(;q-9ER7A;vak)e`enF>fo#eVAATO*105``ChzA!;~*nhL!AN(Mwd2coNh8a4#8D z|9ovRvJ^d#dhiTj!eA*@S62@shi&PS(pxoy8)#P6K_G89wcyfZnvQf+Ze=A24h|(S z&NB@SF$gA0f%wyaTgA+)2d*H4h>IVro-eZ}Ys*7|AfCrVTcEZst)Dx2c6HnWD!RZH z(Z%bX?S(JPN9(E6^vRF0!-CzVy1+ci#N0ey+|Rpns-9wZH!CPPS;+fbAfl`c1N7|! zYTWi7V5q|1hB|q)JIf5gB*&blaWz`xPUg&9K6W{uA> zad9oVQr#1J?(IwleJ&wwmiiMF8aZFN^yQ_Z}&0^y}!1wU5JlUGq36M0uM@@~Vt&>)=OF|qUA75EHdYiUZVOWO9ks4Up z_T)tA@$d=A9bQyHt%v~iSHxuA#rssz{u1UXtJI9G8BqR`SjAU0NZH}|ZMNlwY zM#qdYhO$P`UEP2ISs&?tne(smwcz67{(6HVy;FChwp~#yxmVbdo69IIEnVoEzP&%q zIj>1k7e1XS;$dvZdG{k0%-pma>@$VsM@3%QxQu^zyq9kkFnN9+D1M%~BX9uV0s?5&|6koikynOrF`_rn%elpZ$2kKc3XUKfa13=GM#*TbaTFp zSY9^bJUu+UQGV(9h=m0)F+nQkbJh(e$3%2=gb?VH&tBodZGP#NW)8Drii(P1UE-v2adBhla7Sa6kbUJ zoIZsJ1l;;+YG`~lg~KT!nmRh)&cGPz0S(Qp$Fg598ynk9+7ru}jvzE0taT4I7M6(h zpFdga;;X@NfG0aL6 z)dbW6wLTKoHa7SDGyBg-&Hrh>8J?3)6K`_c(X_C!8HlG5=>bDzP)@R><>fJuOE(y%Kg%=UqB@baqUn9tY0vfLYl!og_Uc#(yNZa&v^O$LAAHXnGC4I>4di_cDb3A=6}c-aD7-uO zr`vY-)X>s;LP|~mR)?Sd{%v}7 ze&BH0f_3k~XuneFU@8KP=hMD?5o&f`#|4U$i6O6QSn`%XYXk%cJ11xIqPX8BAGNS6 zs|&!dZ{NOEUpXwbd_&$FYP0+qymfGNG;w`nqkkXR97_Gv(YX0sigJ$JFtaY|vETQ_ z#Y{k&)y|pC_42AiCYrUVBo%8;J5V*~r0D3!I&uK_F5H36?uhL3JcDNa=DG;JI)E7bC5)80rH0J-Rr8gGu7F zc9Uz-?h(M9nb}!MdZK6aL>(g|gkfP}tQ;JnB_$=cLLMF-UnDkCl9MGl$l-uas=m@U zFwh%1pPIeur1*Q;lk??(-b#})?q^%;>yOU8M7ArMU>bIpKQDj(n%HbB8=m_D=n&H? zXi7?e;hPsr=dhUgIn^2xK$HNg?)3C@ zrrCqLzrVi{5RVsER}I1z^O~02x~#TFZvYHAySV5rdK_;Il~a_-kaOyW0$Pdb(IX6| z=do6kQG0uPN!i(iJs-H2RW&ri1_u>p=I7TyhN)gJH)@XuVz(pq=I7?RMn{Pn9F_rl zqO1%7gx##2!NrfgQpI;$d0bpvjs7>@C0EYQ&OgN+kajFAR@58aY=dXk9XBld#{>oj zx(|4qw2tQH)vMPU2?_`>g28)gDBABx|cOt=rQPHay8x%wn0?giK&z-Y?q=umm0DaS>Q|EqoelDw_aeu19Xn9{W zer3g2T1I9SFqM4+0|<~=t3XVKhJ`T*3sVUR34tF|@ZiI)2BMC&!GTpFd zj{`v9a9%OOpWKR9*ep_k7XgV!HiyGXF!<{K1#c z#R7Y52Db}n0mu;cy}ob)#wwZg1_3ObXVqR_QX&P|InXGm7#Sr1x(W?KE9QOjeY(bG zn(O=b@2tPaHS+d?y34Oqk`fa;0CTFHKr1!_n6%lWwO&eiY}8lNjkPtz;Ls2yd@teD z-F5fs8$9>bA<^I=1cEb$+yz)#0;C-^pB2&0WC=w&VDjXZlq^O>k7HHctmhpJIWs+uR{?bPFASkzXOORWmu1MT>Kd0Nl&~9GVP(+ZQziMluph3?F__{m| zO+qGGaBm9_9xt+-M@9x z4$NH=nJvU-S^gj&uP*D!%Fis_4!FIvnkkw3l*8%vSeFEj>?jw)XR=C!b*q8C5` zF%3-|zzr7zDh6rAUoNkN5iv&FdAYfVAlkv!05#x!9o^lZzj%SY&2E!Ep^ONtBYSC^R7#)KBj+TgB@f_vI$&wo)k{@|TRL!j45_fQs z4@Xo~Q0L~p866Yv2eXUnJ3MsMi_50h)wT9{i11LN+`Np8Qc(0jOjwprz`!djE8fw$ zdR*Ux4b1hi8H71l`>0Wat}DFJ&`>r;&ZmrJiUAu3eqlRRx(fM8XqPBQX)y@>{3Tc& z@Igc{SM6-^4XD`MeN4=~_Wdvzim$J}iQQsMNPp8`lGt^j#fwSgK`jad&`A9Han?xA zI5OU66{F(bc?%dOycZaH8xq|Fwpzf;^eYUR-;2(og@*_DuTw*@dA+K!I5@nWwRNUd zke{Okn+)g=-$=aDOp&7mBacoKnMEn2c-|c&4m{pxd?}0jvlG~FS$rI|RnGq&MT;cL zxLZ~*n3xzq3&7*oL;(o4My`?pWQi{Q3LP{4nHs5-+FP<3%j5Gz2FU0FQccW+w4y6b zp_;e9Dde@aPZDp8=C^CAs#H96kP)Ktwxvb1T;9rZ@O>L3aM}MVY)x(suq&ZNoM8DU z=X+{(Q(BskBt7JLyz6QcSsI{`SZPj>-j^#2ezehqp8OH{v=}21b|aVMBdc0u^!;n~ z=ofb#(zv8V3pFh4(-p zm!K$I-P0)1H2L#;y?XEagq*jJBMtEfUMK4i3pHL zz@s=gIJSL>3}q>q!ftHMZad`7u3IFaG^3A+iZY4itp|M&IT=|u(1^CXy8t!lT96AM zC1qviJv}|Pz40`qwYBf|mRi#(DJiR(nuNpVi%Lsl^FM!PYY~O-5+OBM81;B{eSd%W z&D*!;4ganPcb>KkXNe6!;iW}IQ7Fbh zM&KcEC$PVQt)-8A&(F=x5ME5MoK{?%n3fg=RvNxfPs70q7%MwF;>{!Zm4gHBt5zk0zoCcs z-wPQYwdZzrWefA5UXPGw>;%nM49Ga{J8id@JD|D+Vv;X;?{J2OhC(30AtA)~?}v$a z?9+2|69Sd@g1s9Q$bYZ8Y!~e3i~p|Q>8=b3E{C?aOQ52n^4KptJvmsWOBZy|w5A4) z#Np9VQXH495B0_Is0kQOYz(GN*i(ak>G1d%fydnvSfp0)qpV>G6(TJwn-_3*3l(wa z@b&WpOKH(yod(g}jo$3O*Cle$f(Dkoz)TA*Dk=)Zfu*4C+7@~&@8>B?uy!cs23nP} z=7+eDmYcKrMxS&05{5kt3=Bs%Hw=oTQRkQMHnRf^$28tpX?nr1$4Eh>f!<=K)kpB` zV0pw%Xb~1cfCFGlzsVH`Z2o}>f^>8113WxDKuohQkWFELwI2Y7rd^>pU=d~akk`h> z#`pHmCRKUij@8KjD_O=NeU2Y2@kkjO(oUQIdhi$QNI{ETE - - - - - - -libtoolchain: tc/types.h Source File - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      libtoolchain -  v0.1.0 -
      -
      -
      - - - - - - - -
      -
      - -
      -
      -
      - -
      - -
      -
      - - -
      - -
      - -
      -
      -
      types.h
      -
      -
      -Go to the documentation of this file.
      1 
      8 #pragma once
      9 #include <string>
      10 #include <vector>
      11 #include <cstdint>
      12 #include <cstring>
      13 #include <tc/endian.h>
      14 
      19 typedef uint8_t byte_t;
      Declaration of macros and classes to unwrap primatives in an endian agnostic way. ...
      -
      uint8_t byte_t
      Typedef uint8_t to byte_t to more explicity indicate its role in memory related contexts.
      Definition: types.h:19
      -
      -
      - - - - From 963771b169e041a1032c065297d39e88178bb06f Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 18 Jul 2025 10:11:50 +0800 Subject: [PATCH 02/26] Add src, uncompleted --- include/tc/crypto/EccCurveType.h | 33 ++ include/tc/crypto/EccKey.h | 93 +++++ include/tc/crypto/EccKeyGenerator.h | 114 ++++++ include/tc/crypto/EccUtil.h | 32 ++ .../tc/crypto/detail/EccKeyGeneratorImpl.h | 97 ++++++ src/crypto/EccKey.cpp | 58 ++++ src/crypto/EccKeyGenerator.cpp | 13 + src/crypto/EccUtil.cpp | 59 ++++ src/crypto/detail/EccKeyGeneratorImpl.cpp | 242 +++++++++++++ test/crypto_EccKeyGenerator_TestClass.cpp | 324 ++++++++++++++++++ test/crypto_EccKeyGenerator_TestClass.h | 26 ++ test/main.cpp | 2 + 12 files changed, 1093 insertions(+) create mode 100644 include/tc/crypto/EccCurveType.h create mode 100644 include/tc/crypto/EccKey.h create mode 100644 include/tc/crypto/EccKeyGenerator.h create mode 100644 include/tc/crypto/EccUtil.h create mode 100644 include/tc/crypto/detail/EccKeyGeneratorImpl.h create mode 100644 src/crypto/EccKey.cpp create mode 100644 src/crypto/EccKeyGenerator.cpp create mode 100644 src/crypto/EccUtil.cpp create mode 100644 src/crypto/detail/EccKeyGeneratorImpl.cpp create mode 100644 test/crypto_EccKeyGenerator_TestClass.cpp create mode 100644 test/crypto_EccKeyGenerator_TestClass.h diff --git a/include/tc/crypto/EccCurveType.h b/include/tc/crypto/EccCurveType.h new file mode 100644 index 00000000..6b1c08df --- /dev/null +++ b/include/tc/crypto/EccCurveType.h @@ -0,0 +1,33 @@ + /** + * @file EccCurveType.h + * @brief Declaration of tc::crypto::EccCurveType + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/06/01 + **/ +#pragma once + +namespace tc { namespace crypto { + + /** + * @struct EccCurveType + * @brief Defines supported ECC curves + */ +enum EccCurveType +{ + ECC_CURVE_TYPE_SECP192R1, /**< The 192-bit curve defined by FIPS 186-4 and SEC1. */ + ECC_CURVE_TYPE_SECP224R1, /**< The 224-bit curve defined by FIPS 186-4 and SEC1. */ + ECC_CURVE_TYPE_SECP256R1, /**< The 256-bit curve defined by FIPS 186-4 and SEC1. */ + ECC_CURVE_TYPE_SECP384R1, /**< The 384-bit curve defined by FIPS 186-4 and SEC1. */ + ECC_CURVE_TYPE_SECP521R1, /**< The 521-bit curve defined by FIPS 186-4 and SEC1. */ + ECC_CURVE_TYPE_BP256R1, /**< 256-bit Brainpool curve. */ + ECC_CURVE_TYPE_BP384R1, /**< 384-bit Brainpool curve. */ + ECC_CURVE_TYPE_BP512R1, /**< 512-bit Brainpool curve. */ + ECC_CURVE_TYPE_CURVE25519, /**< Curve25519. */ + ECC_CURVE_TYPE_SECP192K1, /**< 192-bit "Koblitz" curve. */ + ECC_CURVE_TYPE_SECP224K1, /**< 224-bit "Koblitz" curve. */ + ECC_CURVE_TYPE_SECP256K1, /**< 256-bit "Koblitz" curve. */ + ECC_CURVE_TYPE_CURVE448, /**< Curve448. */ +}; + +}} // namespace tc::io \ No newline at end of file diff --git a/include/tc/crypto/EccKey.h b/include/tc/crypto/EccKey.h new file mode 100644 index 00000000..28fdc08c --- /dev/null +++ b/include/tc/crypto/EccKey.h @@ -0,0 +1,93 @@ + /** + * @file EccKey.h + * @brief Declarations for structures to store ECC keys. + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/06/01 + **/ +#pragma once +#include +#include +#include + +#include + +namespace tc { namespace crypto { + + + /** + * @struct EccKey + * @brief Struct for storing a ECC key. For use with ECC operations. + */ +struct EccKey +{ + EccCurveType curve_type; + tc::ByteData d; /**< Private component - big endian d integer */ + tc::ByteData Q; /**< Public component - big endian Q point */ +}; + + /** + * @struct EccPublicKey + * @brief This extends EccKey, exposing a constructor to create an ECC public key. + */ +struct EccPublicKey : public EccKey +{ + /** + * @brief This constructs a @ref EccKey from the public component. + * + * @param[in] curve_type ECC Curve Type. + * @param[in] Q Buffer containing big-endian Q point. + * @param[in] Q_size Size in bytes of Q. + * + * @pre @p ec_type must be of type @ref EccCurveType + * @pre @p Q != nullptr + * @pre @p Q_size != 0 + */ + EccPublicKey(EccCurveType curve_type, const byte_t* Q, size_t Q_size); +}; + + /** + * @struct EccPrivateKey + * @brief This extends EccKey, exposing a constructor to create an ECC private key from a modulus and private exponent. + */ +struct EccPrivateKey : public EccKey +{ + /** + * @brief This constructs a @ref EccKey from the private and public components. + * + * @param[in] curve_type ECC Curve Type + * @param[in] d Buffer containing big-endian d integer. + * @param[in] d_size Size in bytes of d. + * @param[in] Q Buffer containing big-endian Q point. + * @param[in] Q_size Size in bytes of Q. + * + * @pre @p ec_type must be of type @ref EccCurveType + * @pre @p d != nullptr + * @pre @p d_size != 0 + * @pre @p Q != nullptr + * @pre @p Q_size != 0 + */ + EccPrivateKey(EccCurveType curve_type, const byte_t* d, size_t d_size, const byte_t* Q, size_t Q_size); + + /** + * @brief This constructs a @ref EccKey from the private component (and generate the public component). + * + * @param[in] curve_type ECC Curve Type + * @param[in] d Buffer containing big-endian d integer. + * @param[in] d_size Size in bytes of d. + * + * @pre @p ec_type must be of type @ref EccCurveType + * @pre @p d != nullptr + * @pre @p d_size != 0 + */ + EccPrivateKey(EccCurveType curve_type, const byte_t* d, size_t d_size); + + /** + * @brief Generate public key from this private key. + * + * @return EccKey containing the public key. + */ + EccKey getPublicKey(); +}; + +}} // namespace tc::crypto \ No newline at end of file diff --git a/include/tc/crypto/EccKeyGenerator.h b/include/tc/crypto/EccKeyGenerator.h new file mode 100644 index 00000000..97af7e01 --- /dev/null +++ b/include/tc/crypto/EccKeyGenerator.h @@ -0,0 +1,114 @@ + /** + * @file EccKeyGenerator.h + * @brief Declarations for API resources for generating ECC keys. + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/06/01 + **/ +#pragma once +#include +#include +#include +#include + +namespace tc { namespace crypto { + + /** + * @class EccKeyGenerator + * @brief Class for generating ECC keys. + * + * @details + * The underlying PRNG algorithm is CTR_DBRG. + */ +class EccKeyGenerator +{ +public: + /** + * @brief Default constructor. + */ + EccKeyGenerator() : + mImpl() + {} + + /** + * @brief Generate an ECC key. + * + * @param[out] key Reference to generated ECC key. + * @param[in] curve_type ECC Curve Type. + * + * @pre + * - @p ec_type must be of type @ref EccCurveType + * + * @post + * - The generated key is written to key. + * + * @throw tc::crypto::ArgumentException @p curve_type was not supported/valid. + */ + void generateKey(EccKey& key, EccCurveType curve_type) + { + size_t ecc_int_byte_length = EccUtil::eccIntegerByteLength(curve_type); + + if (ecc_int_byte_length == 0) throw tc::ArgumentException("tc::crypto::EccKeyGenerator::generateKey()", "curve_type was not supported/valid"); + + key.curve_type = curve_type; + key.d = tc::ByteData(ecc_int_byte_length); + key.Q = tc::ByteData(ecc_int_byte_length * 2); + + mImpl.generateKey(curve_type, key.d.data(), key.d.size(), key.Q.data(), key.Q.size()); + } + + /** + * @brief Generate an ECC public key from an ECC private key key. + * + * @param[out] public_key Object to store generated public key. + * @param[in] private_key Private key to generate public key from. + * + * @post + * - The generated public key is written to public_key. + * + * @throw tc::crypto::ArgumentException @p private_key curve_type was not supported/valid. + */ + void generatePublicKey(EccKey& public_key, const EccKey& private_key) + { + size_t ecc_int_byte_length = EccUtil::eccIntegerByteLength(private_key.curve_type); + + if (ecc_int_byte_length == 0) throw tc::ArgumentException("tc::crypto::EccKeyGenerator::generatePublicKey()", "curve_type was not supported/valid"); + + public_key.curve_type = private_key.curve_type; + public_key.d = tc::ByteData(0); + public_key.Q = tc::ByteData(ecc_int_byte_length * 2); + + mImpl.generatePublicKey(public_key.curve_type, private_key.d.data(), private_key.d.size(), public_key.Q.data(), public_key.Q.size()); + } + +private: + detail::EccKeyGeneratorImpl mImpl; +}; + + /** + * @brief Utility function for generating an ECC key. + * + * @param[out] key Object to store generated ECC key. + * @param[in] curve_type Type of ECC curve to generate + * + * @post + * - The generated key is written to key. + * + * @throw tc::crypto::ArgumentException @p curve_type was not supported/valid. + */ +void GenerateEccKey(EccKey& key, EccCurveType curve_type); + + /** + * @brief Utility function for generating an ECC public key from an ECC private key. + * + * @param[out] public_key Object to store generated public key. + * @param[in] private_key Private key to generate public key from. + * + * @post + * - The generated public key is written to public_key. + * + * @throw tc::crypto::ArgumentException @p curve_type was not supported/valid. + */ +void GenerateEccPublicKey(EccKey& public_key, const EccKey& private_key); + +}} // namespace tc::crypto \ No newline at end of file diff --git a/include/tc/crypto/EccUtil.h b/include/tc/crypto/EccUtil.h new file mode 100644 index 00000000..3c2dd39d --- /dev/null +++ b/include/tc/crypto/EccUtil.h @@ -0,0 +1,32 @@ + /** + * @file EccUtil.h + * @brief Declaration of tc::crypto::EccUtil + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/06/08 + **/ +#pragma once +#include +#include + +namespace tc { namespace crypto { + + /** + * @class EccUtil + * @brief Utility functions for ECC operations based classes. + **/ +class EccUtil +{ +public: + /** + * @brief Get length of ECC integer in bits. + **/ + static size_t eccIntegerBitLength(EccCurveType curve_type); + + /** + * @brief Get length of ECC integer in bytes (rounding up). + **/ + static size_t eccIntegerByteLength(EccCurveType curve_type); +}; + +}} // namespace tc::crypto \ No newline at end of file diff --git a/include/tc/crypto/detail/EccKeyGeneratorImpl.h b/include/tc/crypto/detail/EccKeyGeneratorImpl.h new file mode 100644 index 00000000..daaad1ed --- /dev/null +++ b/include/tc/crypto/detail/EccKeyGeneratorImpl.h @@ -0,0 +1,97 @@ + /** + * @file EccKeyGeneratorImpl.h + * @brief Declaration of tc::crypto::detail::EccKeyGeneratorImpl + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/05/24 + **/ +#pragma once +#include + +#include +#include +#include +#include + +namespace tc { namespace crypto { namespace detail { + + /** + * @class EccKeyGeneratorImpl + * @brief This class implements the RSA key generation. + */ +class EccKeyGeneratorImpl +{ +public: + /** + * @brief Default constructor + * @details + * This initializes RSA key generator state. + */ + EccKeyGeneratorImpl(); + + /** + * @brief Destructor + * @details + * Cleans up ECC key generator state. + */ + ~EccKeyGeneratorImpl(); + + /** + * @brief Generate an ECC key. + * + * @param[in] ec_type Type of Elliptic Curve @ref EccCurveType + * @param[out] d Buffer to store private component. + * @param[in] d_size Size of private component buffer. + * @param[out] Q Buffer to store public component. + * @param[in] Q_size Size of public component buffer. + * + * @pre + * - @p ec_type must be of type @ref EccCurveType + * @post + * - Key components are exported if the related buffers were not null. + * + * @note + * - Key components can be optionally not exported if the corresponding input variables are null and zero. + * + * @throw tc::ArgumentOutOfRangeException @p ec_type was not of type @ref EccCurveType + * @throw tc::crypto::CryptoException An unexpected error has occurred. + * @throw tc::crypto::CryptoException Something failed during generation of a key. + * @throw tc::crypto::CryptoException The random generator failed to generate non-zeros. + * @throw tc::ArgumentException @p d was not null, but @p d_size was not large enough. + * @throw tc::ArgumentException @p q was not null, but @p q_size was not large enough. + */ + void generateKey(EccCurveType ec_type, byte_t* d, size_t d_size, byte_t* Q, size_t Q_size); + + /** + * @brief Generate an ECC Public key based on the private component. + * + * @param[in] ec_type Type of Elliptic Curve @ref EccCurveType + * @param[in] d Buffer to store private component. + * @param[in] d_size Size of private component buffer. + * @param[out] Q Buffer to store public component. + * @param[in] Q_size Size of public component buffer. + * + * @pre + * - @p ec_type must be of type @ref EccCurveType + * @post + * - Key components are exported if the related buffers were not null. + * + * @note + * - Key components can be optionally not exported if the corresponding input variables are null and zero. + * + * @throw tc::ArgumentOutOfRangeException @p ec_type was not of type @ref EccCurveType + * @throw tc::crypto::CryptoException An unexpected error has occurred. + * @throw tc::crypto::CryptoException Something failed during generation of a key. + * @throw tc::crypto::CryptoException The random generator failed to generate non-zeros. + * @throw tc::ArgumentException @p d was null, or @p d_size was not large enough. + * @throw tc::ArgumentException @p q was not null, but @p q_size was not large enough. + */ + void generatePublicKey(EccCurveType ec_type, byte_t* d, size_t d_size, byte_t* Q, size_t Q_size); +private: + static const std::string kClassName; + + struct ImplCtx; + std::unique_ptr mImplCtx; +}; + +}}} // namespace tc::crypto::detail \ No newline at end of file diff --git a/src/crypto/EccKey.cpp b/src/crypto/EccKey.cpp new file mode 100644 index 00000000..268a112a --- /dev/null +++ b/src/crypto/EccKey.cpp @@ -0,0 +1,58 @@ +#include +#include +#include + +tc::crypto::EccPublicKey::EccPublicKey(EccCurveType curve_type, const byte_t* Q, size_t Q_size) +{ + if (EccUtil::eccIntegerByteLength(curve_type) == 0) throw tc::ArgumentException("tc::crypto::EccPublicKey()", "curve_type was not supported/valid"); + + if (Q != nullptr && Q_size != 0) + { + this->curve_type = curve_type; + this->d = tc::ByteData(); + this->Q = tc::ByteData(Q, Q_size); + } +} + +tc::crypto::EccPrivateKey::EccPrivateKey(EccCurveType curve_type, const byte_t* d, size_t d_size, const byte_t* Q, size_t Q_size) +{ + if (EccUtil::eccIntegerByteLength(curve_type) == 0) throw tc::ArgumentException("tc::crypto::EccPublicKey()", "curve_type was not supported/valid"); + + if (d != nullptr && d_size != 0 && Q != nullptr && Q_size != 0) + { + this->curve_type = curve_type; + this->d = tc::ByteData(d, d_size); + this->Q = tc::ByteData(Q, Q_size); + } +} + +tc::crypto::EccPrivateKey::EccPrivateKey(EccCurveType curve_type, const byte_t* d, size_t d_size) +{ + size_t ecc_int_byte_length = EccUtil::eccIntegerByteLength(curve_type); + if (ecc_int_byte_length == 0) throw tc::ArgumentException("tc::crypto::EccPublicKey()", "curve_type was not supported/valid"); + + if (d != nullptr && d_size != 0) + { + this->curve_type = curve_type; + this->d = tc::ByteData(d, d_size); + + tc::crypto::EccKey pub_key; + GenerateEccPublicKey(pub_key, *this); + + this->Q = pub_key.Q; + } +} + +tc::crypto::EccKey tc::crypto::EccPrivateKey::getPublicKey() +{ + // generate public component if not present + if (this->Q.data() == nullptr || this->Q.size() == 0) + { + tc::crypto::EccKey pub_key; + GenerateEccPublicKey(pub_key, *this); + + this->Q = pub_key.Q; + } + + return EccPublicKey(this->curve_type, this->Q.data(), this->Q.size()); +} \ No newline at end of file diff --git a/src/crypto/EccKeyGenerator.cpp b/src/crypto/EccKeyGenerator.cpp new file mode 100644 index 00000000..a8642827 --- /dev/null +++ b/src/crypto/EccKeyGenerator.cpp @@ -0,0 +1,13 @@ +#include + +void tc::crypto::GenerateEccKey(EccKey& key, EccCurveType curve_type) +{ + tc::crypto::EccKeyGenerator impl; + impl.generateKey(key, curve_type); +} + +void tc::crypto::GenerateEccPublicKey(EccKey& public_key, const EccKey& private_key) +{ + tc::crypto::EccKeyGenerator impl; + impl.generatePublicKey(public_key, private_key); +} \ No newline at end of file diff --git a/src/crypto/EccUtil.cpp b/src/crypto/EccUtil.cpp new file mode 100644 index 00000000..9c1940bd --- /dev/null +++ b/src/crypto/EccUtil.cpp @@ -0,0 +1,59 @@ +#include + +size_t tc::crypto::EccUtil::eccIntegerBitLength(EccCurveType curve_type) +{ + size_t ecc_int_bit_length = 0; + switch (curve_type) + { + case (ECC_CURVE_TYPE_SECP192R1): + ecc_int_bit_length = 192; + break; + case (ECC_CURVE_TYPE_SECP224R1): + ecc_int_bit_length = 244; + break; + case (ECC_CURVE_TYPE_SECP256R1): + ecc_int_bit_length = 256; + break; + case (ECC_CURVE_TYPE_SECP384R1): + ecc_int_bit_length = 384; + break; + case (ECC_CURVE_TYPE_SECP521R1): + ecc_int_bit_length = 521; + break; + case (ECC_CURVE_TYPE_BP256R1): + ecc_int_bit_length = 256; + break; + case (ECC_CURVE_TYPE_BP384R1): + ecc_int_bit_length = 384; + break; + case (ECC_CURVE_TYPE_BP512R1): + ecc_int_bit_length = 512; + break; + case (ECC_CURVE_TYPE_CURVE25519): + ecc_int_bit_length = 255; + break; + case (ECC_CURVE_TYPE_SECP192K1): + ecc_int_bit_length = 192; + break; + case (ECC_CURVE_TYPE_SECP224K1): + ecc_int_bit_length = 224; + break; + case (ECC_CURVE_TYPE_SECP256K1): + ecc_int_bit_length = 256; + break; + case (ECC_CURVE_TYPE_CURVE448): + ecc_int_bit_length = 448; + break; + default: + ecc_int_bit_length = 0; + break; + } + + return ecc_int_bit_length; +} + +size_t tc::crypto::EccUtil::eccIntegerByteLength(EccCurveType curve_type) +{ + size_t ecc_int_bit_length = eccIntegerBitLength(curve_type); + return ecc_int_bit_length / 8 + (ecc_int_bit_length % 8 != 0); +} diff --git a/src/crypto/detail/EccKeyGeneratorImpl.cpp b/src/crypto/detail/EccKeyGeneratorImpl.cpp new file mode 100644 index 00000000..2e75884c --- /dev/null +++ b/src/crypto/detail/EccKeyGeneratorImpl.cpp @@ -0,0 +1,242 @@ +#include +#include +#include +#include +#include + +const std::string tc::crypto::detail::EccKeyGeneratorImpl::kClassName = "tc::crypto::detail::EccKeyGeneratorImpl"; + +struct tc::crypto::detail::EccKeyGeneratorImpl::ImplCtx +{ + mbedtls_ctr_drbg_context ctr_drbg; + mbedtls_entropy_context entropy; +}; + +tc::crypto::detail::EccKeyGeneratorImpl::EccKeyGeneratorImpl() : + mImplCtx(new ImplCtx()) +{ + mbedtls_entropy_init( &(mImplCtx->entropy) ); + mbedtls_ctr_drbg_init( &(mImplCtx->ctr_drbg) ); + + int ret = mbedtls_ctr_drbg_seed(&(mImplCtx->ctr_drbg), mbedtls_entropy_func, &(mImplCtx->entropy), (const unsigned char *)kClassName.c_str(), kClassName.size()); + switch (ret) + { + case (0): + break; + case (MBEDTLS_ERR_ENTROPY_SOURCE_FAILED): + throw tc::crypto::CryptoException(kClassName, "mbedtls_ctr_drbg_seed() Entropy source failed"); + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_ctr_drbg_seed() An unexpected error occurred"); + } +} + +tc::crypto::detail::EccKeyGeneratorImpl::~EccKeyGeneratorImpl() +{ + mbedtls_ctr_drbg_free( &(mImplCtx->ctr_drbg) ); + mbedtls_entropy_free( &(mImplCtx->entropy) ); +} + +static mbedtls_ecp_group_id convertToMbedtlsEcpGroupId(tc::crypto::EccCurveType ec_type) +{ + mbedtls_ecp_group_id group_id = MBEDTLS_ECP_DP_NONE; + switch (ec_type) + { + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192R1: + group_id = MBEDTLS_ECP_DP_SECP192R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP224R1: + group_id = MBEDTLS_ECP_DP_SECP224R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP256R1: + group_id = MBEDTLS_ECP_DP_SECP256R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP384R1: + group_id = MBEDTLS_ECP_DP_SECP384R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP521R1: + group_id = MBEDTLS_ECP_DP_SECP521R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP256R1: + group_id = MBEDTLS_ECP_DP_BP256R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP384R1: + group_id = MBEDTLS_ECP_DP_BP384R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP512R1: + group_id = MBEDTLS_ECP_DP_BP512R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_CURVE25519: + group_id = MBEDTLS_ECP_DP_CURVE25519; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192K1: + group_id = MBEDTLS_ECP_DP_SECP192K1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP224K1: + group_id = MBEDTLS_ECP_DP_SECP224K1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP256K1: + group_id = MBEDTLS_ECP_DP_SECP256K1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_CURVE448: + group_id = MBEDTLS_ECP_DP_CURVE448; + break; + } + + return group_id; +} + +void tc::crypto::detail::EccKeyGeneratorImpl::generateKey(EccCurveType ec_type, byte_t* d, size_t d_size, byte_t* q, size_t q_size) +{ + mbedtls_ecp_group_id group_id = convertToMbedtlsEcpGroupId(ec_type); + if (group_id == MBEDTLS_ECP_DP_NONE) + { + throw tc::ArgumentOutOfRangeException(kClassName, "ec_type was not valid."); + } + + mbedtls_ecp_keypair key; + mbedtls_ecp_keypair_init( &key ); + + int ret = 1; + + // generate key + ret = mbedtls_ecp_gen_key(group_id, &key, mbedtls_ctr_drbg_random, &(mImplCtx->ctr_drbg)); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_ecp_gen_key() An unexpected error occurred."); + } + + // export private component + if (d != nullptr) + { + size_t d_len = mbedtls_mpi_size( &key.d ); + if (d_size < d_len) + { + throw tc::ArgumentNullException(kClassName, "d was not null, but d_size was insufficent to store private exponent"); + } + + ret = mbedtls_mpi_write_binary( &key.d, d, std::min(d_size, d_len) ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + } + } + + // export public component + if (q != nullptr) + { + size_t p_len = mbedtls_mpi_size( &key.grp.P ); + + // if key is < min size + if (q_size < (p_len * 2)) + { + throw tc::ArgumentNullException(kClassName, "q was not null, q_size was insufficent to store public exponent"); + } + + ret = mbedtls_mpi_write_binary( &key.Q.X, q, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + } + + ret = mbedtls_mpi_write_binary( &key.Q.Y, q + p_len, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + } + } + + // clear key from mbedtls context + mbedtls_ecp_keypair_free( &key ); +} + +void tc::crypto::detail::EccKeyGeneratorImpl::generatePublicKey(EccCurveType ec_type, byte_t* d, size_t d_size, byte_t* q, size_t q_size) +{ + mbedtls_ecp_group_id group_id = convertToMbedtlsEcpGroupId(ec_type); + if (group_id == MBEDTLS_ECP_DP_NONE) { throw tc::ArgumentOutOfRangeException(kClassName, "ec_type was not valid."); } + if (d == nullptr) { throw tc::ArgumentNullException(kClassName, "d was null"); } + + mbedtls_ecp_keypair key; + mbedtls_ecp_keypair_init( &key ); + + int ret = 1; + // load group + ret = mbedtls_ecp_group_load( &key.grp, group_id ); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_ecp_group_load() An unexpected error occurred."); + } + + // import private component (d) + ret = mbedtls_mpi_read_binary( &key.d, d, d_size ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_read_binary() An unexpected error occurred."); + } + + // generate public component (Q) from private exponent (d) and base point (G) + ret = mbedtls_ecp_mul( &key.grp, &key.Q, &key.d, &key.grp.G, mbedtls_ctr_drbg_random, &(mImplCtx->ctr_drbg) ); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_ecp_mul() An unexpected error occurred."); + } + + // export public component + if (q != nullptr) + { + size_t p_len = mbedtls_mpi_size( &key.grp.P ); + + // if key is < min size + if (q_size < (p_len * 2)) + { + throw tc::ArgumentNullException(kClassName, "q was not null, q_size was insufficent to store public exponent"); + } + + ret = mbedtls_mpi_write_binary( &key.Q.X, q, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + } + + ret = mbedtls_mpi_write_binary( &key.Q.Y, q + p_len, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + } + } + + // clear key from mbedtls context + mbedtls_ecp_keypair_free( &key ); +} \ No newline at end of file diff --git a/test/crypto_EccKeyGenerator_TestClass.cpp b/test/crypto_EccKeyGenerator_TestClass.cpp new file mode 100644 index 00000000..000119ab --- /dev/null +++ b/test/crypto_EccKeyGenerator_TestClass.cpp @@ -0,0 +1,324 @@ +#include "crypto_EccKeyGenerator_TestClass.h" + +#include + +#include +#include +#include + +//--------------------------------------------------------- + +crypto_EccKeyGenerator_TestClass::crypto_EccKeyGenerator_TestClass() : + mTestTag("tc::crypto::EccKeyGenerator"), + mTestResults() +{ +} + +void crypto_EccKeyGenerator_TestClass::runAllTests(void) +{ + test_sbox(); + + /* + test_Class(); + test_UtilFunc(); + test_MultipleObjectsCreateDifferentData(); + test_RepeatedCallsCreateDifferentData(); + */ +} + +const std::string& crypto_EccKeyGenerator_TestClass::getTestTag() const +{ + return mTestTag; +} + +const std::vector& crypto_EccKeyGenerator_TestClass::getTestResults() const +{ + return mTestResults; +} + +//--------------------------------------------------------- + +#if 0 +void crypto_EccKeyGenerator_TestClass::test_sbox() +{ + TestResult test_result; + test_result.test_name = "test_sbox"; + test_result.result = "NOT RUN"; + test_result.comments = ""; + + try + { + // create buffer to hold data + tc::crypto::EccKey key; + + // generate random bytes + tc::crypto::EccKeyGenerator keygen; + + for (size_t i = 0; i < 13; i++) + { + memset(key.d.data(), 0xff, key.d.size()); + + memset(key.Q.data(), 0xff, key.Q.size()); + + fmt::print("keygen {}\n", i); + keygen.generateKey(key, tc::crypto::EccCurveType(i)); + + fmt::print("d (len: {}): {}\n", key.d.size(), tc::cli::FormatUtil::formatBytesAsString(key.d.data(), key.d.size(), true, "")); + fmt::print("Q (len: {}): {}\n", key.Q.size(), tc::cli::FormatUtil::formatBytesAsString(key.Q.data(), key.Q.size(), true, "")); + } + + + // record result + test_result.result = "PASS"; + test_result.comments = ""; + } + catch (const tc::TestException& e) + { + // record result + test_result.result = "FAIL"; + test_result.comments = e.what(); + } + catch (const std::exception& e) + { + // record result + test_result.result = "UNHANDLED EXCEPTION"; + test_result.comments = e.what(); + } + + // add result to list + mTestResults.push_back(std::move(test_result)); +} +#endif + +void crypto_EccKeyGenerator_TestClass::test_Class() +{ + TestResult test_result; + test_result.test_name = "test_Class"; + test_result.result = "NOT RUN"; + test_result.comments = ""; + + try + { + // create buffer to hold random data + auto random_data = tc::ByteData(0x20); + + // generate control_data to compare to random_data to ensure that it is populated with random bytes + auto control_data = tc::io::PaddingSource(0xbe, random_data.size()).pullData(0, random_data.size()); + + // copy control data + memcpy(random_data.data(), control_data.data(), random_data.size()); + + // generate random bytes + tc::crypto::PseudoRandomByteGenerator prbg; + prbg.getBytes(random_data.data(), random_data.size()); + + // compare with control data to see if the data changed + if (memcmp(random_data.data(), control_data.data(), random_data.size()) == 0) + { + throw tc::TestException(".getBytes() did not populate array"); + } + + // record result + test_result.result = "PASS"; + test_result.comments = ""; + } + catch (const tc::TestException& e) + { + // record result + test_result.result = "FAIL"; + test_result.comments = e.what(); + } + catch (const std::exception& e) + { + // record result + test_result.result = "UNHANDLED EXCEPTION"; + test_result.comments = e.what(); + } + + // add result to list + mTestResults.push_back(std::move(test_result)); +} + +void crypto_EccKeyGenerator_TestClass::test_UtilFunc() +{ + TestResult test_result; + test_result.test_name = "test_UtilFunc"; + test_result.result = "NOT RUN"; + test_result.comments = ""; + + try + { + // create buffer to hold random data + auto random_data = tc::ByteData(0x20); + + // generate control_data to compare to random_data to ensure that it is populated with random bytes + auto control_data = tc::io::PaddingSource(0xbe, random_data.size()).pullData(0, random_data.size()); + + // copy control data + memcpy(random_data.data(), control_data.data(), random_data.size()); + + // generate random bytes + tc::crypto::GeneratePseudoRandomBytes(random_data.data(), random_data.size()); + + // compare with control data to see if the data changed + if (memcmp(random_data.data(), control_data.data(), random_data.size()) == 0) + { + throw tc::TestException("GeneratePseudoRandomBytes() did not populate array"); + } + + // record result + test_result.result = "PASS"; + test_result.comments = ""; + } + catch (const tc::TestException& e) + { + // record result + test_result.result = "FAIL"; + test_result.comments = e.what(); + } + catch (const std::exception& e) + { + // record result + test_result.result = "UNHANDLED EXCEPTION"; + test_result.comments = e.what(); + } + + // add result to list + mTestResults.push_back(std::move(test_result)); +} + +void crypto_EccKeyGenerator_TestClass::test_MultipleObjectsCreateDifferentData() +{ + TestResult test_result; + test_result.test_name = "test_MultipleObjectsCreateDifferentData"; + test_result.result = "NOT RUN"; + test_result.comments = ""; + + try + { + // generate allocate storage for each test + static const size_t kRandomDataSize = 0x20; + auto random_data1 = tc::ByteData(kRandomDataSize); + auto random_data2 = tc::ByteData(kRandomDataSize); + auto random_data3 = tc::ByteData(kRandomDataSize); + + // create PRBG objects + tc::crypto::PseudoRandomByteGenerator prbg1, prbg2, prbg3; + + // generate random data + prbg1.getBytes(random_data1.data(), random_data1.size()); + prbg2.getBytes(random_data2.data(), random_data2.size()); + prbg3.getBytes(random_data3.data(), random_data3.size()); + + size_t cmp12 = 0, cmp13 = 0, cmp23 = 0; + + for (size_t i = 0; i < kRandomDataSize; i++) + { + cmp12 += random_data1[i] == random_data2[i]; + cmp13 += random_data1[i] == random_data3[i]; + cmp23 += random_data2[i] == random_data3[i]; + } + + // check to see if any of the tests were similar + static const size_t kSimilarityThreshold = 2; + if (cmp12 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("case 1 & case 2 has {:d} similar bytes", cmp12)); + } + if (cmp13 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("case 1 & case 3 has {:d} similar bytes", cmp13)); + } + if (cmp23 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("case 2 & case 3 has {:d} similar bytes", cmp23)); + } + + // record result + test_result.result = "PASS"; + test_result.comments = ""; + } + catch (const tc::TestException& e) + { + // record result + test_result.result = "FAIL"; + test_result.comments = e.what(); + } + catch (const std::exception& e) + { + // record result + test_result.result = "UNHANDLED EXCEPTION"; + test_result.comments = e.what(); + } + + // add result to list + mTestResults.push_back(std::move(test_result)); +} + +void crypto_EccKeyGenerator_TestClass::test_RepeatedCallsCreateDifferentData() +{ + TestResult test_result; + test_result.test_name = "test_RepeatedCallsCreateDifferentData"; + test_result.result = "NOT RUN"; + test_result.comments = ""; + + try + { + // generate allocate storage for each test + static const size_t kRandomDataSize = 0x20; + auto random_data1 = tc::ByteData(kRandomDataSize); + auto random_data2 = tc::ByteData(kRandomDataSize); + auto random_data3 = tc::ByteData(kRandomDataSize); + + // create PRBG object + tc::crypto::PseudoRandomByteGenerator prbg; + + // generate random data + prbg.getBytes(random_data1.data(), random_data1.size()); + prbg.getBytes(random_data2.data(), random_data2.size()); + prbg.getBytes(random_data3.data(), random_data3.size()); + + size_t cmp12 = 0, cmp13 = 0, cmp23 = 0; + + for (size_t i = 0; i < kRandomDataSize; i++) + { + cmp12 += random_data1[i] == random_data2[i]; + cmp13 += random_data1[i] == random_data3[i]; + cmp23 += random_data2[i] == random_data3[i]; + } + + // check to see if any of the tests were similar + static const size_t kSimilarityThreshold = 2; + if (cmp12 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("case 1 & case 2 has {:d} similar bytes", cmp12)); + } + if (cmp13 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("case 1 & case 3 has {:d} similar bytes", cmp13)); + } + if (cmp23 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("case 2 & case 3 has {:d} similar bytes", cmp23)); + } + + // record result + test_result.result = "PASS"; + test_result.comments = ""; + } + catch (const tc::TestException& e) + { + // record result + test_result.result = "FAIL"; + test_result.comments = e.what(); + } + catch (const std::exception& e) + { + // record result + test_result.result = "UNHANDLED EXCEPTION"; + test_result.comments = e.what(); + } + + // add result to list + mTestResults.push_back(std::move(test_result)); +} \ No newline at end of file diff --git a/test/crypto_EccKeyGenerator_TestClass.h b/test/crypto_EccKeyGenerator_TestClass.h new file mode 100644 index 00000000..bfeaa30b --- /dev/null +++ b/test/crypto_EccKeyGenerator_TestClass.h @@ -0,0 +1,26 @@ +#pragma once +#include "ITestClass.h" + +class crypto_EccKeyGenerator_TestClass : public ITestClass +{ +public: + crypto_EccKeyGenerator_TestClass(); + + // this will run the tests + void runAllTests(); + + // this is the label for this test (for filtering purposes) + const std::string& getTestTag() const; + + // this is where the test results are written + const std::vector& getTestResults() const; +private: + std::string mTestTag; + std::vector mTestResults; + + void test_Class(); + void test_UtilFunc(); + + void test_MultipleObjectsCreateDifferentData(); + void test_RepeatedCallsCreateDifferentData(); +}; \ No newline at end of file diff --git a/test/main.cpp b/test/main.cpp index 4f85297a..9e7805fb 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -94,6 +94,7 @@ #include "crypto_Rsa1024PssSha2512Signer_TestClass.h" #include "crypto_Rsa2048PssSha2512Signer_TestClass.h" #include "crypto_Rsa4096PssSha2512Signer_TestClass.h" +#include "crypto_EccKeyGenerator_TestClass.h" #include "ITestClass.h" @@ -340,6 +341,7 @@ int main(int argc, char** argv) runTest(global_test_results, include_test_regex, exclude_test_regex, include_slow_tests); runTest(global_test_results, include_test_regex, exclude_test_regex, include_slow_tests); runTest(global_test_results, include_test_regex, exclude_test_regex, include_slow_tests); + runTest(global_test_results, include_test_regex, exclude_test_regex, include_slow_tests); // output results outputResultsToStdout(global_test_results, include_result_regex, exclude_result_regex); From 4b2a9878e2e87e7893f2c11bf13488bac75c6d4d Mon Sep 17 00:00:00 2001 From: jakcron Date: Sun, 3 Aug 2025 18:27:15 +1000 Subject: [PATCH 03/26] Add comment about EccKeys not being compressed. --- include/tc/crypto/EccKey.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/tc/crypto/EccKey.h b/include/tc/crypto/EccKey.h index 28fdc08c..2b08c444 100644 --- a/include/tc/crypto/EccKey.h +++ b/include/tc/crypto/EccKey.h @@ -18,6 +18,8 @@ namespace tc { namespace crypto { /** * @struct EccKey * @brief Struct for storing a ECC key. For use with ECC operations. + * + * @note The public/private components are not compressed. */ struct EccKey { From 1f2953588629d83817fe21a290e24b681894202e Mon Sep 17 00:00:00 2001 From: jakcron Date: Sun, 3 Aug 2025 18:27:57 +1000 Subject: [PATCH 04/26] Fix typo in EccCurveType.h --- include/tc/crypto/EccCurveType.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/tc/crypto/EccCurveType.h b/include/tc/crypto/EccCurveType.h index 6b1c08df..943f08b5 100644 --- a/include/tc/crypto/EccCurveType.h +++ b/include/tc/crypto/EccCurveType.h @@ -30,4 +30,4 @@ enum EccCurveType ECC_CURVE_TYPE_CURVE448, /**< Curve448. */ }; -}} // namespace tc::io \ No newline at end of file +}} // namespace tc::crypto \ No newline at end of file From 8993506e192c346592722d0fc5281823aab682e1 Mon Sep 17 00:00:00 2001 From: jakcron Date: Sun, 3 Aug 2025 18:31:14 +1000 Subject: [PATCH 05/26] Bugfix eccIntegerBitLength() for ECC_CURVE_TYPE_SECP224R1 --- src/crypto/EccUtil.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/crypto/EccUtil.cpp b/src/crypto/EccUtil.cpp index 9c1940bd..b090bc49 100644 --- a/src/crypto/EccUtil.cpp +++ b/src/crypto/EccUtil.cpp @@ -9,7 +9,7 @@ size_t tc::crypto::EccUtil::eccIntegerBitLength(EccCurveType curve_type) ecc_int_bit_length = 192; break; case (ECC_CURVE_TYPE_SECP224R1): - ecc_int_bit_length = 244; + ecc_int_bit_length = 224; break; case (ECC_CURVE_TYPE_SECP256R1): ecc_int_bit_length = 256; @@ -18,7 +18,7 @@ size_t tc::crypto::EccUtil::eccIntegerBitLength(EccCurveType curve_type) ecc_int_bit_length = 384; break; case (ECC_CURVE_TYPE_SECP521R1): - ecc_int_bit_length = 521; + ecc_int_bit_length = 521; break; case (ECC_CURVE_TYPE_BP256R1): ecc_int_bit_length = 256; From 56585951f3561675f419e769cec2be257f6ea5f6 Mon Sep 17 00:00:00 2001 From: jakcron Date: Sun, 3 Aug 2025 18:36:03 +1000 Subject: [PATCH 06/26] EccKeyGeneratorImpl - include mbedtls error in exception message. --- src/crypto/detail/EccKeyGeneratorImpl.cpp | 40 +++++++++++++---------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/crypto/detail/EccKeyGeneratorImpl.cpp b/src/crypto/detail/EccKeyGeneratorImpl.cpp index 2e75884c..0524e05b 100644 --- a/src/crypto/detail/EccKeyGeneratorImpl.cpp +++ b/src/crypto/detail/EccKeyGeneratorImpl.cpp @@ -3,6 +3,7 @@ #include #include #include +#include const std::string tc::crypto::detail::EccKeyGeneratorImpl::kClassName = "tc::crypto::detail::EccKeyGeneratorImpl"; @@ -18,7 +19,7 @@ tc::crypto::detail::EccKeyGeneratorImpl::EccKeyGeneratorImpl() : mbedtls_entropy_init( &(mImplCtx->entropy) ); mbedtls_ctr_drbg_init( &(mImplCtx->ctr_drbg) ); - int ret = mbedtls_ctr_drbg_seed(&(mImplCtx->ctr_drbg), mbedtls_entropy_func, &(mImplCtx->entropy), (const unsigned char *)kClassName.c_str(), kClassName.size()); + int ret = mbedtls_ctr_drbg_seed( &(mImplCtx->ctr_drbg), mbedtls_entropy_func, &(mImplCtx->entropy), (const unsigned char *)kClassName.c_str(), kClassName.size() ); switch (ret) { case (0): @@ -90,7 +91,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generateKey(EccCurveType ec_type, mbedtls_ecp_group_id group_id = convertToMbedtlsEcpGroupId(ec_type); if (group_id == MBEDTLS_ECP_DP_NONE) { - throw tc::ArgumentOutOfRangeException(kClassName, "ec_type was not valid."); + throw tc::ArgumentOutOfRangeException(kClassName, fmt::format("ec_type ({}) was not valid.", (uint32_t)ec_type)); } mbedtls_ecp_keypair key; @@ -99,40 +100,43 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generateKey(EccCurveType ec_type, int ret = 1; // generate key - ret = mbedtls_ecp_gen_key(group_id, &key, mbedtls_ctr_drbg_random, &(mImplCtx->ctr_drbg)); + ret = mbedtls_ecp_gen_key( group_id, &key, mbedtls_ctr_drbg_random, &(mImplCtx->ctr_drbg) ); switch (ret) { case (0): break; default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_ecp_gen_key() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_gen_key() An unexpected error occurred. {:x})", ret)); + } + // determine curve integer length for this key + size_t p_len = mbedtls_mpi_size( &key.grp.P ); + // export private component if (d != nullptr) { - size_t d_len = mbedtls_mpi_size( &key.d ); - if (d_size < d_len) + if (d_size < p_len) { throw tc::ArgumentNullException(kClassName, "d was not null, but d_size was insufficent to store private exponent"); } - ret = mbedtls_mpi_write_binary( &key.d, d, std::min(d_size, d_len) ); + ret = mbedtls_mpi_write_binary( &key.d, d, std::min(d_size, p_len) ); switch (ret) { case (0): break; //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_write_binary() An unexpected error occurred. {:x})", ret)); } } // export public component if (q != nullptr) { - size_t p_len = mbedtls_mpi_size( &key.grp.P ); - + // when writing the public component, it seems to be standard to reserve the full integer point for X,Y of Q, regardless of how many bits are actually used + // even if Q.Y is empty (length 0) // if key is < min size if (q_size < (p_len * 2)) { @@ -146,7 +150,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generateKey(EccCurveType ec_type, break; //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_write_binary() An unexpected error occurred. {:x})", ret)); } ret = mbedtls_mpi_write_binary( &key.Q.Y, q + p_len, p_len ); @@ -156,7 +160,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generateKey(EccCurveType ec_type, break; //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_write_binary() An unexpected error occurred. {:x})", ret)); } } @@ -181,7 +185,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generatePublicKey(EccCurveType ec_ case (0): break; default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_ecp_group_load() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_group_load() An unexpected error occurred. {:x})", ret)); } // import private component (d) @@ -192,7 +196,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generatePublicKey(EccCurveType ec_ break; //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_read_binary() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_read_binary() An unexpected error occurred.", ret)); } // generate public component (Q) from private exponent (d) and base point (G) @@ -201,8 +205,10 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generatePublicKey(EccCurveType ec_ { case (0): break; + case (MBEDTLS_ERR_ECP_INVALID_KEY): + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_mul() Invalid public or private key. {:x})", ret)); default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_ecp_mul() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_mul() An unexpected error occurred. {:x})", ret)); } // export public component @@ -223,7 +229,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generatePublicKey(EccCurveType ec_ break; //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_write_binary() An unexpected error occurred. {:x})", ret)); } ret = mbedtls_mpi_write_binary( &key.Q.Y, q + p_len, p_len ); @@ -233,7 +239,7 @@ void tc::crypto::detail::EccKeyGeneratorImpl::generatePublicKey(EccCurveType ec_ break; //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): default: - throw tc::crypto::CryptoException(kClassName, "mbedtls_mpi_write_binary() An unexpected error occurred."); + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_write_binary() An unexpected error occurred. {:x})", ret)); } } From d0319dcaeb714870bf97b22f9434cd7f3f015f91 Mon Sep 17 00:00:00 2001 From: jakcron Date: Sun, 3 Aug 2025 18:36:46 +1000 Subject: [PATCH 07/26] Flex out EccKeyGenerator unit test. --- test/crypto_EccKeyGenerator_TestClass.cpp | 499 +++++++++++++++------- test/crypto_EccKeyGenerator_TestClass.h | 12 + 2 files changed, 359 insertions(+), 152 deletions(-) diff --git a/test/crypto_EccKeyGenerator_TestClass.cpp b/test/crypto_EccKeyGenerator_TestClass.cpp index 000119ab..1d36d8bb 100644 --- a/test/crypto_EccKeyGenerator_TestClass.cpp +++ b/test/crypto_EccKeyGenerator_TestClass.cpp @@ -16,14 +16,10 @@ crypto_EccKeyGenerator_TestClass::crypto_EccKeyGenerator_TestClass() : void crypto_EccKeyGenerator_TestClass::runAllTests(void) { - test_sbox(); - - /* test_Class(); test_UtilFunc(); test_MultipleObjectsCreateDifferentData(); test_RepeatedCallsCreateDifferentData(); - */ } const std::string& crypto_EccKeyGenerator_TestClass::getTestTag() const @@ -38,58 +34,6 @@ const std::vector& crypto_EccKeyGenerator_TestClass::get //--------------------------------------------------------- -#if 0 -void crypto_EccKeyGenerator_TestClass::test_sbox() -{ - TestResult test_result; - test_result.test_name = "test_sbox"; - test_result.result = "NOT RUN"; - test_result.comments = ""; - - try - { - // create buffer to hold data - tc::crypto::EccKey key; - - // generate random bytes - tc::crypto::EccKeyGenerator keygen; - - for (size_t i = 0; i < 13; i++) - { - memset(key.d.data(), 0xff, key.d.size()); - - memset(key.Q.data(), 0xff, key.Q.size()); - - fmt::print("keygen {}\n", i); - keygen.generateKey(key, tc::crypto::EccCurveType(i)); - - fmt::print("d (len: {}): {}\n", key.d.size(), tc::cli::FormatUtil::formatBytesAsString(key.d.data(), key.d.size(), true, "")); - fmt::print("Q (len: {}): {}\n", key.Q.size(), tc::cli::FormatUtil::formatBytesAsString(key.Q.data(), key.Q.size(), true, "")); - } - - - // record result - test_result.result = "PASS"; - test_result.comments = ""; - } - catch (const tc::TestException& e) - { - // record result - test_result.result = "FAIL"; - test_result.comments = e.what(); - } - catch (const std::exception& e) - { - // record result - test_result.result = "UNHANDLED EXCEPTION"; - test_result.comments = e.what(); - } - - // add result to list - mTestResults.push_back(std::move(test_result)); -} -#endif - void crypto_EccKeyGenerator_TestClass::test_Class() { TestResult test_result; @@ -99,23 +43,68 @@ void crypto_EccKeyGenerator_TestClass::test_Class() try { - // create buffer to hold random data - auto random_data = tc::ByteData(0x20); - - // generate control_data to compare to random_data to ensure that it is populated with random bytes - auto control_data = tc::io::PaddingSource(0xbe, random_data.size()).pullData(0, random_data.size()); - - // copy control data - memcpy(random_data.data(), control_data.data(), random_data.size()); + // create class to store key + tc::crypto::EccKey key; + tc::crypto::EccKey pubkey; - // generate random bytes - tc::crypto::PseudoRandomByteGenerator prbg; - prbg.getBytes(random_data.data(), random_data.size()); + // curves to test + std::vector curve_test_list; + getCurveTestList(curve_test_list); - // compare with control data to see if the data changed - if (memcmp(random_data.data(), control_data.data(), random_data.size()) == 0) + tc::crypto::EccKeyGenerator keygen; + for (size_t i = 0; i < curve_test_list.size(); i++) { - throw tc::TestException(".getBytes() did not populate array"); + // reset key + key.curve_type = tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192R1; + key.d = tc::ByteData(); + key.Q = tc::ByteData(); + + // generate key + keygen.generateKey(key, curve_test_list[i].curve_type); + + // check key + if (key.curve_type != curve_test_list[i].curve_type) + { + throw tc::TestException(fmt::format(".generateKey({},key) key.curve_type ({}) did not match expected value ({})", curve_test_list[i].curve_name, (uint32_t)key.curve_type, (uint32_t)curve_test_list[i].curve_type)); + } + + size_t integer_len_bytes = align(curve_test_list[i].integer_bit_size, 8) / 8; + size_t expected_d_size = integer_len_bytes; + size_t expected_Q_size = integer_len_bytes*2; + if (key.d.size() != expected_d_size) + { + throw tc::TestException(fmt::format(".generateKey({},key) key.d.size() ({}) did not match expected value ({})", curve_test_list[i].curve_name, key.d.size(), expected_d_size)); + } + + if (key.Q.size() != expected_Q_size) + { + throw tc::TestException(fmt::format(".generateKey({},key) key.Q.size() ({}) did not match expected value ({})", curve_test_list[i].curve_name, key.Q.size(), expected_Q_size)); + } + + // generate public key + keygen.generatePublicKey(pubkey, key); + + // check public key type + if (pubkey.curve_type != key.curve_type) + { + throw tc::TestException(fmt::format(".generatePublicKey(pubkey,key) (for curve {}) pubkey.curve_type ({}) did not match key.curve_type ({})", curve_test_list[i].curve_name, (uint32_t)pubkey.curve_type, (uint32_t)key.curve_type)); + } + + // check public key has no private component + if (pubkey.d.size() != 0) + { + throw tc::TestException(fmt::format(".generatePublicKey(pubkey,key) (for curve {}) pubkey.d.size() ({}) was not 0", curve_test_list[i].curve_name, pubkey.d.size())); + } + + // check public key has same public component as key + if (pubkey.Q.size() != key.Q.size()) + { + throw tc::TestException(fmt::format(".generatePublicKey(pubkey,key) (for curve {}) pubkey.Q.size() ({}) did not match key.Q.size() ({})", curve_test_list[i].curve_name, pubkey.Q.size(), key.Q.size())); + } + if (memcmp(pubkey.Q.data(), key.Q.data(), pubkey.Q.size()) != 0) + { + throw tc::TestException(fmt::format(".generatePublicKey(pubkey,key) (for curve {}) pubkey.Q.data() did not match key.Q.data()", curve_test_list[i].curve_name)); + } } // record result @@ -148,22 +137,67 @@ void crypto_EccKeyGenerator_TestClass::test_UtilFunc() try { - // create buffer to hold random data - auto random_data = tc::ByteData(0x20); - - // generate control_data to compare to random_data to ensure that it is populated with random bytes - auto control_data = tc::io::PaddingSource(0xbe, random_data.size()).pullData(0, random_data.size()); - - // copy control data - memcpy(random_data.data(), control_data.data(), random_data.size()); + // create class to store key + tc::crypto::EccKey key; + tc::crypto::EccKey pubkey; - // generate random bytes - tc::crypto::GeneratePseudoRandomBytes(random_data.data(), random_data.size()); + // curves to test + std::vector curve_test_list; + getCurveTestList(curve_test_list); - // compare with control data to see if the data changed - if (memcmp(random_data.data(), control_data.data(), random_data.size()) == 0) + for (size_t i = 0; i < curve_test_list.size(); i++) { - throw tc::TestException("GeneratePseudoRandomBytes() did not populate array"); + // reset key + key.curve_type = tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192R1; + key.d = tc::ByteData(); + key.Q = tc::ByteData(); + + // generate key + tc::crypto::GenerateEccKey(key, curve_test_list[i].curve_type); + + // check key + if (key.curve_type != curve_test_list[i].curve_type) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccKey({},key) key.curve_type ({}) did not match expected value ({})", curve_test_list[i].curve_name, (uint32_t)key.curve_type, (uint32_t)curve_test_list[i].curve_type)); + } + + size_t integer_len_bytes = align(curve_test_list[i].integer_bit_size, 8) / 8; + size_t expected_d_size = integer_len_bytes; + size_t expected_Q_size = integer_len_bytes*2; + if (key.d.size() != expected_d_size) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccKey({},key) key.d.size() ({}) did not match expected value ({})", curve_test_list[i].curve_name, key.d.size(), expected_d_size)); + } + + if (key.Q.size() != expected_Q_size) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccKey({},key) key.Q.size() ({}) did not match expected value ({})", curve_test_list[i].curve_name, key.Q.size(), expected_Q_size)); + } + + // generate public key + tc::crypto::GenerateEccPublicKey(pubkey, key); + + // check public key type + if (pubkey.curve_type != key.curve_type) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccPublicKey(pubkey,key) (for curve {}) pubkey.curve_type ({}) did not match key.curve_type ({})", curve_test_list[i].curve_name, (uint32_t)pubkey.curve_type, (uint32_t)key.curve_type)); + } + + // check public key has no private component + if (pubkey.d.size() != 0) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccPublicKey(pubkey,key) (for curve {}) pubkey.d.size() ({}) was not 0", curve_test_list[i].curve_name, pubkey.d.size())); + } + + // check public key has same public component as key + if (pubkey.Q.size() != key.Q.size()) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccPublicKey(pubkey,key) (for curve {}) pubkey.Q.size() ({}) did not match key.Q.size() ({})", curve_test_list[i].curve_name, pubkey.Q.size(), key.Q.size())); + } + if (memcmp(pubkey.Q.data(), key.Q.data(), pubkey.Q.size()) != 0) + { + throw tc::TestException(fmt::format("tc::crypto::GenerateEccPublicKey(pubkey,key) (for curve {}) pubkey.Q.data() did not match key.Q.data()", curve_test_list[i].curve_name)); + } } // record result @@ -196,42 +230,75 @@ void crypto_EccKeyGenerator_TestClass::test_MultipleObjectsCreateDifferentData() try { - // generate allocate storage for each test - static const size_t kRandomDataSize = 0x20; - auto random_data1 = tc::ByteData(kRandomDataSize); - auto random_data2 = tc::ByteData(kRandomDataSize); - auto random_data3 = tc::ByteData(kRandomDataSize); - - // create PRBG objects - tc::crypto::PseudoRandomByteGenerator prbg1, prbg2, prbg3; - - // generate random data - prbg1.getBytes(random_data1.data(), random_data1.size()); - prbg2.getBytes(random_data2.data(), random_data2.size()); - prbg3.getBytes(random_data3.data(), random_data3.size()); - - size_t cmp12 = 0, cmp13 = 0, cmp23 = 0; - - for (size_t i = 0; i < kRandomDataSize; i++) - { - cmp12 += random_data1[i] == random_data2[i]; - cmp13 += random_data1[i] == random_data3[i]; - cmp23 += random_data2[i] == random_data3[i]; - } + // create class to store key + tc::crypto::EccKey key1, key2, key3; - // check to see if any of the tests were similar - static const size_t kSimilarityThreshold = 2; - if (cmp12 > kSimilarityThreshold) - { - throw tc::TestException(fmt::format("case 1 & case 2 has {:d} similar bytes", cmp12)); - } - if (cmp13 > kSimilarityThreshold) - { - throw tc::TestException(fmt::format("case 1 & case 3 has {:d} similar bytes", cmp13)); - } - if (cmp23 > kSimilarityThreshold) + // curves to test + std::vector curve_test_list; + getCurveTestList(curve_test_list); + + // test for each curve type + tc::crypto::EccKeyGenerator keygen; + for (size_t i = 0; i < curve_test_list.size(); i++) { - throw tc::TestException(fmt::format("case 2 & case 3 has {:d} similar bytes", cmp23)); + // generate keys + tc::crypto::EccKeyGenerator keygen1, keygen2, keygen3; + keygen1.generateKey(key1, curve_test_list[i].curve_type); + keygen2.generateKey(key2, curve_test_list[i].curve_type); + keygen3.generateKey(key3, curve_test_list[i].curve_type); + + static const size_t kSimilarityThreshold = 3; + + // check private component + size_t privateCmp12 = 0, privateCmp13 = 0, privateCmp23 = 0; + + for (size_t i = 0; i < key1.d.size(); i++) + { + privateCmp12 += key1.d[i] == key2.d[i]; + privateCmp13 += key1.d[i] == key3.d[i]; + privateCmp23 += key2.d[i] == key3.d[i]; + } + + // check to see if any of the tests were similar + if (privateCmp12 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) privateKey 1 & privateKey 2 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, privateCmp12, tc::cli::FormatUtil::formatBytesAsString(key1.d, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.d, false, ""))); + } + if (privateCmp13 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) privateKey 1 & privateKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, privateCmp13, tc::cli::FormatUtil::formatBytesAsString(key1.d, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.d, false, ""))); + } + if (privateCmp23 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) privateKey 2 & privateKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, privateCmp23, tc::cli::FormatUtil::formatBytesAsString(key1.d, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.d, false, ""))); + } + + // check public component + size_t publicCmp12 = 0, publicCmp13 = 0, publicCmp23 = 0; + + for (size_t i = 0; i < key1.Q.size(); i++) + { + if (!curve_test_list[i].curve_defines_Q_y && i >= (key1.Q.size()/2)) + break; + + publicCmp12 += key1.Q[i] == key2.Q[i]; + publicCmp13 += key1.Q[i] == key3.Q[i]; + publicCmp23 += key2.Q[i] == key3.Q[i]; + } + + // check to see if any of the tests were similar + if (publicCmp12 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) publicKey 1 & publicKey 2 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, publicCmp12, tc::cli::FormatUtil::formatBytesAsString(key1.Q, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.Q, false, ""))); + } + if (publicCmp13 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) publicKey 1 & publicKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, publicCmp13, tc::cli::FormatUtil::formatBytesAsString(key1.Q, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.Q, false, ""))); + } + if (publicCmp23 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) publicKey 2 & publicKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, publicCmp23, tc::cli::FormatUtil::formatBytesAsString(key1.Q, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.Q, false, ""))); + } } // record result @@ -264,42 +331,74 @@ void crypto_EccKeyGenerator_TestClass::test_RepeatedCallsCreateDifferentData() try { - // generate allocate storage for each test - static const size_t kRandomDataSize = 0x20; - auto random_data1 = tc::ByteData(kRandomDataSize); - auto random_data2 = tc::ByteData(kRandomDataSize); - auto random_data3 = tc::ByteData(kRandomDataSize); - - // create PRBG object - tc::crypto::PseudoRandomByteGenerator prbg; - - // generate random data - prbg.getBytes(random_data1.data(), random_data1.size()); - prbg.getBytes(random_data2.data(), random_data2.size()); - prbg.getBytes(random_data3.data(), random_data3.size()); - - size_t cmp12 = 0, cmp13 = 0, cmp23 = 0; - - for (size_t i = 0; i < kRandomDataSize; i++) - { - cmp12 += random_data1[i] == random_data2[i]; - cmp13 += random_data1[i] == random_data3[i]; - cmp23 += random_data2[i] == random_data3[i]; - } + // create class to store key + tc::crypto::EccKey key1, key2, key3; - // check to see if any of the tests were similar - static const size_t kSimilarityThreshold = 2; - if (cmp12 > kSimilarityThreshold) - { - throw tc::TestException(fmt::format("case 1 & case 2 has {:d} similar bytes", cmp12)); - } - if (cmp13 > kSimilarityThreshold) - { - throw tc::TestException(fmt::format("case 1 & case 3 has {:d} similar bytes", cmp13)); - } - if (cmp23 > kSimilarityThreshold) + // curves to test + std::vector curve_test_list; + getCurveTestList(curve_test_list); + + // test for each curve type + for (size_t i = 0; i < curve_test_list.size(); i++) { - throw tc::TestException(fmt::format("case 2 & case 3 has {:d} similar bytes", cmp23)); + // generate keys + tc::crypto::EccKeyGenerator keygen; + keygen.generateKey(key1, curve_test_list[i].curve_type); + keygen.generateKey(key2, curve_test_list[i].curve_type); + keygen.generateKey(key3, curve_test_list[i].curve_type); + + static const size_t kSimilarityThreshold = 3; + + // check private component + size_t privateCmp12 = 0, privateCmp13 = 0, privateCmp23 = 0; + + for (size_t i = 0; i < key1.d.size(); i++) + { + privateCmp12 += key1.d[i] == key2.d[i]; + privateCmp13 += key1.d[i] == key3.d[i]; + privateCmp23 += key2.d[i] == key3.d[i]; + } + + // check to see if any of the tests were similar + if (privateCmp12 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) privateKey 1 & privateKey 2 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, privateCmp12, tc::cli::FormatUtil::formatBytesAsString(key1.d, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.d, false, ""))); + } + if (privateCmp13 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) privateKey 1 & privateKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, privateCmp13, tc::cli::FormatUtil::formatBytesAsString(key1.d, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.d, false, ""))); + } + if (privateCmp23 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) privateKey 2 & privateKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, privateCmp23, tc::cli::FormatUtil::formatBytesAsString(key1.d, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.d, false, ""))); + } + + // check public component + size_t publicCmp12 = 0, publicCmp13 = 0, publicCmp23 = 0; + + for (size_t i = 0; i < key1.Q.size(); i++) + { + if (!curve_test_list[i].curve_defines_Q_y && i >= (key1.Q.size()/2)) + break; + + publicCmp12 += key1.Q[i] == key2.Q[i]; + publicCmp13 += key1.Q[i] == key3.Q[i]; + publicCmp23 += key2.Q[i] == key3.Q[i]; + } + + // check to see if any of the tests were similar + if (publicCmp12 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) publicKey 1 & publicKey 2 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, publicCmp12, tc::cli::FormatUtil::formatBytesAsString(key1.Q, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.Q, false, ""))); + } + if (publicCmp13 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) publicKey 1 & publicKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, publicCmp13, tc::cli::FormatUtil::formatBytesAsString(key1.Q, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.Q, false, ""))); + } + if (publicCmp23 > kSimilarityThreshold) + { + throw tc::TestException(fmt::format("(curve {}) publicKey 2 & publicKey 3 has {:d} similar bytes ({} vs {})", curve_test_list[i].curve_name, publicCmp23, tc::cli::FormatUtil::formatBytesAsString(key1.Q, false, ""), tc::cli::FormatUtil::formatBytesAsString(key2.Q, false, ""))); + } } // record result @@ -321,4 +420,100 @@ void crypto_EccKeyGenerator_TestClass::test_RepeatedCallsCreateDifferentData() // add result to list mTestResults.push_back(std::move(test_result)); -} \ No newline at end of file +} + +void crypto_EccKeyGenerator_TestClass::getCurveTestList(std::vector& curve_test_list) const +{ + curve_test_list.clear(); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP192R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192R1, + 192, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP224R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP224R1, + 224, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP256R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP256R1, + 256, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP384R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP384R1, + 384, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP521R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP521R1, + 521, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_BP256R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP256R1, + 256, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_BP384R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP384R1, + 384, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_BP512R1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP512R1, + 512, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_CURVE25519", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_CURVE25519, + 255, + false + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP192K1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192K1, + 192, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP224K1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP224K1, + 224, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_SECP256K1", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP256K1, + 256, + true + }); + + curve_test_list.push_back({ + "ECC_CURVE_TYPE_CURVE448", + tc::crypto::EccCurveType::ECC_CURVE_TYPE_CURVE448, + 448, + false + }); +} diff --git a/test/crypto_EccKeyGenerator_TestClass.h b/test/crypto_EccKeyGenerator_TestClass.h index bfeaa30b..bde5663c 100644 --- a/test/crypto_EccKeyGenerator_TestClass.h +++ b/test/crypto_EccKeyGenerator_TestClass.h @@ -1,5 +1,6 @@ #pragma once #include "ITestClass.h" +#include class crypto_EccKeyGenerator_TestClass : public ITestClass { @@ -18,9 +19,20 @@ class crypto_EccKeyGenerator_TestClass : public ITestClass std::string mTestTag; std::vector mTestResults; + void test_sbox(); + void test_Class(); void test_UtilFunc(); void test_MultipleObjectsCreateDifferentData(); void test_RepeatedCallsCreateDifferentData(); + + struct sCurveInfo { + std::string curve_name; + tc::crypto::EccCurveType curve_type; + size_t integer_bit_size; + bool curve_defines_Q_y; + }; + + void getCurveTestList(std::vector& curve_test_list) const; }; \ No newline at end of file From 0fec0df5b0f08c41dd4be17d4487624515ebbcfe Mon Sep 17 00:00:00 2001 From: jakcron Date: Mon, 4 Aug 2025 09:54:54 +1000 Subject: [PATCH 08/26] Add unit test workflow --- .github/workflows/execute_tests.yml | 65 +++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .github/workflows/execute_tests.yml diff --git a/.github/workflows/execute_tests.yml b/.github/workflows/execute_tests.yml new file mode 100644 index 00000000..8b052537 --- /dev/null +++ b/.github/workflows/execute_tests.yml @@ -0,0 +1,65 @@ +name: Run Unit-Tests (PR) + +on: + pull_request: + branches: [ development-tip ] + +jobs: + build_makefile: + name: ${{ matrix.dist }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + dist: [ubuntu_x86_64, macos_x86_64, macos_arm64] + prog: [libtoolchain_test] + include: + - dist: ubuntu_x86_64 + os: ubuntu-latest + arch: x86_64 + bin_ext: + - dist: macos_x86_64 + os: macos-latest + arch: x86_64 + bin_ext: + - dist: macos_arm64 + os: macos-latest + arch: arm64 + bin_ext: + steps: + - uses: actions/checkout@v4 + - name: Clone submodules + run: git submodule init && git submodule update + - name: Compile ${{ matrix.prog }} + run: make PROJECT_PLATFORM_ARCH=${{ matrix.arch }} deps all + - name: Run unit-tests ${{ matrix.prog }} + run: ./bin/${{ matrix.prog }}${{ matrix.bin_ext }} + build_visualstudio: + name: ${{ matrix.dist }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + dist: [win_x64, win_x86] + prog: [libtoolchain-test] + include: + - dist: win_x64 + os: windows-latest + platform: x64 + configuration: Release + build_path: x64\Release + bin_ext: .exe + - dist: win_x86 + os: windows-latest + platform: x86 + configuration: Release + build_path: Release + bin_ext: .exe + steps: + - uses: actions/checkout@v4 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1.3 + - name: Clone submodules + run: git submodule init && git submodule update + - name: Compile ${{ matrix.prog }} + run: msbuild .\build\visualstudio\${{ matrix.prog }}.sln /p:configuration=${{ matrix.configuration }} /p:platform=${{ matrix.platform }} + - name: Run unit-tests ${{ matrix.prog }} + run: .\build\visualstudio\${{ matrix.build_path }}\${{ matrix.prog }}${{ matrix.bin_ext }} From 5dabbf2ba9cf5904680d2fb18fe041f0283aaba1 Mon Sep 17 00:00:00 2001 From: jakcron Date: Mon, 4 Aug 2025 10:03:57 +1000 Subject: [PATCH 09/26] Tweak unit-test exec --- .github/workflows/execute_tests.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/execute_tests.yml b/.github/workflows/execute_tests.yml index 8b052537..7d048706 100644 --- a/.github/workflows/execute_tests.yml +++ b/.github/workflows/execute_tests.yml @@ -32,14 +32,15 @@ jobs: - name: Compile ${{ matrix.prog }} run: make PROJECT_PLATFORM_ARCH=${{ matrix.arch }} deps all - name: Run unit-tests ${{ matrix.prog }} - run: ./bin/${{ matrix.prog }}${{ matrix.bin_ext }} + run: ./bin/${{ matrix.prog }}${{ matrix.bin_ext }} --exres PASS --slow build_visualstudio: name: ${{ matrix.dist }} runs-on: ${{ matrix.os }} strategy: matrix: dist: [win_x64, win_x86] - prog: [libtoolchain-test] + vs_sln: [libtoolchain] + bin_name: [libtoolchain-test] include: - dist: win_x64 os: windows-latest @@ -59,7 +60,7 @@ jobs: uses: microsoft/setup-msbuild@v1.3 - name: Clone submodules run: git submodule init && git submodule update - - name: Compile ${{ matrix.prog }} - run: msbuild .\build\visualstudio\${{ matrix.prog }}.sln /p:configuration=${{ matrix.configuration }} /p:platform=${{ matrix.platform }} - - name: Run unit-tests ${{ matrix.prog }} - run: .\build\visualstudio\${{ matrix.build_path }}\${{ matrix.prog }}${{ matrix.bin_ext }} + - name: Compile ${{ matrix.vs_sln }} + run: msbuild .\build\visualstudio\${{ matrix.vs_sln }}.sln /p:configuration=${{ matrix.configuration }} /p:platform=${{ matrix.platform }} + - name: Run unit-tests ${{ matrix.bin_name }} + run: .\build\visualstudio\${{ matrix.build_path }}\${{ matrix.bin_name }}${{ matrix.bin_ext }} --exres PASS --slow From a0ce56da59d64b7b250208ff01e641bb4821791d Mon Sep 17 00:00:00 2001 From: jakcron Date: Mon, 4 Aug 2025 10:25:18 +1000 Subject: [PATCH 10/26] Try to more cleanly copy ByteData to string --- src/encode/Base64Util.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/encode/Base64Util.cpp b/src/encode/Base64Util.cpp index 19842190..c8dbbdc1 100644 --- a/src/encode/Base64Util.cpp +++ b/src/encode/Base64Util.cpp @@ -8,18 +8,14 @@ inline std::string byteDataAsString(const tc::ByteData& data) { std::string str = ""; - if (data.size() > 0) + for (size_t i = 0; i < data.size(); i++) { - str = std::string((const char*)data.data()); - } - - for (size_t i = 0; i < str.size(); i++) - { - if ( ! std::isprint(static_cast(str[i])) ) + if ( ! std::isprint(static_cast(data[i])) ) { - str = ""; break; } + + str.push_back(static_cast(data[i])); } return str; From 30fb26cec84cbe6acbbac715f3f1a3146e75fcfa Mon Sep 17 00:00:00 2001 From: jakcron Date: Mon, 4 Aug 2025 10:44:40 +1000 Subject: [PATCH 11/26] Fix copy/paste mistake in EccKeyGeneratorImpl.h --- include/tc/crypto/detail/EccKeyGeneratorImpl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/tc/crypto/detail/EccKeyGeneratorImpl.h b/include/tc/crypto/detail/EccKeyGeneratorImpl.h index daaad1ed..4682eb1f 100644 --- a/include/tc/crypto/detail/EccKeyGeneratorImpl.h +++ b/include/tc/crypto/detail/EccKeyGeneratorImpl.h @@ -17,7 +17,7 @@ namespace tc { namespace crypto { namespace detail { /** * @class EccKeyGeneratorImpl - * @brief This class implements the RSA key generation. + * @brief This class implements the ECC key generation. */ class EccKeyGeneratorImpl { @@ -25,7 +25,7 @@ class EccKeyGeneratorImpl /** * @brief Default constructor * @details - * This initializes RSA key generator state. + * This initializes ECC key generator state. */ EccKeyGeneratorImpl(); From dfbdff10d45cc6d3733de84e0f4f263ff408fafe Mon Sep 17 00:00:00 2001 From: jakcron Date: Mon, 4 Aug 2025 14:05:27 +1000 Subject: [PATCH 12/26] update vs project files. --- .../libtoolchain-test.vcxproj | 2 ++ .../libtoolchain-test.vcxproj.filters | 8 ++++-- .../libtoolchain/libtoolchain.vcxproj | 9 +++++++ .../libtoolchain/libtoolchain.vcxproj.filters | 27 +++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj b/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj index 609c1327..b5114fcb 100644 --- a/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj +++ b/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj @@ -169,6 +169,7 @@ + @@ -285,6 +286,7 @@ + diff --git a/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj.filters b/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj.filters index d108efee..438b4ddd 100644 --- a/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj.filters +++ b/build/visualstudio/libtoolchain-test/libtoolchain-test.vcxproj.filters @@ -147,6 +147,9 @@ Source Files + + Source Files + Source Files @@ -470,7 +473,6 @@ Header Files - Header Files @@ -486,13 +488,15 @@ Header Files - Header Files Header Files + + Header Files + Header Files diff --git a/build/visualstudio/libtoolchain/libtoolchain.vcxproj b/build/visualstudio/libtoolchain/libtoolchain.vcxproj index 825e2bab..015d044a 100644 --- a/build/visualstudio/libtoolchain/libtoolchain.vcxproj +++ b/build/visualstudio/libtoolchain/libtoolchain.vcxproj @@ -179,6 +179,10 @@ + + + + @@ -223,6 +227,7 @@ + @@ -320,6 +325,9 @@ + + + @@ -350,6 +358,7 @@ + diff --git a/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters b/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters index a22c5a25..dd7e1e72 100644 --- a/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters +++ b/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters @@ -82,6 +82,15 @@ Source Files\crypto + + Source Files\crypto + + + Source Files\crypto + + + Source Files\crypto + Source Files\crypto @@ -172,6 +181,9 @@ Source Files\crypto\detail + + Source Files\crypto\detail + Source Files\crypto\detail @@ -432,6 +444,18 @@ Header Files\tc\crypto + + Header Files\tc\crypto + + + Header Files\tc\crypto + + + Header Files\tc\crypto + + + Header Files\tc\crypto + Header Files\tc\crypto @@ -564,6 +588,9 @@ Header Files\tc\crypto\detail + + Header Files\tc\crypto\detail + Header Files\tc\crypto\detail From a267d886f19883f4fc4c8b59308906a8dd30c7ea Mon Sep 17 00:00:00 2001 From: jakcron Date: Mon, 4 Aug 2025 15:08:48 +1000 Subject: [PATCH 13/26] Fix typo in EccKeyGeneratorImpl.h --- include/tc/crypto/detail/EccKeyGeneratorImpl.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/tc/crypto/detail/EccKeyGeneratorImpl.h b/include/tc/crypto/detail/EccKeyGeneratorImpl.h index 4682eb1f..c2b686c5 100644 --- a/include/tc/crypto/detail/EccKeyGeneratorImpl.h +++ b/include/tc/crypto/detail/EccKeyGeneratorImpl.h @@ -58,7 +58,7 @@ class EccKeyGeneratorImpl * @throw tc::crypto::CryptoException Something failed during generation of a key. * @throw tc::crypto::CryptoException The random generator failed to generate non-zeros. * @throw tc::ArgumentException @p d was not null, but @p d_size was not large enough. - * @throw tc::ArgumentException @p q was not null, but @p q_size was not large enough. + * @throw tc::ArgumentException @p Q was not null, but @p Q_size was not large enough. */ void generateKey(EccCurveType ec_type, byte_t* d, size_t d_size, byte_t* Q, size_t Q_size); @@ -82,9 +82,8 @@ class EccKeyGeneratorImpl * @throw tc::ArgumentOutOfRangeException @p ec_type was not of type @ref EccCurveType * @throw tc::crypto::CryptoException An unexpected error has occurred. * @throw tc::crypto::CryptoException Something failed during generation of a key. - * @throw tc::crypto::CryptoException The random generator failed to generate non-zeros. * @throw tc::ArgumentException @p d was null, or @p d_size was not large enough. - * @throw tc::ArgumentException @p q was not null, but @p q_size was not large enough. + * @throw tc::ArgumentException @p Q was not null, but @p Q_size was not large enough. */ void generatePublicKey(EccCurveType ec_type, byte_t* d, size_t d_size, byte_t* Q, size_t Q_size); private: From 0768123e06df2b8679dc41f0b8d75ed6c663d9a3 Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 09:04:47 +1000 Subject: [PATCH 14/26] Skip slow tests for Windows --- .github/workflows/execute_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/execute_tests.yml b/.github/workflows/execute_tests.yml index 7d048706..1cff92d0 100644 --- a/.github/workflows/execute_tests.yml +++ b/.github/workflows/execute_tests.yml @@ -63,4 +63,4 @@ jobs: - name: Compile ${{ matrix.vs_sln }} run: msbuild .\build\visualstudio\${{ matrix.vs_sln }}.sln /p:configuration=${{ matrix.configuration }} /p:platform=${{ matrix.platform }} - name: Run unit-tests ${{ matrix.bin_name }} - run: .\build\visualstudio\${{ matrix.build_path }}\${{ matrix.bin_name }}${{ matrix.bin_ext }} --exres PASS --slow + run: .\build\visualstudio\${{ matrix.build_path }}\${{ matrix.bin_name }}${{ matrix.bin_ext }} --exres PASS From 58a6f6cfe447e31683039011d83b18ddd4aaf9e9 Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 14:54:38 +1000 Subject: [PATCH 15/26] Add tc::os::getTempDirPath() --- include/tc/os/Environment.h | 20 +++++++++++++++-- src/os/Environment.cpp | 43 ++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/include/tc/os/Environment.h b/include/tc/os/Environment.h index faa5e33a..55cdd993 100644 --- a/include/tc/os/Environment.h +++ b/include/tc/os/Environment.h @@ -2,12 +2,15 @@ * @file Environment.h * @brief Declarations for API resources for accessing run-time environment * @author Jack (jakcron) - * @version 0.1 - * @date 2020/06/12 + * @version 0.2 + * @date 2025/08/05 **/ #pragma once #include #include +#include + +#include namespace tc { namespace os { @@ -25,4 +28,17 @@ namespace tc { namespace os { */ bool getEnvVar(const std::string& name, std::string& value); + /** + * @brief Get OS defined temporary directory path. + * + * @details This function returns the temporary directory path, that can be used for storing files during run-time of the application. + * + * @param[out] dir_path Refence to path object to populate with temporary directory path. + * + * @post @p dir_path will contain the temporary directory path. + * + * @throws tc::io::DirectoryNotFoundException Temporary directory could not be determined. + */ +void getTempDirPath(tc::io::Path& dir_path); + }} // namespace tc::cli \ No newline at end of file diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index ecdb68a3..fbfcfc45 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -1,5 +1,11 @@ #include -#include +#include + +#ifdef _WIN32 +#include +#else + +#endif bool tc::os::getEnvVar(const std::string& name, std::string& value) { @@ -37,4 +43,39 @@ bool tc::os::getEnvVar(const std::string& name, std::string& value) } #endif return did_find_variable; +} + +static const std::vector kOSTempDirEnvVarList = {"TMPDIR", "TMP", "TEMP", "TEMPDIR"}; + +void tc::os::getTempDirPath(tc::io::Path& dir_path) +{ +#ifdef _WIN32 + DWORD dir_buffer_size = MAX_PATH+1; + std::shared_ptr dir_buffer(new wchar_t[dir_buffer_size]); + + DWORD dir_string_size = GetTempPath2W(dir_buffer_size, dir_buffer.get()); + + if (dir_string_size == 0) + { + throw tc::io::DirectoryNotFoundException("Operating system could not provide temporary directory."); + } + + dir_path = tc::io::Path(std::u16string(dir_buffer.get())); +#else + std::string dir_path_str = ""; + for (size_t i = 0; i < kOSTempDirEnvVarList.size(); i++) + { + if (tc::os::getEnvVar(kOSTempDirEnvVarList[i], dir_path_str) && dir_path_str != "") + { + break; + } + } + + if (dir_path_str.size() == 0) + { + throw tc::io::DirectoryNotFoundException("Operating system could not provide temporary directory."); + } + + dir_path = tc::io::Path(dir_path_str); +#endif } \ No newline at end of file From 8584fcdde9f87eb19ce8f212bd5bdcf3fc454042 Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 14:58:29 +1000 Subject: [PATCH 16/26] Return value from execution of unit test program --- test/main.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/main.cpp b/test/main.cpp index 9e7805fb..ac807eaf 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -131,8 +131,10 @@ void runTest(std::vector& global_test_results, const std::regex global_test_results.push_back(std::move(local_test_results)); } -void outputResultsToStdout(const std::vector& global_test_results, const std::regex& include_result_regex, const std::regex& exclude_result_regex) +int outputResultsToStdout(const std::vector& global_test_results, const std::regex& include_result_regex, const std::regex& exclude_result_regex) { + int res = 0; + for (auto test_class_itr = global_test_results.begin(); test_class_itr != global_test_results.end(); test_class_itr++) { size_t total_tests = 0, total_passed_tests = 0; @@ -155,7 +157,13 @@ void outputResultsToStdout(const std::vector& global_test_resul fmt::print("\n"); } fmt::print("[{:s}] END ({:d}/{:d} passed)\n", test_class_itr->tag, total_passed_tests, total_tests); + + // change return value if tests failed + if (total_passed_tests < total_tests) + res -= 1; } + + return res; } int main(int argc, char** argv) @@ -344,5 +352,5 @@ int main(int argc, char** argv) runTest(global_test_results, include_test_regex, exclude_test_regex, include_slow_tests); // output results - outputResultsToStdout(global_test_results, include_result_regex, exclude_result_regex); + return outputResultsToStdout(global_test_results, include_result_regex, exclude_result_regex); } \ No newline at end of file From e778dfd2f2111f8870b92902577a6e8fbae48186 Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 15:00:38 +1000 Subject: [PATCH 17/26] Removed windows header from Environment.cpp --- src/os/Environment.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index fbfcfc45..872c08be 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -1,12 +1,6 @@ #include #include -#ifdef _WIN32 -#include -#else - -#endif - bool tc::os::getEnvVar(const std::string& name, std::string& value) { bool did_find_variable = false; From 0e53f74e08e409d9e4702f59058ccc867c1ab483 Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 15:05:04 +1000 Subject: [PATCH 18/26] Add string header back to Environment.cpp --- src/os/Environment.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index 872c08be..69be9c83 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -1,5 +1,5 @@ #include -#include +#include bool tc::os::getEnvVar(const std::string& name, std::string& value) { From 5e8b8b708726a76be2870454eb2daa04effc5dfd Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 15:28:24 +1000 Subject: [PATCH 19/26] Add fileapi.h to Environment.cpp --- src/os/Environment.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index 69be9c83..bb23928b 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -1,6 +1,12 @@ #include #include +#ifdef _WIN32 +#include +#else + +#endif + bool tc::os::getEnvVar(const std::string& name, std::string& value) { bool did_find_variable = false; From 3d88412cc6959ad156ced8c4261e5c7bcd1897db Mon Sep 17 00:00:00 2001 From: jakcron Date: Tue, 5 Aug 2025 15:31:20 +1000 Subject: [PATCH 20/26] replace fileapi.h with windows.h in Environment.cpp --- src/os/Environment.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index bb23928b..9b31f9b6 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -2,7 +2,7 @@ #include #ifdef _WIN32 -#include +#include #else #endif From 26f13369690e6a2b9bf34e39783893f543716d74 Mon Sep 17 00:00:00 2001 From: jakcron Date: Wed, 6 Aug 2025 07:26:13 +1000 Subject: [PATCH 21/26] Add (T)DES optimisations to BlockUtilImpl.h --- include/tc/crypto/detail/BlockUtilImpl.h | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/include/tc/crypto/detail/BlockUtilImpl.h b/include/tc/crypto/detail/BlockUtilImpl.h index 791a2d4f..1774cd1d 100644 --- a/include/tc/crypto/detail/BlockUtilImpl.h +++ b/include/tc/crypto/detail/BlockUtilImpl.h @@ -29,6 +29,30 @@ inline void incr_counter(byte_t* counter, uint64_t incr) } } +template <> +inline void incr_counter<8>(byte_t* counter, uint64_t incr) +{ + tc::bn::be64* counter_words = (tc::bn::be64*)counter; + + uint64_t carry = incr; + while (carry > 0) + { + uint64_t word = counter_words[0].unwrap(); + uint64_t remaining = std::numeric_limits::max() - word; + + if (remaining > carry) + { + counter_words[0].wrap(word + carry); + carry = 0; + } + else + { + counter_words[0].wrap(carry - remaining - 1); + carry = 1; + } + } +} + template <> inline void incr_counter<16>(byte_t* counter, uint64_t incr) { @@ -59,6 +83,12 @@ inline void xor_block(byte_t* dst, const byte_t* src_a, const byte_t* src_b) for (size_t i = 0; i < BlockSize; i++) { dst[i] = src_a[i] ^ src_b[i];} } +template <> +inline void xor_block<8>(byte_t* dst, const byte_t* src_a, const byte_t* src_b) +{ + ((uint64_t*)dst)[0] = ((uint64_t*)src_a)[0] ^ ((uint64_t*)src_b)[0]; +} + template <> inline void xor_block<16>(byte_t* dst, const byte_t* src_a, const byte_t* src_b) { From 5b1017a798e2346633c38d5ac1456e30381c35af Mon Sep 17 00:00:00 2001 From: jakcron Date: Wed, 6 Aug 2025 09:39:47 +1000 Subject: [PATCH 22/26] Add EcdhSharedSecretGenerator --- .../libtoolchain/libtoolchain.vcxproj | 4 + .../libtoolchain/libtoolchain.vcxproj.filters | 12 + include/tc/crypto/EcdhSharedSecretGenerator.h | 133 +++++++++++ .../detail/EcdhSharedSecretGeneratorImpl.h | 74 ++++++ src/crypto/EcdhSharedSecretGenerator.cpp | 8 + .../detail/EcdhSharedSecretGeneratorImpl.cpp | 226 ++++++++++++++++++ 6 files changed, 457 insertions(+) create mode 100644 include/tc/crypto/EcdhSharedSecretGenerator.h create mode 100644 include/tc/crypto/detail/EcdhSharedSecretGeneratorImpl.h create mode 100644 src/crypto/EcdhSharedSecretGenerator.cpp create mode 100644 src/crypto/detail/EcdhSharedSecretGeneratorImpl.cpp diff --git a/build/visualstudio/libtoolchain/libtoolchain.vcxproj b/build/visualstudio/libtoolchain/libtoolchain.vcxproj index 015d044a..af4d67b2 100644 --- a/build/visualstudio/libtoolchain/libtoolchain.vcxproj +++ b/build/visualstudio/libtoolchain/libtoolchain.vcxproj @@ -183,6 +183,7 @@ + @@ -228,6 +229,7 @@ + @@ -328,6 +330,7 @@ + @@ -359,6 +362,7 @@ + diff --git a/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters b/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters index dd7e1e72..98f76ff6 100644 --- a/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters +++ b/build/visualstudio/libtoolchain/libtoolchain.vcxproj.filters @@ -91,6 +91,9 @@ Source Files\crypto + + Source Files\crypto + Source Files\crypto @@ -184,6 +187,9 @@ Source Files\crypto\detail + + Source Files\crypto\detail + Source Files\crypto\detail @@ -456,6 +462,9 @@ Header Files\tc\crypto + + Header Files\tc\crypto + Header Files\tc\crypto @@ -591,6 +600,9 @@ Header Files\tc\crypto\detail + + Header Files\tc\crypto\detail + Header Files\tc\crypto\detail diff --git a/include/tc/crypto/EcdhSharedSecretGenerator.h b/include/tc/crypto/EcdhSharedSecretGenerator.h new file mode 100644 index 00000000..7722076f --- /dev/null +++ b/include/tc/crypto/EcdhSharedSecretGenerator.h @@ -0,0 +1,133 @@ + /** + * @file EcdhSharedSecretGenerator.h + * @brief Declarations for API resources for using ECC keys to generate shared secrets using ECDH. + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/08/06 + **/ +#pragma once +#include +#include +#include +#include + +#include + +namespace tc { namespace crypto { + + /** + * @class EcdhSharedSecretGenerator + * @brief Class for using ECC keys to generate shared secrets using ECDH. + */ +class EcdhSharedSecretGenerator +{ +public: + /** + * @brief Default constructor. + */ + EcdhSharedSecretGenerator() : + mState(State_NotInitialized), + mImpl() + {} + + /** + * @brief Utility function for generating an ECDH shared secret. + + * @param[in] private_key ECC private key of the current party. + * @param[in] public_key ECC public key of other party. + * + * @throw tc::crypto::ArgumentException @p private_key was not a valid private key. + * @throw tc::crypto::ArgumentException @p public_key was not a valid public key. + * @throw tc::crypto::ArgumentException @p private_key or @p public_key curve type is not supported/valid. + * @throw tc::crypto::ArgumentException @p private_key and @p public_key did not have the same curve type. + */ + void initialize(const EccKey& private_key, const EccKey& public_key) + { + if (private_key.curve_type != public_key.curve_type) + { + throw tc::ArgumentOutOfRangeException("private_key and public_key did not have the same curve type."); + } + + size_t ecc_integer_len = EccUtil::eccIntegerByteLength(private_key.curve_type); + + if (ecc_integer_len == 0) + { + throw tc::ArgumentOutOfRangeException("private_key or public_key curve type is not supported/valid."); + } + + if (private_key.d.size() != ecc_integer_len) + { + throw tc::ArgumentOutOfRangeException("private_key was not a valid private key."); + } + + if (public_key.Q.size() != (ecc_integer_len * 2)) + { + throw tc::ArgumentOutOfRangeException("public_key was not a valid public key."); + } + + mPrivateKey = private_key; + mPublicKey = public_key; + + mState = State_Initialized; + } + + /** + * @brief Utility function for generating an ECDH shared secret. + * + * @param[out] data Buffer to hold shared secret data. + * @param[in] data_size Size of @p data buffer. + * + * @post + * - The generated shared secret is written to data up to data_size bytes. + * - Shared secret length cannot exceed the bitsize of the curve. + * + * @throw tc::crypto::ArgumentNullException @p data_size > 0 but @p data was not nullptr. + */ + void generateSharedSecretBytes(byte_t* data, size_t data_size) + { + if (mState != State_Initialized) + return; + + // todo input sani logic here + if (data_size > 0 && data != nullptr) + { + throw tc::ArgumentNullException("data_size > 0 but data was not nullptr."); + } + + mImpl.generateSharedSecret(mPrivateKey.curve_type, data, data_size, mPrivateKey.d.data(), mPrivateKey.d.size(), mPublicKey.Q.data(), mPublicKey.Q.size()); + } + +private: + enum State + { + State_NotInitialized, + State_Initialized + }; + + State mState; + tc::crypto::EccKey mPrivateKey; + tc::crypto::EccKey mPublicKey; + detail::EcdhSharedSecretGeneratorImpl mImpl; +}; + + /** + * @brief Utility function for generating an ECDH shared secret. + * + * @param[out] data Buffer to hold shared secret data. + * @param[in] data_size Size of @p data buffer. + * @param[in] private_key ECC private key of the current party. + * @param[in] public_key ECC public key of other party. + * + * @post + * - The generated shared secret is written to data up to data_size bytes. + * - Shared secret length cannot exceed the bitsize of the curve. + * + * @throw tc::crypto::ArgumentNullException @p data_size > 0 but @p data was not nullptr. + * @throw tc::crypto::ArgumentException @p private_key was not a valid private key. + * @throw tc::crypto::ArgumentException @p public_key was not a valid public key. + * @throw tc::crypto::ArgumentException @p private_key or @p public_key curve type is not supported/valid. + * @throw tc::crypto::ArgumentException @p private_key and @p public_key did not have the same curve type. + */ +void GenerateEcdhSharedSecret(byte_t* data, size_t data_size, const EccKey& private_key, const EccKey& public_key); + +}} // namespace tc::crypto \ No newline at end of file diff --git a/include/tc/crypto/detail/EcdhSharedSecretGeneratorImpl.h b/include/tc/crypto/detail/EcdhSharedSecretGeneratorImpl.h new file mode 100644 index 00000000..9bc49b19 --- /dev/null +++ b/include/tc/crypto/detail/EcdhSharedSecretGeneratorImpl.h @@ -0,0 +1,74 @@ + /** + * @file EcdhSharedSecretGeneratorImpl.h + * @brief Declaration of tc::crypto::detail::EcdhSharedSecretGeneratorImpl + * @author Jack (jakcron) + * @version 0.1 + * @date 2025/08/04 + **/ +#pragma once +#include + +#include +#include +#include +#include + +namespace tc { namespace crypto { namespace detail { + + /** + * @class EcdhSharedSecretGeneratorImpl + * @brief This class implements the ECDH shared secret generation. + */ +class EcdhSharedSecretGeneratorImpl +{ +public: + /** + * @brief Default constructor + * @details + * This initializes ECDH shared secret generator state. + */ + EcdhSharedSecretGeneratorImpl(); + + /** + * @brief Destructor + * @details + * Cleans up ECDH shared secret generator state. + */ + ~EcdhSharedSecretGeneratorImpl(); + + /** + * @brief Generate an ECDH shared secret based on own prvate key, external public key. + * + * @param[in] ec_type Type of Elliptic Curve @ref EccCurveType + * @param[out] z Buffer to store shared secret. + * @param[in] z_size Size of shared secret buffer. + * @param[in] d Buffer to store private component. + * @param[in] d_size Size of private component buffer. + * @param[in] Q Buffer to store public component. + * @param[in] Q_size Size of public component buffer. + * + * @pre + * - @p ec_type must be of type @ref EccCurveType + * - @p d & @p Q must be from the same curve. + * @post + * - @p z will be populated with generated shared secret. + * + * @note + * - Secret can be optionally not generated if the corresponding input variables are null and zero. + * + * @throw tc::ArgumentOutOfRangeException @p ec_type was not of type @ref EccCurveType + * @throw tc::crypto::CryptoException An unexpected error has occurred. + * @throw tc::crypto::CryptoException Something failed during generation of the shared secret. + * @throw tc::ArgumentException @p z was not null, but @p z_size was not large enough. + * @throw tc::ArgumentException @p d was not null, but @p d_size was not large enough. + * @throw tc::ArgumentException @p Q was not null, but @p Q_size was not large enough. + */ + void generateSharedSecret(EccCurveType ec_type, byte_t* z, size_t z_size, const byte_t* d, size_t d_size, const byte_t* Q, size_t Q_size); +private: + static const std::string kClassName; + + struct ImplCtx; + std::unique_ptr mImplCtx; +}; + +}}} // namespace tc::crypto::detail \ No newline at end of file diff --git a/src/crypto/EcdhSharedSecretGenerator.cpp b/src/crypto/EcdhSharedSecretGenerator.cpp new file mode 100644 index 00000000..870c1e34 --- /dev/null +++ b/src/crypto/EcdhSharedSecretGenerator.cpp @@ -0,0 +1,8 @@ +#include + +void tc::crypto::GenerateEcdhSharedSecret(byte_t* data, size_t data_size, const EccKey& private_key, const EccKey& public_key) +{ + tc::crypto::EcdhSharedSecretGenerator gen; + gen.initialize(private_key, public_key); + gen.generateSharedSecretBytes(data, data_size); +} \ No newline at end of file diff --git a/src/crypto/detail/EcdhSharedSecretGeneratorImpl.cpp b/src/crypto/detail/EcdhSharedSecretGeneratorImpl.cpp new file mode 100644 index 00000000..6799e5a0 --- /dev/null +++ b/src/crypto/detail/EcdhSharedSecretGeneratorImpl.cpp @@ -0,0 +1,226 @@ +#include +#include +#include +#include +#include +#include + +const std::string tc::crypto::detail::EcdhSharedSecretGeneratorImpl::kClassName = "tc::crypto::detail::EcdhSharedSecretGeneratorImpl"; + +struct tc::crypto::detail::EcdhSharedSecretGeneratorImpl::ImplCtx +{ + mbedtls_ctr_drbg_context ctr_drbg; + mbedtls_entropy_context entropy; + + mbedtls_ecp_group grp; // ec group + mbedtls_mpi d; // source private key + mbedtls_ecp_point Q; // source public key + mbedtls_ecp_point P; // target point +}; + +tc::crypto::detail::EcdhSharedSecretGeneratorImpl::EcdhSharedSecretGeneratorImpl() : + mImplCtx(new ImplCtx()) +{ + mbedtls_entropy_init( &(mImplCtx->entropy) ); + mbedtls_ctr_drbg_init( &(mImplCtx->ctr_drbg) ); + + int ret = mbedtls_ctr_drbg_seed( &(mImplCtx->ctr_drbg), mbedtls_entropy_func, &(mImplCtx->entropy), (const unsigned char *)kClassName.c_str(), kClassName.size() ); + switch (ret) + { + case (0): + break; + case (MBEDTLS_ERR_ENTROPY_SOURCE_FAILED): + throw tc::crypto::CryptoException(kClassName, "mbedtls_ctr_drbg_seed() Entropy source failed"); + default: + throw tc::crypto::CryptoException(kClassName, "mbedtls_ctr_drbg_seed() An unexpected error occurred"); + } + + mbedtls_ecp_group_init( &(mImplCtx->grp) ); + mbedtls_mpi_init( &(mImplCtx->d) ); + mbedtls_ecp_point_init( &(mImplCtx->Q) ); + mbedtls_ecp_point_init( &(mImplCtx->P) ); +} + +tc::crypto::detail::EcdhSharedSecretGeneratorImpl::~EcdhSharedSecretGeneratorImpl() +{ + mbedtls_ecp_point_free( &(mImplCtx->P) ); + mbedtls_ecp_point_free( &(mImplCtx->Q) ); + mbedtls_mpi_free( &(mImplCtx->d) ); + mbedtls_ecp_group_free( &(mImplCtx->grp) ); + mbedtls_ctr_drbg_free( &(mImplCtx->ctr_drbg) ); + mbedtls_entropy_free( &(mImplCtx->entropy) ); +} + +static mbedtls_ecp_group_id convertToMbedtlsEcpGroupId(tc::crypto::EccCurveType ec_type) +{ + mbedtls_ecp_group_id group_id = MBEDTLS_ECP_DP_NONE; + switch (ec_type) + { + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192R1: + group_id = MBEDTLS_ECP_DP_SECP192R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP224R1: + group_id = MBEDTLS_ECP_DP_SECP224R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP256R1: + group_id = MBEDTLS_ECP_DP_SECP256R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP384R1: + group_id = MBEDTLS_ECP_DP_SECP384R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP521R1: + group_id = MBEDTLS_ECP_DP_SECP521R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP256R1: + group_id = MBEDTLS_ECP_DP_BP256R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP384R1: + group_id = MBEDTLS_ECP_DP_BP384R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_BP512R1: + group_id = MBEDTLS_ECP_DP_BP512R1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_CURVE25519: + group_id = MBEDTLS_ECP_DP_CURVE25519; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP192K1: + group_id = MBEDTLS_ECP_DP_SECP192K1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP224K1: + group_id = MBEDTLS_ECP_DP_SECP224K1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_SECP256K1: + group_id = MBEDTLS_ECP_DP_SECP256K1; + break; + case tc::crypto::EccCurveType::ECC_CURVE_TYPE_CURVE448: + group_id = MBEDTLS_ECP_DP_CURVE448; + break; + } + + return group_id; +} + +void tc::crypto::detail::EcdhSharedSecretGeneratorImpl::generateSharedSecret(EccCurveType ec_type, byte_t* z, size_t z_size, const byte_t* d, size_t d_size, const byte_t* Q, size_t Q_size) +{ + mbedtls_ecp_group_id group_id = convertToMbedtlsEcpGroupId(ec_type); + if (group_id == MBEDTLS_ECP_DP_NONE) + { + throw tc::ArgumentOutOfRangeException(kClassName, fmt::format("ec_type ({}) was not valid.", (uint32_t)ec_type)); + } + + int ret; + + // clear source d mpi + ret = mbedtls_mpi_lset( &(mImplCtx->d) , 0 ); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_lset(d) An unexpected error occurred. {:x})", ret)); + } + + // clear source Q point + ret = mbedtls_ecp_set_zero( &(mImplCtx->Q) ); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_set_zero(Q) An unexpected error occurred. {:x})", ret)); + } + + // clear source P point + ret = mbedtls_ecp_set_zero( &(mImplCtx->P) ); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_set_zero(P) An unexpected error occurred. {:x})", ret)); + } + + // load ecp group + ret = mbedtls_ecp_group_load( &(mImplCtx->grp), group_id ); + switch (ret) + { + case (0): + break; + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_group_load() An unexpected error occurred. {:x})", ret)); + } + + // get p_len from ecp group + size_t p_len = mbedtls_mpi_size( &(mImplCtx->grp.P) ); + + // import private component (d) + if (d_size < p_len) + { + throw tc::ArgumentOutOfRangeException(kClassName, fmt::format("d size was insufficent {} (expected {})", d_size, p_len)); + } + ret = mbedtls_mpi_read_binary( &(mImplCtx->d), d, d_size ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_read_binary(d) An unexpected error occurred.", ret)); + } + + // import public component (Q) + if (Q_size < (p_len * 2)) + { + throw tc::ArgumentOutOfRangeException(kClassName, fmt::format("Q size was insufficent {} (expected {})", Q_size, (p_len * 2))); + } + ret = mbedtls_mpi_read_binary( &(mImplCtx->Q.X), Q, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_read_binary(Q.X) An unexpected error occurred.", ret)); + } + ret = mbedtls_mpi_read_binary( &(mImplCtx->Q.Y), Q + p_len, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_read_binary(Q.Y) An unexpected error occurred.", ret)); + } + + // generate shared secret point (P) from private component (d) and public component (Q) + ret = mbedtls_ecp_mul( &(mImplCtx->grp), &(mImplCtx->P), &(mImplCtx->d), &(mImplCtx->Q), mbedtls_ctr_drbg_random, &(mImplCtx->ctr_drbg) ); + switch (ret) + { + case (0): + break; + case (MBEDTLS_ERR_ECP_INVALID_KEY): + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_mul() Invalid public or private key. {:x})", ret)); + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_ecp_mul() An unexpected error occurred. {:x})", ret)); + } + + // export shared secret + if (z != nullptr) + { + // if key is < min size + if (z_size < p_len) + { + throw tc::ArgumentNullException(kClassName, "z was not null, z_size was insufficent to store shared secret"); + } + + ret = mbedtls_mpi_write_binary( &(mImplCtx->P.X), z, p_len ); + switch (ret) + { + case (0): + break; + //case (MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + default: + throw tc::crypto::CryptoException(kClassName, fmt::format("mbedtls_mpi_write_binary() An unexpected error occurred. {:x})", ret)); + } + } +} \ No newline at end of file From ef7f4faef8c5d7668aa160baed82588b1d67c605 Mon Sep 17 00:00:00 2001 From: jakcron Date: Thu, 7 Aug 2025 10:07:04 +1000 Subject: [PATCH 23/26] Short term fix to getTempDirPath() for Windows builds --- src/os/Environment.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index 9b31f9b6..df182497 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -1,12 +1,6 @@ #include #include -#ifdef _WIN32 -#include -#else - -#endif - bool tc::os::getEnvVar(const std::string& name, std::string& value) { bool did_find_variable = false; @@ -49,7 +43,8 @@ static const std::vector kOSTempDirEnvVarList = {"TMPDIR", "TMP", " void tc::os::getTempDirPath(tc::io::Path& dir_path) { -#ifdef _WIN32 +#ifdef 0 +// #ifdef _WIN32 DWORD dir_buffer_size = MAX_PATH+1; std::shared_ptr dir_buffer(new wchar_t[dir_buffer_size]); From a3e4f77e170f54e39edcbc0d8b0532137ae6cf0b Mon Sep 17 00:00:00 2001 From: jakcron Date: Thu, 7 Aug 2025 10:11:52 +1000 Subject: [PATCH 24/26] Change GH Actions to only run unit tests for PRs, and builds for push/release. --- .github/workflows/compile_project.yml | 2 -- .github/workflows/execute_tests.yml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/compile_project.yml b/.github/workflows/compile_project.yml index d8790aef..9e4d6215 100644 --- a/.github/workflows/compile_project.yml +++ b/.github/workflows/compile_project.yml @@ -3,8 +3,6 @@ name: Compile Project (Push/PR/Release) on: push: branches: [ development-tip, stable ] - pull_request: - branches: [ development-tip, stable ] release: types: [ created ] diff --git a/.github/workflows/execute_tests.yml b/.github/workflows/execute_tests.yml index 1cff92d0..a1e4e3eb 100644 --- a/.github/workflows/execute_tests.yml +++ b/.github/workflows/execute_tests.yml @@ -2,7 +2,7 @@ name: Run Unit-Tests (PR) on: pull_request: - branches: [ development-tip ] + branches: [ development-tip, stable ] jobs: build_makefile: From b5fc0a6c27088e949f1def4a5d3237f3883012e9 Mon Sep 17 00:00:00 2001 From: jakcron Date: Thu, 7 Aug 2025 10:14:25 +1000 Subject: [PATCH 25/26] Misc. --- src/os/Environment.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/Environment.cpp b/src/os/Environment.cpp index df182497..fab1e536 100644 --- a/src/os/Environment.cpp +++ b/src/os/Environment.cpp @@ -43,7 +43,7 @@ static const std::vector kOSTempDirEnvVarList = {"TMPDIR", "TMP", " void tc::os::getTempDirPath(tc::io::Path& dir_path) { -#ifdef 0 +#if 0 // #ifdef _WIN32 DWORD dir_buffer_size = MAX_PATH+1; std::shared_ptr dir_buffer(new wchar_t[dir_buffer_size]); From d57b5b79bc3bf7d5fc570e46a5545ad889f7d036 Mon Sep 17 00:00:00 2001 From: jakcron Date: Sun, 10 Aug 2025 17:40:47 +1000 Subject: [PATCH 26/26] Fix duplicate entries in vsxproj file --- build/visualstudio/libtoolchain/libtoolchain.vcxproj | 5 ----- 1 file changed, 5 deletions(-) diff --git a/build/visualstudio/libtoolchain/libtoolchain.vcxproj b/build/visualstudio/libtoolchain/libtoolchain.vcxproj index af4d67b2..f89a564b 100644 --- a/build/visualstudio/libtoolchain/libtoolchain.vcxproj +++ b/build/visualstudio/libtoolchain/libtoolchain.vcxproj @@ -249,11 +249,6 @@ - - - - -
- -
-
- - -
- -
- -
-
-
fs.h
-
-
-Go to the documentation of this file.
1 
5 #pragma once
6 #include <tc/types.h>
7 #include <tc/Exception.h>
8 
13 #include <tc/fs/Path.h>
14 #include <tc/fs/DirectoryInfo.h>
15 #include <tc/fs/IFile.h>
16 #include <tc/fs/IFileSystem.h>
17 #include <tc/fs/SandboxedIFile.h>
19 #include <tc/fs/LocalFileSystem.h>
Declaration of generic types used by libtoolchain.
-
Declaration of tc::fs::Path.
-
Declaration of tc::Exception.
-
Declaration of tc::fs::SandboxedIFile.
-
Declaration of tc::fs::SandboxedIFileSystem.
-
Declaration of tc::fs::LocalFileSystem.
-
Declaration of tc::fs::IFileSystem.
-
Declaration of tc::fs::DirectoryInfo.
-
Declaration of tc::fs::IFile.
-
-
- -
-
- - -
- -
- -
-
-
DirectoryInfo.h
-
-
-Go to the documentation of this file.
1 
9 #pragma once
10 #include <tc/types.h>
11 #include <tc/fs/Path.h>
12 
13 namespace tc { namespace fs {
14 
24  {
25  public:
27  DirectoryInfo();
28 
30  DirectoryInfo(const tc::fs::Path& path, const std::vector<std::string>& dir_list, const std::vector<std::string>& file_list);
31 
33  DirectoryInfo(const DirectoryInfo& other);
34 
37 
39  DirectoryInfo& operator=(const DirectoryInfo& other);
40 
43 
48  const tc::fs::Path& getPath() const;
49 
54  void setPath(const tc::fs::Path& path);
55 
60  const std::vector<std::string>& getDirectoryList() const;
61 
66  void setDirectoryList(const std::vector<std::string>& list);
67 
72  const std::vector<std::string>& getFileList() const;
73 
78  void setFileList(const std::vector<std::string>& list);
79  private:
80  tc::fs::Path mPath;
81  std::vector<std::string> mDirList;
82  std::vector<std::string> mFileList;
83  };
84 
85 }} // namespace tc::fs
Declaration of generic types used by libtoolchain.
-
void setPath(const tc::fs::Path &path)
Set the native path of the directory.
-
Root namespace for libtoolchain.
Definition: Exception.h:12
-
const std::vector< std::string > & getFileList() const
Get the list of files.
-
Declaration of tc::fs::Path.
-
Provides basic info about a directory with-in a FileSystem.
Definition: DirectoryInfo.h:23
-
const std::vector< std::string > & getDirectoryList() const
Get the list of directories.
-
DirectoryInfo & operator=(const DirectoryInfo &other)
Copy Operator.
-
void setDirectoryList(const std::vector< std::string > &list)
Set the list of child directories.
-
void setFileList(const std::vector< std::string > &list)
Set the list of files.
-
Represents a unicode path for a filesystem.
Definition: Path.h:19
-
const tc::fs::Path & getPath() const
Get the native path of the directory.
-
DirectoryInfo()
Default Constructor.
-
-