/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2024-2025 Red Hat, inc. * * Global configuration handling */ #pragma once #include #include #include #include #include #include #include "libcamera/internal/value_node.h" namespace libcamera { class GlobalConfiguration { public: GlobalConfiguration(); unsigned int version() const; const ValueNode &configuration() const; template std::optional option( const std::initializer_list confPath) const { const ValueNode *c = &configuration(); for (auto part : confPath) { c = &(*c)[part]; if (!*c) return {}; } return c->get(); } std::optional> listOption( const std::initializer_list confPath) const; private: void load(); bool loadFile(const std::filesystem::path &fileName); std::unique_ptr configuration_ = std::make_unique(); }; } /* namespace libcamera */