Figcone Versions Save

Read JSON, YAML, TOML, XML or INI configuration by declaring a struct

v2.3.0

1 year ago
  • Added support for non-aggregate config structures (the user must inherit figcone::Config constructors with using Config::Config; declaration)
  • Added clang-format config
  • Updated the sfun library to v3.0.0

v2.2.2

1 year ago
  • Set minimum supported CMake version to 3.18

v2.2.1

1 year ago
  • Updated the nameof library, now figcone can be used with MSVC compiler when functionality provided by nameof is enabled (C++20 is required)

v2.2.0

1 year ago
  • From now on built-in config formats support is provided by figcone_formats static library which is built and linked automatically if any format is enabled in CMake. That means that figcone isn't a header-only library anymore if any config format support is enabled. If you disable a built-in config format support (and creation of library figcone_formats) by unsetting FIGCONE_USE_ALL CMake variable, figcone still can be used as a header-only library, for example, for providing an interface for your own parser.
  • figcone config formats support headers were replaced to figcone/format/<format name> directories. It could affect you, if you included figcone_toml/datetime.h header, now it's located in figcone/format/toml/datetime.h
  • If you used <figcone_yaml>: rapidyaml definitions is built into figcone_formats library, so you don't need to create a separate yaml_impl.cpp in your project anymore.
  • Fixed issues on MSVC compiler, now figcone supports Windows platform (although currently functionality provided by nameof library isn't supported by MSVC)
  • CMake configuration was updated to use utilities from seal_lake library.
  • Added GitHub Actions configuration for CI pipeline

v2.1.2

1 year ago
  • updated sfun library to v2.1.1
  • updated figcone_tree library to v0.10.1
  • updated figcone_ini library to v0.10.1
  • updated figcone_json library to v0.10.1
  • updated figcone_shoal library to v0.1.1
  • updated figcone_toml library to v0.10.1
  • updated figcone_xml library to v0.10.1
  • updated figcone_yaml library to v0.10.1

v2.1.1

1 year ago
  • Fixed a defect in copy constructor of figcone::optional
  • Added comparison functions for figcone::optional

v2.1.0

1 year ago
  • Added support of shoal configuration format

v2.0.0

1 year ago
  • BREAKING Now configs are created and read with a ConfigReader object. So instead of
auto cfg = MyCfg{};
cfg.readJson("{}");

you need to write it like that:

auto cfgReader = figcone::ConfigReader{};
auto cfg = cfgReader.readJson<MyCfg>("{}");

This change was required for placing all config structure registration data outside the config object. Now figcone::Config contains only a single pointer, besides the user provided data, so by default the config object is a copyable aggregate that can be used however you want.

  • BREAKING Now optional config fields have to use figcone::optional instead of std::optional. figcone::optional - is a std::optional-like wrapper with similar interface.
  • bundled parts of sfun and gsl library were replaced with their fetched versions, system wide installation of nameof library was disabled.

v1.0.0

2 years ago
  • BREAKING Config fields registration macros now require to specify the full type of the field, including the used container: PARAMLIST(foo, std::vector<std::string>), NODELIST(bar, std::deque<MyCfg>), etc. FIGCONE_*LIST macros can use any sequence container, providing emplace_back method FIGCONE_DICT macro can use any associative container, providing emplace method
  • Now, all config field registration methods provide () operator for setting field's default value or enable default initialization. FIGCONE_NODE, FIGCONE_NODELIST and FIGCONE_COPY_NODELIST can only use operator () without parameters, to default initialize the created field;
  • Now config fields can be placed in std::optional, including fields registered with FIGCONE_*LIST and FIGCONE_DICT
  • Now dictionaries can be created with arbitrary mapped type, using the same rules as for parameter types. Key type still must be std::string.

v0.9.0

2 years ago

Initial version