From: Javier Bueno Date: Thu, 21 Feb 2019 20:56:09 +0000 (+0100) Subject: mem-cache: Add a mechanism to iterate all entries of an AssociativeSet X-Git-Tag: v19.0.0.0~1112 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=466d30cbbde67df7490a02149a92fa3e9be3c492;p=gem5.git mem-cache: Add a mechanism to iterate all entries of an AssociativeSet Added functions to obtain an iterator to access all entries of an AssociativeSet container. Change-Id: I1ec555bd97d97e3edaced2b8f61287e922279c26 Reviewed-on: https://gem5-review.googlesource.com/c/16582 Reviewed-by: Daniel Carvalho Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris --- diff --git a/src/mem/cache/prefetch/associative_set.hh b/src/mem/cache/prefetch/associative_set.hh index 99b6a6d07..e4e1b0428 100644 --- a/src/mem/cache/prefetch/associative_set.hh +++ b/src/mem/cache/prefetch/associative_set.hh @@ -195,6 +195,48 @@ class AssociativeSet { * @param entry pointer to the container entry to be inserted */ void insertEntry(Addr addr, bool is_secure, Entry* entry); + + /** Iterator types */ + using const_iterator = typename std::vector::const_iterator; + using iterator = typename std::vector::iterator; + + /** + * Returns an iterator to the first entry of the dictionary + * @result iterator to the first element + */ + iterator begin() + { + return entries.begin(); + } + + /** + * Returns an iterator pointing to the end of the the dictionary + * (placeholder element, should not be accessed) + * @result iterator to the end element + */ + iterator end() + { + return entries.end(); + } + + /** + * Returns an iterator to the first entry of the dictionary + * @result iterator to the first element + */ + const_iterator begin() const + { + return entries.begin(); + } + + /** + * Returns an iterator pointing to the end of the the dictionary + * (placeholder element, should not be accessed) + * @result iterator to the end element + */ + const_iterator end() const + { + return entries.end(); + } }; #endif//__CACHE_PREFETCH_ASSOCIATIVE_SET_HH__