From 4b93f47565f70860f20ddf6ea49aca0899f6855b Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 1 Mar 2023 13:50:06 +0100 Subject: [PATCH] Utils: Iterate environment via callback Iterators expose the underlying datastructure and get in the way of moving towards "env as stack of changes" Task-number: QTCREATORBUG-28357 Change-Id: I69e3b53e62ed4c9ab394779e97afbc6fd1986838 Reviewed-by: Marcus Tillmanns --- src/libs/utils/environment.cpp | 6 ++++++ src/libs/utils/environment.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 96e7ea17758..6d8785c9d73 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -24,6 +24,12 @@ NameValueItems Environment::diff(const Environment &other, bool checkAppendPrepe return m_dict.diff(other.m_dict, checkAppendPrepend); } +void Environment::forEachEntry(const std::function &callBack) const +{ + for (auto it = m_dict.m_values.constBegin(); it != m_dict.m_values.constEnd(); ++it) + callBack(it.key().name, it.value().first, it.value().second); +} + bool Environment::hasChanges() const { return m_dict.size() != 0; diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h index e6bf46b32dd..7d670a4ae79 100644 --- a/src/libs/utils/environment.h +++ b/src/libs/utils/environment.h @@ -93,6 +93,8 @@ public: const_iterator constEnd() const { return m_dict.constEnd(); } // FIXME: avoid const_iterator constFind(const QString &name) const { return m_dict.constFind(name); } // FIXME: avoid + void forEachEntry(const std::function &callBack) const; + friend bool operator!=(const Environment &first, const Environment &second) { return first.m_dict != second.m_dict;