mem-cache: Add a mechanism to iterate all entries of an AssociativeSet
authorJavier Bueno <javier.bueno@metempsy.com>
Thu, 21 Feb 2019 20:56:09 +0000 (21:56 +0100)
committerJavier Bueno Hedo <javier.bueno@metempsy.com>
Fri, 22 Feb 2019 10:06:49 +0000 (10:06 +0000)
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 <odanrc@yahoo.com.br>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>

src/mem/cache/prefetch/associative_set.hh

index 99b6a6d078f998f7b74023d8de136d495a668ee8..e4e1b0428265877d0986dd73b485ec5fe81b077c 100644 (file)
@@ -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<Entry>::const_iterator;
+    using iterator = typename std::vector<Entry>::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__