forked from lix-project/lix
Fill in missing comparison operators for content addresses
This commit is contained in:
parent
0dc2974930
commit
2c21cb6720
1 changed files with 12 additions and 17 deletions
|
@ -3,6 +3,7 @@
|
|||
#include <variant>
|
||||
#include "hash.hh"
|
||||
#include "path.hh"
|
||||
#include "comparator.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
|
@ -46,6 +47,8 @@ std::string renderContentAddressMethod(ContentAddressMethod caMethod);
|
|||
|
||||
struct TextHash {
|
||||
Hash hash;
|
||||
|
||||
GENERATE_CMP(TextHash, me->hash);
|
||||
};
|
||||
|
||||
/// Pair of a hash, and how the file system was ingested
|
||||
|
@ -53,6 +56,8 @@ struct FixedOutputHash {
|
|||
FileIngestionMethod method;
|
||||
Hash hash;
|
||||
std::string printMethodAlgo() const;
|
||||
|
||||
GENERATE_CMP(FixedOutputHash, me->method, me->hash);
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -91,17 +96,13 @@ struct PathReferences
|
|||
std::set<Ref> references;
|
||||
bool hasSelfReference = false;
|
||||
|
||||
bool operator == (const PathReferences<Ref> & other) const
|
||||
{
|
||||
return references == other.references
|
||||
&& hasSelfReference == other.hasSelfReference;
|
||||
}
|
||||
|
||||
/* Functions to view references + hasSelfReference as one set, mainly for
|
||||
compatibility's sake. */
|
||||
StorePathSet referencesPossiblyToSelf(const Ref & self) const;
|
||||
void insertReferencePossiblyToSelf(const Ref & self, Ref && ref);
|
||||
void setReferencesPossiblyToSelf(const Ref & self, std::set<Ref> && refs);
|
||||
|
||||
GENERATE_CMP(PathReferences<Ref>, me->references, me->hasSelfReference);
|
||||
};
|
||||
|
||||
template<typename Ref>
|
||||
|
@ -142,11 +143,15 @@ void PathReferences<Ref>::setReferencesPossiblyToSelf(const Ref & self, std::set
|
|||
struct TextInfo : TextHash {
|
||||
// References for the paths, self references disallowed
|
||||
StorePathSet references;
|
||||
|
||||
GENERATE_CMP(TextInfo, *(const TextHash *)me, me->references);
|
||||
};
|
||||
|
||||
struct FixedOutputInfo : FixedOutputHash {
|
||||
// References for the paths
|
||||
PathReferences<StorePath> references;
|
||||
|
||||
GENERATE_CMP(FixedOutputInfo, *(const FixedOutputHash *)me, me->references);
|
||||
};
|
||||
|
||||
typedef std::variant<
|
||||
|
@ -160,17 +165,7 @@ struct StorePathDescriptor {
|
|||
std::string name;
|
||||
ContentAddressWithReferences info;
|
||||
|
||||
bool operator == (const StorePathDescriptor & other) const
|
||||
{
|
||||
return name == other.name;
|
||||
// FIXME second field
|
||||
}
|
||||
|
||||
bool operator < (const StorePathDescriptor & other) const
|
||||
{
|
||||
return name < other.name;
|
||||
// FIXME second field
|
||||
}
|
||||
GENERATE_CMP(StorePathDescriptor, me->name, me->info);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue