️ Readme ini baik -baik saja, tetapi beranda Toml ++ lebih baik. ️
Contoh berikut mendukung singkatnya. Jika Anda lebih suka dokumentasi API penuh dan banyak cuplikan kode tertentu, kunjungi homepage proyek
Diberikan configuration.toml file toml.toml yang berisi yang berikut:
[ library ]
name = " toml++ "
authors = [ " Mark Gillard <[email protected]> " ]
[ dependencies ]
cpp = 17Membacanya di C ++ mudah dengan 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 " ;
Anda akan menemukan beberapa contoh kode di direktori examples , dan lebih banyak sebagai bagian dari dokumentasi API.
toml++ hadir dalam dua rasa: header tunggal dan reguler. API adalah sama untuk keduanya.
toml.hpp di mana pun Anda suka di pohon sumber Andatomlplusplus/include ke jalur termasuk Anda#include <toml++/toml.hpp> Tambahkan tomlplusplus/3.4.0 ke conanfile Anda.
Tambahkan tomlpp ke package.json5 Anda.json5, misalnya:
depends: [
'tomlpp^3.4.0',
]
Apa itu DDS?
tomlplusplus dapat dengan mudah digunakan dalam proyek Tipi.Build dengan menambahkan entri berikut ke .tipi/deps Anda:
{
"marzer/tomlplusplus" : {}
} vcpkg install tomlplusplus
Anda dapat memasang bungkusnya dengan:
meson wrap install tomlplusplus
Setelah itu, Anda dapat menggunakannya seperti ketergantungan reguler:
tomlplusplus_dep = dependency ( ' tomlplusplus ' )Anda juga dapat menambahkannya sebagai subproyject secara langsung.
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)Apa itu FetchContent?
git submodule add --depth 1 https://github.com/marzer/tomlplusplus.git tomlplusplus
Ekosistem C ++ Tooling adalah mimpi buruk fraktal kekacauan yang tidak terkendali, jadi secara alami saya tidak akan kecepatan dengan semua opsi kemasan dan integrasi yang tersedia. Saya selalu senang melihat yang baru didukung! Jika ada beberapa integrasi yang ingin Anda lihat dan memiliki pengetahuan teknis untuk mewujudkannya, jangan ragu untuk membuat permintaan tarik.
Jika Anda hanya ingin mengkonsumsi toml++ sebagai perpustakaan biasa maka Anda tidak memiliki ketergantungan yang perlu dikhawatirkan. Ada beberapa dependensi terkait tes yang harus diperhatikan jika Anda sedang mengerjakan perpustakaan. Lihat berkontribusi untuk informasi.
Sejumlah opsi yang dapat dikonfigurasi diekspos dalam bentuk preprocessor #defines kemungkinan besar Anda tidak perlu mengacaukannya sama sekali, tetapi jika Anda melakukannya, atur sebelum memasukkan Toml ++.
| Pilihan | Jenis | Keterangan | Bawaan |
|---|---|---|---|
TOML_ASSERT(expr) | fungsi makro | Mengatur fungsi Asert yang digunakan oleh perpustakaan. | assert() |
TOML_CALLCONV | mendefinisikan | Konvensi panggilan untuk berlaku untuk fungsi gratis/statis yang diekspor. | belum diartikan |
TOML_CONFIG_HEADER | String literal | Termasuk file header yang diberikan sebelum seluruh perpustakaan. | belum diartikan |
TOML_ENABLE_FORMATTERS | Boolean | Memungkinkan formatters. Setel ke 0 jika Anda tidak membutuhkannya untuk meningkatkan waktu kompilasi dan ukuran biner. | 1 |
TOML_ENABLE_FLOAT16 | Boolean | Mengaktifkan dukungan untuk tipe _Float16 bawaan. | per pengaturan kompiler |
TOML_ENABLE_PARSER | Boolean | Memungkinkan parser. Setel ke 0 jika Anda tidak membutuhkannya untuk meningkatkan waktu kompilasi dan ukuran biner. | 1 |
TOML_ENABLE_UNRELEASED_FEATURES | Boolean | Mengaktifkan dukungan untuk fitur bahasa TOML yang belum dirilis. | 0 |
TOML_ENABLE_WINDOWS_COMPAT | Boolean | Memungkinkan dukungan untuk konversi transparan antara string lebar dan sempit. | 1 di windows |
TOML_EXCEPTIONS | Boolean | Menetapkan apakah perpustakaan menggunakan pengecualian. | per pengaturan kompiler |
TOML_EXPORTED_CLASS | mendefinisikan | API Ekspor anotasi untuk ditambahkan ke kelas. | belum diartikan |
TOML_EXPORTED_MEMBER_FUNCTION | mendefinisikan | API Ekspor Anotasi untuk menambah fungsi anggota kelas non-statis. | belum diartikan |
TOML_EXPORTED_FREE_FUNCTION | mendefinisikan | API Ekspor anotasi untuk menambah fungsi gratis. | belum diartikan |
TOML_EXPORTED_STATIC_FUNCTION | mendefinisikan | API Ekspor Anotasi untuk menambah fungsi statis. | belum diartikan |
TOML_HEADER_ONLY | Boolean | Nonaktifkan ini untuk mengontrol secara eksplisit di mana implementasi TOML ++ dikompilasi (misalnya sebagai bagian dari perpustakaan). | 1 |
TOML_IMPLEMENTATION | mendefinisikan | Tentukan ini untuk mengaktifkan kompilasi implementasi perpustakaan saat TOML_HEADER_ONLY == 0 . | belum diartikan |
TOML_OPTIONAL_TYPE | Ketik nama | Mengesampingkan jenis optional<T> yang digunakan oleh perpustakaan jika Anda membutuhkan sesuatu yang lebih baik dari std :: opsional. | belum diartikan |
TOML_SMALL_FLOAT_TYPE | Ketik nama | Jika basis kode Anda memiliki tipe 'float kecil' khusus (misalnya setengah presisi), ini memberi tahu Toml ++ tentang hal itu. | belum diartikan |
TOML_SMALL_INT_TYPE | Ketik nama | Jika basis kode Anda memiliki tipe 'integer kecil' khusus (misalnya 24-bit), ini memberi tahu Toml ++ tentang hal itu. | belum diartikan |
Sejumlah ini memiliki implikasi ABI; Perpustakaan menggunakan inline namespaces untuk mencegah Anda secara tidak sengaja menghubungkan kombinasi yang tidak kompatibel bersama -sama.
Pada waktu tertentu perpustakaan bertujuan untuk mendukung apa pun versi TOML yang paling baru dirilis, dengan dukungan opt-in untuk sejumlah fitur yang belum dirilis dari Toml Master dan beberapa pemisahan ceri waras dari daftar masalah TOML di mana diskusi sangat menunjukkan inklusi dalam rilis yang hampir future.
Perpustakaan mengiklankan versi bahasa bernomor terbaru yang didukung sepenuhnya melalui preprocessor mendefinisikan TOML_LANG_MAJOR , TOML_LANG_MINOR dan TOML_LANG_PATCH .
+ dalam nama kunci09:30 sebagai lawan 09:30:00e (singkatan untuk u001B )xHH
#define TOML_ENABLE_UNRELEASED_FEATURES 1untuk mengaktifkan fitur -fitur ini (lihat konfigurasi).
Semua fitur yang didukung, termasuk:
Semua fitur didukung.
Kontribusi sangat disambut! Baik dengan melaporkan masalah atau mengirimkan permintaan tarik. Jika Anda ingin mengirimkan permintaan tarik, silakan lihat berkontribusi untuk semua detail yang Anda butuhkan.
Toml ++ dilisensikan berdasarkan ketentuan lisensi MIT - lihat lisensi.
Dekoding UTF-8 dilakukan dengan menggunakan mesin negara bagian berdasarkan 'dekoder UTF-8 yang fleksibel dan ekonomis'.
toml::path SUntuk laporan bug dan permintaan fitur, harap pertimbangkan untuk menggunakan sistem masalah di sini di GitHub. Untuk hal lain meskipun Anda dipersilakan untuk menjangkau melalui cara lain. Dalam urutan waktu respons yang mungkin: