Proxy -> Phantom to match Rust

Sorry, Haskell.
This commit is contained in:
John Ericson 2020-08-05 19:44:08 +00:00
parent cf939055c8
commit ed96e603e1
2 changed files with 8 additions and 8 deletions

View file

@ -58,7 +58,7 @@ void writeStorePathCAMap(const Store & store, Sink & out, const StorePathCAMap &
}
StorePath read(const Store & store, Source & from, Proxy<StorePath> _)
StorePath read(const Store & store, Source & from, Phantom<StorePath> _)
{
return store.parseStorePath(readString(from));
}
@ -461,7 +461,7 @@ std::map<std::string, std::optional<StorePath>> RemoteStore::queryDerivationOutp
auto conn(getConnection());
conn->to << wopQueryDerivationOutputMap << printStorePath(path);
conn.processStderr();
return read(*this, conn->from, Proxy<std::map<std::string, std::optional<StorePath>>> {});
return read(*this, conn->from, Phantom<std::map<std::string, std::optional<StorePath>>> {});
}

View file

@ -72,16 +72,16 @@ void writeStorePaths(const Store & store, Sink & out, const StorePathSet & paths
/* To guide overloading */
template<typename T>
struct Proxy {};
struct Phantom {};
template<typename T>
std::map<std::string, T> read(const Store & store, Source & from, Proxy<std::map<std::string, T>> _)
std::map<std::string, T> read(const Store & store, Source & from, Phantom<std::map<std::string, T>> _)
{
std::map<string, T> resMap;
auto size = (size_t)readInt(from);
while (size--) {
auto thisKey = readString(from);
resMap.insert_or_assign(std::move(thisKey), read(store, from, Proxy<T> {}));
resMap.insert_or_assign(std::move(thisKey), read(store, from, Phantom<T> {}));
}
return resMap;
}
@ -97,14 +97,14 @@ void write(const Store & store, Sink & out, const std::map<string, T> & resMap)
}
template<typename T>
std::optional<T> read(const Store & store, Source & from, Proxy<std::optional<T>> _)
std::optional<T> read(const Store & store, Source & from, Phantom<std::optional<T>> _)
{
auto tag = readNum<uint8_t>(from);
switch (tag) {
case 0:
return std::nullopt;
case 1:
return read(store, from, Proxy<T> {});
return read(store, from, Phantom<T> {});
default:
throw Error("got an invalid tag bit for std::optional: %#04x", tag);
}
@ -118,7 +118,7 @@ void write(const Store & store, Sink & out, const std::optional<T> & optVal)
write(store, out, *optVal);
}
StorePath read(const Store & store, Source & from, Proxy<StorePath> _);
StorePath read(const Store & store, Source & from, Phantom<StorePath> _);
void write(const Store & store, Sink & out, const StorePath & storePath);