Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
references.hh
Go to the documentation of this file.
1#pragma once
3
4#include "lix/libutil/hash.hh"
5
6namespace nix {
7
8class RefScanSink : public Sink
9{
10 StringSet hashes;
11 StringSet seen;
12
13 std::string tail;
14
15public:
16
17 RefScanSink(StringSet && hashes) : hashes(hashes)
18 { }
19
20 StringSet & getResult()
21 { return seen; }
22
23 void operator () (std::string_view data) override;
24};
25
26struct RewritingSource : Source
27{
28 const std::string::size_type maxRewriteSize;
29 const std::string initials;
30 const StringMap rewrites;
31 std::string rewritten, buffered;
32 std::string_view unreturned;
33 Source * inner;
34
35 static constexpr struct may_change_size_t {
36 explicit may_change_size_t() = default;
37 } may_change_size{};
38
39 RewritingSource(const std::string & from, const std::string & to, Source & inner);
40 RewritingSource(StringMap rewrites, Source & inner);
41 RewritingSource(may_change_size_t, StringMap rewrites, Source & inner);
42
43 size_t read(char * data, size_t len) override;
44};
45
46HashResult computeHashModulo(HashType ht, const std::string & modulus, Source & source);
47
48}
std::pair< Hash, uint64_t > HashResult
Definition hash.hh:167
size_t read(char *data, size_t len) override
Definition references.cc:103
Definition serialise.hh:18
Definition serialise.hh:66