summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorIngo Klöcker <dev@ingo-kloecker.de>2022-05-02 15:50:18 +0200
committerIngo Klöcker <dev@ingo-kloecker.de>2022-05-02 15:51:44 +0200
commit34786132fed0a776d4cd314c44ed62e29ff75328 (patch)
tree9feb3dab8661d44e3461e1722d723b91505d4eef /lang
parent99fd565889f3d22459ff82296b206fa228a4c468 (diff)
downloadgpgme-34786132fed0a776d4cd314c44ed62e29ff75328.tar.gz
cpp: Add RAII class for saving/restoring the key list mode
* lang/cpp/src/context.h, lang/cpp/src/context.cpp (class Context): Add nested class KeyListModeSaver. -- This RAII-style class can be used to save the currently used key list mode in case it needs to be changed temporarily. On destruction, it will restore the key list mode that was active at construction time. GnuPG-bug-id: 5951
Diffstat (limited to 'lang')
-rw-r--r--lang/cpp/src/context.cpp13
-rw-r--r--lang/cpp/src/context.h11
2 files changed, 24 insertions, 0 deletions
diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp
index 89bc3fd7..568e0458 100644
--- a/lang/cpp/src/context.cpp
+++ b/lang/cpp/src/context.cpp
@@ -195,6 +195,19 @@ std::ostream &operator<<(std::ostream &os, const Error &err)
return os << "GpgME::Error(" << err.encodedError() << " (" << err.asString() << "))";
}
+Context::KeyListModeSaver::KeyListModeSaver(Context *ctx)
+ : mCtx{ctx}
+ , mKeyListMode{ctx ? ctx->keyListMode() : 0}
+{
+}
+
+Context::KeyListModeSaver::~KeyListModeSaver()
+{
+ if (mCtx) {
+ mCtx->setKeyListMode(mKeyListMode);
+ }
+}
+
Context::Context(gpgme_ctx_t ctx) : d(new Private(ctx))
{
}
diff --git a/lang/cpp/src/context.h b/lang/cpp/src/context.h
index 9c2b2a5f..04a1e00a 100644
--- a/lang/cpp/src/context.h
+++ b/lang/cpp/src/context.h
@@ -64,6 +64,17 @@ class GPGMEPP_EXPORT Context
public:
//using GpgME::Protocol;
+ /// RAII-style class for saving/restoring the key list mode.
+ class KeyListModeSaver
+ {
+ public:
+ explicit KeyListModeSaver(Context *ctx);
+ ~KeyListModeSaver();
+ private:
+ Context *mCtx;
+ unsigned int mKeyListMode;
+ };
+
//
// Creation and destruction:
//