OSDN Git Service

Some documentation updates.
authorLoRd_MuldeR <mulder2@gmx.de>
Mon, 26 Dec 2016 02:48:17 +0000 (03:48 +0100)
committerLoRd_MuldeR <mulder2@gmx.de>
Mon, 26 Dec 2016 02:48:17 +0000 (03:48 +0100)
59 files changed:
docs/annotated.html
docs/classes.html
docs/d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html [deleted file]
docs/d1/d01/class_m_utils_1_1_hash_1_1_blake2.html [deleted file]
docs/d1/d37/_hash___blake2_8h_source.html [deleted file]
docs/d1/d9c/class_m_utils_1_1_hash_1_1_keccak-members.html [deleted file]
docs/d2/dad/_hash_8h.html [new file with mode: 0644]
docs/d2/dad/_hash_8h_source.html [new file with mode: 0644]
docs/d2/ded/class_m_utils_1_1_hash_1_1_hash-members.html [new file with mode: 0644]
docs/d3/d35/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct-members.html [deleted file]
docs/d5/d3b/_global_8h.html
docs/d5/d3b/_global_8h_source.html
docs/da/db0/class_m_utils_1_1_hash_1_1_hash.html [new file with mode: 0644]
docs/dc/df9/class_m_utils_1_1_hash_1_1_blake2-members.html [deleted file]
docs/dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html [deleted file]
docs/dd/dea/_hash___keccak_8h_source.html [deleted file]
docs/dir_b076b53667bc06ebb413a190e197fc7b.html
docs/files.html
docs/functions.html
docs/functions_func.html [new file with mode: 0644]
docs/globals.html
docs/globals_defs.html
docs/hierarchy.html
docs/index.html
docs/menudata.js
docs/search/all_10.js
docs/search/all_2.js
docs/search/all_3.js
docs/search/all_4.js
docs/search/all_7.js
docs/search/all_8.js
docs/search/all_9.js
docs/search/all_a.js
docs/search/all_e.js
docs/search/classes_1.js
docs/search/classes_4.js
docs/search/classes_5.js
docs/search/classes_6.js
docs/search/classes_7.js
docs/search/classes_8.js [deleted file]
docs/search/classes_9.js [deleted file]
docs/search/defines_0.js
docs/search/files_2.html [moved from docs/search/classes_8.html with 94% similarity]
docs/search/files_2.js [new file with mode: 0644]
docs/search/functions_1.js
docs/search/functions_2.js
docs/search/functions_9.html [moved from docs/search/classes_9.html with 93% similarity]
docs/search/functions_9.js [new file with mode: 0644]
docs/search/searchdata.js
docs/search/variables_3.js
docs/search/variables_4.js
docs/search/variables_5.js
docs/search/variables_6.js
docs/search/variables_7.js
docs/search/variables_8.html [new file with mode: 0644]
docs/search/variables_8.js [new file with mode: 0644]
include/MUtils/Global.h
include/MUtils/Hash.h
include/MUtilsInfo.dox

