aboutsummaryrefslogtreecommitdiffstats
path: root/src/file_cache.cc
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2020-06-26 18:46:21 -0700
committerDan Willemsen <dwillemsen@google.com>2020-06-26 18:52:06 -0700
commit979e7ae6e417ae4ee45e835104b66191ae16a14c (patch)
tree6b5075e832cbdf2a7996a25a26659363527b6e4c /src/file_cache.cc
parent003cf51e9b6da48063c90cf4c6710fde103c9c4a (diff)
downloadplatform_build_kati-979e7ae6e417ae4ee45e835104b66191ae16a14c.tar.gz
platform_build_kati-979e7ae6e417ae4ee45e835104b66191ae16a14c.tar.bz2
platform_build_kati-979e7ae6e417ae4ee45e835104b66191ae16a14c.zip
Refactor source tree into directories
Now instead of almost every file in the top level, move the old go code into its own directory 'golang', and the C++ code into it's own 'src' Also removes a few obsolete scripts that were used to work on Android before Android fully switched to Kati.
Diffstat (limited to 'src/file_cache.cc')
-rw-r--r--src/file_cache.cc65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/file_cache.cc b/src/file_cache.cc
new file mode 100644
index 0000000..fe16c3b
--- /dev/null
+++ b/src/file_cache.cc
@@ -0,0 +1,65 @@
+// Copyright 2015 Google Inc. All rights reserved
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// +build ignore
+
+#include "file_cache.h"
+
+#include <unordered_map>
+
+#include "file.h"
+
+static MakefileCacheManager* g_instance;
+
+MakefileCacheManager::MakefileCacheManager() {}
+
+MakefileCacheManager::~MakefileCacheManager() {}
+
+MakefileCacheManager* MakefileCacheManager::Get() {
+ return g_instance;
+}
+
+class MakefileCacheManagerImpl : public MakefileCacheManager {
+ public:
+ MakefileCacheManagerImpl() { g_instance = this; }
+
+ virtual ~MakefileCacheManagerImpl() {
+ for (auto p : cache_) {
+ delete p.second;
+ }
+ }
+
+ virtual Makefile* ReadMakefile(const string& filename) override {
+ Makefile* result = NULL;
+ auto p = cache_.emplace(filename, result);
+ if (p.second) {
+ p.first->second = result = new Makefile(filename);
+ } else {
+ result = p.first->second;
+ }
+ return result;
+ }
+
+ virtual void GetAllFilenames(unordered_set<string>* out) override {
+ for (const auto& p : cache_)
+ out->insert(p.first);
+ }
+
+ private:
+ unordered_map<string, Makefile*> cache_;
+};
+
+MakefileCacheManager* NewMakefileCacheManager() {
+ return new MakefileCacheManagerImpl();
+}