8d367dec15
When interfacing with C-style APIs, such as the Windows API, resources are often represented using handle objects. Lifetime management of such resources can be cumbersome and error prone, because typical handle objects (ints) do not give any help to release resources, and to manage ownership. Although std::unique_ptr can be retro-fitted with a custom deleter, and helps transfer of ownership, it is inherently a pointer type. It can therefore be clumsy to use with C-style APIs, particularly if the invalid (uninitialized) handle value is not a nullptr. Also, the std::unique_ptr does not work well when an allocating function returns the handle as a pointer argument. The QUniqueHandle addresses these issues by providing a movable only value type that is designed as a RAII handle wrapper. A similar handle wrapper exists in the Windows SDK, as part of the WRL library. Unfortunately, this is Microsoft specific, and is not supported by MINGW. Since the QUniqueHandle is platform independent, it can be used also with non- Microsoft platforms, and can be useful with other C-style APIs such as FFmpeg or SQLite. Pick-to: 6.6 6.5 Change-Id: Ibfc0cec3f361ec004febea5f284ebf75e27c0054 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> |
||
---|---|---|
.. | ||
bic/data | ||
cmake | ||
concurrent | ||
corelib | ||
dbus | ||
gui | ||
guiapplauncher | ||
network | ||
opengl | ||
other | ||
printsupport | ||
shared | ||
sql | ||
testlib | ||
tools | ||
wasm | ||
widgets | ||
xml | ||
CMakeLists.txt | ||
network-settings.h |