</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;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">▼</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;"> </span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">▼</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;"> </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;"> </span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">▼</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;"> </span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">▼</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;"> </span><span id="arr_0_1_0_0_" class="arrow" onclick="toggleFolder('0_1_0_0_')">▼</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;"> </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;"> </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;"> </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;"> </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;"> </span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">▼</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;"> </span><span id="arr_0_2_0_" class="arrow" onclick="toggleFolder('0_2_0_')">▼</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;"> </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>
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter__">_</a> | <a class="qindex" href="#letter_b">b</a> | <a class="qindex" href="#letter_i">i</a> | <a class="qindex" href="#letter_j">j</a> | <a class="qindex" href="#letter_k">k</a> | <a class="qindex" href="#letter_r">r</a> | <a class="qindex" href="#letter_s">s</a> | <a class="qindex" href="#letter_t">t</a> | <a class="qindex" href="#letter_u">u</a> | <a class="qindex" href="#letter_v">v</a></div>
+<div class="qindex"><a class="qindex" href="#letter__">_</a> | <a class="qindex" href="#letter_h">h</a> | <a class="qindex" href="#letter_i">i</a> | <a class="qindex" href="#letter_j">j</a> | <a class="qindex" href="#letter_r">r</a> | <a class="qindex" href="#letter_t">t</a> | <a class="qindex" href="#letter_u">u</a> | <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">  _  </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">  i  </div></td></tr></table>
<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>)   </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>)   </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)   </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>)   </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)   </td><td rowspan="2" valign="bottom"><a name="letter_j"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  j  </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">  s  </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">  t  </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>)   </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">  b  </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">  h  </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">  v  </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>)   </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)   </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)   </td><td rowspan="2" valign="bottom"><a name="letter_k"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  k  </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">  t  </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>)   </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)   </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>)   </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>)   </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>)   </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)   </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>)   </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> | <a class="qindex" href="#letter_b">b</a> | <a class="qindex" href="#letter_i">i</a> | <a class="qindex" href="#letter_j">j</a> | <a class="qindex" href="#letter_k">k</a> | <a class="qindex" href="#letter_r">r</a> | <a class="qindex" href="#letter_s">s</a> | <a class="qindex" href="#letter_t">t</a> | <a class="qindex" href="#letter_u">u</a> | <a class="qindex" href="#letter_v">v</a></div>
+<div class="qindex"><a class="qindex" href="#letter__">_</a> | <a class="qindex" href="#letter_h">h</a> | <a class="qindex" href="#letter_i">i</a> | <a class="qindex" href="#letter_j">j</a> | <a class="qindex" href="#letter_r">r</a> | <a class="qindex" href="#letter_t">t</a> | <a class="qindex" href="#letter_u">u</a> | <a class="qindex" href="#letter_v">v</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
+++ /dev/null
-<!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'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'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> |
-<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 </td><td class="memItemRight" valign="bottom"><b>state</b> [(1600/8)]</td></tr>
-<tr class="separator:abec152a1bd2b02528a9ed7dd6b7a4173"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ad3b2c4726f384890ce57e6f75fd745"><td class="memItemLeft" align="right" valign="top"><a id="a9ad3b2c4726f384890ce57e6f75fd745"></a>
-unsigned char </td><td class="memItemRight" valign="bottom"><b>dataQueue</b> [(1536/8)]</td></tr>
-<tr class="separator:a9ad3b2c4726f384890ce57e6f75fd745"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa095e67dc5f83ca32adbc2f6dbe5d34"><td class="memItemLeft" align="right" valign="top"><a id="aaa095e67dc5f83ca32adbc2f6dbe5d34"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>rate</b></td></tr>
-<tr class="separator:aaa095e67dc5f83ca32adbc2f6dbe5d34"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fe412f995587d69fbca5455f6f6c4d3"><td class="memItemLeft" align="right" valign="top"><a id="a2fe412f995587d69fbca5455f6f6c4d3"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>capacity</b></td></tr>
-<tr class="separator:a2fe412f995587d69fbca5455f6f6c4d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90c973977c3ace97e83347e6d97d707f"><td class="memItemLeft" align="right" valign="top"><a id="a90c973977c3ace97e83347e6d97d707f"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>bitsInQueue</b></td></tr>
-<tr class="separator:a90c973977c3ace97e83347e6d97d707f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae80ab0346314a9d6d4b06d32dba9fc3b"><td class="memItemLeft" align="right" valign="top"><a id="ae80ab0346314a9d6d4b06d32dba9fc3b"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>fixedOutputLength</b></td></tr>
-<tr class="separator:ae80ab0346314a9d6d4b06d32dba9fc3b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7fdee5a0938c698a9e0837e5b8054d00"><td class="memItemLeft" align="right" valign="top"><a id="a7fdee5a0938c698a9e0837e5b8054d00"></a>
-int </td><td class="memItemRight" valign="bottom"><b>squeezing</b></td></tr>
-<tr class="separator:a7fdee5a0938c698a9e0837e5b8054d00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adae12469a9b21fd828c78408d054c9d2"><td class="memItemLeft" align="right" valign="top"><a id="adae12469a9b21fd828c78408d054c9d2"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>bitsAvailableForSqueezing</b></td></tr>
-<tr class="separator:adae12469a9b21fd828c78408d054c9d2"><td class="memSeparator" colspan="2"> </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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
+++ /dev/null
-<!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'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'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> |
-<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>
- </td><td class="memItemRight" valign="bottom"><b>Blake2</b> (const char *key=NULL)</td></tr>
-<tr class="separator:ab6fc640214ff57a791cd1a93c091684b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab677de8c511372b06a9c71ea4f5babf8"><td class="memItemLeft" align="right" valign="top"><a id="ab677de8c511372b06a9c71ea4f5babf8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>update</b> (const QByteArray &data)</td></tr>
-<tr class="separator:ab677de8c511372b06a9c71ea4f5babf8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e03ba463d58d18930f8f4da3464eb63"><td class="memItemLeft" align="right" valign="top"><a id="a2e03ba463d58d18930f8f4da3464eb63"></a>
-void </td><td class="memItemRight" valign="bottom"><b>update</b> (QFile &file)</td></tr>
-<tr class="separator:a2e03ba463d58d18930f8f4da3464eb63"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a802e6881fc9ea8f3a04860f2f572abcf"><td class="memItemLeft" align="right" valign="top"><a id="a802e6881fc9ea8f3a04860f2f572abcf"></a>
-QByteArray </td><td class="memItemRight" valign="bottom"><b>finalize</b> (const bool bAsHex=true)</td></tr>
-<tr class="separator:a802e6881fc9ea8f3a04860f2f572abcf"><td class="memSeparator" colspan="2"> </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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
+++ /dev/null
-<!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'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'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> <span class="comment">// Simple x264 Launcher</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">/*</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <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> <span class="comment"></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> Written in 2012 by Samuel Neves <sneves@dei.uc.pt></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <span class="comment"></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <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> <span class="comment"> this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">*/</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <QByteArray></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <QFile></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <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> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">namespace </span>Hash</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">class </span>MUTILS_API Blake2_Context;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </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>  <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>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <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>  ~<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> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">void</span> update(<span class="keyword">const</span> QByteArray &data);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> update(QFile &file);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  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> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  QByteArray m_hash;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Blake2_Context *<span class="keyword">const</span> m_context;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> m_finalized;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
+++ /dev/null
-<!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'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'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 &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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
--- /dev/null
+<!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'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'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> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a> |
+<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 <<a class="el" href="../../d5/d3b/_global_8h_source.html">MUtils/Global.h</a>></code><br />
+<code>#include <QByteArray></code><br />
+<code>#include <QFile></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  </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"> </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"> </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">  </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"> </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"> </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 * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e">MUtils::Hash::create</a> (const quint16 &hashId, const char *const key=NULL)</td></tr>
+<tr class="memdesc:a330b73d6927d6cd95892712f9396f40e"><td class="mdescLeft"> </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"> </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 </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"> </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"> </td></tr>
+<tr class="memitem:a3cfb72f121ca5c03dd8452c322549d11"><td class="memItemLeft" align="right" valign="top">static const quint16 </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"> </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"> </td></tr>
+<tr class="memitem:ae38cda07e425eb7c745492215a48ae08"><td class="memItemLeft" align="right" valign="top">static const quint16 </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"> </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"> </td></tr>
+<tr class="memitem:af80dfb1569816fab7ab5ed32e6386458"><td class="memItemLeft" align="right" valign="top">static const quint16 </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"> </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"> </td></tr>
+<tr class="memitem:a89ad922f2cada9a15893852d43134119"><td class="memItemLeft" align="right" valign="top">static const quint16 </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"> </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"> </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">§ </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 & </td>
+ <td class="paramname"><em>hashId</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *const </td>
+ <td class="paramname"><em>key</em> = <code>NULL</code> </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">§ </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">§ </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">§ </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">§ </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">§ </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  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
--- /dev/null
+<!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'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'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> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <span class="comment"></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <QByteArray></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <QFile></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <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> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">namespace </span>Hash</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17"> 42</a></span>  <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>  <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>  <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>  <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>  <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> </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>  <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>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <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> </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>  <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> </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>  <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 &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> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">bool</span> update(QFile &file);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </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>  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> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <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>  <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>  <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> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <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>  };</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  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 &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>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</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 &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 &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  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
--- /dev/null
+<!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'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'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 &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 &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  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
+++ /dev/null
-<!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'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'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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a">MUTILS_BOOL2STR</a>(X)   ((X) ? "1" : "0")</td></tr>
<tr class="memdesc:a177ecbfe7701c2ac04bb8bdeb208773a"><td class="mdescLeft"> </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"> </td></tr>
+<tr class="memitem:a8e7b4857b78f9749233e5abc96534ca8"><td class="memItemLeft" align="right" valign="top">#define </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"> </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"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
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">§ </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"> </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 &) { <span class="keywordflow">throw</span> <span class="stringliteral">"Copy constructor is disabled!"</span>; } \</div><div class="line"> CLASS &operator=(<span class="keyword">const</span> CLASS &) { <span class="keywordflow">throw</span> <span class="stringliteral">"Assignment operator is disabled!"</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  <a href="http://www.doxygen.org/index.html">
<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> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <QString></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <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> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <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> <span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ "(" MUTILS_MAKE_STRING(__LINE__) ") : warning: " TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"># define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <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> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <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> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#if defined(_MSC_VER) && (!defined(__INTELLISENSE__)) && (!defined(_M_X64)) && defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <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> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <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> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MUTILS_API <span class="keyword">const</span> QString& <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> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &process, <span class="keyword">const</span> QString &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> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  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>  </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  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>  </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  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> &bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &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> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &baseName, <span class="keyword">const</span> QString &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> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  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> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  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 &fileName);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  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 &folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &recursive);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &str);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &str);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &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> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a>(<span class="keyword">const</span> QString &name);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a>(<span class="keyword">const</span> QString &path);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  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 &regexp, quint32 &value);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  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 &regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &count);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  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> &noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">//Internal</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  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>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">"@"</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d"> 334</a></span> <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> </div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8"> 338</a></span> <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> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25"> 342</a></span> <span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e"> 346</a></span> <span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast<const wchar_t*>((STR).utf16()))</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f"> 350</a></span> <span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0"> 354</a></span> <span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast<const unsigned short*>((STR))))</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a"> 358</a></span> <span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? "1" : "0")</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 &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> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <QString></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <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> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <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> <span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ "(" MUTILS_MAKE_STRING(__LINE__) ") : warning: " TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"># define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <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> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <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> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#if defined(_MSC_VER) && (!defined(__INTELLISENSE__)) && (!defined(_M_X64)) && defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <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> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <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> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MUTILS_API <span class="keyword">const</span> QString& <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> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &process, <span class="keyword">const</span> QString &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> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  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>  </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  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>  </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  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> &bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &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> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &baseName, <span class="keyword">const</span> QString &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> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  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> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  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 &fileName);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  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 &folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &recursive);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &str);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &str);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &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> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a>(<span class="keyword">const</span> QString &name);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a>(<span class="keyword">const</span> QString &path);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  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 &regexp, quint32 &value);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  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 &regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &count);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  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> &noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">//Internal</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  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>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">"@"</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d"> 334</a></span> <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> </div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8"> 338</a></span> <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> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25"> 342</a></span> <span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e"> 346</a></span> <span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast<const wchar_t*>((STR).utf16()))</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f"> 350</a></span> <span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0"> 354</a></span> <span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast<const unsigned short*>((STR))))</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a"> 358</a></span> <span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? "1" : "0")</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8"> 362</a></span> <span class="preprocessor">#define MUTILS_NO_COPY(CLASS) \</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"> CLASS(const CLASS &) { throw "Copy constructor is disabled!"; } \</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> CLASS &operator=(const CLASS &) { throw "Assignment operator is disabled!"; }</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 &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 &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 &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 &list, const bool bIgnoreCase)</div><div class="ttdoc">Sort a list of strings using "natural ordering" algorithm. </div></div>
--- /dev/null
+<!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'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'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> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<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 <<a class="el" href="../../d2/dad/_hash_8h_source.html">Hash.h</a>></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 </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"> </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"> </td></tr>
+<tr class="memitem:a16bef08766de745913b3fd7c338bf5aa"><td class="memItemLeft" align="right" valign="top">bool </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 &data)</td></tr>
+<tr class="memdesc:a16bef08766de745913b3fd7c338bf5aa"><td class="mdescLeft"> </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"> </td></tr>
+<tr class="memitem:ace90c97585350dd246b6c655a3de571f"><td class="memItemLeft" align="right" valign="top">bool </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 &file)</td></tr>
+<tr class="memdesc:ace90c97585350dd246b6c655a3de571f"><td class="mdescLeft"> </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"> </td></tr>
+<tr class="memitem:a1d70f2b647935868a178920196ec0ac1"><td class="memItemLeft" align="right" valign="top">QByteArray </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"> </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"> </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>
+ </td><td class="memItemRight" valign="bottom"><b>Hash</b> (const char *key=NULL)</td></tr>
+<tr class="separator:aab066c13a4986e48bc6b8468a76a55a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a498fa946e1cc599f85f745337f2263b9"><td class="memItemLeft" align="right" valign="top"><a id="a498fa946e1cc599f85f745337f2263b9"></a>
+virtual bool </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"> </td></tr>
+<tr class="memitem:ae2a22f932e25961380e796e245fddf89"><td class="memItemLeft" align="right" valign="top"><a id="ae2a22f932e25961380e796e245fddf89"></a>
+virtual QByteArray </td><td class="memItemRight" valign="bottom"><b>finalize</b> (void)=0</td></tr>
+<tr class="separator:ae2a22f932e25961380e796e245fddf89"><td class="memSeparator" colspan="2"> </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">§ </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 </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">§ </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 </td>
+ <td class="paramname"><em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const quint32 </td>
+ <td class="paramname"><em>len</em> </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">§ </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 & </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">§ </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 & </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  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
+++ /dev/null
-<!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'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'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 &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 &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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
+++ /dev/null
-<!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'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'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> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<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  </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"> </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 </td><td class="memItemRight" valign="bottom"><b>init</b> (HashBits hashBits=hb256)</td></tr>
-<tr class="separator:a15a54241d0e960c3f71a93edc98098d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a304c3e92bc2c178f58f7e7bf023ed637"><td class="memItemLeft" align="right" valign="top"><a id="a304c3e92bc2c178f58f7e7bf023ed637"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>addData</b> (const QByteArray &data)</td></tr>
-<tr class="separator:a304c3e92bc2c178f58f7e7bf023ed637"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad03655614f37c992577642e74d94d4a"><td class="memItemLeft" align="right" valign="top"><a id="aad03655614f37c992577642e74d94d4a"></a>
-bool </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"> </td></tr>
-<tr class="memitem:a46082e437bb6cb12d6884015157df2d1"><td class="memItemLeft" align="right" valign="top"><a id="a46082e437bb6cb12d6884015157df2d1"></a>
-const QByteArray & </td><td class="memItemRight" valign="bottom"><b>finalize</b> ()</td></tr>
-<tr class="separator:a46082e437bb6cb12d6884015157df2d1"><td class="memSeparator" colspan="2"> </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 </td><td class="memItemRight" valign="bottom"><b>selfTest</b> (void)</td></tr>
-<tr class="separator:aa98ad42063a4f167ea71732461991ab1"><td class="memSeparator" colspan="2"> </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 </td><td class="memItemRight" valign="bottom"><b>m_initialized</b></td></tr>
-<tr class="separator:a6a7fd17e1d9b49817d61cb42327201b6"><td class="memSeparator" colspan="2"> </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> * </td><td class="memItemRight" valign="bottom"><b>m_state</b></td></tr>
-<tr class="separator:a9ee4af4b500708b58de03e467f7171b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8b45df386609d125a1129ed97ad21db"><td class="memItemLeft" align="right" valign="top"><a id="ad8b45df386609d125a1129ed97ad21db"></a>
-QByteArray </td><td class="memItemRight" valign="bottom"><b>m_hashResult</b></td></tr>
-<tr class="separator:ad8b45df386609d125a1129ed97ad21db"><td class="memSeparator" colspan="2"> </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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
+++ /dev/null
-<!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'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'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> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <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> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">/***************************************************************************</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">** **</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <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> <span class="comment">** Keccak (http://keccak.noekeon.org/) to Qt. **</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">** Copyright (C) 2013 Emanuel Eichhammer **</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">** **</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <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> <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> <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> <span class="comment">** (at your option) any later version. **</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">** **</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <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> <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> <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> <span class="comment">** GNU General Public License for more details. **</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">** **</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <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> <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> <span class="comment">** **</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">****************************************************************************</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">** Author: Emanuel Eichhammer **</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">** Website/Contact: http://www.WorksLikeClockwork.com/ **</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">** Date: 12.01.12 **</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">****************************************************************************/</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <QString></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <QByteArray></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <QFile></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <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> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">namespace </span>Hash</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Section from KeccakSponge.h</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// needed here, since hashState needs to be explicitly 32-byte aligned and therefore can't be</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <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>  <span class="keyword">namespace </span>KeccakImpl</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> #define KeccakPermutationSize 1600</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"> #define KeccakPermutationSizeInBytes (KeccakPermutationSize/8)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"> #define KeccakMaximumRate 1536</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> #define KeccakMaximumRateInBytes (KeccakMaximumRate/8)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> #if defined(__GNUC__)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> #define ALIGN __attribute__ ((aligned(32)))</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> #elif defined(_MSC_VER)</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> #define ALIGN __declspec(align(32))</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"> #else</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"> #define ALIGN</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </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>  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>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  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>  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>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rate;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> capacity;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bitsInQueue;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> fixedOutputLength;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">int</span> squeezing;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bitsAvailableForSqueezing;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <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>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// End Section from KeccakSponge.h</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </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>  <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>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">enum</span> HashBits {hb224, hb256, hb384, hb512};</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <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>  ~<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>  </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <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> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">bool</span> init(HashBits hashBits=hb256);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">bool</span> addData(<span class="keyword">const</span> QByteArray &data);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <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>  <span class="keyword">const</span> QByteArray &finalize();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">bool</span> m_initialized;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</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">Internal::KeccakImpl::hashState</a> *m_state;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  QByteArray m_hashResult;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> };</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  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="../../doxygen.png" alt="doxygen"/>
-</a> 1.8.12
-</small></address>
-</body>
-</html>
<tr class="memitem:d5/d3b/_global_8h"><td class="memItemLeft" align="right" valign="top">file  </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"> </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"> </td></tr>
+<tr class="memitem:d2/dad/_hash_8h"><td class="memItemLeft" align="right" valign="top">file  </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"> </td><td class="mdescRight">This file contains function for cryptographic hash computation. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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 -->
<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>
<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>
--- /dev/null
+<!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'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'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">
+ <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  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>
<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>
<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>
<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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">▼</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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">▼</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;"> </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;"> </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;"> </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;"> </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;"> </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 -->
<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> – 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> – 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> – 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
{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'},
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 &data)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f',1,'MUtils::Hash::Hash::update(QFile &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']]]
];
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']]]
];
['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']]]
];
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']]]
];
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']]]
];
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']]]
];
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']]]
];
['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']]],
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']]]
];
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']]]
];
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']]]
];
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']]]
];
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']]]
];
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']]]
];
+++ /dev/null
-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']]]
-];
+++ /dev/null
-var searchData=
-[
- ['version',['Version',['../d1/d32/class_m_utils_1_1_version.html',1,'MUtils']]]
-];
['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']]],
<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">
--- /dev/null
+var searchData=
+[
+ ['hash_2eh',['Hash.h',['../d2/dad/_hash_8h.html',1,'']]]
+];
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']]]
];
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']]]
];
<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">
--- /dev/null
+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 &data)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f',1,'MUtils::Hash::Hash::update(QFile &file)']]]
+];
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"
};
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']]]
];
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']]]
];
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']]]
];
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']]]
];
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']]]
];
--- /dev/null
+<!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>
--- /dev/null
+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']]]
+];
/** \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!"; }
// 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
{
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:
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);
}
}
* The public API of the *MUtilities* library is defined in the following header files (select file for details):
* - **Global.h** – miscellaneous useful functions
* - **CPUFeatures.h** – functions for detection information about the CPU
+ * - **Hash.h** – functions for cryptographic hash computation
*
*
* # Example