+ /**
+ * \brief Initialize a given [QProcess](http://doc.qt.io/qt-4.8/qprocess.html) object.
+ *
+ * This function prepares a given [QProcess](http://doc.qt.io/qt-4.8/qprocess.html) object for sub-process creation. It does so by setting up combined *stdout* and *stderr* redirection for the sub-process, cleaning up the sub-process' environment variables, as well as setting up the sub-process' working directory. Optionally, the *Temp* directory for the sub-process can be set to the application-specific *Temp* directory, which is achieved by overwriting the corresponding environment variables (e.g. `TMP` and `TEMP`). Furthermore, additional paths can be added to the `PATH` environment variable of the sub-process.
+ *
+ * \param process A reference to the [QProcess](http://doc.qt.io/qt-4.8/qprocess.html) object to be initialized. The [QProcess](http://doc.qt.io/qt-4.8/qprocess.html) object must be initialized *before* calling the `QProcess::start()` method.
+ *
+ * \param process A read-only reference to a QString holding the path of the working directory for the sub-process.
+ *
+ * \param bReplaceTempDir If set to `true`, the *Temp* directory for the sub-process is set to the application-specific *Temp* directory; if set to `false`, the default *Temp* directory is retained.
+ *
+ * \param extraPaths A read-only pointer to a QStringList object containing additional paths that will be added (prepended) to the sub-process' `PATH` environment variable. This parameter can be `NULL`, in which case *no* additional paths are added.
+ */
+ MUTILS_API void init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir = true, const QStringList *const extraPaths = NULL);
+
+ /**
+ * \brief Generates a *random* unsigned 32-Bit value.
+ *
+ * The *random* value is created using a "strong" PRNG of the underlying system, if possible. Otherwise a fallback PRNG is used. It is **not** required or useful to call `srand()` or `qsrand()` prior to using this function. If necessary, the seeding of the PRNG happen *automatically* on the first call.
+ *
+ * \return The function returns a *random* unsigned 32-Bit value.
+ */
+ MUTILS_API quint32 next_rand_u32(void);
+
+ /**
+ * \brief Generates a *random* unsigned 64-Bit value.
+ *
+ * The *random* value is created using a "strong" PRNG of the underlying system, if possible. Otherwise a fallback PRNG is used. It is **not** required or useful to call `srand()` or `qsrand()` prior to using this function. If necessary, the seeding of the PRNG happen *automatically* on the first call.
+ *
+ * \return The function returns a *random* unsigned 64-Bit value.
+ */
+ MUTILS_API quint64 next_rand_u64(void);
+
+ /**
+ * \brief Generates a *random* string.
+ *
+ * The random string is generated using the same PRNG as the `next_rand_u64()` function. The *random* bytes are converted to a hexadecimal string and, if necessary, zero-padded to a toal length of 16 or 32 characters. There is **no** `0x`-prefix included in the result.
+ *
+ * \param bLong If set to `true`, a "long" random string (32 characters) will be generated; if set to `false`, a "short" random string (16 characters) is generated.
+ *
+ * \return The function returns a QString holding a *random* hexadecimal string
+ */
+ MUTILS_API QString next_rand_str(const bool &bLong = false);
+
+ /**
+ * \brief Generates a temporary file name.
+ *
+ * The function generates a file name that contains a *random* component and that is guaranteed to **not** exist yet. The generated file name follows a `"<basedir>/<random>.<ext>"` pattern. This is useful (not only) for creating temporary files.
+ *
+ * \param basePath Specifies the "base" directory where the temporary file is supposed to be created. This must be a valid *existing* directory.
+ *
+ * \param extension Specifies the desired file extensions of the temporary file. Do **not** include a leading dot (`.`) character.
+ *
+ * \param placeholder If set to `true`, the function creates an empty "placeholder" file under the returned file name; if set to `false`, it does *not*.
+ *
+ * \return If the function succeeds, it returns a QString holding the full path of the temporary file; otherwise it returns a default-constructed QString.
+ */
+ MUTILS_API QString make_temp_file(const QString &basePath, const QString &extension, const bool placeholder = false);
+
+ /**
+ * \brief Generates a unique file name.
+ *
+ * The function generates a unique file name in the specified directory. The function guarantees that the returned file name does *not* exist yet. If necessary, a *counter* will be included in the file name in order to ensure its uniqueness.
+ *
+ * \param basePath Specifies the "base" directory where the unique file is supposed to be created. This must be a valid *existing* directory.
+ *
+ * \param baseName Specifies the desired "base" file name of the unique file. Do **not** include a file extension.
+ *
+ * \param extension Specifies the desired file extensions of the unique file. Do **not** include a leading dot (`.`) character.
+ *
+ * \param fancy If set to `true`, the unique file name is generated according to the `"<basedir>/<basename> (N).<ext>"` pattern; if set to `false`, it is generated according to the `"<basedir>/<basename>.XXXX.<ext>"` pattern. Also, if set to `true`, a counter is only included in the file name, if the file name *without* counter already exists; if set to `false`, a counter is always included. Finally, if set to `true`, the counter starts at **2** and is printed in decimal format; if set to `false`, the counter starts at **0** and is printed in zero-padded hexadecimal format.
+ *
+ * \return If the function succeeds, it returns a QString holding the full path of the unique file; otherwise it returns a default-constructed QString.
+ */
+ MUTILS_API QString make_unique_file(const QString &basePath, const QString &baseName, const QString &extension, const bool fancy = false);