aboutsummaryrefslogtreecommitdiffstats
path: root/lang/cpp/src/util.h
diff options
context:
space:
mode:
Diffstat (limited to 'lang/cpp/src/util.h')
-rw-r--r--lang/cpp/src/util.h25
1 files changed, 24 insertions, 1 deletions
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 <[email protected]>
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<gpgme_sig_notation_flags_t>(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<std::string> &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<std::string> m_strings;
+ mutable std::vector<const char *> m_cstrings;
+};
+
#endif // __GPGMEPP_UTIL_H__