libcamera v0.7.0+1-4ceceb68
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
global_configuration.h
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2024-2025 Red Hat, inc.
4 *
5 * Global configuration handling
6 */
7
8#pragma once
9
10#include <filesystem>
11#include <optional>
12#include <string>
13#include <string_view>
14
16
18
19namespace libcamera {
20
22{
23public:
24 using Configuration = const YamlObject &;
25
27
28 unsigned int version() const;
30
31 template<typename T>
32 std::optional<T> option(
33 const std::initializer_list<std::string_view> confPath) const
34 {
35 const YamlObject *c = &configuration();
36 for (auto part : confPath) {
37 c = &(*c)[part];
38 if (!*c)
39 return {};
40 }
41 return c->get<T>();
42 }
43
44 std::optional<std::vector<std::string>> listOption(
45 const std::initializer_list<std::string_view> confPath) const;
46 std::optional<std::string> envOption(
47 const char *const envVariable,
48 const std::initializer_list<std::string_view> confPath) const;
49 std::optional<std::vector<std::string>> envListOption(
50 const char *const envVariable,
51 const std::initializer_list<std::string_view> confPath,
52 const std::string delimiter = ":") const;
53
54private:
55 bool loadFile(const std::filesystem::path &fileName);
56 void load();
57
58 std::unique_ptr<YamlObject> yamlConfiguration_ =
59 std::make_unique<YamlObject>();
60};
61
62} /* namespace libcamera */
Support for global libcamera configuration.
Definition global_configuration.h:22
std::optional< std::vector< std::string > > envListOption(const char *const envVariable, const std::initializer_list< std::string_view > confPath, const std::string delimiter=":") const
Retrieve the value of the configuration option from a file or environment.
Definition global_configuration.cpp:206
GlobalConfiguration()
Initialize the global configuration.
Definition global_configuration.cpp:117
unsigned int version() const
Retrieve the configuration version.
Definition global_configuration.cpp:229
std::optional< std::vector< std::string > > listOption(const std::initializer_list< std::string_view > confPath) const
Retrieve the value of configuration option confPath.
Definition global_configuration.cpp:146
std::optional< T > option(const std::initializer_list< std::string_view > confPath) const
Retrieve the value of configuration option confPath.
Definition global_configuration.h:32
Configuration configuration() const
Retrieve the libcamera global configuration.
Definition global_configuration.cpp:248
std::optional< std::string > envOption(const char *const envVariable, const std::initializer_list< std::string_view > confPath) const
Retrieve the value of environment variable with a fallback on the configuration file.
Definition global_configuration.cpp:177
A class representing the tree structure of the YAML content.
Definition yaml_parser.h:28
std::optional< T > get() const
Parse the YamlObject as a T value.
Definition yaml_parser.h:175
Top-level libcamera namespace.
Definition backtrace.h:17
Miscellaneous utility functions.
A YAML parser helper.