1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 02:21:16 +02:00
nix/src/libstore/names.hh
Jade Lovelace dd75711895 Use std::strong_ordering for version comparison
The actual motive here is the avoidance of integer overflow if we were
to make these use checked NixInts and retain the subtraction.

However, the actual *intent* of this code is a three-way comparison,
which can be done with operator<=>, so we should just do *that* instead.

Change-Id: I7f9a7da1f3176424b528af6d1b4f1591e4ab26bf
2024-07-30 18:13:05 -07:00

36 lines
661 B
C++

#pragma once
///@file
#include <memory>
#include "types.hh"
namespace nix {
struct Regex;
struct DrvName
{
std::string fullName;
std::string name;
std::string version;
unsigned int hits;
DrvName();
DrvName(std::string_view s);
~DrvName();
bool matches(const DrvName & n);
private:
std::unique_ptr<Regex> regex;
};
typedef std::list<DrvName> DrvNames;
std::string_view nextComponent(std::string_view::const_iterator & p,
const std::string_view::const_iterator end);
std::strong_ordering compareVersions(const std::string_view v1, const std::string_view v2);
DrvNames drvNamesFromArgs(const Strings & opArgs);
}