Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
experimental-features.hh
Go to the documentation of this file.
1#pragma once
3
5#include "lix/libutil/json-fwd.hh"
7#include <type_traits>
8
9namespace nix {
10
15{
16 #include "experimental-features.gen.inc"
17 NumXpFeatures, // number of available experimental features, do not use
18};
19
20template<>
21struct json::avoids_null<ExperimentalFeature> : std::true_type
22{};
23
24enum struct ExperimentalFeatures {};
25
26inline ExperimentalFeatures operator| (ExperimentalFeatures a, ExperimentalFeatures b) {
27 return static_cast<ExperimentalFeatures>(static_cast<size_t>(a) | static_cast<size_t>(b));
28}
29
30inline ExperimentalFeatures operator| (ExperimentalFeatures a, ExperimentalFeature b) {
31 return a | static_cast<ExperimentalFeatures>(1 << static_cast<size_t>(b));
32}
33
34inline ExperimentalFeatures operator& (ExperimentalFeatures a, ExperimentalFeature b) {
35 return static_cast<ExperimentalFeatures>(static_cast<size_t>(a) & (1 << static_cast<size_t>(b)));
36}
37
42
47const std::optional<ExperimentalFeature> parseExperimentalFeature(
48 const std::string_view & name);
49
54std::string_view showExperimentalFeature(const ExperimentalFeature);
55
59std::ostream & operator<<(
60 std::ostream & str,
61 const ExperimentalFeature & feature);
62
67ExperimentalFeatures parseFeatures(const std::set<std::string> &);
68
74JSON documentExperimentalFeatures();
75
80void to_json(JSON &, const ExperimentalFeature &);
81void from_json(const JSON &, ExperimentalFeature &);
82
83void to_json(JSON &, const ExperimentalFeatures &);
84void from_json(const JSON &, ExperimentalFeatures &);
85
90class MissingExperimentalFeature : public Error
91{
92public:
97
98 MissingExperimentalFeature(ExperimentalFeature missingFeature);
99};
100
101}
ExperimentalFeature missingFeature
Definition experimental-features.hh:96
This file defines two main structs/classes used in nix error handling.
ExperimentalFeature
Definition experimental-features.hh:15
ExperimentalFeature Xp
Definition experimental-features.hh:41
Definition json.hh:39