19concept Serializer =
requires(
const Value& data, std::istream& is) {
20 typename S::data_type;
21 { S::Parse(is) } -> std::same_as<StatusOr<Value>>;
22 { S::Stringify(data) } -> std::convertible_to<std::string>;
26template <Serializer S>
29 std::ifstream file(path);
30 if (!file.is_open()) {
33 return S::Parse(file);
37template <Serializer S>
40 std::ofstream file(path);
41 if (!file.is_open()) {
44 file << S::Stringify(data);
A value-or-error type, similar to std::expected (C++23).
Definition status.h:100
A lightweight status object carrying an error code and message.
Definition status.h:23
A self-contained, recursive value type for configuration data.
Definition value.h:26
Concept for serializer types.
Definition serializer.h:19
C++20 compile-time type-safe configuration library.
Definition conf.h:13
auto NotFoundError(std::string message) -> Status
Returns a NotFound error status.
Definition status.h:55
auto ReadFile(const std::string &path) -> StatusOr< Value >
Helper to read a file into a Value tree via a serializer.
Definition serializer.h:27
auto InternalError(std::string message) -> Status
Returns an Internal error status.
Definition status.h:67
auto OkStatus() -> Status
Returns an OK status.
Definition status.h:52
auto WriteFile(const std::string &path, const Value &data) -> Status
Helper to write a Value tree to a file via a serializer.
Definition serializer.h:38