mirror of
https://github.com/NixOS/nix.git
synced 2025-11-16 15:32:43 +01:00
Merge pull request #13688 from xokdvium/odr-toplevel-types
treewide: Move private types and code into anonymous namespaces
This commit is contained in:
commit
4a7285c649
5 changed files with 23 additions and 10 deletions
|
|
@ -10,12 +10,16 @@
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
struct State
|
struct State
|
||||||
{
|
{
|
||||||
std::map<Path, int> priorities;
|
std::map<Path, int> priorities;
|
||||||
unsigned long symlinks = 0;
|
unsigned long symlinks = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
/* For each activated package, create symlinks */
|
/* For each activated package, create symlinks */
|
||||||
static void createLinks(State & state, const Path & srcDir, const Path & dstDir, int priority)
|
static void createLinks(State & state, const Path & srcDir, const Path & dstDir, int priority)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,8 @@ std::optional<std::string> RootArgs::needsCompletion(std::string_view s)
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Basically this is `typedef std::optional<Parser> Parser(std::string_view s, Strings & r);`
|
* Basically this is `typedef std::optional<Parser> Parser(std::string_view s, Strings & r);`
|
||||||
*
|
*
|
||||||
|
|
@ -246,6 +248,8 @@ void ParseQuoted::operator()(std::shared_ptr<Parser> & state, Strings & r)
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
Strings parseShebangContent(std::string_view s)
|
Strings parseShebangContent(std::string_view s)
|
||||||
{
|
{
|
||||||
Strings result;
|
Strings result;
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,7 @@ Hash newHashAllowEmpty(std::string_view hashStr, std::optional<HashAlgorithm> ha
|
||||||
return Hash::parseAny(hashStr, ha);
|
return Hash::parseAny(hashStr, ha);
|
||||||
}
|
}
|
||||||
|
|
||||||
union Ctx
|
union Hash::Ctx
|
||||||
{
|
{
|
||||||
blake3_hasher blake3;
|
blake3_hasher blake3;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
|
|
@ -267,7 +267,7 @@ union Ctx
|
||||||
SHA512_CTX sha512;
|
SHA512_CTX sha512;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void start(HashAlgorithm ha, Ctx & ctx)
|
static void start(HashAlgorithm ha, Hash::Ctx & ctx)
|
||||||
{
|
{
|
||||||
if (ha == HashAlgorithm::BLAKE3)
|
if (ha == HashAlgorithm::BLAKE3)
|
||||||
blake3_hasher_init(&ctx.blake3);
|
blake3_hasher_init(&ctx.blake3);
|
||||||
|
|
@ -302,7 +302,7 @@ void blake3_hasher_update_with_heuristics(blake3_hasher * blake3, std::string_vi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update(HashAlgorithm ha, Ctx & ctx, std::string_view data)
|
static void update(HashAlgorithm ha, Hash::Ctx & ctx, std::string_view data)
|
||||||
{
|
{
|
||||||
if (ha == HashAlgorithm::BLAKE3)
|
if (ha == HashAlgorithm::BLAKE3)
|
||||||
blake3_hasher_update_with_heuristics(&ctx.blake3, data);
|
blake3_hasher_update_with_heuristics(&ctx.blake3, data);
|
||||||
|
|
@ -316,7 +316,7 @@ static void update(HashAlgorithm ha, Ctx & ctx, std::string_view data)
|
||||||
SHA512_Update(&ctx.sha512, data.data(), data.size());
|
SHA512_Update(&ctx.sha512, data.data(), data.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void finish(HashAlgorithm ha, Ctx & ctx, unsigned char * hash)
|
static void finish(HashAlgorithm ha, Hash::Ctx & ctx, unsigned char * hash)
|
||||||
{
|
{
|
||||||
if (ha == HashAlgorithm::BLAKE3)
|
if (ha == HashAlgorithm::BLAKE3)
|
||||||
blake3_hasher_finalize(&ctx.blake3, hash, BLAKE3_OUT_LEN);
|
blake3_hasher_finalize(&ctx.blake3, hash, BLAKE3_OUT_LEN);
|
||||||
|
|
@ -332,7 +332,7 @@ static void finish(HashAlgorithm ha, Ctx & ctx, unsigned char * hash)
|
||||||
|
|
||||||
Hash hashString(HashAlgorithm ha, std::string_view s, const ExperimentalFeatureSettings & xpSettings)
|
Hash hashString(HashAlgorithm ha, std::string_view s, const ExperimentalFeatureSettings & xpSettings)
|
||||||
{
|
{
|
||||||
Ctx ctx;
|
Hash::Ctx ctx;
|
||||||
Hash hash(ha, xpSettings);
|
Hash hash(ha, xpSettings);
|
||||||
start(ha, ctx);
|
start(ha, ctx);
|
||||||
update(ha, ctx, s);
|
update(ha, ctx, s);
|
||||||
|
|
@ -350,7 +350,7 @@ Hash hashFile(HashAlgorithm ha, const Path & path)
|
||||||
HashSink::HashSink(HashAlgorithm ha)
|
HashSink::HashSink(HashAlgorithm ha)
|
||||||
: ha(ha)
|
: ha(ha)
|
||||||
{
|
{
|
||||||
ctx = new Ctx;
|
ctx = new Hash::Ctx;
|
||||||
bytes = 0;
|
bytes = 0;
|
||||||
start(ha, *ctx);
|
start(ha, *ctx);
|
||||||
}
|
}
|
||||||
|
|
@ -378,7 +378,7 @@ HashResult HashSink::finish()
|
||||||
HashResult HashSink::currentHash()
|
HashResult HashSink::currentHash()
|
||||||
{
|
{
|
||||||
flush();
|
flush();
|
||||||
Ctx ctx2 = *ctx;
|
Hash::Ctx ctx2 = *ctx;
|
||||||
Hash hash(ha);
|
Hash hash(ha);
|
||||||
nix::finish(ha, ctx2, hash.hash);
|
nix::finish(ha, ctx2, hash.hash);
|
||||||
return HashResult(hash, bytes);
|
return HashResult(hash, bytes);
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,9 @@ extern const StringSet hashFormats;
|
||||||
|
|
||||||
struct Hash
|
struct Hash
|
||||||
{
|
{
|
||||||
|
/** Opaque handle type for the hash calculation state. */
|
||||||
|
union Ctx;
|
||||||
|
|
||||||
constexpr static size_t maxHashSize = 64;
|
constexpr static size_t maxHashSize = 64;
|
||||||
size_t hashSize = 0;
|
size_t hashSize = 0;
|
||||||
uint8_t hash[maxHashSize] = {};
|
uint8_t hash[maxHashSize] = {};
|
||||||
|
|
@ -222,8 +225,6 @@ std::optional<HashAlgorithm> parseHashAlgoOpt(std::string_view s);
|
||||||
*/
|
*/
|
||||||
std::string_view printHashAlgo(HashAlgorithm ha);
|
std::string_view printHashAlgo(HashAlgorithm ha);
|
||||||
|
|
||||||
union Ctx;
|
|
||||||
|
|
||||||
struct AbstractHashSink : virtual Sink
|
struct AbstractHashSink : virtual Sink
|
||||||
{
|
{
|
||||||
virtual HashResult finish() = 0;
|
virtual HashResult finish() = 0;
|
||||||
|
|
@ -233,7 +234,7 @@ class HashSink : public BufferedSink, public AbstractHashSink
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
HashAlgorithm ha;
|
HashAlgorithm ha;
|
||||||
Ctx * ctx;
|
Hash::Ctx * ctx;
|
||||||
uint64_t bytes;
|
uint64_t bytes;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,15 @@
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
struct Info
|
struct Info
|
||||||
{
|
{
|
||||||
std::string outputName;
|
std::string outputName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
// name -> version -> store paths
|
// name -> version -> store paths
|
||||||
typedef std::map<std::string, std::map<std::string, std::map<StorePath, Info>>> GroupedPaths;
|
typedef std::map<std::string, std::map<std::string, std::map<StorePath, Info>>> GroupedPaths;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue