summaryrefslogtreecommitdiff
path: root/doc/scope.rst
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2025-03-27 13:19:31 +0100
committerJörg Frings-Fürst <debian@jff-webhosting.net>2025-03-27 13:19:31 +0100
commita81a93beca9a077b4254488ba5617b44fca8d0c1 (patch)
tree4eb17ff1b432f2768ab8c88c267c4984b776380e /doc/scope.rst
parent1c4b96855c415c48c0b3281b801c2e89fb935061 (diff)
parentfaa9f121de6d65800468d87d8eca0e3ff06b4ae0 (diff)
Merge branch 'release/debian/4.26-1'HEADdebian/4.26-1master
Diffstat (limited to 'doc/scope.rst')
-rw-r--r--doc/scope.rst22
1 files changed, 22 insertions, 0 deletions
diff --git a/doc/scope.rst b/doc/scope.rst
new file mode 100644
index 0000000..84ad69b
--- /dev/null
+++ b/doc/scope.rst
@@ -0,0 +1,22 @@
+============
+Scope guards
+============
+
+``scope_exit``
+==============
+
+scope_exit creates an object that runs a predefined function when a scope ends.
+This is useful for augmenting C APIs with something of a destructor without
+wrapping the stuff in an explicit class of its own. For instance,
+
+.. code-block:: c++
+
+ #include <libHX/option.h>
+ #include <libHX/scope.hpp>
+ int main() {
+ auto fa = HXformat_init();
+ if (fa == nullptr)
+ return 0;
+ auto cleanup_fa = HX::make_scope_exit([&]() { HXformat_free(fa); });
+ HXformat_add(fa, "foo", "bar", HXTYPE_STRING);
+ }