§このreadmeは問題ありませんが、Toml ++ホームページの方が優れています。ショ和
次の例は、簡潔さを支持します。代わりに、完全なAPIドキュメントと特定のコードスニペットをたくさん希望する場合は、プロジェクトのホームページにアクセスしてください
TOMLファイルconfiguration.tomlが含まれている場合は、以下を含みます。
[ library ]
name = " toml++ "
authors = [ " Mark Gillard <[email protected]> " ]
[ dependencies ]
cpp = 17C ++でそれを読むのは、Toml ++で簡単です:
# 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 " ;
examples Directoryにはさらにコードの例があり、APIドキュメントの一部としてさらに多くのコードの例があります。
toml++には、シングルヘッダーとレギュラーの2つのフレーバーがあります。 APIは両方で同じです。
toml.hppドロップしますtomlplusplus/include#include <toml++/toml.hpp>tomlplusplus/3.4.0をConanfileに追加します。
package.json5にtomlpp追加します。
depends: [
'tomlpp^3.4.0',
]
DDSとは何ですか?
tomlplusplus 、 .tipi/depsに次のエントリを追加することで、tipi.buildプロジェクトで簡単に使用できます。
{
"marzer/tomlplusplus" : {}
} vcpkg install tomlplusplus
ラップをインストールできます。
meson wrap install tomlplusplus
その後、通常の依存関係のように使用できます。
tomlplusplus_dep = dependency ( ' tomlplusplus ' )サブプロジェクトとして直接追加することもできます。
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)FetchContentとは何ですか?
git submodule add --depth 1 https://github.com/marzer/tomlplusplus.git tomlplusplus
C ++ツーリングエコシステムは、自然に覆われていないカオスのフラクタルの悪夢であるため、自然に利用可能なすべてのパッケージングと統合オプションを備えた最新のものではありません。しかし、新しいものがサポートされているのを見ていつも嬉しいです!あなたが見たい統合があり、それを実現するための技術的なノウハウを持っている場合は、自由にプル要求をしてください。
toml++通常のライブラリとして消費したい場合は、心配する依存関係がありません。ただし、ライブラリで作業しているかどうかを認識すべきテスト関連の依存関係がいくつかあります。情報については、貢献を参照してください。
多くの構成可能なオプションは、プリプロセッサ#definesの形で公開されます。おそらくこれらをいじる必要はないでしょうが、そうする場合は、TOML ++を含める前にそれらを設定してください。
| オプション | タイプ | 説明 | デフォルト |
|---|---|---|---|
TOML_ASSERT(expr) | 関数マクロ | ライブラリが使用するアサート機能を設定します。 | assert() |
TOML_CALLCONV | 定義する | エクスポートされたフリー/静的関数に適用するための慣習を呼び出します。 | 未定義 |
TOML_CONFIG_HEADER | 文字列リテラル | ライブラリの残りの部分の前に指定されたヘッダーファイルを含めます。 | 未定義 |
TOML_ENABLE_FORMATTERS | ブール | フォーマッタを有効にします。コンパイル時間とバイナリサイズを改善する必要がない場合は、 0に設定します。 | 1 |
TOML_ENABLE_FLOAT16 | ブール | 組み込み_Float16タイプのサポートを有効にします。 | コンパイラ設定ごと |
TOML_ENABLE_PARSER | ブール | パーサーを有効にします。コンパイル時間とバイナリサイズを改善するために必要ない場合は、 0に設定します。 | 1 |
TOML_ENABLE_UNRELEASED_FEATURES | ブール | 未発表のTOML言語機能のサポートを有効にします。 | 0 |
TOML_ENABLE_WINDOWS_COMPAT | ブール | 広い弦と狭い弦の間の透明な変換のサポートを可能にします。 | Windowsで1 |
TOML_EXCEPTIONS | ブール | ライブラリが例外を使用するかどうかを設定します。 | コンパイラ設定ごと |
TOML_EXPORTED_CLASS | 定義する | APIエクスポートアノテーションはクラスに追加します。 | 未定義 |
TOML_EXPORTED_MEMBER_FUNCTION | 定義する | APIエクスポート注釈は、非静的なクラスメンバー関数に追加します。 | 未定義 |
TOML_EXPORTED_FREE_FUNCTION | 定義する | APIエクスポートアノテーションは無料関数に追加されます。 | 未定義 |
TOML_EXPORTED_STATIC_FUNCTION | 定義する | APIエクスポート注釈は、静的関数に追加します。 | 未定義 |
TOML_HEADER_ONLY | ブール | これを無効にして、TOML ++の実装がコンパイルされている場所を明示的に制御します(例:ライブラリの一部として)。 | 1 |
TOML_IMPLEMENTATION | 定義する | これを定義して、 TOML_HEADER_ONLY == 0ときにライブラリの実装を編集できるようにします。 | 未定義 |
TOML_OPTIONAL_TYPE | タイプ名 | STD ::オプションよりも良いものが必要な場合、ライブラリが使用するoptional<T>タイプをオーバーライドします。 | 未定義 |
TOML_SMALL_FLOAT_TYPE | タイプ名 | コードベースにカスタム「小さなフロート」タイプ(半分の程度)がある場合、これはToml ++にそれを伝えます。 | 未定義 |
TOML_SMALL_INT_TYPE | タイプ名 | コードベースにカスタムの「小整数」タイプ(24ビットなど)がある場合、これはToml ++にそれを伝えます。 | 未定義 |
これらの多くはABIの意味を持っています。ライブラリは、インラインネームスペースを使用して、誤った組み合わせを誤ってリンクすることを防ぎます。
ライブラリはいつでも、TOMLの最近リリースされたバージョンが何であれ、TOMLマスターからの多くの未発表の機能をオプトインサポートし、TOML問題リストからのいくつかの正気のチェリーピックをサポートすることを目指しています。
ライブラリは、Preprocessorを介して完全にサポートされている最新の番号付き言語バージョンをdefiest TOML_LANG_MAJOR 、 TOML_LANG_MINOR 、 TOML_LANG_PATCHを宣伝しています。
+09:30:00ではなく09:30サポートする必要がありますeエスケープコードシーケンス( u001Bの速記)を含めるxHHエスケープコードシーケンスを含めます
#define TOML_ENABLE_UNRELEASED_FEATURES 1これらの機能を有効にする(構成を参照)。
以下を含むすべての機能がサポートされています。
すべての機能がサポートされています。
貢献は大歓迎です!問題を報告するか、プルリクエストを送信することにより。プルリクエストを送信する場合は、進むために必要なすべての詳細については、寄付をご覧ください。
TOML ++は、MITライセンスの条件に基づいてライセンスされています - ライセンスを参照してください。
UTF-8デコードは、BJoern Hoehrmannの「柔軟で経済的なUTF-8デコーダー」に基づく状態マシンを使用して実行されます。
toml::path S機能を設計および実装しましたバグレポートと機能リクエストについては、GitHubでの問題システムの使用を検討してください。他の手段で手を差し伸べることを歓迎してください。可能性の高い応答時間の順: