21#include "StringTools.hpp"
29enum class ConfigOutputMode : std::uint8_t { Active = 0, AllDefaults, ActiveSubcommandDefaults };
43 CLI11_NODISCARD std::string
fullname()
const;
49 std::vector<ConfigItem> items{};
53 virtual std::string
to_config(
const App *,
bool,
bool, std::string)
const = 0;
57 to_config(
const App *app, ConfigOutputMode mode,
bool write_description, std::string prefix)
const;
60 virtual std::vector<ConfigItem>
from_config(std::istream &)
const = 0;
66 CLI11_NODISCARD std::vector<ConfigItem>
from_file(
const std::string &name)
const;
104 to_config(
const App * , ConfigOutputMode mode,
bool write_description, std::string prefix)
const override;
107 to_config(
const App * ,
bool default_also,
bool write_description, std::string prefix)
const override;
109 std::vector<ConfigItem>
from_config(std::istream &input)
const override;
179using ConfigTOML = ConfigBase;
182class ConfigINI :
public ConfigTOML {
Creates a command line program, with very few defaults.
Definition App.hpp:114
This converter works with INI/TOML files; to write INI files use ConfigINI.
Definition ConfigFwd.hpp:73
std::string configSection
Specify the configuration section that should be used.
Definition ConfigFwd.hpp:100
ConfigBase * comment(char cchar)
Specify the configuration for comment characters.
Definition ConfigFwd.hpp:111
ConfigBase * arrayDelimiter(char aSep)
Specify the delimiter character for an array.
Definition ConfigFwd.hpp:122
ConfigBase * quoteCharacter(char qString, char literalChar)
Specify the quote characters used around strings and literal strings.
Definition ConfigFwd.hpp:132
std::string to_config(const App *, ConfigOutputMode mode, bool write_description, std::string prefix) const override
Convert an app into a configuration.
Definition Config_inl.hpp:591
char arraySeparator
the character used to separate elements in an array
Definition ConfigFwd.hpp:82
std::string & sectionRef()
get a reference to the configuration section
Definition ConfigFwd.hpp:153
ConfigBase * arrayBounds(char aStart, char aEnd)
Specify the start and end characters for an array.
Definition ConfigFwd.hpp:116
ConfigBase * maxLayers(uint8_t layers)
Specify the maximum number of parents.
Definition ConfigFwd.hpp:138
ConfigBase * allowDuplicateFields(bool value=true)
specify that multiple duplicate arguments should be merged even if not sequential
Definition ConfigFwd.hpp:172
CLI11_NODISCARD const std::string & section() const
get the section
Definition ConfigFwd.hpp:155
std::vector< ConfigItem > from_config(std::istream &input) const override
Convert a configuration into an app.
Definition Config_inl.hpp:298
std::uint8_t maximumLayers
the maximum number of layers to allow
Definition ConfigFwd.hpp:90
ConfigBase * commentDefaults(bool comDef=true)
comment default value options
Definition ConfigFwd.hpp:148
char stringQuote
the character to use around strings
Definition ConfigFwd.hpp:86
ConfigBase * section(const std::string §ionName)
specify a particular section of the configuration file to use
Definition ConfigFwd.hpp:157
ConfigBase * valueSeparator(char vSep)
Specify the delimiter between a name and value.
Definition ConfigFwd.hpp:127
char valueDelimiter
the character used separate the name from the value
Definition ConfigFwd.hpp:84
char arrayStart
the character used to start an array '\0' is a default to not use
Definition ConfigFwd.hpp:78
char parentSeparatorChar
the separator used to separator parent layers
Definition ConfigFwd.hpp:92
bool allowMultipleDuplicateFields
specify the config reader should collapse repeated field names to a single vector
Definition ConfigFwd.hpp:96
CLI11_NODISCARD int16_t index() const
get the section index
Definition ConfigFwd.hpp:165
char literalQuote
the character to use around single characters and literal strings
Definition ConfigFwd.hpp:88
ConfigBase * index(int16_t sectionIndex)
specify a particular index in the section to use (-1) for all sections to use
Definition ConfigFwd.hpp:167
int16_t & indexRef()
get a reference to the configuration index
Definition ConfigFwd.hpp:163
char arrayEnd
the character used to end an array '\0' is a default to not use
Definition ConfigFwd.hpp:80
ConfigBase * parentSeparator(char sep)
Specify the separator to use for parent layers.
Definition ConfigFwd.hpp:143
bool commentDefaultsBool
comment default values
Definition ConfigFwd.hpp:94
int16_t configIndex
Specify the configuration index to use for arrayed sections.
Definition ConfigFwd.hpp:98
char commentChar
the character used for comments
Definition ConfigFwd.hpp:76
This class provides a converter for configuration files.
Definition ConfigFwd.hpp:47
virtual CLI11_NODISCARD std::string to_flag(const ConfigItem &item) const
Get a flag value.
Definition Config_inl.hpp:42
virtual std::string to_config(const App *, bool, bool, std::string) const =0
Convert an app into a configuration.
CLI11_NODISCARD std::vector< ConfigItem > from_file(const std::string &name) const
Parse a config file, throw an error (ParseError:ConfigParseError or FileError) on failure.
Definition Config_inl.hpp:52
virtual ~Config()=default
Virtual destructor.
virtual std::vector< ConfigItem > from_config(std::istream &) const =0
Convert a configuration into an app.
Holds values to load into Options.
Definition ConfigFwd.hpp:32
CLI11_NODISCARD std::string fullname() const
The list of parents and name joined by ".".
Definition Config_inl.hpp:30
std::vector< std::string > inputs
Listing of inputs.
Definition ConfigFwd.hpp:39
std::string name
This is the name.
Definition ConfigFwd.hpp:37
bool multiline
indicator if a multiline vector separator was inserted
Definition ConfigFwd.hpp:41
std::vector< std::string > parents
This is the list of parents.
Definition ConfigFwd.hpp:34