diff --git a/docs/annotated.html b/docs/annotated.html index 71f35f6..5c17dd8 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -64,16 +64,12 @@ $(function() {
+ MuldeR's Utilities for Qt
+
+ MUtilities
+ |
+
CMUtils::CPUFetaures::_cpu_info_t | Struct to hold information about the CPU. See _cpu_info_t for details! |
CMUtils::OS::Version::_os_version_t | |
CMUtils::Hash::Blake2 | |
CMUtils::Hash::Hash | This abstract class specifies the generic interface for all support hash algorithms |
CMUtils::IPCChannel | |
CMUtils::JobObject | |
CMUtils::Hash::Keccak | |
▼CQThread | |
CMUtils::UpdateChecker | |
CMUtils::Registry::RegistryKey | |
CMUtils::Hash::Internal::KeccakImpl::spongeStateStruct | |
CMUtils::Taskbar7 | |
CMUtils::UpdateCheckerInfo | |
CMUtils::Version | |
▼CQThread | |
CMUtils::UpdateChecker | |
CMUtils::Registry::RegistryKey | |
CMUtils::Taskbar7 | |
CMUtils::UpdateCheckerInfo | |
CMUtils::Version |
The public API of the MUtilities library is defined in the following header files (select file for details):
Here is a minimal example on how to use the MUtilities library in your project:
//MUtils diff --git a/docs/menudata.js b/docs/menudata.js index 0d48979..9af163f 100644 --- a/docs/menudata.js +++ b/docs/menudata.js @@ -24,6 +24,7 @@ var menudata={children:[ {text:'Class Hierarchy',url:'hierarchy.html'}, {text:'Class Members',url:'functions.html',children:[ {text:'All',url:'functions.html'}, +{text:'Functions',url:'functions_func.html'}, {text:'Variables',url:'functions_vars.html'}]}]}, {text:'Files',url:'files.html',children:[ {text:'File List',url:'files.html'}, diff --git a/docs/search/all_10.js b/docs/search/all_10.js index d8e4d05..e8012eb 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -1,5 +1,6 @@ var searchData= [ + ['update',['update',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15',1,'MUtils::Hash::Hash::update(const quint8 *const data, const quint32 len)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa',1,'MUtils::Hash::Hash::update(const QByteArray &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']]] ]; diff --git a/docs/search/all_2.js b/docs/search/all_2.js index 94fe2bd..a0ea208 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -1,5 +1,4 @@ var searchData= [ - ['blake2',['Blake2',['../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html',1,'MUtils::Hash']]], ['brand',['brand',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a2986daa8c1b524a7f952eacb8d516696',1,'MUtils::CPUFetaures::_cpu_info_t']]] ]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js index 738f52c..53083cf 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -4,5 +4,6 @@ var searchData= ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]], ['count',['count',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7861529c47568141daa37810ebb499ea',1,'MUtils::CPUFetaures::_cpu_info_t']]], ['cpu_5finfo_5ft',['cpu_info_t',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a8b80fb34713dbc70a63ae5cd48b0630e',1,'MUtils::CPUFetaures']]], - ['cpufeatures_2eh',['CPUFeatures.h',['../d2/db5/_c_p_u_features_8h.html',1,'']]] + ['cpufeatures_2eh',['CPUFeatures.h',['../d2/db5/_c_p_u_features_8h.html',1,'']]], + ['create',['create',['../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e',1,'MUtils::Hash']]] ]; diff --git a/docs/search/all_4.js b/docs/search/all_4.js index 752aff4..f338b5b 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -1,4 +1,5 @@ var searchData= [ - ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]] + ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]], + ['digest',['digest',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1',1,'MUtils::Hash::Hash']]] ]; diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 327b7eb..8abdf08 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -1,6 +1,10 @@ var searchData= [ - ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]], - ['init_5fprocess',['init_process',['../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3',1,'MUtils']]], - ['ipcchannel',['IPCChannel',['../d5/dfe/class_m_utils_1_1_i_p_c_channel.html',1,'MUtils']]] + ['hash',['Hash',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html',1,'MUtils::Hash']]], + ['hash_2eh',['Hash.h',['../d2/dad/_hash_8h.html',1,'']]], + ['hash_5fblake2_5f512',['HASH_BLAKE2_512',['../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f224',['HASH_KECCAK_224',['../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f256',['HASH_KECCAK_256',['../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f384',['HASH_KECCAK_384',['../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f512',['HASH_KECCAK_512',['../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119',1,'MUtils::Hash']]] ]; diff --git a/docs/search/all_8.js b/docs/search/all_8.js index e409b67..327b7eb 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -1,4 +1,6 @@ var searchData= [ - ['jobobject',['JobObject',['../dc/dd3/class_m_utils_1_1_job_object.html',1,'MUtils']]] + ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]], + ['init_5fprocess',['init_process',['../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3',1,'MUtils']]], + ['ipcchannel',['IPCChannel',['../d5/dfe/class_m_utils_1_1_i_p_c_channel.html',1,'MUtils']]] ]; diff --git a/docs/search/all_9.js b/docs/search/all_9.js index 78ae639..e409b67 100644 --- a/docs/search/all_9.js +++ b/docs/search/all_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['keccak',['Keccak',['../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html',1,'MUtils::Hash']]] + ['jobobject',['JobObject',['../dc/dd3/class_m_utils_1_1_job_object.html',1,'MUtils']]] ]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js index b91ff8b..0c14745 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -8,6 +8,7 @@ var searchData= ['mutils_5fbool2str',['MUTILS_BOOL2STR',['../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a',1,'Global.h']]], ['mutils_5fdelete',['MUTILS_DELETE',['../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d',1,'Global.h']]], ['mutils_5fdelete_5farray',['MUTILS_DELETE_ARRAY',['../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8',1,'Global.h']]], + ['mutils_5fno_5fcopy',['MUTILS_NO_COPY',['../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8',1,'Global.h']]], ['mutils_5fqstr',['MUTILS_QSTR',['../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0',1,'Global.h']]], ['mutils_5futf8',['MUTILS_UTF8',['../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f',1,'Global.h']]], ['mutils_5fwchr',['MUTILS_WCHR',['../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e',1,'Global.h']]], diff --git a/docs/search/all_e.js b/docs/search/all_e.js index 50e2db7..f67e5ea 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,5 +1,4 @@ var searchData= [ - ['spongestatestruct',['spongeStateStruct',['../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html',1,'MUtils::Hash::Internal::KeccakImpl']]], ['stepping',['stepping',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4',1,'MUtils::CPUFetaures::_cpu_info_t']]] ]; diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js index d9ccfea..2e615db 100644 --- a/docs/search/classes_1.js +++ b/docs/search/classes_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['blake2',['Blake2',['../d1/d01/class_m_utils_1_1_hash_1_1_blake2.html',1,'MUtils::Hash']]] + ['hash',['Hash',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html',1,'MUtils::Hash']]] ]; diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js index 78ae639..7bb19da 100644 --- a/docs/search/classes_4.js +++ b/docs/search/classes_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['keccak',['Keccak',['../dd/d9f/class_m_utils_1_1_hash_1_1_keccak.html',1,'MUtils::Hash']]] + ['registrykey',['RegistryKey',['../da/d35/class_m_utils_1_1_registry_1_1_registry_key.html',1,'MUtils::Registry']]] ]; diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js index 7bb19da..3150cd1 100644 --- a/docs/search/classes_5.js +++ b/docs/search/classes_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['registrykey',['RegistryKey',['../da/d35/class_m_utils_1_1_registry_1_1_registry_key.html',1,'MUtils::Registry']]] + ['taskbar7',['Taskbar7',['../d2/d52/class_m_utils_1_1_taskbar7.html',1,'MUtils']]] ]; diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js index c5890a5..d8e4d05 100644 --- a/docs/search/classes_6.js +++ b/docs/search/classes_6.js @@ -1,4 +1,5 @@ var searchData= [ - ['spongestatestruct',['spongeStateStruct',['../d0/dd8/struct_m_utils_1_1_hash_1_1_internal_1_1_keccak_impl_1_1sponge_state_struct.html',1,'MUtils::Hash::Internal::KeccakImpl']]] + ['updatechecker',['UpdateChecker',['../d0/d8a/class_m_utils_1_1_update_checker.html',1,'MUtils']]], + ['updatecheckerinfo',['UpdateCheckerInfo',['../d1/d0d/class_m_utils_1_1_update_checker_info.html',1,'MUtils']]] ]; diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js index 3150cd1..367cd93 100644 --- a/docs/search/classes_7.js +++ b/docs/search/classes_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['taskbar7',['Taskbar7',['../d2/d52/class_m_utils_1_1_taskbar7.html',1,'MUtils']]] + ['version',['Version',['../d1/d32/class_m_utils_1_1_version.html',1,'MUtils']]] ]; diff --git a/docs/search/classes_8.js b/docs/search/classes_8.js deleted file mode 100644 index d8e4d05..0000000 --- a/docs/search/classes_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['updatechecker',['UpdateChecker',['../d0/d8a/class_m_utils_1_1_update_checker.html',1,'MUtils']]], - ['updatecheckerinfo',['UpdateCheckerInfo',['../d1/d0d/class_m_utils_1_1_update_checker_info.html',1,'MUtils']]] -]; diff --git a/docs/search/classes_9.js b/docs/search/classes_9.js deleted file mode 100644 index 367cd93..0000000 --- a/docs/search/classes_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['version',['Version',['../d1/d32/class_m_utils_1_1_version.html',1,'MUtils']]] -]; diff --git a/docs/search/defines_0.js b/docs/search/defines_0.js index 7eea83b..e724674 100644 --- a/docs/search/defines_0.js +++ b/docs/search/defines_0.js @@ -3,6 +3,7 @@ var searchData= ['mutils_5fbool2str',['MUTILS_BOOL2STR',['../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a',1,'Global.h']]], ['mutils_5fdelete',['MUTILS_DELETE',['../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d',1,'Global.h']]], ['mutils_5fdelete_5farray',['MUTILS_DELETE_ARRAY',['../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8',1,'Global.h']]], + ['mutils_5fno_5fcopy',['MUTILS_NO_COPY',['../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8',1,'Global.h']]], ['mutils_5fqstr',['MUTILS_QSTR',['../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0',1,'Global.h']]], ['mutils_5futf8',['MUTILS_UTF8',['../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f',1,'Global.h']]], ['mutils_5fwchr',['MUTILS_WCHR',['../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e',1,'Global.h']]], diff --git a/docs/search/classes_8.html b/docs/search/files_2.html similarity index 94% rename from docs/search/classes_8.html rename to docs/search/files_2.html index a57aeae..f5456fb 100644 --- a/docs/search/classes_8.html +++ b/docs/search/files_2.html @@ -3,7 +3,7 @@ - + diff --git a/docs/search/files_2.js b/docs/search/files_2.js new file mode 100644 index 0000000..a3d9c20 --- /dev/null +++ b/docs/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hash_2eh',['Hash.h',['../d2/dad/_hash_8h.html',1,'']]] +]; diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index f8da9ee..625c19d 100644 --- a/docs/search/functions_1.js +++ b/docs/search/functions_1.js @@ -1,5 +1,6 @@ var searchData= [ ['clean_5ffile_5fname',['clean_file_name',['../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385',1,'MUtils']]], - ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]] + ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]], + ['create',['create',['../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e',1,'MUtils::Hash']]] ]; diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index 752aff4..f338b5b 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -1,4 +1,5 @@ var searchData= [ - ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]] + ['detect',['detect',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc',1,'MUtils::CPUFetaures']]], + ['digest',['digest',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a1d70f2b647935868a178920196ec0ac1',1,'MUtils::Hash::Hash']]] ]; diff --git a/docs/search/classes_9.html b/docs/search/functions_9.html similarity index 93% rename from docs/search/classes_9.html rename to docs/search/functions_9.html index 59ec044..6999e7e 100644 --- a/docs/search/classes_9.html +++ b/docs/search/functions_9.html @@ -3,7 +3,7 @@ - + diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js new file mode 100644 index 0000000..f75715a --- /dev/null +++ b/docs/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['update',['update',['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a5c36bd2ea671928f9f5bd897dcfbef15',1,'MUtils::Hash::Hash::update(const quint8 *const data, const quint32 len)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#a16bef08766de745913b3fd7c338bf5aa',1,'MUtils::Hash::Hash::update(const QByteArray &data)'],['../da/db0/class_m_utils_1_1_hash_1_1_hash.html#ace90c97585350dd246b6c655a3de571f',1,'MUtils::Hash::Hash::update(QFile &file)']]] +]; diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js index 9048c39..8bc0d42 100644 --- a/docs/search/searchdata.js +++ b/docs/search/searchdata.js @@ -1,11 +1,11 @@ var indexSectionsWithContent = { - 0: "_abcdfgijkmnprstuvx", - 1: "_bijkrstuv", + 0: "_abcdfghijmnprstuvx", + 1: "_hijrtuv", 2: "m", - 3: "cg", - 4: "acdimnprt", - 5: "bcfimsvx", + 3: "cgh", + 4: "acdimnprtu", + 5: "bcfhimsvx", 6: "c", 7: "m" }; diff --git a/docs/search/variables_3.js b/docs/search/variables_3.js index 4e776bc..f647c5e 100644 --- a/docs/search/variables_3.js +++ b/docs/search/variables_3.js @@ -1,4 +1,8 @@ var searchData= [ - ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]] + ['hash_5fblake2_5f512',['HASH_BLAKE2_512',['../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f224',['HASH_KECCAK_224',['../d2/dad/_hash_8h.html#a3cfb72f121ca5c03dd8452c322549d11',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f256',['HASH_KECCAK_256',['../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f384',['HASH_KECCAK_384',['../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458',1,'MUtils::Hash']]], + ['hash_5fkeccak_5f512',['HASH_KECCAK_512',['../d2/dad/_hash_8h.html#a89ad922f2cada9a15893852d43134119',1,'MUtils::Hash']]] ]; diff --git a/docs/search/variables_4.js b/docs/search/variables_4.js index 04ad443..4e776bc 100644 --- a/docs/search/variables_4.js +++ b/docs/search/variables_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['model',['model',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7d0a012412dc4b04f2b5b37e83f5874a',1,'MUtils::CPUFetaures::_cpu_info_t']]] + ['idstr',['idstr',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a58ab7955a771f842c3f16abd8cebb931',1,'MUtils::CPUFetaures::_cpu_info_t']]] ]; diff --git a/docs/search/variables_5.js b/docs/search/variables_5.js index f67e5ea..04ad443 100644 --- a/docs/search/variables_5.js +++ b/docs/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['stepping',['stepping',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4',1,'MUtils::CPUFetaures::_cpu_info_t']]] + ['model',['model',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7d0a012412dc4b04f2b5b37e83f5874a',1,'MUtils::CPUFetaures::_cpu_info_t']]] ]; diff --git a/docs/search/variables_6.js b/docs/search/variables_6.js index 35f8c66..f67e5ea 100644 --- a/docs/search/variables_6.js +++ b/docs/search/variables_6.js @@ -1,6 +1,4 @@ var searchData= [ - ['vendor',['vendor',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a932a85bcdb1be4b191d8ecd61b87ad26',1,'MUtils::CPUFetaures::_cpu_info_t']]], - ['vendor_5famd',['VENDOR_AMD',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a37e26e9e81b42bd517928449fa28fc4e',1,'MUtils::CPUFetaures']]], - ['vendor_5fintel',['VENDOR_INTEL',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#af1d34d67451c27e125b507089bfd147f',1,'MUtils::CPUFetaures']]] + ['stepping',['stepping',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a1cfc86c6c61d35c7bd6f2a9cbecb99e4',1,'MUtils::CPUFetaures::_cpu_info_t']]] ]; diff --git a/docs/search/variables_7.js b/docs/search/variables_7.js index 644654b..35f8c66 100644 --- a/docs/search/variables_7.js +++ b/docs/search/variables_7.js @@ -1,4 +1,6 @@ var searchData= [ - ['x64',['x64',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#aebb4aa6da8a1c381715a792f8904222f',1,'MUtils::CPUFetaures::_cpu_info_t']]] + ['vendor',['vendor',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a932a85bcdb1be4b191d8ecd61b87ad26',1,'MUtils::CPUFetaures::_cpu_info_t']]], + ['vendor_5famd',['VENDOR_AMD',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a37e26e9e81b42bd517928449fa28fc4e',1,'MUtils::CPUFetaures']]], + ['vendor_5fintel',['VENDOR_INTEL',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#af1d34d67451c27e125b507089bfd147f',1,'MUtils::CPUFetaures']]] ]; diff --git a/docs/search/variables_8.html b/docs/search/variables_8.html new file mode 100644 index 0000000..a74c6ca --- /dev/null +++ b/docs/search/variables_8.html @@ -0,0 +1,26 @@ + ++ + + + + + + + ++ + diff --git a/docs/search/variables_8.js b/docs/search/variables_8.js new file mode 100644 index 0000000..644654b --- /dev/null +++ b/docs/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x64',['x64',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#aebb4aa6da8a1c381715a792f8904222f',1,'MUtils::CPUFetaures::_cpu_info_t']]] +]; diff --git a/include/MUtils/Global.h b/include/MUtils/Global.h index 687db49..fca4d3c 100644 --- a/include/MUtils/Global.h +++ b/include/MUtils/Global.h @@ -356,3 +356,9 @@ namespace MUtils /** \brief Converts a boolean expression into a string. A *true* boolean expression is converted to the string `"1"`; a *false* boolean expression is converted to the string `"0"`. */ #define MUTILS_BOOL2STR(X) ((X) ? "1" : "0") + +/** \brief Disables copy constructor and assignment operator in the specified class. This macro should be used in the "private" section of the class' declaration. +*/ +#define MUTILS_NO_COPY(CLASS) \ + CLASS(const CLASS &) { throw "Copy constructor is disabled!"; } \ + CLASS &operator=(const CLASS &) { throw "Assignment operator is disabled!"; } diff --git a/include/MUtils/Hash.h b/include/MUtils/Hash.h index e8336b5..dac0cba 100644 --- a/include/MUtils/Hash.h +++ b/include/MUtils/Hash.h @@ -19,6 +19,13 @@ // http://www.gnu.org/licenses/lgpl-2.1.txt ////////////////////////////////////////////////////////////////////////////////// +/** +* @file +* @brief This file contains function for cryptographic hash computation +* +* Call the MUtils::Hash::create() function to create an instance of the desired hash function. All Hash functions implement the MUtils::Hash::Hash interface. +*/ + #pragma once //MUtils @@ -32,21 +39,70 @@ namespace MUtils { namespace Hash { - static const quint16 HASH_BLAKE2_512 = 0x0000U; - static const quint16 HASH_KECCAK_224 = 0x0100U; - static const quint16 HASH_KECCAK_256 = 0x0101U; - static const quint16 HASH_KECCAK_384 = 0x0102U; - static const quint16 HASH_KECCAK_512 = 0x0103U; + static const quint16 HASH_BLAKE2_512 = 0x0000U; ///< \brief Hash algorithm identifier \details Use [BLAKE2](https://blake2.net/) hash algorithm, with a length of 512-Bit. + static const quint16 HASH_KECCAK_224 = 0x0100U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 224-Bit. + static const quint16 HASH_KECCAK_256 = 0x0101U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 256-Bit. + static const quint16 HASH_KECCAK_384 = 0x0102U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 384-Bit. + static const quint16 HASH_KECCAK_512 = 0x0103U; ///< \brief Hash algorithm identifier \details Use [Keccak](http://keccak.noekeon.org/) (SHA-3) hash algorithm, with a length of 512-Bit. + /** + * \brief This abstract class specifies the generic interface for all support hash algorithms. + * + * In order to compute a hash value (digest) call the the Hash::update() function repeatedly until all input data (i.e. the complete "message") has been processed. Then call the Hash::digest() function to retrieve the final hash value. + * + * All overloads of the Hash::update() function may be called in an interleaved fashion as needed. + * + * This class is **not** thread-safe, i.e. do **not** call the *same* Hash instance from difference threads, unless serialization is ensured (e.g. by means of a Mutex). It is safe, however, to call different *different* Hash instances from difference threads concurrently. + */ class MUTILS_API Hash { public: virtual ~Hash(void) {}; + /** + * \brief Process the next chunk of input data + * + * Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed. + * + * \param data A read-only pointer to the memory buffer holding the input data to be processed. + * + * \param len The length of the input data, in bytes. The `data` parameter must be pointing to a memory buffer that is at least `len` bytes in size. + * + * \return The function returns `true`, if the input data was processed successfully; otherwise it returns `false`. + */ bool update(const quint8 *const data, const quint32 len) { return process(data, len); } + + /** + * \brief Process the next chunk of input data + * + * Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed. + * + * \param data A read-only reference to a QByteArray object holding the input data to be processed. All bytes in the QByteArray object will be processed. + * + * \return The function returns `true`, if the input data was processed successfully; otherwise it returns `false`. + */ bool update(const QByteArray &data) { return process(((const quint8*)data.constData()), ((quint32)data.length())); } + + /** + * \brief Process the next chunk of input data + * + * Updates the internal state of the hash function by processing the next chunk of input that. Can be called repeatedly, until until all input data has been processed. + * + * \param data A reference to a QFile object. The QFile object must be open and readable. All data from the current file position to the end of the file will be processed. + * + * \return The function returns `true`, if all data in the file was processed successfully; otherwise (e.g. in case of file read errors) it returns `false`. + */ bool update(QFile &file); + /** + * \brief Retrieve the hash value + * + * This function is used to retrieve the final hash value (digest), after all input data has been processed successfully. + * + * \param bAsHex If set to `true`, the function returns the hash value as a Hexadecimal-encoded ASCII string; if set to `false`, the function returns the hash value as "raw" bytes. + * + * \return The function returns a QByteArray object holding the final hash value (digest). The format depends on the `bAsHex` parameter. + */ QByteArray digest(const bool bAsHex = true) { return bAsHex ? finalize().toHex() : finalize(); } protected: @@ -55,10 +111,20 @@ namespace MUtils virtual QByteArray finalize(void) = 0; private: - Hash &operator=(const Hash&) { throw "Disabled"; } - Hash(const Hash&) { throw "Disabled"; } + MUTILS_NO_COPY(Hash); }; + /** + * \brief Create instance of a hash function + * + * This function is used to create a new instance of the desired hash function. All Hash functions implement the MUtils::Hash::Hash interface. The caller is responsible for destroying the returned MUtils::Hash::Hash object. + * + * \param hashId Specifies the desired hash function. This must be a valid hash algorithm identifier, as defined in the `Hash.h` header file. + * + * \param key Specifies on optional key that is used to "seed" the hash function. If a key is given, it must be a NULL-terminated string of appropriate length. If set to `NULL`, the optional seeding is skipped. + + * \return Returns a pointer to a new MUtils::Hash::Hash object that implements the desired hash function. The function throws if an invalid algorithm identifier was specified! + */ MUTILS_API Hash *create(const quint16 &hashId, const char *const key = NULL); } } diff --git a/include/MUtilsInfo.dox b/include/MUtilsInfo.dox index 069e190..aecb6b4 100644 --- a/include/MUtilsInfo.dox +++ b/include/MUtilsInfo.dox @@ -11,6 +11,7 @@ * 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 * * * # ExampleLoading...+ + +Searching...+No Matches+ +