Browse Source

cmFiletimeCache: Add cmFiletimeCache::Remove method

Sebastian Holtermann 6 years ago
parent
commit
5f6c236481
2 changed files with 16 additions and 6 deletions
  1. 8 3
      Source/cmFileTimeCache.cxx
  2. 8 3
      Source/cmFileTimeCache.h

+ 8 - 3
Source/cmFileTimeCache.cxx

@@ -14,8 +14,8 @@ bool cmFileTimeCache::Load(std::string const& fileName, cmFileTime& fileTime)
 {
   // Use the stored time if available.
   {
-    auto fit = this->FileTimes.find(fileName);
-    if (fit != this->FileTimes.end()) {
+    auto fit = this->Cache.find(fileName);
+    if (fit != this->Cache.end()) {
       fileTime = fit->second;
       return true;
     }
@@ -25,10 +25,15 @@ bool cmFileTimeCache::Load(std::string const& fileName, cmFileTime& fileTime)
     return false;
   }
   // Store file time in cache
-  this->FileTimes[fileName] = fileTime;
+  this->Cache[fileName] = fileTime;
   return true;
 }
 
+bool cmFileTimeCache::Remove(std::string const& fileName)
+{
+  return (this->Cache.erase(fileName) != 0);
+}
+
 bool cmFileTimeCache::Compare(std::string const& f1, std::string const& f2,
                               int* result)
 {

+ 8 - 3
Source/cmFileTimeCache.h

@@ -5,7 +5,7 @@
 
 #include "cmConfigure.h" // IWYU pragma: keep
 
-#include "cmFileTime.h"
+#include "cmFileTime.h" // IWYU pragma: keep
 #include <string>
 #include <unordered_map>
 
@@ -27,6 +27,12 @@ public:
    */
   bool Load(std::string const& fileName, cmFileTime& fileTime);
 
+  /**
+   * @brief Removes a file time from the cache
+   * @return true if the file was found in the cache and removed
+   */
+  bool Remove(std::string const& fileName);
+
   /**
    * @brief Compare file modification times.
    * @return true for successful comparison and false for error.
@@ -44,8 +50,7 @@ public:
   bool DifferS(std::string const& f1, std::string const& f2);
 
 private:
-  typedef std::unordered_map<std::string, cmFileTime> FileTimeMap;
-  FileTimeMap FileTimes;
+  std::unordered_map<std::string, cmFileTime> Cache;
 };
 
 #endif