mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
* It is tough to contribute to a project that doesn't use a formatter, * It is extra hard to contribute to a project which has configured the formatter, but ignores it for some files * Code formatting makes it harder to hide obscure / weird bugs by accident or on purpose, Let's rip the bandaid off? Note that PRs currently in flight should be able to be merged relatively easily by applying `clang-format` to their tip prior to merge. Co-authored-by: Graham Christensen <graham@grahamc.com>
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#include "nix/expr/eval-profiler-settings.hh"
|
|
#include "nix/util/configuration.hh"
|
|
#include "nix/util/logging.hh" /* Needs to be included before config-impl.hh */
|
|
#include "nix/util/config-impl.hh"
|
|
#include "nix/util/abstract-setting-to-json.hh"
|
|
|
|
#include <nlohmann/json.hpp>
|
|
|
|
namespace nix {
|
|
|
|
template<>
|
|
EvalProfilerMode BaseSetting<EvalProfilerMode>::parse(const std::string & str) const
|
|
{
|
|
if (str == "disabled")
|
|
return EvalProfilerMode::disabled;
|
|
else if (str == "flamegraph")
|
|
return EvalProfilerMode::flamegraph;
|
|
else
|
|
throw UsageError("option '%s' has invalid value '%s'", name, str);
|
|
}
|
|
|
|
template<>
|
|
struct BaseSetting<EvalProfilerMode>::trait
|
|
{
|
|
static constexpr bool appendable = false;
|
|
};
|
|
|
|
template<>
|
|
std::string BaseSetting<EvalProfilerMode>::to_string() const
|
|
{
|
|
if (value == EvalProfilerMode::disabled)
|
|
return "disabled";
|
|
else if (value == EvalProfilerMode::flamegraph)
|
|
return "flamegraph";
|
|
else
|
|
unreachable();
|
|
}
|
|
|
|
NLOHMANN_JSON_SERIALIZE_ENUM(
|
|
EvalProfilerMode,
|
|
{
|
|
{EvalProfilerMode::disabled, "disabled"},
|
|
{EvalProfilerMode::flamegraph, "flamegraph"},
|
|
});
|
|
|
|
/* Explicit instantiation of templates */
|
|
template class BaseSetting<EvalProfilerMode>;
|
|
|
|
} // namespace nix
|