️ Diese Readme ist in Ordnung, aber die Toml ++ - Homepage ist besser. Euen
Das folgende Beispiel begünstigt Kürze. Wenn Sie stattdessen die vollständige API -Dokumentation und viele bestimmte Code -Snippets bevorzugen, besuchen Sie die Projekt -Homepage
Bei einer TOML configuration.toml mit Folgendes enthält:
[ library ]
name = " toml++ "
authors = [ " Mark Gillard <[email protected]> " ]
[ dependencies ]
cpp = 17Das Lesen in C ++ ist mit TOML ++ einfach:
# include < toml++/toml.hpp >
using namespace std ::literals ;
auto config = toml::parse_file( " configuration.toml " );
// get key-value pairs
std::string_view library_name = config[ " library " ][ " name " ].value_or( " " sv);
std::string_view library_author = config[ " library " ][ " authors " ][ 0 ].value_or( " " sv);
int64_t depends_on_cpp_version = config[ " dependencies " ][ " cpp " ].value_or( 0 );
// modify the data
config.insert_or_assign( " alternatives " , toml::array{
" cpptoml " ,
" toml11 " ,
" Boost.TOML "
});
// use a visitor to iterate over heterogenous data
config.for_each([]( auto & key, auto & value)
{
std::cout << value << " n " ;
if constexpr (toml::is_string< decltype (value)>)
do_something_with_string_values (value);
});
// you can also iterate more 'traditionally' using a ranged-for
for ( auto && [k, v] : config)
{
// ...
}
// re-serialize as TOML
std::cout << config << " n " ;
// re-serialize as JSON
std::cout << toml::json_formatter{ config } << " n " ;
// re-serialize as YAML
std::cout << toml::yaml_formatter{ config } << " n " ;
Sie finden einige weitere Code -Beispiele im examples und noch viel mehr als Teil der API -Dokumentation.
toml++ gibt es in zwei Geschmacksrichtungen: Einzelhochern und regulär. Die API ist für beide gleich.
toml.hpp wo immer Sie in Ihrem Quellbaum mögentomlplusplus/include zu Ihren Include -Pfaden hinzu#include <toml++/toml.hpp> Fügen Sie tomlplusplus/3.4.0 Ihrer Conanfile hinzu.
Fügen Sie tomlpp zu Ihrem package.json5 , zB:
depends: [
'tomlpp^3.4.0',
]
Was ist DDS?
tomlplusplus kann einfach in Tipi.Build -Projekten verwendet werden, indem der folgende Eintrag zu Ihren .tipi/deps hinzugefügt wird:
{
"marzer/tomlplusplus" : {}
} vcpkg install tomlplusplus
Sie können die Wrap mit:
meson wrap install tomlplusplus
Danach können Sie es wie eine reguläre Abhängigkeit verwenden:
tomlplusplus_dep = dependency ( ' tomlplusplus ' )Sie können es auch als Unterprojekt direkt hinzufügen.
include (FetchContent)
FetchContent_Declare(
tomlplusplus
GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
GIT_TAG v3.4.0
)
FetchContent_MakeAvailable(tomlplusplus)
# Example add library: target_link_libraries(MyApp tomlplusplus::tomlplusplus)Was ist FetchContent?
git submodule add --depth 1 https://github.com/marzer/tomlplusplus.git tomlplusplus
Das C ++-Tooling-Ökosystem ist ein fraktaler Albtraum von ungezügeltem Chaos. Natürlich bin ich mit allen verfügbaren Verpackungs- und Integrationsoptionen natürlich nicht auf dem neuesten Stand. Ich bin immer froh zu sehen, dass neue unterstützt werden! Wenn es eine Integration gibt, die Sie sehen möchten, und das technische Know-how haben möchten, um dies zu erreichen, können Sie eine Pull-Anfrage stellen.
Wenn Sie nur toml++ als reguläre Bibliothek konsumieren möchten, müssen Sie keine Abhängigkeiten haben, über die Sie sich Sorgen machen müssen. Es gibt jedoch einige testbezogene Abhängigkeiten zu wissen, ob Sie an der Bibliothek arbeiten. Informationen zu Informationen sehen.
Eine Reihe konfigurierbarer Optionen werden in Form von Precessor #defines höchstwahrscheinlich überhaupt nicht mit diesen anlegen, aber wenn Sie dies tun, stellen Sie sie jedoch vor, bevor Sie TOML ++ einbeziehen.
| Option | Typ | Beschreibung | Standard |
|---|---|---|---|
TOML_ASSERT(expr) | Funktionsmakro | Legt die von der Bibliothek verwendete Assert -Funktion fest. | assert() |
TOML_CALLCONV | definieren | Aufrufen der Konvention, um sich für exportierte kostenlose/statische Funktionen zu bewerben. | undefiniert |
TOML_CONFIG_HEADER | Saitenliteral | Enthält die angegebene Header -Datei vor dem Rest der Bibliothek. | undefiniert |
TOML_ENABLE_FORMATTERS | boolean | Aktiviert die Formatter. Setzen Sie auf 0 , wenn Sie sie nicht benötigen, um Kompilierungszeiten und binäre Größe zu verbessern. | 1 |
TOML_ENABLE_FLOAT16 | boolean | Ermöglicht die Unterstützung des integrierten _Float16 Typs. | pro Compiler -Einstellungen |
TOML_ENABLE_PARSER | boolean | Ermöglicht den Parser. Setzen Sie auf 0 wenn Sie es nicht benötigen, um Kompilierungszeiten und binäre Größe zu verbessern. | 1 |
TOML_ENABLE_UNRELEASED_FEATURES | boolean | Ermöglicht die Unterstützung für unveröffentlichte Toml -Sprachfunktionen. | 0 |
TOML_ENABLE_WINDOWS_COMPAT | boolean | Ermöglicht die Unterstützung der transparenten Umwandlung zwischen breiten und schmalen Saiten. | 1 unter Windows |
TOML_EXCEPTIONS | boolean | Legt fest, ob die Bibliothek Ausnahmen verwendet. | pro Compiler -Einstellungen |
TOML_EXPORTED_CLASS | definieren | API -Export -Annotation, um den Klassen hinzuzufügen. | undefiniert |
TOML_EXPORTED_MEMBER_FUNCTION | definieren | API-Export-Annotation, um nicht-statische Klassenmitgliederfunktionen hinzuzufügen. | undefiniert |
TOML_EXPORTED_FREE_FUNCTION | definieren | API -Export -Annotation zu kostenlosen Funktionen. | undefiniert |
TOML_EXPORTED_STATIC_FUNCTION | definieren | API -Export -Annotation, um statische Funktionen hinzuzufügen. | undefiniert |
TOML_HEADER_ONLY | boolean | Deaktivieren Sie dies, um explizit zu steuern, wo die Implementierung von Toml ++ zusammengestellt wird (z. B. als Teil einer Bibliothek). | 1 |
TOML_IMPLEMENTATION | definieren | Definieren Sie dies, um die Kompilierung der Implementierung der Bibliothek zu aktivieren, wenn TOML_HEADER_ONLY == 0 . | undefiniert |
TOML_OPTIONAL_TYPE | Geben Sie den Namen ein | Überschreiben Sie den optional<T> -Typ, der von der Bibliothek verwendet wird, wenn Sie etwas Besseres als std :: optional benötigen. | undefiniert |
TOML_SMALL_FLOAT_TYPE | Geben Sie den Namen ein | Wenn Ihre Codebasis einen benutzerdefinierten "kleinen Float" -Typ hat (z. B. halb-Präzision), gibt dies Toml ++ darüber mit. | undefiniert |
TOML_SMALL_INT_TYPE | Geben Sie den Namen ein | Wenn Ihre Codebasis einen benutzerdefinierten "Small Integer" -Typ (z. B. 24-Bit) hat, gibt dies Toml ++ darüber mit. | undefiniert |
Eine Reihe von diesen hat ABI -Implikationen; Die Bibliothek verwendet Inline -Namespaces, um zu verhindern, dass Sie versehentlich inkompatible Kombinationen miteinander verbinden.
Zu jeder Zeit zielt die Bibliothek darauf ab, die zuletzt veröffentlichte Version von Toml zu unterstützen, mit der Opt-In-Unterstützung für eine Reihe unveröffentlichter Funktionen des TOML-Meisters und einiger vernünftiger Kirschpicks aus der Toml-Ausgabenliste, bei der die Diskussion stark auf die Aufnahme in eine Veröffentlichung in der Nähe der Nahverkehr hinweist.
Die Bibliothek wirbt für die neueste nummerierte Sprachversion, die sie über den Präprozessor vollständig unterstützt, definiert TOML_LANG_MAJOR , TOML_LANG_MINOR und TOML_LANG_PATCH .
+ in Schlüsselnamen09:30 im Gegensatz zu 09:30:00 unterstützene Escape Code -Sequenz (Kurzschrift für u001B ) einxHH Escape Code -Sequenz ein
#define TOML_ENABLE_UNRELEASED_FEATURES 1um diese Funktionen zu aktivieren (siehe Konfiguration).
Alle unterstützten Funktionen, einschließlich:
Alle Funktionen unterstützt.
Beiträge sind sehr willkommen! Entweder durch Meldung von Problemen oder durch Übermittlung von Pull -Anfragen. Wenn Sie eine Pull -Anfrage einreichen möchten, sehen Sie sich bitte alle Details an, die Sie benötigen, um loszulegen.
TOML ++ ist unter den Bedingungen der MIT -Lizenz lizenziert - siehe Lizenz.
Die UTF-8-Dekodierung erfolgt mit einer Staatsmaschine, die auf Bjoern Hoehrmanns "flexibler und wirtschaftlicher UTF-8-Decoder" basiert.
toml::path sFür Fehlerberichte und Feature -Anfragen sollten Sie das Problemsystem hier unter GitHub verwenden. Für alles andere, obwohl Sie gerne mit anderen Mitteln erreichen können. In der Reihenfolge der wahrscheinlichen Reaktionszeit: