]> git.tdb.fi Git - builder.git/blobdiff - source/cache.cpp
Use dynamic_cast to reference when incorrect type is not acceptable
[builder.git] / source / cache.cpp
index a2d68248d14a91fcb641b9c76c59df5e0772f896..229783a002b92cf9b966e0459f010b028a1df490 100644 (file)
@@ -65,7 +65,7 @@ Cache::Cache(SourcePackage &p):
 
 void Cache::set_value(const Target *tgt, const string &k, const string &v)
 {
-       ValueList vl;
+       Values vl;
        vl.push_back(v);
        set_values(tgt, k, vl);
 }
@@ -73,15 +73,15 @@ void Cache::set_value(const Target *tgt, const string &k, const string &v)
 void Cache::append_value(const Target *tgt, const string &k, const string &v)
 {
        Key key(tgt->get_name(), k);
-       DataMap::iterator i = data.find(key);
+       auto i = data.find(key);
        if(i==data.end())
-               i = data.insert(DataMap::value_type(key, ValueList())).first;
+               i = data.insert({ key, Values() }).first;
        i->second.push_back(v);
        changed = true;
        package.get_builder().get_logger().log("cache", format("Updated key %s %s+ %s", tgt->get_name(), k, v));
 }
 
-void Cache::set_values(const Target *tgt, const string &k, const ValueList &v)
+void Cache::set_values(const Target *tgt, const string &k, const Values &v)
 {
        data[Key(tgt->get_name(), k)] = v;
        changed = true;
@@ -90,13 +90,13 @@ void Cache::set_values(const Target *tgt, const string &k, const ValueList &v)
 
 const string &Cache::get_value(const Target *tgt, const string &k)
 {
-       const ValueList &values = get_values(tgt, k);
+       const Values &values = get_values(tgt, k);
        if(values.empty())
                throw logic_error("values.empty()");
        return values.front();
 }
 
-const Cache::ValueList &Cache::get_values(const Target *tgt, const string &k)
+const Cache::Values &Cache::get_values(const Target *tgt, const string &k)
 {
        return get_item(data, Key(tgt->get_name(), k));
 }
@@ -120,7 +120,7 @@ void Cache::load()
                        key.second = read_string(in);
                        if(key.first.empty() || key.second.empty())
                                break;
-                       ValueList &values = data[key];
+                       Values &values = data[key];
                        for(unsigned count = read_count(in); count; --count)
                                values.push_back(read_string(in));
                        package.get_builder().get_logger().log("cache", format("Loaded key %s %s: %s", key.first, key.second, join(values.begin(), values.end())));
@@ -141,12 +141,14 @@ void Cache::save() const
        package.get_builder().get_logger().log("files", format("Writing %s", filename));
        IO::BufferedFile out(filename.str(), IO::M_WRITE);
 
-       for(DataMap::const_iterator i=data.begin(); i!=data.end(); ++i)
+       for(const auto &kvp: data)
        {
-               write_string(out, i->first.first);
-               write_string(out, i->first.second);
-               write_count(out, i->second.size());
-               for(ValueList::const_iterator j=i->second.begin(); j!=i->second.end(); ++j)
-                       write_string(out, *j);
+               write_string(out, kvp.first.first);
+               write_string(out, kvp.first.second);
+               write_count(out, kvp.second.size());
+               for(const string &v: kvp.second)
+                       write_string(out, v);
        }
+
+       changed = false;
 }