aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/references.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/references.hh')
-rw-r--r--src/libstore/references.hh29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/libstore/references.hh b/src/libstore/references.hh
index 013809d12..c38bdd720 100644
--- a/src/libstore/references.hh
+++ b/src/libstore/references.hh
@@ -7,5 +7,32 @@ namespace nix {
PathSet scanForReferences(const Path & path, const PathSet & refs,
HashResult & hash);
-
+
+struct RewritingSink : Sink
+{
+ std::string from, to, prev;
+ Sink & nextSink;
+ uint64_t pos = 0;
+
+ std::vector<uint64_t> matches;
+
+ RewritingSink(const std::string & from, const std::string & to, Sink & nextSink);
+
+ void operator () (const unsigned char * data, size_t len) override;
+
+ void flush();
+};
+
+struct HashModuloSink : AbstractHashSink
+{
+ HashSink hashSink;
+ RewritingSink rewritingSink;
+
+ HashModuloSink(HashType ht, const std::string & modulus);
+
+ void operator () (const unsigned char * data, size_t len) override;
+
+ HashResult finish() override;
+};
+
}