2016-04-16 14:25:52 +02:00
|
|
|
|
<!DOCTYPE html>
|
2021-02-08 20:59:25 +01:00
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
2014-11-21 17:11:57 +01:00
|
|
|
|
<head>
|
2021-02-08 20:59:25 +01:00
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
|
<meta name="generator" content="pandoc" />
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
|
|
|
<meta name="author" content="Created by LoRd_MuldeR <mulder2@gmx> – check http://muldersoft.com/ for news and updates!" />
|
2016-04-16 14:25:52 +02:00
|
|
|
|
<title>MUtilities – README</title>
|
2021-02-08 20:59:25 +01:00
|
|
|
|
<style>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
html {
|
|
|
|
|
line-height: 1.5;
|
|
|
|
|
font-family: Georgia, serif;
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
color: #1a1a1a;
|
|
|
|
|
background-color: #fdfdfd;
|
|
|
|
|
}
|
|
|
|
|
body {
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
max-width: 36em;
|
|
|
|
|
padding-left: 50px;
|
|
|
|
|
padding-right: 50px;
|
|
|
|
|
padding-top: 50px;
|
|
|
|
|
padding-bottom: 50px;
|
|
|
|
|
hyphens: auto;
|
|
|
|
|
overflow-wrap: break-word;
|
|
|
|
|
text-rendering: optimizeLegibility;
|
|
|
|
|
font-kerning: normal;
|
|
|
|
|
}
|
|
|
|
|
@media (max-width: 600px) {
|
|
|
|
|
body {
|
|
|
|
|
font-size: 0.9em;
|
|
|
|
|
padding: 1em;
|
|
|
|
|
}
|
|
|
|
|
h1 {
|
|
|
|
|
font-size: 1.8em;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@media print {
|
|
|
|
|
body {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
color: black;
|
|
|
|
|
font-size: 12pt;
|
|
|
|
|
}
|
|
|
|
|
p, h2, h3 {
|
|
|
|
|
orphans: 3;
|
|
|
|
|
widows: 3;
|
|
|
|
|
}
|
|
|
|
|
h2, h3, h4 {
|
|
|
|
|
page-break-after: avoid;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
p {
|
|
|
|
|
margin: 1em 0;
|
|
|
|
|
}
|
|
|
|
|
a {
|
|
|
|
|
color: #1a1a1a;
|
|
|
|
|
}
|
|
|
|
|
a:visited {
|
|
|
|
|
color: #1a1a1a;
|
|
|
|
|
}
|
|
|
|
|
img {
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
}
|
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
|
|
|
margin-top: 1.4em;
|
|
|
|
|
}
|
|
|
|
|
h5, h6 {
|
|
|
|
|
font-size: 1em;
|
|
|
|
|
font-style: italic;
|
|
|
|
|
}
|
|
|
|
|
h6 {
|
|
|
|
|
font-weight: normal;
|
|
|
|
|
}
|
|
|
|
|
ol, ul {
|
|
|
|
|
padding-left: 1.7em;
|
|
|
|
|
margin-top: 1em;
|
|
|
|
|
}
|
|
|
|
|
li > ol, li > ul {
|
|
|
|
|
margin-top: 0;
|
|
|
|
|
}
|
|
|
|
|
blockquote {
|
|
|
|
|
margin: 1em 0 1em 1.7em;
|
|
|
|
|
padding-left: 1em;
|
|
|
|
|
border-left: 2px solid #e6e6e6;
|
|
|
|
|
color: #606060;
|
|
|
|
|
}
|
|
|
|
|
code {
|
|
|
|
|
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
|
|
|
|
|
font-size: 85%;
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
pre {
|
|
|
|
|
margin: 1em 0;
|
|
|
|
|
overflow: auto;
|
|
|
|
|
}
|
|
|
|
|
pre code {
|
|
|
|
|
padding: 0;
|
|
|
|
|
overflow: visible;
|
|
|
|
|
overflow-wrap: normal;
|
|
|
|
|
}
|
|
|
|
|
.sourceCode {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
overflow: visible;
|
|
|
|
|
}
|
|
|
|
|
hr {
|
|
|
|
|
background-color: #1a1a1a;
|
|
|
|
|
border: none;
|
|
|
|
|
height: 1px;
|
|
|
|
|
margin: 1em 0;
|
|
|
|
|
}
|
|
|
|
|
table {
|
|
|
|
|
margin: 1em 0;
|
|
|
|
|
border-collapse: collapse;
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow-x: auto;
|
|
|
|
|
display: block;
|
|
|
|
|
font-variant-numeric: lining-nums tabular-nums;
|
|
|
|
|
}
|
|
|
|
|
table caption {
|
|
|
|
|
margin-bottom: 0.75em;
|
|
|
|
|
}
|
|
|
|
|
tbody {
|
|
|
|
|
margin-top: 0.5em;
|
|
|
|
|
border-top: 1px solid #1a1a1a;
|
|
|
|
|
border-bottom: 1px solid #1a1a1a;
|
|
|
|
|
}
|
|
|
|
|
th {
|
|
|
|
|
border-top: 1px solid #1a1a1a;
|
|
|
|
|
padding: 0.25em 0.5em 0.25em 0.5em;
|
|
|
|
|
}
|
|
|
|
|
td {
|
|
|
|
|
padding: 0.125em 0.5em 0.25em 0.5em;
|
|
|
|
|
}
|
|
|
|
|
header {
|
|
|
|
|
margin-bottom: 4em;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
#TOC li {
|
|
|
|
|
list-style: none;
|
|
|
|
|
}
|
|
|
|
|
#TOC ul {
|
|
|
|
|
padding-left: 1.3em;
|
|
|
|
|
}
|
|
|
|
|
#TOC > ul {
|
|
|
|
|
padding-left: 0;
|
|
|
|
|
}
|
|
|
|
|
#TOC a:not(:hover) {
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
}
|
2021-02-08 20:59:25 +01:00
|
|
|
|
code{white-space: pre-wrap;}
|
|
|
|
|
span.smallcaps{font-variant: small-caps;}
|
|
|
|
|
span.underline{text-decoration: underline;}
|
|
|
|
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|
|
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
|
|
|
ul.task-list{list-style: none;}
|
2022-06-16 16:46:10 +02:00
|
|
|
|
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
2021-02-08 20:59:25 +01:00
|
|
|
|
</style>
|
2016-04-16 14:25:52 +02:00
|
|
|
|
<style type="text/css">
|
|
|
|
|
<!--
|
|
|
|
|
body { font-family: "Times New Roman", Times, serif; color: #000000; background-color: #FFFFFF; }
|
|
|
|
|
p { text-align: justify; }
|
|
|
|
|
tt, pre, code { font-family: Courier New, Courier, mono; background-color: #EDF3F7; padding: 1px; }
|
|
|
|
|
h1:not(.title) { margin-top: 2.25em; }
|
|
|
|
|
h2:not(.author) { margin-top: 2.0em; }
|
|
|
|
|
h3, h4 { margin-top: 1.75em; }
|
|
|
|
|
a { color: #0000BB; text-decoration: none; }
|
|
|
|
|
a:visited { color: #0000BB; text-decoration: none; }
|
|
|
|
|
a:active { color: #0000FF; text-decoration: none; }
|
|
|
|
|
a:hover { color: #0000FF; text-decoration: underline; }
|
|
|
|
|
img { margin-bottom: 0.75em; }
|
|
|
|
|
ul, ol { margin-bottom: 2.0em; }
|
|
|
|
|
li>ul, li>ol { margin-bottom: 0em; }
|
|
|
|
|
-->
|
|
|
|
|
</style>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<!--[if lt IE 9]>
|
|
|
|
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
|
|
|
<![endif]-->
|
2014-11-21 17:11:57 +01:00
|
|
|
|
</head>
|
|
|
|
|
<body>
|
2021-02-08 20:59:25 +01:00
|
|
|
|
<header id="title-block-header">
|
2016-04-16 14:25:52 +02:00
|
|
|
|
<h1 class="title">MUtilities – README</h1>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<p class="author">Created by LoRd_MuldeR <<a
|
|
|
|
|
href="mailto:mulder2@gmx" class="email">mulder2@gmx</a>> – check <a
|
|
|
|
|
href="http://muldersoft.com/" class="uri">http://muldersoft.com/</a> for
|
|
|
|
|
news and updates!</p>
|
2016-04-16 14:25:52 +02:00
|
|
|
|
</header>
|
2021-02-08 20:59:25 +01:00
|
|
|
|
<nav id="TOC" role="doc-toc">
|
2016-04-16 14:25:52 +02:00
|
|
|
|
<ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li><a href="#introduction" id="toc-introduction"><span
|
|
|
|
|
class="toc-section-number">1</span> Introduction</a></li>
|
|
|
|
|
<li><a href="#project-structure" id="toc-project-structure"><span
|
|
|
|
|
class="toc-section-number">2</span> Project Structure</a></li>
|
|
|
|
|
<li><a href="#example" id="toc-example"><span
|
|
|
|
|
class="toc-section-number">3</span> Example</a>
|
2021-02-08 20:59:25 +01:00
|
|
|
|
<ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li><a href="#build-notes" id="toc-build-notes"><span
|
|
|
|
|
class="toc-section-number">3.1</span> Build Notes</a></li>
|
2016-12-19 17:09:58 +01:00
|
|
|
|
</ul></li>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li><a href="#api-documentation" id="toc-api-documentation"><span
|
|
|
|
|
class="toc-section-number">4</span> API Documentation</a></li>
|
|
|
|
|
<li><a href="#license" id="toc-license"><span
|
|
|
|
|
class="toc-section-number">5</span> License</a></li>
|
|
|
|
|
<li><a href="#acknowledgement" id="toc-acknowledgement"><span
|
|
|
|
|
class="toc-section-number">6</span> Acknowledgement</a></li>
|
2016-04-16 14:25:52 +02:00
|
|
|
|
</ul>
|
|
|
|
|
</nav>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<h1 data-number="1" id="introduction"><span
|
|
|
|
|
class="header-section-number">1</span> Introduction</h1>
|
|
|
|
|
<p>The <strong>MUtilities</strong> library is a collection of routines
|
|
|
|
|
and classes to extend the <a href="http://qt-project.org/"><em>Qt
|
|
|
|
|
cross-platform framework</em></a>. It contains various convenience and
|
|
|
|
|
utility functions as well as wrappers for OS-specific functionalities.
|
|
|
|
|
The library was originally created as a "side product" of the <a
|
|
|
|
|
href="http://lamexp.sourceforge.net/"><strong>LameXP</strong></a>
|
|
|
|
|
application: Over the years, a lot of code, <strong>not</strong> really
|
|
|
|
|
specific to <em>LameXP</em>, had accumulated in the <em>LameXP</em> code
|
|
|
|
|
base. Some of that code even had been used in other projects too, in a
|
|
|
|
|
"copy & paste" fashion – which had lead to redundancy and much
|
|
|
|
|
complicated maintenance. In order to clean-up the LameXP code base, to
|
|
|
|
|
eliminate the ugly redundancy and to simplify maintenance, the code in
|
|
|
|
|
question has finally been refactored into the
|
|
|
|
|
<strong>MUtilities</strong> (aka "MuldeR's Utilities for Qt") library.
|
|
|
|
|
This library now forms the foundation of <em>LameXP</em> and <a
|
|
|
|
|
href="https://github.com/lordmulder"><em>other OpenSource
|
|
|
|
|
projects</em></a>.</p>
|
|
|
|
|
<h1 data-number="2" id="project-structure"><span
|
|
|
|
|
class="header-section-number">2</span> Project Structure</h1>
|
|
|
|
|
<p>The <em>MUtilities</em> project directory is organized as
|
|
|
|
|
follows:</p>
|
2016-12-19 02:43:38 +01:00
|
|
|
|
<ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li><code>bin/</code> – compiled library files (static or shared), link
|
|
|
|
|
those files in projects that use the MUtilities library</li>
|
|
|
|
|
<li><code>docs/</code> – programming interface documentation, generated
|
|
|
|
|
with Doxygen tool</li>
|
|
|
|
|
<li><code>etc/</code> – miscellaneous files, everything that doesn't fit
|
|
|
|
|
in anywhere else</li>
|
|
|
|
|
<li><code>include/</code> – public header files, include this directory
|
|
|
|
|
in projects that use the MUtilities library</li>
|
|
|
|
|
<li><code>obj/</code> – object code files, intermediate files generated
|
|
|
|
|
during the build process</li>
|
|
|
|
|
<li><code>res/</code> – resource files, required for building the
|
|
|
|
|
MUtilities library</li>
|
|
|
|
|
<li><code>src/</code> – source code files, required for building the
|
|
|
|
|
MUtilities library (third-party code in
|
|
|
|
|
<code>src/3rd_party/</code>)</li>
|
2016-12-19 02:43:38 +01:00
|
|
|
|
<li><code>test/</code> – unit tests, based on Google Test framework</li>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li><code>tmp/</code> – temporary files, automatically generated during
|
|
|
|
|
the build process</li>
|
2016-12-19 02:43:38 +01:00
|
|
|
|
</ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<h1 data-number="3" id="example"><span
|
|
|
|
|
class="header-section-number">3</span> Example</h1>
|
|
|
|
|
<p>Here is a minimal example on how to use the <em>MUtilities</em>
|
|
|
|
|
library in your project:</p>
|
2016-12-19 17:09:58 +01:00
|
|
|
|
<pre><code>//MUtils
|
|
|
|
|
#include <MUtils/Global.h>
|
|
|
|
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
qDebug("Random number: %u\n", MUtils::next_rand_u32());
|
|
|
|
|
}</code></pre>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<h2 data-number="3.1" id="build-notes"><span
|
|
|
|
|
class="header-section-number">3.1</span> Build Notes</h2>
|
2016-12-19 17:09:58 +01:00
|
|
|
|
<ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li>In order to use the <em>MUtilities</em> library in your project,
|
|
|
|
|
your build environment must have already been set up for building
|
|
|
|
|
Qt-based projects. Setting up Qt is <em>not</em> covered by this
|
|
|
|
|
document.</li>
|
|
|
|
|
<li>Additionally, make sure that <em>MUtilities'</em>
|
|
|
|
|
<code>include/</code> directory is contained in your "Additional Include
|
|
|
|
|
Directories" and that the <em>MUtilities'</em> <code>bin/</code>
|
|
|
|
|
directory is contained in your "Additional Library Directories".</li>
|
|
|
|
|
<li>Finally, make sure that your project links against the
|
|
|
|
|
<code>MUtils32-1.lib</code> library file. For each build configuration,
|
|
|
|
|
pick the proper <strong>.lib</strong> file from the corresponding
|
|
|
|
|
<code>bin/<platform>/<config>/</code> directory!</li>
|
|
|
|
|
<li>If your projects intends to use the <em>MUtilities</em> library as a
|
|
|
|
|
<strong>static</strong> library, then the macro
|
|
|
|
|
<code>MUTILS_STATIC_LIB</code> <em>must</em> be added to your project's
|
|
|
|
|
"Preprocessor Definitions".</li>
|
2016-12-19 17:09:58 +01:00
|
|
|
|
</ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<h1 data-number="4" id="api-documentation"><span
|
|
|
|
|
class="header-section-number">4</span> API Documentation</h1>
|
|
|
|
|
<p>A fully-fledged documentation of the <em>MUtilities</em> programming
|
|
|
|
|
interface (API) is available thanks to <a
|
|
|
|
|
href="http://www.stack.nl/~dimitri/doxygen/"><em>Doxygen</em></a>.
|
|
|
|
|
Please see <a
|
|
|
|
|
href="docs/index.html"><strong><code>docs/index.html</code></strong></a>
|
|
|
|
|
for details!</p>
|
|
|
|
|
<h1 data-number="5" id="license"><span
|
|
|
|
|
class="header-section-number">5</span> License</h1>
|
|
|
|
|
<p>This library is free software. It is released under the terms of the
|
|
|
|
|
<a href="https://www.gnu.org/licenses/lgpl-2.1.html"><em>GNU Lesser
|
|
|
|
|
General Public License (LGPL), Version 2.1</em></a>.</p>
|
2016-04-16 14:25:52 +02:00
|
|
|
|
<pre><code>MUtilities - MuldeR's Utilities for Qt
|
2023-03-07 20:35:15 +01:00
|
|
|
|
Copyright (C) 2004-2023 LoRd_MuldeR <MuldeR2@GMX.de>. Some rights reserved.
|
2016-04-16 14:25:52 +02:00
|
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
Lesser General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
License along with this library; if not, write to the Free Software
|
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</code></pre>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<h1 data-number="6" id="acknowledgement"><span
|
|
|
|
|
class="header-section-number">6</span> Acknowledgement</h1>
|
|
|
|
|
<p>The following people have contributed in the development of the
|
|
|
|
|
MUtilities library:</p>
|
2017-01-05 21:59:36 +01:00
|
|
|
|
<ul>
|
2022-06-16 16:46:10 +02:00
|
|
|
|
<li><strong>John Buonagurio <<a
|
|
|
|
|
href="mailto:jbuonagurio@exponent.com"
|
|
|
|
|
class="email">jbuonagurio@exponent.com</a>></strong><br />
|
2017-01-05 21:59:36 +01:00
|
|
|
|
Support for Qt5</li>
|
|
|
|
|
</ul>
|
2016-04-16 14:25:52 +02:00
|
|
|
|
<p>The following third-party code is used in the MUtilities library:</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li><p><strong>Keccak/SHA-3 Reference Implementation</strong><br />
|
2022-06-16 16:46:10 +02:00
|
|
|
|
Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido
|
|
|
|
|
Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van
|
|
|
|
|
Keer<br />
|
2016-04-16 14:25:52 +02:00
|
|
|
|
No Copyright / Dedicated to the Public Domain</p></li>
|
|
|
|
|
<li><p><strong>Natural Order String Comparison</strong><br />
|
2022-06-16 16:46:10 +02:00
|
|
|
|
Copyright (C) 2000, 2004 by Martin Pool <<a
|
|
|
|
|
href="mailto:mbp@sourcefrog.net"
|
|
|
|
|
class="email">mbp@sourcefrog.net</a>><br />
|
2016-04-16 14:25:52 +02:00
|
|
|
|
Released under the zlib License</p></li>
|
|
|
|
|
<li><p><strong>Adler-32 Checksum Algorithm (from zlib)</strong><br />
|
|
|
|
|
Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler<br />
|
|
|
|
|
Released under the zlib License</p></li>
|
|
|
|
|
</ul>
|
|
|
|
|
<p> </p>
|
|
|
|
|
<p><strong>e.o.f.</strong></p>
|
2014-11-21 17:11:57 +01:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|