From 3d7810e8d940229435feb8f9811607ee831abf4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Wed, 2 Feb 2022 10:57:01 +0100 Subject: cpp: Add internal adapter for passing a vector of strings to gpgme * lang/cpp/src/util.h (class StringsToCStrings): New. * lang/cpp/src/util.cpp: New. * lang/cpp/src/Makefile.am: Add new file. -- This adapter simplifies passing a vector of strings as NULL-terminated array of const char* to the C-interface of gpgme. GnuPG-bug-id: 5808 --- lang/cpp/src/util.h | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'lang/cpp/src/util.h') diff --git a/lang/cpp/src/util.h b/lang/cpp/src/util.h index e04115bf..b6f9ca50 100644 --- a/lang/cpp/src/util.h +++ b/lang/cpp/src/util.h @@ -1,8 +1,10 @@ /* - util.h - some inline helper functions + util.h - some internal helpers Copyright (C) 2004 Klarälvdalens Datakonsult AB 2016 Bundesamt für Sicherheit in der Informationstechnik Software engineering by Intevation GmbH + Copyright (c) 2022 g10 Code GmbH + Software engineering by Ingo Klöcker This file is part of GPGME++. @@ -175,4 +177,25 @@ static inline gpgme_sig_notation_flags_t add_to_gpgme_sig_notation_flags_t(unsi return static_cast(result); } +/** + * Adapter for passing a vector of strings as NULL-terminated array of + * const char* to the C-interface of gpgme. + */ +class StringsToCStrings +{ +public: + explicit StringsToCStrings(const std::vector &v); + ~StringsToCStrings() = default; + + StringsToCStrings(const StringsToCStrings &) = delete; + StringsToCStrings &operator=(const StringsToCStrings &) = delete; + StringsToCStrings(StringsToCStrings &&) = delete; + StringsToCStrings &operator=(StringsToCStrings &&) = delete; + + const char **c_strs() const; +private: + const std::vector m_strings; + mutable std::vector m_cstrings; +}; + #endif // __GPGMEPP_UTIL_H__ -- cgit v1.2.3