index 71f35f6..5c17dd8 100644 (file)
@@ -64,16 +64,12 @@ $(function() {
 </div><!--header-->
 <div class="contents">
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d3/da6/namespace_m_utils.html" target="_self">MUtils</a></td><td class="desc">Global <a class="el" href="d3/da6/namespace_m_utils.html" title="Global MUtils namespace. ">MUtils</a> namespace </td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html" target="_self">CPUFetaures</a></td><td class="desc">This namespace contains functions and constants for detecting CPU information </td></tr>
 <tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html" target="_self">_cpu_info_t</a></td><td class="desc">Struct to hold information about the CPU. See <code><a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html" title="Struct to hold information about the CPU. See _cpu_info_t for details! ">_cpu_info_t</a></code> for details! </td></tr>
 <tr id="row_0_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Hash</b></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Internal</b></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_1_0_0_" class="arrow" onclick="toggleFolder('0_1_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>KeccakImpl</b></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html" target="_self">spongeStateStruct</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/d01/class_m_utils_1_1_hash_1_1_blake2.html" target="_self">Blake2</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html" target="_self">Keccak</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html" target="_self">Hash</a></td><td class="desc">This abstract class specifies the generic interface for all support hash algorithms </td></tr>
 <tr id="row_0_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>OS</b></td><td class="desc"></td></tr>
 <tr id="row_0_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_2_0_" class="arrow" onclick="toggleFolder('0_2_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Version</b></td><td class="desc"></td></tr>
 <tr id="row_0_2_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d55/struct_m_utils_1_1_o_s_1_1_version_1_1__os__version__t.html" target="_self">_os_version_t</a></td><td class="desc"></td></tr>
index 81fc2fa..17d594a 100644 (file)
@@ -63,7 +63,7 @@ $(function() {
 <div class="title">Class Index</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_j">j</a>&#160;|&#160;<a class="qindex" href="#letter_k">k</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_v">v</a></div>
+<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_h">h</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_j">j</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_v">v</a></div>
 <table class="classindex">
 <tr><td rowspan="2" valign="bottom"><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;_&#160;&#160;</div></td></tr></table>
 </td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
@@ -73,20 +73,16 @@ $(function() {
 <tr><td></td></tr>
 <tr><td valign="top"><a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html">_cpu_info_t</a> (<a class="el" href="d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html">MUtils::CPUFetaures</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="d5/dfe/class_m_utils_1_1_i_p_c_channel.html">IPCChannel</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="da/d35/class_m_utils_1_1_registry_1_1_registry_key.html">RegistryKey</a> (MUtils::Registry)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td></td></tr>
 <tr><td valign="top"><a class="el" href="dc/d55/struct_m_utils_1_1_o_s_1_1_version_1_1__os__version__t.html">_os_version_t</a> (MUtils::OS::Version)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_j"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;j&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
+<tr><td rowspan="2" valign="bottom"><a name="letter_h"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;h&#160;&#160;</div></td></tr></table>
 </td><td rowspan="2" valign="bottom"><a name="letter_v"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;v&#160;&#160;</div></td></tr></table>
 </td><td></td></tr>
-<tr><td valign="top"><a class="el" href="dc/dd3/class_m_utils_1_1_job_object.html">JobObject</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">spongeStateStruct</a> (MUtils::Hash::Internal::KeccakImpl)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">Blake2</a> (MUtils::Hash)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_k"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;k&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="d1/d32/class_m_utils_1_1_version.html">Version</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td></td><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a class="el" href="dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">Keccak</a> (MUtils::Hash)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="d2/d52/class_m_utils_1_1_taskbar7.html">Taskbar7</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td></td><td></td></tr>
+<tr><td valign="top"><a class="el" href="dc/dd3/class_m_utils_1_1_job_object.html">JobObject</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="d2/d52/class_m_utils_1_1_taskbar7.html">Taskbar7</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a> (MUtils::Hash)&#160;&#160;&#160;</td><td></td><td></td><td valign="top"><a class="el" href="d1/d32/class_m_utils_1_1_version.html">Version</a> (<a class="el" href="d3/da6/namespace_m_utils.html">MUtils</a>)&#160;&#160;&#160;</td><td></td></tr>
 <tr><td></td><td></td><td></td><td></td><td></td></tr>
 </table>
-<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_j">j</a>&#160;|&#160;<a class="qindex" href="#letter_k">k</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_v">v</a></div>
+<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_h">h</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_j">j</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_v">v</a></div>
 </div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html b/docs/d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html
deleted file mode 100644 (file)
index ff07b6e..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: MUtils::Hash::Internal::KeccakImpl::spongeStateStruct Struct Reference</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><b>Internal</b></li><li class="navelem"><b>KeccakImpl</b></li><li class="navelem"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">spongeStateStruct</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> &#124;
-<a href="../../d3/d35/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:abec152a1bd2b02528a9ed7dd6b7a4173"><td class="memItemLeft" align="right" valign="top"><a id="abec152a1bd2b02528a9ed7dd6b7a4173"></a>
-unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>state</b> [(1600/8)]</td></tr>
-<tr class="separator:abec152a1bd2b02528a9ed7dd6b7a4173"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9ad3b2c4726f384890ce57e6f75fd745"><td class="memItemLeft" align="right" valign="top"><a id="a9ad3b2c4726f384890ce57e6f75fd745"></a>
-unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>dataQueue</b> [(1536/8)]</td></tr>
-<tr class="separator:a9ad3b2c4726f384890ce57e6f75fd745"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaa095e67dc5f83ca32adbc2f6dbe5d34"><td class="memItemLeft" align="right" valign="top"><a id="aaa095e67dc5f83ca32adbc2f6dbe5d34"></a>
-unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>rate</b></td></tr>
-<tr class="separator:aaa095e67dc5f83ca32adbc2f6dbe5d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2fe412f995587d69fbca5455f6f6c4d3"><td class="memItemLeft" align="right" valign="top"><a id="a2fe412f995587d69fbca5455f6f6c4d3"></a>
-unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>capacity</b></td></tr>
-<tr class="separator:a2fe412f995587d69fbca5455f6f6c4d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a90c973977c3ace97e83347e6d97d707f"><td class="memItemLeft" align="right" valign="top"><a id="a90c973977c3ace97e83347e6d97d707f"></a>
-unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>bitsInQueue</b></td></tr>
-<tr class="separator:a90c973977c3ace97e83347e6d97d707f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae80ab0346314a9d6d4b06d32dba9fc3b"><td class="memItemLeft" align="right" valign="top"><a id="ae80ab0346314a9d6d4b06d32dba9fc3b"></a>
-unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>fixedOutputLength</b></td></tr>
-<tr class="separator:ae80ab0346314a9d6d4b06d32dba9fc3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7fdee5a0938c698a9e0837e5b8054d00"><td class="memItemLeft" align="right" valign="top"><a id="a7fdee5a0938c698a9e0837e5b8054d00"></a>
-int&#160;</td><td class="memItemRight" valign="bottom"><b>squeezing</b></td></tr>
-<tr class="separator:a7fdee5a0938c698a9e0837e5b8054d00"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adae12469a9b21fd828c78408d054c9d2"><td class="memItemLeft" align="right" valign="top"><a id="adae12469a9b21fd828c78408d054c9d2"></a>
-unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>bitsAvailableForSqueezing</b></td></tr>
-<tr class="separator:adae12469a9b21fd828c78408d054c9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>include/MUtils/<a class="el" href="../../dd/dea/_hash___keccak_8h_source.html">Hash_Keccak.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
diff --git a/docs/d1/d01/class_m_utils_1_1_hash_1_1_blake2.html b/docs/d1/d01/class_m_utils_1_1_hash_1_1_blake2.html
deleted file mode 100644 (file)
index 17c030c..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: MUtils::Hash::Blake2 Class Reference</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">Blake2</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="../../dc/df9/class_m_utils_1_1_hash_1_1_blake2-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">MUtils::Hash::Blake2 Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ab6fc640214ff57a791cd1a93c091684b"><td class="memItemLeft" align="right" valign="top"><a id="ab6fc640214ff57a791cd1a93c091684b"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><b>Blake2</b> (const char *key=NULL)</td></tr>
-<tr class="separator:ab6fc640214ff57a791cd1a93c091684b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab677de8c511372b06a9c71ea4f5babf8"><td class="memItemLeft" align="right" valign="top"><a id="ab677de8c511372b06a9c71ea4f5babf8"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>update</b> (const QByteArray &amp;data)</td></tr>
-<tr class="separator:ab677de8c511372b06a9c71ea4f5babf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e03ba463d58d18930f8f4da3464eb63"><td class="memItemLeft" align="right" valign="top"><a id="a2e03ba463d58d18930f8f4da3464eb63"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>update</b> (QFile &amp;file)</td></tr>
-<tr class="separator:a2e03ba463d58d18930f8f4da3464eb63"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a802e6881fc9ea8f3a04860f2f572abcf"><td class="memItemLeft" align="right" valign="top"><a id="a802e6881fc9ea8f3a04860f2f572abcf"></a>
-QByteArray&#160;</td><td class="memItemRight" valign="bottom"><b>finalize</b> (const bool bAsHex=true)</td></tr>
-<tr class="separator:a802e6881fc9ea8f3a04860f2f572abcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/MUtils/<a class="el" href="../../d1/d37/_hash___blake2_8h_source.html">Hash_Blake2.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
diff --git a/docs/d1/d37/_hash___blake2_8h_source.html b/docs/d1/d37/_hash___blake2_8h_source.html
deleted file mode 100644 (file)
index 3b2b644..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: include/MUtils/Hash_Blake2.h Source File</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_b076b53667bc06ebb413a190e197fc7b.html">MUtils</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Hash_Blake2.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Simple x264 Launcher</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License along</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// with this program; if not, write to the Free Software Foundation, Inc.,</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// http://www.gnu.org/licenses/gpl-2.0.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">   BLAKE2 reference source code package - reference C implementations</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">   Written in 2012 by Samuel Neves &lt;sneves@dei.uc.pt&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">   To the extent possible under law, the author(s) have dedicated all copyright</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">   and related and neighboring rights to this software to the public domain</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">   worldwide. This software is distributed without any warranty.</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">   You should have received a copy of the CC0 Public Domain Dedication along with</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">   this software. If not, see &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;QByteArray&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;QFile&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keyword">namespace </span>Hash</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="keyword">class </span>MUTILS_API Blake2_Context;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">   50</a></span>&#160;        <span class="keyword">class </span>MUTILS_API <a class="code" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">Blake2</a></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;            <a class="code" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">Blake2</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* key = NULL);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;            ~<a class="code" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">Blake2</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;            <span class="keywordtype">void</span> update(<span class="keyword">const</span> QByteArray &amp;data);</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;            <span class="keywordtype">void</span> update(QFile &amp;file);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;            QByteArray finalize(<span class="keyword">const</span> <span class="keywordtype">bool</span> bAsHex = <span class="keyword">true</span>);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        <span class="keyword">private</span>:</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;            QByteArray m_hash;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;            Blake2_Context *<span class="keyword">const</span> m_context;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;            <span class="keywordtype">bool</span> m_finalized;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        };</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        </div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;}</div><div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
-<div class="ttc" id="class_m_utils_1_1_hash_1_1_blake2_html"><div class="ttname"><a href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a></div><div class="ttdef"><b>Definition:</b> Hash_Blake2.h:50</div></div>
-<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
diff --git a/docs/d1/d9c/class_m_utils_1_1_hash_1_1_keccak-members.html b/docs/d1/d9c/class_m_utils_1_1_hash_1_1_keccak-members.html
deleted file mode 100644 (file)
index a0914ea..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: Member List</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">Keccak</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">MUtils::Hash::Keccak Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addData</b>(const QByteArray &amp;data) (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>addData</b>(const char *data, int size) (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>finalize</b>() (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>HashBits</b> enum name (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hb224</b> enum value (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hb256</b> enum value (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hb384</b> enum value (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hb512</b> enum value (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>init</b>(HashBits hashBits=hb256) (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Keccak</b>() (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_hashResult</b> (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_initialized</b> (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_state</b> (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>selfTest</b>(void) (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Keccak</b>() (defined in <a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a>)</td><td class="entry"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
diff --git a/docs/d2/dad/_hash_8h.html b/docs/d2/dad/_hash_8h.html
new file mode 100644 (file)
index 0000000..7345c28
--- /dev/null
@@ -0,0 +1,297 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>MuldeR&#39;s Utilities for Qt: include/MUtils/Hash.h File Reference</title>
+<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../jquery.js"></script>
+<script type="text/javascript" src="../../dynsections.js"></script>
+<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../search/searchdata.js"></script>
+<script type="text/javascript" src="../../search/search.js"></script>
+<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">MuldeR&#39;s Utilities for Qt
+   </div>
+   <div id="projectbrief">MUtilities</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+</script>
+<script type="text/javascript" src="../../menudata.js"></script>
+<script type="text/javascript" src="../../menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('../../',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_b076b53667bc06ebb413a190e197fc7b.html">MUtils</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">Hash.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This file contains function for cryptographic hash computation.  
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;<a class="el" href="../../d5/d3b/_global_8h_source.html">MUtils/Global.h</a>&gt;</code><br />
+<code>#include &lt;QByteArray&gt;</code><br />
+<code>#include &lt;QFile&gt;</code><br />
+</div>
+<p><a href="../../d2/dad/_hash_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This abstract class specifies the generic interface for all support hash algorithms.  <a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:d3/da6/namespace_m_utils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></td></tr>
+<tr class="memdesc:d3/da6/namespace_m_utils"><td class="mdescLeft">&#160;</td><td class="mdescRight">Global <a class="el" href="../../d3/da6/namespace_m_utils.html" title="Global MUtils namespace. ">MUtils</a> namespace. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a330b73d6927d6cd95892712f9396f40e"><td class="memItemLeft" align="right" valign="top">MUTILS_API Hash *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e">MUtils::Hash::create</a> (const quint16 &amp;hashId, const char *const key=NULL)</td></tr>
+<tr class="memdesc:a330b73d6927d6cd95892712f9396f40e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create instance of a hash function.  <a href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e">More...</a><br /></td></tr>
+<tr class="separator:a330b73d6927d6cd95892712f9396f40e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:aa9e34ac422f4e52061cb8908f922fe17"><td class="memItemLeft" align="right" valign="top">static const quint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17">MUtils::Hash::HASH_BLAKE2_512</a> = 0x0000U</td></tr>
+<tr class="memdesc:aa9e34ac422f4e52061cb8908f922fe17"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> algorithm identifier.  <a href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17">More...</a><br /></td></tr>
+<tr class="separator:aa9e34ac422f4e52061cb8908f922fe17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3cfb72f121ca5c03dd8452c322549d11"><td class="memItemLeft" align="right" valign="top">static const quint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11">MUtils::Hash::HASH_KECCAK_224</a> = 0x0100U</td></tr>
+<tr class="memdesc:a3cfb72f121ca5c03dd8452c322549d11"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> algorithm identifier.  <a href="../../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11">More...</a><br /></td></tr>
+<tr class="separator:a3cfb72f121ca5c03dd8452c322549d11"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae38cda07e425eb7c745492215a48ae08"><td class="memItemLeft" align="right" valign="top">static const quint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08">MUtils::Hash::HASH_KECCAK_256</a> = 0x0101U</td></tr>
+<tr class="memdesc:ae38cda07e425eb7c745492215a48ae08"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> algorithm identifier.  <a href="../../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08">More...</a><br /></td></tr>
+<tr class="separator:ae38cda07e425eb7c745492215a48ae08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af80dfb1569816fab7ab5ed32e6386458"><td class="memItemLeft" align="right" valign="top">static const quint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458">MUtils::Hash::HASH_KECCAK_384</a> = 0x0102U</td></tr>
+<tr class="memdesc:af80dfb1569816fab7ab5ed32e6386458"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> algorithm identifier.  <a href="../../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458">More...</a><br /></td></tr>
+<tr class="separator:af80dfb1569816fab7ab5ed32e6386458"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89ad922f2cada9a15893852d43134119"><td class="memItemLeft" align="right" valign="top">static const quint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119">MUtils::Hash::HASH_KECCAK_512</a> = 0x0103U</td></tr>
+<tr class="memdesc:a89ad922f2cada9a15893852d43134119"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> algorithm identifier.  <a href="../../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119">More...</a><br /></td></tr>
+<tr class="separator:a89ad922f2cada9a15893852d43134119"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This file contains function for cryptographic hash computation. </p>
+<p>Call the <a class="el" href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e" title="Create instance of a hash function. ">MUtils::Hash::create()</a> function to create an instance of the desired hash function. All Hash functions implement the <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">MUtils::Hash::Hash</a> interface. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a id="file_a330b73d6927d6cd95892712f9396f40e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#file_a330b73d6927d6cd95892712f9396f40e">&sect;&nbsp;</a></span>create()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">MUTILS_API Hash* MUtils::Hash::create </td>
+          <td>(</td>
+          <td class="paramtype">const quint16 &amp;&#160;</td>
+          <td class="paramname"><em>hashId</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *const&#160;</td>
+          <td class="paramname"><em>key</em> = <code>NULL</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create instance of a hash function. </p>
+<p>This function is used to create a new instance of the desired hash function. All Hash functions implement the <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">MUtils::Hash::Hash</a> interface. The caller is responsible for destroying the returned <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">MUtils::Hash::Hash</a> object.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hashId</td><td>Specifies the desired hash function. This must be a valid hash algorithm identifier, as defined in the <code><a class="el" href="../../d2/dad/_hash_8h.html" title="This file contains function for cryptographic hash computation. ">Hash.h</a></code> header file.</td></tr>
+    <tr><td class="paramname">key</td><td>Specifies on optional key that is used to "seed" the hash function. If a key is given, it must be a NULL-terminated string of appropriate length. If set to <code>NULL</code>, the optional seeding is skipped.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a new <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">MUtils::Hash::Hash</a> object that implements the desired hash function. The function throws if an invalid algorithm identifier was specified! </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="file_aa9e34ac422f4e52061cb8908f922fe17"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#file_aa9e34ac422f4e52061cb8908f922fe17">&sect;&nbsp;</a></span>HASH_BLAKE2_512</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const quint16 MUtils::Hash::HASH_BLAKE2_512 = 0x0000U</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Hash algorithm identifier. </p>
+<p>Use <a href="https://blake2.net/">BLAKE2</a> hash algorithm, with a length of 512-Bit. </p>
+
+</div>
+</div>
+<a id="file_a3cfb72f121ca5c03dd8452c322549d11"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#file_a3cfb72f121ca5c03dd8452c322549d11">&sect;&nbsp;</a></span>HASH_KECCAK_224</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const quint16 MUtils::Hash::HASH_KECCAK_224 = 0x0100U</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Hash algorithm identifier. </p>
+<p>Use <a href="http://keccak.noekeon.org/">Keccak</a> (SHA-3) hash algorithm, with a length of 224-Bit. </p>
+
+</div>
+</div>
+<a id="file_ae38cda07e425eb7c745492215a48ae08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#file_ae38cda07e425eb7c745492215a48ae08">&sect;&nbsp;</a></span>HASH_KECCAK_256</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const quint16 MUtils::Hash::HASH_KECCAK_256 = 0x0101U</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Hash algorithm identifier. </p>
+<p>Use <a href="http://keccak.noekeon.org/">Keccak</a> (SHA-3) hash algorithm, with a length of 256-Bit. </p>
+
+</div>
+</div>
+<a id="file_af80dfb1569816fab7ab5ed32e6386458"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#file_af80dfb1569816fab7ab5ed32e6386458">&sect;&nbsp;</a></span>HASH_KECCAK_384</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const quint16 MUtils::Hash::HASH_KECCAK_384 = 0x0102U</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Hash algorithm identifier. </p>
+<p>Use <a href="http://keccak.noekeon.org/">Keccak</a> (SHA-3) hash algorithm, with a length of 384-Bit. </p>
+
+</div>
+</div>
+<a id="file_a89ad922f2cada9a15893852d43134119"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#file_a89ad922f2cada9a15893852d43134119">&sect;&nbsp;</a></span>HASH_KECCAK_512</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const quint16 MUtils::Hash::HASH_KECCAK_512 = 0x0103U</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Hash algorithm identifier. </p>
+<p>Use <a href="http://keccak.noekeon.org/">Keccak</a> (SHA-3) hash algorithm, with a length of 512-Bit. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
diff --git a/docs/d2/dad/_hash_8h_source.html b/docs/d2/dad/_hash_8h_source.html
new file mode 100644 (file)
index 0000000..76f5ca8
--- /dev/null
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>MuldeR&#39;s Utilities for Qt: include/MUtils/Hash.h Source File</title>
+<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../jquery.js"></script>
+<script type="text/javascript" src="../../dynsections.js"></script>
+<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../search/searchdata.js"></script>
+<script type="text/javascript" src="../../search/search.js"></script>
+<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">MuldeR&#39;s Utilities for Qt
+   </div>
+   <div id="projectbrief">MUtilities</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+</script>
+<script type="text/javascript" src="../../menudata.js"></script>
+<script type="text/javascript" src="../../menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('../../',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_b076b53667bc06ebb413a190e197fc7b.html">MUtils</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">Hash.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="../../d2/dad/_hash_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;QByteArray&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;QFile&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keyword">namespace </span>Hash</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17">   42</a></span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> quint16 <a class="code" href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17">HASH_BLAKE2_512</a> = 0x0000U; </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11">   43</a></span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> quint16 <a class="code" href="../../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11">HASH_KECCAK_224</a> = 0x0100U; </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08">   44</a></span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> quint16 <a class="code" href="../../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08">HASH_KECCAK_256</a> = 0x0101U; </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458">   45</a></span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> quint16 <a class="code" href="../../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458">HASH_KECCAK_384</a> = 0x0102U; </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="../../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119">   46</a></span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> quint16 <a class="code" href="../../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119">HASH_KECCAK_512</a> = 0x0103U; </div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">   57</a></span>&#160;        <span class="keyword">class </span>MUTILS_API <a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        {</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;            <span class="keyword">virtual</span> ~<a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a>(<span class="keywordtype">void</span>) {};</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">   73</a></span>&#160;            <span class="keywordtype">bool</span> <a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">update</a>(<span class="keyword">const</span> quint8 *<span class="keyword">const</span> data, <span class="keyword">const</span> quint32 len) { <span class="keywordflow">return</span> process(data, len); }</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa">   84</a></span>&#160;            <span class="keywordtype">bool</span> <a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa">update</a>(<span class="keyword">const</span> QByteArray &amp;data) { <span class="keywordflow">return</span> process(((<span class="keyword">const</span> quint8*)data.constData()), ((quint32)data.length())); }</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            <span class="keywordtype">bool</span> update(QFile &amp;file);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">  106</a></span>&#160;            QByteArray <a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">digest</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> bAsHex = <span class="keyword">true</span>) { <span class="keywordflow">return</span> bAsHex ? finalize().toHex() : finalize(); }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="keyword">protected</span>:</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;            <a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* key = NULL) {<span class="comment">/*nothing to do*/</span>};</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;            <span class="keyword">virtual</span> <span class="keywordtype">bool</span> process(<span class="keyword">const</span> quint8 *<span class="keyword">const</span> data, <span class="keyword">const</span> quint32 len) = 0;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;            <span class="keyword">virtual</span> QByteArray finalize(<span class="keywordtype">void</span>) = 0;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keyword">private</span>:</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;            <a class="code" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a>(<a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a>);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        };</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        MUTILS_API <a class="code" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a> *<a class="code" href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e">create</a>(<span class="keyword">const</span> quint16 &amp;hashId, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> key = NULL);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    }</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="ttc" id="class_m_utils_1_1_hash_1_1_hash_html_a16bef08766de745913b3fd7c338bf5aa"><div class="ttname"><a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa">MUtils::Hash::Hash::update</a></div><div class="ttdeci">bool update(const QByteArray &amp;data)</div><div class="ttdoc">Process the next chunk of input data. </div><div class="ttdef"><b>Definition:</b> Hash.h:84</div></div>
+<div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
+<div class="ttc" id="class_m_utils_1_1_hash_1_1_hash_html_a5c36bd2ea671928f9f5bd897dcfbef15"><div class="ttname"><a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">MUtils::Hash::Hash::update</a></div><div class="ttdeci">bool update(const quint8 *const data, const quint32 len)</div><div class="ttdoc">Process the next chunk of input data. </div><div class="ttdef"><b>Definition:</b> Hash.h:73</div></div>
+<div class="ttc" id="_hash_8h_html_aa9e34ac422f4e52061cb8908f922fe17"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17">MUtils::Hash::HASH_BLAKE2_512</a></div><div class="ttdeci">static const quint16 HASH_BLAKE2_512</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:42</div></div>
+<div class="ttc" id="_hash_8h_html_af80dfb1569816fab7ab5ed32e6386458"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458">MUtils::Hash::HASH_KECCAK_384</a></div><div class="ttdeci">static const quint16 HASH_KECCAK_384</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:45</div></div>
+<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
+<div class="ttc" id="_global_8h_html_a8e7b4857b78f9749233e5abc96534ca8"><div class="ttname"><a href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a></div><div class="ttdeci">#define MUTILS_NO_COPY(CLASS)</div><div class="ttdoc">Disables copy constructor and assignment operator in the specified class. This macro should be used i...</div><div class="ttdef"><b>Definition:</b> Global.h:362</div></div>
+<div class="ttc" id="_hash_8h_html_a330b73d6927d6cd95892712f9396f40e"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e">MUtils::Hash::create</a></div><div class="ttdeci">MUTILS_API Hash * create(const quint16 &amp;hashId, const char *const key=NULL)</div><div class="ttdoc">Create instance of a hash function. </div></div>
+<div class="ttc" id="class_m_utils_1_1_hash_1_1_hash_html"><div class="ttname"><a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></div><div class="ttdoc">This abstract class specifies the generic interface for all support hash algorithms. </div><div class="ttdef"><b>Definition:</b> Hash.h:57</div></div>
+<div class="ttc" id="_hash_8h_html_ae38cda07e425eb7c745492215a48ae08"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08">MUtils::Hash::HASH_KECCAK_256</a></div><div class="ttdeci">static const quint16 HASH_KECCAK_256</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:44</div></div>
+<div class="ttc" id="_hash_8h_html_a3cfb72f121ca5c03dd8452c322549d11"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11">MUtils::Hash::HASH_KECCAK_224</a></div><div class="ttdeci">static const quint16 HASH_KECCAK_224</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:43</div></div>
+<div class="ttc" id="class_m_utils_1_1_hash_1_1_hash_html_a1d70f2b647935868a178920196ec0ac1"><div class="ttname"><a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">MUtils::Hash::Hash::digest</a></div><div class="ttdeci">QByteArray digest(const bool bAsHex=true)</div><div class="ttdoc">Retrieve the hash value. </div><div class="ttdef"><b>Definition:</b> Hash.h:106</div></div>
+<div class="ttc" id="_hash_8h_html_a89ad922f2cada9a15893852d43134119"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119">MUtils::Hash::HASH_KECCAK_512</a></div><div class="ttdeci">static const quint16 HASH_KECCAK_512</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:46</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
diff --git a/docs/d2/ded/class_m_utils_1_1_hash_1_1_hash-members.html b/docs/d2/ded/class_m_utils_1_1_hash_1_1_hash-members.html
new file mode 100644 (file)
index 0000000..dba278b
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>MuldeR&#39;s Utilities for Qt: Member List</title>
+<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../jquery.js"></script>
+<script type="text/javascript" src="../../dynsections.js"></script>
+<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../search/searchdata.js"></script>
+<script type="text/javascript" src="../../search/search.js"></script>
+<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">MuldeR&#39;s Utilities for Qt
+   </div>
+   <div id="projectbrief">MUtilities</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+</script>
+<script type="text/javascript" src="../../menudata.js"></script>
+<script type="text/javascript" src="../../menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('../../',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">MUtils::Hash::Hash Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">digest</a>(const bool bAsHex=true)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>finalize</b>(void)=0 (defined in <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a>)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Hash</b>(const char *key=NULL) (defined in <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a>)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>process</b>(const quint8 *const data, const quint32 len)=0 (defined in <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a>)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">update</a>(const quint8 *const data, const quint32 len)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa">update</a>(const QByteArray &amp;data)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f">update</a>(QFile &amp;file)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Hash</b>(void) (defined in <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a>)</td><td class="entry"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
diff --git a/docs/d3/d35/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct-members.html b/docs/d3/d35/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct-members.html
deleted file mode 100644 (file)
index 15e97e3..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: Member List</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><b>Internal</b></li><li class="navelem"><b>KeccakImpl</b></li><li class="navelem"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">spongeStateStruct</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>bitsAvailableForSqueezing</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>bitsInQueue</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>capacity</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dataQueue</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fixedOutputLength</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rate</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>squeezing</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>state</b> (defined in <a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a>)</td><td class="entry"><a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
index 03c04a3..a24e410 100644 (file)
@@ -114,6 +114,9 @@ Macros</h2></td></tr>
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a">MUTILS_BOOL2STR</a>(X)&#160;&#160;&#160;((X) ? &quot;1&quot; : &quot;0&quot;)</td></tr>
 <tr class="memdesc:a177ecbfe7701c2ac04bb8bdeb208773a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a boolean expression into a string. A <em>true</em> boolean expression is converted to the string <code>"1"</code>; a <em>false</em> boolean expression is converted to the string <code>"0"</code>. <br /></td></tr>
 <tr class="separator:a177ecbfe7701c2ac04bb8bdeb208773a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8e7b4857b78f9749233e5abc96534ca8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a>(CLASS)</td></tr>
+<tr class="memdesc:a8e7b4857b78f9749233e5abc96534ca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables copy constructor and assignment operator in the specified class. This macro should be used in the "private" section of the class' declaration.  <a href="#a8e7b4857b78f9749233e5abc96534ca8">More...</a><br /></td></tr>
+<tr class="separator:a8e7b4857b78f9749233e5abc96534ca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
@@ -180,7 +183,28 @@ Functions</h2></td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>This file contains miscellaneous functions that are generally useful for Qt-based applications. </p>
-</div></div><!-- contents -->
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a8e7b4857b78f9749233e5abc96534ca8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8e7b4857b78f9749233e5abc96534ca8">&sect;&nbsp;</a></span>MUTILS_NO_COPY</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define MUTILS_NO_COPY</td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname">CLASS</td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line">CLASS(<span class="keyword">const</span> CLASS &amp;) { <span class="keywordflow">throw</span> <span class="stringliteral">&quot;Copy constructor is disabled!&quot;</span>; } \</div><div class="line">    CLASS &amp;operator=(<span class="keyword">const</span> CLASS &amp;) { <span class="keywordflow">throw</span> <span class="stringliteral">&quot;Assignment operator is disabled!&quot;</span>; }</div></div><!-- fragment -->
+<p>Disables copy constructor and assignment operator in the specified class. This macro should be used in the "private" section of the class' declaration. </p>
+
+</div>
+</div>
+</div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
index 33a91a6..bd5adba 100644 (file)
@@ -67,7 +67,7 @@ $(function() {
 <div class="title">Global.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="../../d5/d3b/_global_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#   ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#       define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#   else</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#       ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#           define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#       else</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#           define MUTILS_API </span><span class="comment">/*static lib*/</span><span class="preprocessor"></span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#       endif</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#   define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#define MUTILS_MAKE_STRING(X) MUTILS_MAKE_STRING_HELPER(X)</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ &quot;(&quot; MUTILS_MAKE_STRING(__LINE__) &quot;) : warning: &quot; TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#   if defined(NDEBUG) || defined(QT_NO_DEBUG) || (!defined(QT_DEBUG))</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#   if (!defined(NDEBUG)) || (!defined(QT_NO_DEBUG)) || defined(QT_DEBUG)</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; (!defined(__INTELLISENSE__)) &amp;&amp; (!defined(_M_X64)) &amp;&amp; defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">    #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">        #error We should not enabled SSE or SSE2 in release builds!</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    MUTILS_API <span class="keyword">const</span> QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a3f198156e8be91f3e74dd9ed69ffaa34">temp_folder</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &amp;process, <span class="keyword">const</span> QString &amp;wokringDir, <span class="keyword">const</span> <span class="keywordtype">bool</span> bReplaceTempDir = <span class="keyword">true</span>, <span class="keyword">const</span> QStringList *<span class="keyword">const</span> extraPaths = NULL);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    MUTILS_API quint32 <a class="code" href="../../d3/da6/namespace_m_utils.html#a1c9832c1d645a2c90e9bd52d57d843b3">next_rand_u32</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    </div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    MUTILS_API quint64 <a class="code" href="../../d3/da6/namespace_m_utils.html#ad7edd4aece64faf3aa16c9509243608c">next_rand_u64</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    </div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ac583617546d5ae100ce7436546d9662c">next_rand_str</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> placeholder = <span class="keyword">false</span>);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;baseName, <span class="keyword">const</span> QString &amp;extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> fancy = <span class="keyword">false</span>);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#aea4a212153b09b24b04f30ef5159f29b">parity</a>(quint32 value);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a5a14e75627eebd09efc37898d74c5ac6">remove_file</a>(<span class="keyword">const</span> QString &amp;fileName);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d451ddc82668d1298f2922f62474b5d">remove_directory</a>(<span class="keyword">const</span> QString &amp;folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;recursive);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &amp;str);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &amp;str);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &amp;list, <span class="keyword">const</span> <span class="keywordtype">bool</span> bIgnoreCase);</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a>(<span class="keyword">const</span> QString &amp;name);</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a>(<span class="keyword">const</span> QString &amp;path);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &amp;regexp, quint32 &amp;value);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &amp;regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &amp;count);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    MUTILS_API QStringList <a class="code" href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">available_codepages</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="comment">//Internal</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    {</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        MUTILS_API <span class="keywordtype">int</span> selfTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> buildKey, <span class="keyword">const</span> <span class="keywordtype">bool</span> debug);</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">&quot;@&quot;</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    }</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;}</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d">  334</a></span>&#160;<span class="preprocessor">#define MUTILS_DELETE(PTR) do { if((PTR)) { delete (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8">  338</a></span>&#160;<span class="preprocessor">#define MUTILS_DELETE_ARRAY(PTR) do { if((PTR)) { delete [] (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25">  342</a></span>&#160;<span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&amp;(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e">  346</a></span>&#160;<span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast&lt;const wchar_t*&gt;((STR).utf16()))</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f">  350</a></span>&#160;<span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0">  354</a></span>&#160;<span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast&lt;const unsigned short*&gt;((STR))))</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a">  358</a></span>&#160;<span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? &quot;1&quot; : &quot;0&quot;)</span></div><div class="ttc" id="namespace_m_utils_html_a2275e64c3c74dea855c39b66be67f705"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">MUtils::available_codepages</a></div><div class="ttdeci">MUTILS_API QStringList available_codepages(const bool &amp;noAliases=true)</div><div class="ttdoc">Retrieve a list of all available codepages. </div></div>
+<a href="../../d5/d3b/_global_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#   ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#       define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#   else</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#       ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#           define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#       else</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#           define MUTILS_API </span><span class="comment">/*static lib*/</span><span class="preprocessor"></span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#       endif</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#   define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#define MUTILS_MAKE_STRING(X) MUTILS_MAKE_STRING_HELPER(X)</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ &quot;(&quot; MUTILS_MAKE_STRING(__LINE__) &quot;) : warning: &quot; TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#   if defined(NDEBUG) || defined(QT_NO_DEBUG) || (!defined(QT_DEBUG))</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#   if (!defined(NDEBUG)) || (!defined(QT_NO_DEBUG)) || defined(QT_DEBUG)</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; (!defined(__INTELLISENSE__)) &amp;&amp; (!defined(_M_X64)) &amp;&amp; defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">    #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">        #error We should not enabled SSE or SSE2 in release builds!</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    MUTILS_API <span class="keyword">const</span> QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a3f198156e8be91f3e74dd9ed69ffaa34">temp_folder</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &amp;process, <span class="keyword">const</span> QString &amp;wokringDir, <span class="keyword">const</span> <span class="keywordtype">bool</span> bReplaceTempDir = <span class="keyword">true</span>, <span class="keyword">const</span> QStringList *<span class="keyword">const</span> extraPaths = NULL);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    MUTILS_API quint32 <a class="code" href="../../d3/da6/namespace_m_utils.html#a1c9832c1d645a2c90e9bd52d57d843b3">next_rand_u32</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    </div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    MUTILS_API quint64 <a class="code" href="../../d3/da6/namespace_m_utils.html#ad7edd4aece64faf3aa16c9509243608c">next_rand_u64</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    </div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ac583617546d5ae100ce7436546d9662c">next_rand_str</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> placeholder = <span class="keyword">false</span>);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;baseName, <span class="keyword">const</span> QString &amp;extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> fancy = <span class="keyword">false</span>);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#aea4a212153b09b24b04f30ef5159f29b">parity</a>(quint32 value);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a5a14e75627eebd09efc37898d74c5ac6">remove_file</a>(<span class="keyword">const</span> QString &amp;fileName);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d451ddc82668d1298f2922f62474b5d">remove_directory</a>(<span class="keyword">const</span> QString &amp;folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;recursive);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &amp;str);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &amp;str);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &amp;list, <span class="keyword">const</span> <span class="keywordtype">bool</span> bIgnoreCase);</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a>(<span class="keyword">const</span> QString &amp;name);</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a>(<span class="keyword">const</span> QString &amp;path);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &amp;regexp, quint32 &amp;value);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &amp;regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &amp;count);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    MUTILS_API QStringList <a class="code" href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">available_codepages</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="comment">//Internal</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    {</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        MUTILS_API <span class="keywordtype">int</span> selfTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> buildKey, <span class="keyword">const</span> <span class="keywordtype">bool</span> debug);</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">&quot;@&quot;</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    }</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;}</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d">  334</a></span>&#160;<span class="preprocessor">#define MUTILS_DELETE(PTR) do { if((PTR)) { delete (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8">  338</a></span>&#160;<span class="preprocessor">#define MUTILS_DELETE_ARRAY(PTR) do { if((PTR)) { delete [] (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25">  342</a></span>&#160;<span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&amp;(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e">  346</a></span>&#160;<span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast&lt;const wchar_t*&gt;((STR).utf16()))</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f">  350</a></span>&#160;<span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0">  354</a></span>&#160;<span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast&lt;const unsigned short*&gt;((STR))))</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a">  358</a></span>&#160;<span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? &quot;1&quot; : &quot;0&quot;)</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">  362</a></span>&#160;<span class="preprocessor">#define MUTILS_NO_COPY(CLASS) \</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="preprocessor">    CLASS(const CLASS &amp;) { throw &quot;Copy constructor is disabled!&quot;; } \</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="preprocessor">    CLASS &amp;operator=(const CLASS &amp;) { throw &quot;Assignment operator is disabled!&quot;; }</span></div><div class="ttc" id="namespace_m_utils_html_a2275e64c3c74dea855c39b66be67f705"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">MUtils::available_codepages</a></div><div class="ttdeci">MUTILS_API QStringList available_codepages(const bool &amp;noAliases=true)</div><div class="ttdoc">Retrieve a list of all available codepages. </div></div>
 <div class="ttc" id="namespace_m_utils_html_ac583617546d5ae100ce7436546d9662c"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#ac583617546d5ae100ce7436546d9662c">MUtils::next_rand_str</a></div><div class="ttdeci">MUTILS_API QString next_rand_str(const bool &amp;bLong=false)</div><div class="ttdoc">Generates a random string. </div></div>
 <div class="ttc" id="namespace_m_utils_html_a5a14e75627eebd09efc37898d74c5ac6"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a5a14e75627eebd09efc37898d74c5ac6">MUtils::remove_file</a></div><div class="ttdeci">MUTILS_API bool remove_file(const QString &amp;fileName)</div><div class="ttdoc">Deletes the specified file. </div></div>
 <div class="ttc" id="namespace_m_utils_html_a4d4c545ea06892f6487f15a48808564f"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">MUtils::natural_string_sort</a></div><div class="ttdeci">MUTILS_API void natural_string_sort(QStringList &amp;list, const bool bIgnoreCase)</div><div class="ttdoc">Sort a list of strings using &quot;natural ordering&quot; algorithm. </div></div>
diff --git a/docs/da/db0/class_m_utils_1_1_hash_1_1_hash.html b/docs/da/db0/class_m_utils_1_1_hash_1_1_hash.html
new file mode 100644 (file)
index 0000000..50e03fc
--- /dev/null
@@ -0,0 +1,271 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>MuldeR&#39;s Utilities for Qt: MUtils::Hash::Hash Class Reference</title>
+<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../jquery.js"></script>
+<script type="text/javascript" src="../../dynsections.js"></script>
+<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../search/searchdata.js"></script>
+<script type="text/javascript" src="../../search/search.js"></script>
+<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">MuldeR&#39;s Utilities for Qt
+   </div>
+   <div id="projectbrief">MUtilities</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+</script>
+<script type="text/javascript" src="../../menudata.js"></script>
+<script type="text/javascript" src="../../menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('../../',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">Hash</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="../../d2/ded/class_m_utils_1_1_hash_1_1_hash-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">MUtils::Hash::Hash Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This abstract class specifies the generic interface for all support hash algorithms.  
+ <a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="../../d2/dad/_hash_8h_source.html">Hash.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a5c36bd2ea671928f9f5bd897dcfbef15"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">update</a> (const quint8 *const data, const quint32 len)</td></tr>
+<tr class="memdesc:a5c36bd2ea671928f9f5bd897dcfbef15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process the next chunk of input data.  <a href="#a5c36bd2ea671928f9f5bd897dcfbef15">More...</a><br /></td></tr>
+<tr class="separator:a5c36bd2ea671928f9f5bd897dcfbef15"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16bef08766de745913b3fd7c338bf5aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa">update</a> (const QByteArray &amp;data)</td></tr>
+<tr class="memdesc:a16bef08766de745913b3fd7c338bf5aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process the next chunk of input data.  <a href="#a16bef08766de745913b3fd7c338bf5aa">More...</a><br /></td></tr>
+<tr class="separator:a16bef08766de745913b3fd7c338bf5aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace90c97585350dd246b6c655a3de571f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f">update</a> (QFile &amp;file)</td></tr>
+<tr class="memdesc:ace90c97585350dd246b6c655a3de571f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process the next chunk of input data.  <a href="#ace90c97585350dd246b6c655a3de571f">More...</a><br /></td></tr>
+<tr class="separator:ace90c97585350dd246b6c655a3de571f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d70f2b647935868a178920196ec0ac1"><td class="memItemLeft" align="right" valign="top">QByteArray&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">digest</a> (const bool bAsHex=true)</td></tr>
+<tr class="memdesc:a1d70f2b647935868a178920196ec0ac1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the hash value.  <a href="#a1d70f2b647935868a178920196ec0ac1">More...</a><br /></td></tr>
+<tr class="separator:a1d70f2b647935868a178920196ec0ac1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:aab066c13a4986e48bc6b8468a76a55a6"><td class="memItemLeft" align="right" valign="top"><a id="aab066c13a4986e48bc6b8468a76a55a6"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>Hash</b> (const char *key=NULL)</td></tr>
+<tr class="separator:aab066c13a4986e48bc6b8468a76a55a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a498fa946e1cc599f85f745337f2263b9"><td class="memItemLeft" align="right" valign="top"><a id="a498fa946e1cc599f85f745337f2263b9"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>process</b> (const quint8 *const data, const quint32 len)=0</td></tr>
+<tr class="separator:a498fa946e1cc599f85f745337f2263b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae2a22f932e25961380e796e245fddf89"><td class="memItemLeft" align="right" valign="top"><a id="ae2a22f932e25961380e796e245fddf89"></a>
+virtual QByteArray&#160;</td><td class="memItemRight" valign="bottom"><b>finalize</b> (void)=0</td></tr>
+<tr class="separator:ae2a22f932e25961380e796e245fddf89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This abstract class specifies the generic interface for all support hash algorithms. </p>
+<p>In order to compute a hash value (digest) call the the <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15" title="Process the next chunk of input data. ">Hash::update()</a> function repeatedly until all input data (i.e. the complete "message") has been processed. Then call the <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1" title="Retrieve the hash value. ">Hash::digest()</a> function to retrieve the final hash value.</p>
+<p>All overloads of the <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15" title="Process the next chunk of input data. ">Hash::update()</a> function may be called in an interleaved fashion as needed.</p>
+<p>This class is <b>not</b> thread-safe, i.e. do <b>not</b> call the <em>same</em> <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> instance from difference threads, unless serialization is ensured (e.g. by means of a Mutex). It is safe, however, to call different <em>different</em> <a class="el" href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html" title="This abstract class specifies the generic interface for all support hash algorithms. ">Hash</a> instances from difference threads concurrently. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a1d70f2b647935868a178920196ec0ac1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1d70f2b647935868a178920196ec0ac1">&sect;&nbsp;</a></span>digest()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QByteArray MUtils::Hash::Hash::digest </td>
+          <td>(</td>
+          <td class="paramtype">const bool&#160;</td>
+          <td class="paramname"><em>bAsHex</em> = <code>true</code></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Retrieve the hash value. </p>
+<p>This function is used to retrieve the final hash value (digest), after all input data has been processed successfully.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">bAsHex</td><td>If set to <code>true</code>, the function returns the hash value as a Hexadecimal-encoded ASCII string; if set to <code>false</code>, the function returns the hash value as "raw" bytes.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The function returns a QByteArray object holding the final hash value (digest). The format depends on the <code>bAsHex</code> parameter. </dd></dl>
+
+</div>
+</div>
+<a id="a5c36bd2ea671928f9f5bd897dcfbef15"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c36bd2ea671928f9f5bd897dcfbef15">&sect;&nbsp;</a></span>update() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool MUtils::Hash::Hash::update </td>
+          <td>(</td>
+          <td class="paramtype">const quint8 *const&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const quint32&#160;</td>
+          <td class="paramname"><em>len</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Process the next chunk of input data. </p>
+<p>Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">data</td><td>A read-only pointer to the memory buffer holding the input data to be processed.</td></tr>
+    <tr><td class="paramname">len</td><td>The length of the input data, in bytes. The <code>data</code> parameter must be pointing to a memory buffer that is at least <code>len</code> bytes in size.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The function returns <code>true</code>, if the input data was processed successfully; otherwise it returns <code>false</code>. </dd></dl>
+
+</div>
+</div>
+<a id="a16bef08766de745913b3fd7c338bf5aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a16bef08766de745913b3fd7c338bf5aa">&sect;&nbsp;</a></span>update() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool MUtils::Hash::Hash::update </td>
+          <td>(</td>
+          <td class="paramtype">const QByteArray &amp;&#160;</td>
+          <td class="paramname"><em>data</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Process the next chunk of input data. </p>
+<p>Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">data</td><td>A read-only reference to a QByteArray object holding the input data to be processed. All bytes in the QByteArray object will be processed.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The function returns <code>true</code>, if the input data was processed successfully; otherwise it returns <code>false</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ace90c97585350dd246b6c655a3de571f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ace90c97585350dd246b6c655a3de571f">&sect;&nbsp;</a></span>update() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool MUtils::Hash::Hash::update </td>
+          <td>(</td>
+          <td class="paramtype">QFile &amp;&#160;</td>
+          <td class="paramname"><em>file</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Process the next chunk of input data. </p>
+<p>Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">data</td><td>A reference to a QFile object. The QFile object must be open and readable. All data from the current file position to the end of the file will be processed.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The function returns <code>true</code>, if all data in the file was processed successfully; otherwise (e.g. in case of file read errors) it returns <code>false</code>. </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/MUtils/<a class="el" href="../../d2/dad/_hash_8h_source.html">Hash.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
diff --git a/docs/dc/df9/class_m_utils_1_1_hash_1_1_blake2-members.html b/docs/dc/df9/class_m_utils_1_1_hash_1_1_blake2-members.html
deleted file mode 100644 (file)
index d12d715..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: Member List</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">Blake2</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">MUtils::Hash::Blake2 Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Blake2</b>(const char *key=NULL) (defined in <a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a>)</td><td class="entry"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>finalize</b>(const bool bAsHex=true) (defined in <a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a>)</td><td class="entry"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>update</b>(const QByteArray &amp;data) (defined in <a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a>)</td><td class="entry"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>update</b>(QFile &amp;file) (defined in <a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a>)</td><td class="entry"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Blake2</b>(void) (defined in <a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a>)</td><td class="entry"><a class="el" href="../../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html">MUtils::Hash::Blake2</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
diff --git a/docs/dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html b/docs/dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html
deleted file mode 100644 (file)
index a582eec..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: MUtils::Hash::Keccak Class Reference</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../d3/da6/namespace_m_utils.html">MUtils</a></li><li class="navelem"><b>Hash</b></li><li class="navelem"><a class="el" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">Keccak</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> &#124;
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pro-attribs">Protected Attributes</a> &#124;
-<a href="../../d1/d9c/class_m_utils_1_1_hash_1_1_keccak-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">MUtils::Hash::Keccak Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a607c10179fa07e57644aaa399b349de7"><td class="memItemLeft" align="right" valign="top"><a id="a607c10179fa07e57644aaa399b349de7"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>HashBits</b> { <b>hb224</b>, 
-<b>hb256</b>, 
-<b>hb384</b>, 
-<b>hb512</b>
- }</td></tr>
-<tr class="separator:a607c10179fa07e57644aaa399b349de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a15a54241d0e960c3f71a93edc98098d5"><td class="memItemLeft" align="right" valign="top"><a id="a15a54241d0e960c3f71a93edc98098d5"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>init</b> (HashBits hashBits=hb256)</td></tr>
-<tr class="separator:a15a54241d0e960c3f71a93edc98098d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a304c3e92bc2c178f58f7e7bf023ed637"><td class="memItemLeft" align="right" valign="top"><a id="a304c3e92bc2c178f58f7e7bf023ed637"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>addData</b> (const QByteArray &amp;data)</td></tr>
-<tr class="separator:a304c3e92bc2c178f58f7e7bf023ed637"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad03655614f37c992577642e74d94d4a"><td class="memItemLeft" align="right" valign="top"><a id="aad03655614f37c992577642e74d94d4a"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>addData</b> (const char *data, int size)</td></tr>
-<tr class="separator:aad03655614f37c992577642e74d94d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a46082e437bb6cb12d6884015157df2d1"><td class="memItemLeft" align="right" valign="top"><a id="a46082e437bb6cb12d6884015157df2d1"></a>
-const QByteArray &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>finalize</b> ()</td></tr>
-<tr class="separator:a46082e437bb6cb12d6884015157df2d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:aa98ad42063a4f167ea71732461991ab1"><td class="memItemLeft" align="right" valign="top"><a id="aa98ad42063a4f167ea71732461991ab1"></a>
-static bool&#160;</td><td class="memItemRight" valign="bottom"><b>selfTest</b> (void)</td></tr>
-<tr class="separator:aa98ad42063a4f167ea71732461991ab1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a6a7fd17e1d9b49817d61cb42327201b6"><td class="memItemLeft" align="right" valign="top"><a id="a6a7fd17e1d9b49817d61cb42327201b6"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_initialized</b></td></tr>
-<tr class="separator:a6a7fd17e1d9b49817d61cb42327201b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9ee4af4b500708b58de03e467f7171b7"><td class="memItemLeft" align="right" valign="top"><a id="a9ee4af4b500708b58de03e467f7171b7"></a>
-<a class="el" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">Internal::KeccakImpl::hashState</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>m_state</b></td></tr>
-<tr class="separator:a9ee4af4b500708b58de03e467f7171b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad8b45df386609d125a1129ed97ad21db"><td class="memItemLeft" align="right" valign="top"><a id="ad8b45df386609d125a1129ed97ad21db"></a>
-QByteArray&#160;</td><td class="memItemRight" valign="bottom"><b>m_hashResult</b></td></tr>
-<tr class="separator:ad8b45df386609d125a1129ed97ad21db"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/MUtils/<a class="el" href="../../dd/dea/_hash___keccak_8h_source.html">Hash_Keccak.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
diff --git a/docs/dd/dea/_hash___keccak_8h_source.html b/docs/dd/dea/_hash___keccak_8h_source.html
deleted file mode 100644 (file)
index 4667373..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.12"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>MuldeR&#39;s Utilities for Qt: include/MUtils/Hash_Keccak.h Source File</title>
-<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../jquery.js"></script>
-<script type="text/javascript" src="../../dynsections.js"></script>
-<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="../../search/searchdata.js"></script>
-<script type="text/javascript" src="../../search/search.js"></script>
-<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">MuldeR&#39;s Utilities for Qt
-   </div>
-   <div id="projectbrief">MUtilities</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.12 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-</script>
-<script type="text/javascript" src="../../menudata.js"></script>
-<script type="text/javascript" src="../../menu.js"></script>
-<script type="text/javascript">
-$(function() {
-  initMenu('../../',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_b076b53667bc06ebb413a190e197fc7b.html">MUtils</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Hash_Keccak.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">/***************************************************************************</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">**                                                                        **</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">**  QKeccakHash, an API wrapper bringing the optimized implementation of  **</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">**  Keccak (http://keccak.noekeon.org/) to Qt.                            **</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">**  Copyright (C) 2013 Emanuel Eichhammer                                 **</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">**                                                                        **</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">**  This program is free software: you can redistribute it and/or modify  **</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">**  it under the terms of the GNU General Public License as published by  **</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">**  the Free Software Foundation, either version 3 of the License, or     **</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">**  (at your option) any later version.                                   **</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">**                                                                        **</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">**  This program is distributed in the hope that it will be useful,       **</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">**  but WITHOUT ANY WARRANTY; without even the implied warranty of        **</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         **</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">**  GNU General Public License for more details.                          **</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">**                                                                        **</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">**  You should have received a copy of the GNU General Public License     **</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">**  along with this program.  If not, see http://www.gnu.org/licenses/.   **</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">**                                                                        **</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">****************************************************************************</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">**           Author: Emanuel Eichhammer                                   **</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">**  Website/Contact: http://www.WorksLikeClockwork.com/                   **</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">**             Date: 12.01.12                                             **</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">****************************************************************************/</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#include &lt;QByteArray&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#include &lt;QFile&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keyword">namespace </span>Hash</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    {</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;            <span class="comment">// Section from KeccakSponge.h</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;            <span class="comment">// needed here, since hashState needs to be explicitly 32-byte aligned and therefore can&#39;t be</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;            <span class="comment">// transformed into a class (in order to forward declarate) like in the other hash wrappers.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;            <span class="keyword">namespace </span>KeccakImpl</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;            {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">                #define KeccakPermutationSize 1600</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">                #define KeccakPermutationSizeInBytes (KeccakPermutationSize/8)</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">                #define KeccakMaximumRate 1536</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">                #define KeccakMaximumRateInBytes (KeccakMaximumRate/8)</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">                #if defined(__GNUC__)</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">                #define ALIGN __attribute__ ((aligned(32)))</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">                #elif defined(_MSC_VER)</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">                #define ALIGN __declspec(align(32))</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">                #else</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">                #define ALIGN</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">                #endif</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">   81</a></span>&#160;                ALIGN <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">spongeStateStruct</a></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;                {</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;                    ALIGN <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> state[KeccakPermutationSizeInBytes];</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;                    ALIGN <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> dataQueue[KeccakMaximumRateInBytes];</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rate;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> capacity;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bitsInQueue;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> fixedOutputLength;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                    <span class="keywordtype">int</span> squeezing;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bitsAvailableForSqueezing;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;                }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                <a class="code" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">spongeState</a>;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                <span class="keyword">typedef</span> <a class="code" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">spongeState</a> <a class="code" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">hashState</a>;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;            }</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            <span class="comment">// End Section from KeccakSponge.h</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">   98</a></span>&#160;        <span class="keyword">class </span>MUTILS_API <a class="code" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">Keccak</a></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="keyword">public</span>:</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            <span class="keyword">enum</span> HashBits {hb224, hb256, hb384, hb512};</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        </div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;            <a class="code" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">Keccak</a>();</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;            ~<a class="code" href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">Keccak</a>();</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        </div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;            <span class="keyword">static</span> <span class="keywordtype">bool</span> selfTest(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;            <span class="keywordtype">bool</span> init(HashBits hashBits=hb256);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;            <span class="keywordtype">bool</span> addData(<span class="keyword">const</span> QByteArray &amp;data);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;            <span class="keywordtype">bool</span> addData(<span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> size);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;            <span class="keyword">const</span> QByteArray &amp;finalize();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keyword">protected</span>:</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;            <span class="keywordtype">bool</span> m_initialized;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;            <a class="code" href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">Internal::KeccakImpl::hashState</a> *m_state;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;            QByteArray m_hashResult;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        };</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    }</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;};</div><div class="ttc" id="class_m_utils_1_1_hash_1_1_keccak_html"><div class="ttname"><a href="../../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html">MUtils::Hash::Keccak</a></div><div class="ttdef"><b>Definition:</b> Hash_Keccak.h:98</div></div>
-<div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
-<div class="ttc" id="struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct_html"><div class="ttname"><a href="../../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></div><div class="ttdef"><b>Definition:</b> Hash_Keccak.h:81</div></div>
-<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
index 41da400..93eb456 100644 (file)
@@ -76,6 +76,9 @@ Files</h2></td></tr>
 <tr class="memitem:d5/d3b/_global_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="d5/d3b/_global_8h.html">Global.h</a> <a href="d5/d3b/_global_8h_source.html">[code]</a></td></tr>
 <tr class="memdesc:d5/d3b/_global_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file contains miscellaneous functions that are generally useful for Qt-based applications. <br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:d2/dad/_hash_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="d2/dad/_hash_8h.html">Hash.h</a> <a href="d2/dad/_hash_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:d2/dad/_hash_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file contains function for cryptographic hash computation. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 <!-- start footer part -->
index 554fdaf..97c20a6 100644 (file)
@@ -72,19 +72,18 @@ $(function() {
 <tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="df/d98/_exception_8h_source.html"><span class="icondoc"></span></a><b>Exception.h</b></td><td class="desc"></td></tr>
 <tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d5/d3b/_global_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d5/d3b/_global_8h.html" target="_self">Global.h</a></td><td class="desc">This file contains miscellaneous functions that are generally useful for Qt-based applications </td></tr>
 <tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="da/d5d/_g_u_i_8h_source.html"><span class="icondoc"></span></a><b>GUI.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d1/d37/_hash___blake2_8h_source.html"><span class="icondoc"></span></a><b>Hash_Blake2.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="dd/dea/_hash___keccak_8h_source.html"><span class="icondoc"></span></a><b>Hash_Keccak.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d1/d93/_i_p_c_channel_8h_source.html"><span class="icondoc"></span></a><b>IPCChannel.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d4/d85/_job_object_8h_source.html"><span class="icondoc"></span></a><b>JobObject.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d3/dc1/_o_s_support_8h_source.html"><span class="icondoc"></span></a><b>OSSupport.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d3/d5c/_registry_8h_source.html"><span class="icondoc"></span></a><b>Registry.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_11_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d5/db0/_sound_8h_source.html"><span class="icondoc"></span></a><b>Sound.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d2/d13/_startup_8h_source.html"><span class="icondoc"></span></a><b>Startup.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_13_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d1/d0a/_taskbar7_8h_source.html"><span class="icondoc"></span></a><b>Taskbar7.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_14_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d6/ddd/_terminal_8h_source.html"><span class="icondoc"></span></a><b>Terminal.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_15_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d7/d73/_translation_8h_source.html"><span class="icondoc"></span></a><b>Translation.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_16_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d6/d83/_update_checker_8h_source.html"><span class="icondoc"></span></a><b>UpdateChecker.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_17_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d0/dd7/_version_8h_source.html"><span class="icondoc"></span></a><b>Version.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d2/dad/_hash_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d2/dad/_hash_8h.html" target="_self">Hash.h</a></td><td class="desc">This file contains function for cryptographic hash computation </td></tr>
+<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d1/d93/_i_p_c_channel_8h_source.html"><span class="icondoc"></span></a><b>IPCChannel.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d4/d85/_job_object_8h_source.html"><span class="icondoc"></span></a><b>JobObject.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d3/dc1/_o_s_support_8h_source.html"><span class="icondoc"></span></a><b>OSSupport.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d3/d5c/_registry_8h_source.html"><span class="icondoc"></span></a><b>Registry.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d5/db0/_sound_8h_source.html"><span class="icondoc"></span></a><b>Sound.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_11_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d2/d13/_startup_8h_source.html"><span class="icondoc"></span></a><b>Startup.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d1/d0a/_taskbar7_8h_source.html"><span class="icondoc"></span></a><b>Taskbar7.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_13_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d6/ddd/_terminal_8h_source.html"><span class="icondoc"></span></a><b>Terminal.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_14_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d7/d73/_translation_8h_source.html"><span class="icondoc"></span></a><b>Translation.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_15_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d6/d83/_update_checker_8h_source.html"><span class="icondoc"></span></a><b>UpdateChecker.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_16_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="d0/dd7/_version_8h_source.html"><span class="icondoc"></span></a><b>Version.h</b></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
index 4b3e981..01730b7 100644 (file)
@@ -66,6 +66,9 @@ $(function() {
 <li>count
 : <a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7861529c47568141daa37810ebb499ea">MUtils::CPUFetaures::_cpu_info_t</a>
 </li>
+<li>digest()
+: <a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">MUtils::Hash::Hash</a>
+</li>
 <li>family
 : <a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#afefb6e7d6165b8de9bee1f17df826392">MUtils::CPUFetaures::_cpu_info_t</a>
 </li>
@@ -81,6 +84,9 @@ $(function() {
 <li>stepping
 : <a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4">MUtils::CPUFetaures::_cpu_info_t</a>
 </li>
+<li>update()
+: <a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">MUtils::Hash::Hash</a>
+</li>
 <li>vendor
 : <a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a932a85bcdb1be4b191d8ecd61b87ad26">MUtils::CPUFetaures::_cpu_info_t</a>
 </li>
diff --git a/docs/functions_func.html b/docs/functions_func.html
new file mode 100644 (file)
index 0000000..eabd5f0
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>MuldeR&#39;s Utilities for Qt: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">MuldeR&#39;s Utilities for Qt
+   </div>
+   <div id="projectbrief">MUtilities</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>digest()
+: <a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1">MUtils::Hash::Hash</a>
+</li>
+<li>update()
+: <a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15">MUtils::Hash::Hash</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
index 79292d5..e130e9b 100644 (file)
@@ -69,6 +69,9 @@ $(function() {
 <li>MUTILS_DELETE_ARRAY
 : <a class="el" href="d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8">Global.h</a>
 </li>
+<li>MUTILS_NO_COPY
+: <a class="el" href="d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">Global.h</a>
+</li>
 <li>MUTILS_QSTR
 : <a class="el" href="d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0">Global.h</a>
 </li>
index 1ac0620..c0c9271 100644 (file)
@@ -69,6 +69,9 @@ $(function() {
 <li>MUTILS_DELETE_ARRAY
 : <a class="el" href="d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8">Global.h</a>
 </li>
+<li>MUTILS_NO_COPY
+: <a class="el" href="d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">Global.h</a>
+</li>
 <li>MUTILS_QSTR
 : <a class="el" href="d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0">Global.h</a>
 </li>
index b7d4b7b..6d3bd03 100644 (file)
@@ -67,17 +67,15 @@ $(function() {
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html" target="_self">MUtils::CPUFetaures::_cpu_info_t</a></td><td class="desc">Struct to hold information about the CPU. See <code><a class="el" href="dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html" title="Struct to hold information about the CPU. See _cpu_info_t for details! ">_cpu_info_t</a></code> for details! </td></tr>
 <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d55/struct_m_utils_1_1_o_s_1_1_version_1_1__os__version__t.html" target="_self">MUtils::OS::Version::_os_version_t</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/d01/class_m_utils_1_1_hash_1_1_blake2.html" target="_self">MUtils::Hash::Blake2</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/db0/class_m_utils_1_1_hash_1_1_hash.html" target="_self">MUtils::Hash::Hash</a></td><td class="desc">This abstract class specifies the generic interface for all support hash algorithms </td></tr>
 <tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/dfe/class_m_utils_1_1_i_p_c_channel.html" target="_self">MUtils::IPCChannel</a></td><td class="desc"></td></tr>
 <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/dd3/class_m_utils_1_1_job_object.html" target="_self">MUtils::JobObject</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html" target="_self">MUtils::Hash::Keccak</a></td><td class="desc"></td></tr>
-<tr id="row_6_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>QThread</b></td><td class="desc"></td></tr>
-<tr id="row_6_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d8a/class_m_utils_1_1_update_checker.html" target="_self">MUtils::UpdateChecker</a></td><td class="desc"></td></tr>
-<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d35/class_m_utils_1_1_registry_1_1_registry_key.html" target="_self">MUtils::Registry::RegistryKey</a></td><td class="desc"></td></tr>
-<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html" target="_self">MUtils::Hash::Internal::KeccakImpl::spongeStateStruct</a></td><td class="desc"></td></tr>
-<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/d52/class_m_utils_1_1_taskbar7.html" target="_self">MUtils::Taskbar7</a></td><td class="desc"></td></tr>
-<tr id="row_10_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/d0d/class_m_utils_1_1_update_checker_info.html" target="_self">MUtils::UpdateCheckerInfo</a></td><td class="desc"></td></tr>
-<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/d32/class_m_utils_1_1_version.html" target="_self">MUtils::Version</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>QThread</b></td><td class="desc"></td></tr>
+<tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d8a/class_m_utils_1_1_update_checker.html" target="_self">MUtils::UpdateChecker</a></td><td class="desc"></td></tr>
+<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d35/class_m_utils_1_1_registry_1_1_registry_key.html" target="_self">MUtils::Registry::RegistryKey</a></td><td class="desc"></td></tr>
+<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/d52/class_m_utils_1_1_taskbar7.html" target="_self">MUtils::Taskbar7</a></td><td class="desc"></td></tr>
+<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/d0d/class_m_utils_1_1_update_checker_info.html" target="_self">MUtils::UpdateCheckerInfo</a></td><td class="desc"></td></tr>
+<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/d32/class_m_utils_1_1_version.html" target="_self">MUtils::Version</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
index d74a69c..039efdc 100644 (file)
@@ -69,6 +69,7 @@ $(function() {
 <p>The public API of the <em>MUtilities</em> library is defined in the following header files (select file for details):</p><ul>
 <li><b><a class="el" href="d5/d3b/_global_8h.html" title="This file contains miscellaneous functions that are generally useful for Qt-based applications...">Global.h</a></b> &ndash; miscellaneous useful functions</li>
 <li><b><a class="el" href="d2/db5/_c_p_u_features_8h.html" title="This file contains function for detecting information about the CPU. ">CPUFeatures.h</a></b> &ndash; functions for detection information about the CPU</li>
+<li><b><a class="el" href="d2/dad/_hash_8h.html" title="This file contains function for cryptographic hash computation. ">Hash.h</a></b> &ndash; functions for cryptographic hash computation</li>
 </ul>
 <h1>Example</h1>
 <p>Here is a minimal example on how to use the <em>MUtilities</em> library in your project: </p><pre class="fragment">//MUtils
index 0d48979..9af163f 100644 (file)
@@ -24,6 +24,7 @@ var menudata={children:[
 {text:'Class Hierarchy',url:'hierarchy.html'},
 {text:'Class Members',url:'functions.html',children:[
 {text:'All',url:'functions.html'},
+{text:'Functions',url:'functions_func.html'},
 {text:'Variables',url:'functions_vars.html'}]}]},
 {text:'Files',url:'files.html',children:[
 {text:'File List',url:'files.html'},
index d8e4d05..e8012eb 100644 (file)
@@ -1,5 +1,6 @@
 var searchData=
 [
+  ['update',['update',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15',1,'MUtils::Hash::Hash::update(const quint8 *const data, const quint32 len)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa',1,'MUtils::Hash::Hash::update(const QByteArray &amp;data)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f',1,'MUtils::Hash::Hash::update(QFile &amp;file)']]],
   ['updatechecker',['UpdateChecker',['../d0/d8a/class_m_utils_1_1_update_checker.html',1,'MUtils']]],
   ['updatecheckerinfo',['UpdateCheckerInfo',['../d1/d0d/class_m_utils_1_1_update_checker_info.html',1,'MUtils']]]
 ];
index 94fe2bd..a0ea208 100644 (file)
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['blake2',['Blake2',['../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html',1,'MUtils::Hash']]],
   ['brand',['brand',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a2986daa8c1b524a7f952eacb8d516696',1,'MUtils::CPUFetaures::_cpu_info_t']]]
 ];
index 738f52c..53083cf 100644 (file)
@@ -4,5 +4,6 @@ var searchData=
   ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]],
   ['count',['count',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7861529c47568141daa37810ebb499ea',1,'MUtils::CPUFetaures::_cpu_info_t']]],
   ['cpu_5finfo_5ft',['cpu_info_t',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a8b80fb34713dbc70a63ae5cd48b0630e',1,'MUtils::CPUFetaures']]],
-  ['cpufeatures_2eh',['CPUFeatures.h',['../d2/db5/_c_p_u_features_8h.html',1,'']]]
+  ['cpufeatures_2eh',['CPUFeatures.h',['../d2/db5/_c_p_u_features_8h.html',1,'']]],
+  ['create',['create',['../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e',1,'MUtils::Hash']]]
 ];
index 752aff4..f338b5b 100644 (file)
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]]
+  ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]],
+  ['digest',['digest',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1',1,'MUtils::Hash::Hash']]]
 ];
index 327b7eb..8abdf08 100644 (file)
@@ -1,6 +1,10 @@
 var searchData=
 [
-  ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]],
-  ['init_5fprocess',['init_process',['../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3',1,'MUtils']]],
-  ['ipcchannel',['IPCChannel',['../d5/dfe/class_m_utils_1_1_i_p_c_channel.html',1,'MUtils']]]
+  ['hash',['Hash',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html',1,'MUtils::Hash']]],
+  ['hash_2eh',['Hash.h',['../d2/dad/_hash_8h.html',1,'']]],
+  ['hash_5fblake2_5f512',['HASH_BLAKE2_512',['../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f224',['HASH_KECCAK_224',['../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f256',['HASH_KECCAK_256',['../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f384',['HASH_KECCAK_384',['../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f512',['HASH_KECCAK_512',['../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119',1,'MUtils::Hash']]]
 ];
index e409b67..327b7eb 100644 (file)
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['jobobject',['JobObject',['../dc/dd3/class_m_utils_1_1_job_object.html',1,'MUtils']]]
+  ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]],
+  ['init_5fprocess',['init_process',['../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3',1,'MUtils']]],
+  ['ipcchannel',['IPCChannel',['../d5/dfe/class_m_utils_1_1_i_p_c_channel.html',1,'MUtils']]]
 ];
index 78ae639..e409b67 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['keccak',['Keccak',['../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html',1,'MUtils::Hash']]]
+  ['jobobject',['JobObject',['../dc/dd3/class_m_utils_1_1_job_object.html',1,'MUtils']]]
 ];
index b91ff8b..0c14745 100644 (file)
@@ -8,6 +8,7 @@ var searchData=
   ['mutils_5fbool2str',['MUTILS_BOOL2STR',['../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a',1,'Global.h']]],
   ['mutils_5fdelete',['MUTILS_DELETE',['../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d',1,'Global.h']]],
   ['mutils_5fdelete_5farray',['MUTILS_DELETE_ARRAY',['../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8',1,'Global.h']]],
+  ['mutils_5fno_5fcopy',['MUTILS_NO_COPY',['../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8',1,'Global.h']]],
   ['mutils_5fqstr',['MUTILS_QSTR',['../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0',1,'Global.h']]],
   ['mutils_5futf8',['MUTILS_UTF8',['../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f',1,'Global.h']]],
   ['mutils_5fwchr',['MUTILS_WCHR',['../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e',1,'Global.h']]],
index 50e2db7..f67e5ea 100644 (file)
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['spongestatestruct',['spongeStateStruct',['../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html',1,'MUtils::Hash::Internal::KeccakImpl']]],
   ['stepping',['stepping',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4',1,'MUtils::CPUFetaures::_cpu_info_t']]]
 ];
index d9ccfea..2e615db 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['blake2',['Blake2',['../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html',1,'MUtils::Hash']]]
+  ['hash',['Hash',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html',1,'MUtils::Hash']]]
 ];
index 78ae639..7bb19da 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['keccak',['Keccak',['../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html',1,'MUtils::Hash']]]
+  ['registrykey',['RegistryKey',['../da/d35/class_m_utils_1_1_registry_1_1_registry_key.html',1,'MUtils::Registry']]]
 ];
index 7bb19da..3150cd1 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['registrykey',['RegistryKey',['../da/d35/class_m_utils_1_1_registry_1_1_registry_key.html',1,'MUtils::Registry']]]
+  ['taskbar7',['Taskbar7',['../d2/d52/class_m_utils_1_1_taskbar7.html',1,'MUtils']]]
 ];
index c5890a5..d8e4d05 100644 (file)
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['spongestatestruct',['spongeStateStruct',['../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html',1,'MUtils::Hash::Internal::KeccakImpl']]]
+  ['updatechecker',['UpdateChecker',['../d0/d8a/class_m_utils_1_1_update_checker.html',1,'MUtils']]],
+  ['updatecheckerinfo',['UpdateCheckerInfo',['../d1/d0d/class_m_utils_1_1_update_checker_info.html',1,'MUtils']]]
 ];
index 3150cd1..367cd93 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['taskbar7',['Taskbar7',['../d2/d52/class_m_utils_1_1_taskbar7.html',1,'MUtils']]]
+  ['version',['Version',['../d1/d32/class_m_utils_1_1_version.html',1,'MUtils']]]
 ];
diff --git a/docs/search/classes_8.js b/docs/search/classes_8.js
deleted file mode 100644 (file)
index d8e4d05..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['updatechecker',['UpdateChecker',['../d0/d8a/class_m_utils_1_1_update_checker.html',1,'MUtils']]],
-  ['updatecheckerinfo',['UpdateCheckerInfo',['../d1/d0d/class_m_utils_1_1_update_checker_info.html',1,'MUtils']]]
-];
diff --git a/docs/search/classes_9.js b/docs/search/classes_9.js
deleted file mode 100644 (file)
index 367cd93..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['version',['Version',['../d1/d32/class_m_utils_1_1_version.html',1,'MUtils']]]
-];
index 7eea83b..e724674 100644 (file)
@@ -3,6 +3,7 @@ var searchData=
   ['mutils_5fbool2str',['MUTILS_BOOL2STR',['../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a',1,'Global.h']]],
   ['mutils_5fdelete',['MUTILS_DELETE',['../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d',1,'Global.h']]],
   ['mutils_5fdelete_5farray',['MUTILS_DELETE_ARRAY',['../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8',1,'Global.h']]],
+  ['mutils_5fno_5fcopy',['MUTILS_NO_COPY',['../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8',1,'Global.h']]],
   ['mutils_5fqstr',['MUTILS_QSTR',['../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0',1,'Global.h']]],
   ['mutils_5futf8',['MUTILS_UTF8',['../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f',1,'Global.h']]],
   ['mutils_5fwchr',['MUTILS_WCHR',['../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e',1,'Global.h']]],
similarity index 94%
rename from docs/search/classes_8.html
rename to docs/search/files_2.html
index a57aeae..f5456fb 100644 (file)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta name="generator" content="Doxygen 1.8.12"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="classes_8.js"></script>
+<script type="text/javascript" src="files_2.js"></script>
 <script type="text/javascript" src="search.js"></script>
 </head>
 <body class="SRPage">
diff --git a/docs/search/files_2.js b/docs/search/files_2.js
new file mode 100644 (file)
index 0000000..a3d9c20
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['hash_2eh',['Hash.h',['../d2/dad/_hash_8h.html',1,'']]]
+];
index f8da9ee..625c19d 100644 (file)
@@ -1,5 +1,6 @@
 var searchData=
 [
   ['clean_5ffile_5fname',['clean_file_name',['../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385',1,'MUtils']]],
-  ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]]
+  ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]],
+  ['create',['create',['../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e',1,'MUtils::Hash']]]
 ];
index 752aff4..f338b5b 100644 (file)
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]]
+  ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]],
+  ['digest',['digest',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1',1,'MUtils::Hash::Hash']]]
 ];
similarity index 93%
rename from docs/search/classes_9.html
rename to docs/search/functions_9.html
index 59ec044..6999e7e 100644 (file)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta name="generator" content="Doxygen 1.8.12"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="classes_9.js"></script>
+<script type="text/javascript" src="functions_9.js"></script>
 <script type="text/javascript" src="search.js"></script>
 </head>
 <body class="SRPage">
diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js
new file mode 100644 (file)
index 0000000..f75715a
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['update',['update',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15',1,'MUtils::Hash::Hash::update(const quint8 *const data, const quint32 len)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa',1,'MUtils::Hash::Hash::update(const QByteArray &amp;data)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f',1,'MUtils::Hash::Hash::update(QFile &amp;file)']]]
+];
index 9048c39..8bc0d42 100644 (file)
@@ -1,11 +1,11 @@
 var indexSectionsWithContent =
 {
-  0: "_abcdfgijkmnprstuvx",
-  1: "_bijkrstuv",
+  0: "_abcdfghijmnprstuvx",
+  1: "_hijrtuv",
   2: "m",
-  3: "cg",
-  4: "acdimnprt",
-  5: "bcfimsvx",
+  3: "cgh",
+  4: "acdimnprtu",
+  5: "bcfhimsvx",
   6: "c",
   7: "m"
 };
index 4e776bc..f647c5e 100644 (file)
@@ -1,4 +1,8 @@
 var searchData=
 [
-  ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]]
+  ['hash_5fblake2_5f512',['HASH_BLAKE2_512',['../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f224',['HASH_KECCAK_224',['../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f256',['HASH_KECCAK_256',['../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f384',['HASH_KECCAK_384',['../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458',1,'MUtils::Hash']]],
+  ['hash_5fkeccak_5f512',['HASH_KECCAK_512',['../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119',1,'MUtils::Hash']]]
 ];
index 04ad443..4e776bc 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['model',['model',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7d0a012412dc4b04f2b5b37e83f5874a',1,'MUtils::CPUFetaures::_cpu_info_t']]]
+  ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]]
 ];
index f67e5ea..04ad443 100644 (file)
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['stepping',['stepping',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4',1,'MUtils::CPUFetaures::_cpu_info_t']]]
+  ['model',['model',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7d0a012412dc4b04f2b5b37e83f5874a',1,'MUtils::CPUFetaures::_cpu_info_t']]]
 ];
index 35f8c66..f67e5ea 100644 (file)
@@ -1,6 +1,4 @@
 var searchData=
 [
-  ['vendor',['vendor',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a932a85bcdb1be4b191d8ecd61b87ad26',1,'MUtils::CPUFetaures::_cpu_info_t']]],
-  ['vendor_5famd',['VENDOR_AMD',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a37e26e9e81b42bd517928449fa28fc4e',1,'MUtils::CPUFetaures']]],
-  ['vendor_5fintel',['VENDOR_INTEL',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#af1d34d67451c27e125b507089bfd147f',1,'MUtils::CPUFetaures']]]
+  ['stepping',['stepping',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4',1,'MUtils::CPUFetaures::_cpu_info_t']]]
 ];
index 644654b..35f8c66 100644 (file)
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['x64',['x64',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#aebb4aa6da8a1c381715a792f8904222f',1,'MUtils::CPUFetaures::_cpu_info_t']]]
+  ['vendor',['vendor',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a932a85bcdb1be4b191d8ecd61b87ad26',1,'MUtils::CPUFetaures::_cpu_info_t']]],
+  ['vendor_5famd',['VENDOR_AMD',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a37e26e9e81b42bd517928449fa28fc4e',1,'MUtils::CPUFetaures']]],
+  ['vendor_5fintel',['VENDOR_INTEL',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#af1d34d67451c27e125b507089bfd147f',1,'MUtils::CPUFetaures']]]
 ];
diff --git a/docs/search/variables_8.html b/docs/search/variables_8.html
new file mode 100644 (file)
index 0000000..a74c6ca
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/search/variables_8.js b/docs/search/variables_8.js
new file mode 100644 (file)
index 0000000..644654b
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['x64',['x64',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#aebb4aa6da8a1c381715a792f8904222f',1,'MUtils::CPUFetaures::_cpu_info_t']]]
+];
index 687db49..fca4d3c 100644 (file)
@@ -356,3 +356,9 @@ namespace MUtils
 /** \brief Converts a boolean expression into a string. A *true* boolean expression is converted to the string `"1"`; a *false* boolean expression is converted to the string `"0"`.
 */
 #define MUTILS_BOOL2STR(X) ((X) ? "1" : "0")
+
+/** \brief Disables copy constructor and assignment operator in the specified class. This macro should be used in the "private" section of the class' declaration.
+*/
+#define MUTILS_NO_COPY(CLASS) \
+       CLASS(const CLASS &) { throw "Copy constructor is disabled!"; } \
+       CLASS &operator=(const CLASS &) { throw "Assignment operator is disabled!"; }
index e8336b5..dac0cba 100644 (file)
 // http://www.gnu.org/licenses/lgpl-2.1.txt
 //////////////////////////////////////////////////////////////////////////////////
 
+/**
+* @file
+* @brief This file contains function for cryptographic hash computation
+*
+* Call the MUtils::Hash::create() function to create an instance of the desired hash function. All Hash functions implement the MUtils::Hash::Hash interface.
+*/
+
 #pragma once
 
 //MUtils
@@ -32,21 +39,70 @@ namespace MUtils
 {
        namespace Hash
        {
-               static const quint16 HASH_BLAKE2_512 = 0x0000U;
-               static const quint16 HASH_KECCAK_224 = 0x0100U;
-               static const quint16 HASH_KECCAK_256 = 0x0101U;
-               static const quint16 HASH_KECCAK_384 = 0x0102U;
-               static const quint16 HASH_KECCAK_512 = 0x0103U;
+               static const quint16 HASH_BLAKE2_512 = 0x0000U; ///< \brief Hash algorithm identifier \details Use [BLAKE2](https://blake2.net/) hash algorithm, with a length of 512-Bit.
+               static const quint16 HASH_KECCAK_224 = 0x0100U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 224-Bit.
+               static const quint16 HASH_KECCAK_256 = 0x0101U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 256-Bit.
+               static const quint16 HASH_KECCAK_384 = 0x0102U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 384-Bit.
+               static const quint16 HASH_KECCAK_512 = 0x0103U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 512-Bit.
 
+               /**
+               * \brief This abstract class specifies the generic interface for all support hash algorithms.
+               *
+               * In order to compute a hash value (digest) call the the Hash::update() function repeatedly until all input data (i.e. the complete "message") has been processed. Then call the Hash::digest() function to retrieve the final hash value.
+               *
+               * All overloads of the Hash::update() function may be called in an interleaved fashion as needed.
+               *
+               * This class is **not** thread-safe, i.e. do **not** call the *same* Hash instance from difference threads, unless serialization is ensured (e.g. by means of a Mutex). It is safe, however, to call different *different* Hash instances from difference threads concurrently.
+               */
                class MUTILS_API Hash
                {
                public:
                        virtual ~Hash(void) {};
 
+                       /**
+                       * \brief Process the next chunk of input data
+                       *
+                       * Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed.
+                       *
+                       * \param data A read-only pointer to the memory buffer holding the input data to be processed.
+                       *
+                       * \param len The length of the input data, in bytes. The `data` parameter must be pointing to a memory buffer that is at least `len` bytes in size.
+                       *
+                       * \return The function returns `true`, if the input data was processed successfully; otherwise it returns `false`.
+                       */
                        bool update(const quint8 *const data, const quint32 len) { return process(data, len); }
+
+                       /**
+                       * \brief Process the next chunk of input data
+                       *
+                       * Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed.
+                       *
+                       * \param data A read-only reference to a QByteArray object holding the input data to be processed. All bytes in the QByteArray object will be processed.
+                       *
+                       * \return The function returns `true`, if the input data was processed successfully; otherwise it returns `false`.
+                       */
                        bool update(const QByteArray &data) { return process(((const quint8*)data.constData()), ((quint32)data.length())); }
+
+                       /**
+                       * \brief Process the next chunk of input data
+                       *
+                       * Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed.
+                       *
+                       * \param data A reference to a QFile object. The QFile object must be open and readable. All data from the current file position to the end of the file will be processed.
+                       *
+                       * \return The function returns `true`, if all data in the file was processed successfully; otherwise (e.g. in case of file read errors) it returns `false`.
+                       */
                        bool update(QFile &file);
 
+                       /**
+                       * \brief Retrieve the hash value
+                       *
+                       * This function is used to retrieve the final hash value (digest), after all input data has been processed successfully.
+                       *
+                       * \param bAsHex If set to `true`, the function returns the hash value as a Hexadecimal-encoded ASCII string; if set to `false`, the function returns the hash value as "raw" bytes.
+                       *
+                       * \return The function returns a QByteArray object holding the final hash value (digest). The format depends on the `bAsHex` parameter.
+                       */
                        QByteArray digest(const bool bAsHex = true) { return bAsHex ? finalize().toHex() : finalize(); }
 
                protected:
@@ -55,10 +111,20 @@ namespace MUtils
                        virtual QByteArray finalize(void) = 0;
 
                private:
-                       Hash &operator=(const Hash&) { throw "Disabled"; }
-                       Hash(const Hash&)            { throw "Disabled"; }
+                       MUTILS_NO_COPY(Hash);
                };
 
+               /**
+               * \brief Create instance of a hash function
+               *
+               * This function is used to create a new instance of the desired hash function. All Hash functions implement the MUtils::Hash::Hash interface. The caller is responsible for destroying the returned MUtils::Hash::Hash object.
+               *
+               * \param hashId Specifies the desired hash function. This must be a valid hash algorithm identifier, as defined in the `Hash.h` header file.
+               *
+               * \param key Specifies on optional key that is used to "seed" the hash function. If a key is given, it must be a NULL-terminated string of appropriate length. If set to `NULL`, the optional seeding is skipped.
+
+               * \return Returns a pointer to a new MUtils::Hash::Hash object that implements the desired hash function. The function throws if an invalid algorithm identifier was specified!
+               */
                MUTILS_API Hash *create(const quint16 &hashId, const char *const key = NULL);
        }
 }
index 069e190..aecb6b4 100644 (file)
@@ -11,6 +11,7 @@
  * The public API of the *MUtilities* library is defined in the following header files (select file for details):
  * - **Global.h** &ndash; miscellaneous useful functions
  * - **CPUFeatures.h** &ndash; functions for detection information about the CPU
+ * - **Hash.h** &ndash; functions for cryptographic hash computation
  * 
  * 
  * # Example