readme นี้ไม่เป็นไร แต่หน้าแรกของ Toml ++ ดีกว่า
ตัวอย่างต่อไปนี้สนับสนุนความกะทัดรัด หากคุณต้องการเอกสาร API เต็มรูปแบบและตัวอย่างรหัสเฉพาะจำนวนมากแทนให้ไปที่หน้าแรกของโครงการ
ได้รับ configuration.toml ไฟล์ toml.toml ที่มีสิ่งต่อไปนี้:
[ library ]
name = " toml++ "
authors = [ " Mark Gillard <[email protected]> " ]
[ dependencies ]
cpp = 17การอ่านใน C ++ นั้นง่ายด้วย 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 และอีกมากมายเป็นส่วนหนึ่งของเอกสาร API
toml++ มีสองรสชาติ: หัวเดี่ยวและปกติ API เหมือนกันสำหรับทั้งคู่
toml.hpp ทุกที่ที่คุณต้องการในต้นไม้ต้นฉบับของคุณtomlplusplus/include ไปยังเส้นทางรวมของคุณ#include <toml++/toml.hpp> เพิ่ม tomlplusplus/3.4.0 ลงใน ConanFile ของคุณ
เพิ่ม tomlpp ลงใน package.json5 ของคุณ json5 เช่น:
depends: [
'tomlpp^3.4.0',
]
DDS คืออะไร?
tomlplusplus สามารถใช้งานได้ง่ายในโครงการ TIPI.Build โดยการเพิ่มรายการต่อไปนี้ใน .tipi/deps ของคุณ:
{
"marzer/tomlplusplus" : {}
} vcpkg install tomlplusplus
คุณสามารถติดตั้ง wrap ด้วย:
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 | บูลีน | เปิดใช้งาน Formatters ตั้งค่าเป็น 0 หากคุณไม่ต้องการให้พวกเขาปรับปรุงเวลารวบรวมและขนาดไบนารี | 1 |
TOML_ENABLE_FLOAT16 | บูลีน | เปิดใช้งานการรองรับประเภท _Float16 ในตัว | ต่อการตั้งค่าคอมไพเลอร์ |
TOML_ENABLE_PARSER | บูลีน | เปิดใช้งานตัวแยกวิเคราะห์ ตั้งค่าเป็น 0 หากคุณไม่ต้องการเพื่อปรับปรุงเวลารวบรวมและขนาดไบนารี | 1 |
TOML_ENABLE_UNRELEASED_FEATURES | บูลีน | ช่วยให้สามารถรองรับคุณสมบัติภาษา TOML ที่ยังไม่เผยแพร่ | 0 |
TOML_ENABLE_WINDOWS_COMPAT | บูลีน | ช่วยให้สามารถรองรับการแปลงโปร่งใสระหว่างสายกว้างและแคบ | 1 บน windows |
TOML_EXCEPTIONS | บูลีน | ตั้งค่าว่าไลบรารีใช้ข้อยกเว้นหรือไม่ | ต่อการตั้งค่าคอมไพเลอร์ |
TOML_EXPORTED_CLASS | กำหนด | คำอธิบายประกอบการส่งออก API เพื่อเพิ่มในชั้นเรียน | ไม่ได้กำหนด |
TOML_EXPORTED_MEMBER_FUNCTION | กำหนด | API Export Annotation เพื่อเพิ่มฟังก์ชั่นสมาชิกระดับที่ไม่คงที่ | ไม่ได้กำหนด |
TOML_EXPORTED_FREE_FUNCTION | กำหนด | คำอธิบายประกอบการส่งออก API เพื่อเพิ่มฟังก์ชั่นฟรี | ไม่ได้กำหนด |
TOML_EXPORTED_STATIC_FUNCTION | กำหนด | คำอธิบายประกอบการส่งออก API เพื่อเพิ่มฟังก์ชั่นคงที่ | ไม่ได้กำหนด |
TOML_HEADER_ONLY | บูลีน | ปิดการใช้งานสิ่งนี้เพื่อควบคุมอย่างชัดเจนว่าการใช้งานของ Toml ++ ถูกรวบรวม (เช่นเป็นส่วนหนึ่งของไลบรารี) | 1 |
TOML_IMPLEMENTATION | กำหนด | กำหนดสิ่งนี้เพื่อเปิดใช้งานการรวบรวมการใช้งานของไลบรารีเมื่อ TOML_HEADER_ONLY == 0 | ไม่ได้กำหนด |
TOML_OPTIONAL_TYPE | พิมพ์ชื่อ | แทนที่ประเภท optional<T> ที่ใช้โดยไลบรารีหากคุณต้องการสิ่งที่ดีกว่า std :: เป็นทางเลือก | ไม่ได้กำหนด |
TOML_SMALL_FLOAT_TYPE | พิมพ์ชื่อ | หาก codebase ของคุณมีประเภท 'ลอยขนาดเล็ก' ที่กำหนดเอง (เช่นครึ่งความแม่นยำ) สิ่งนี้จะบอก Toml ++ เกี่ยวกับเรื่องนี้ | ไม่ได้กำหนด |
TOML_SMALL_INT_TYPE | พิมพ์ชื่อ | หาก codebase ของคุณมีประเภท 'จำนวนเต็มขนาดเล็ก' ที่กำหนดเอง (เช่น 24 บิต) สิ่งนี้จะบอก Toml ++ เกี่ยวกับเรื่องนี้ | ไม่ได้กำหนด |
จำนวนสิ่งเหล่านี้มีผลกระทบ ABI; ห้องสมุดใช้เนมสเปซแบบอินไลน์เพื่อป้องกันไม่ให้คุณเชื่อมโยงชุดค่าผสมที่เข้ากันไม่ได้โดยไม่ตั้งใจ
ในเวลาใดก็ตามห้องสมุดมีจุดมุ่งหมายเพื่อสนับสนุนสิ่งที่ Toml รุ่นที่เพิ่งเปิดตัวล่าสุดคือด้วยการสนับสนุนการเลือกใช้คุณสมบัติที่ยังไม่ได้เผยแพร่จำนวนมากจาก Toml Master และ Cherry-picks ที่มีสติจากรายการ Toml ปัญหา
ห้องสมุดโฆษณาเวอร์ชันภาษาที่มีหมายเลขล่าสุดที่รองรับอย่างเต็มที่ผ่านตัวประมวลผลล่วงหน้ากำหนด TOML_LANG_MAJOR , TOML_LANG_MINOR และ TOML_LANG_PATCH
+ ในชื่อคีย์09:30 เมื่อเทียบกับ 09:30:00e (ชวเลขสำหรับ u001B )xHH
#define TOML_ENABLE_UNRELEASED_FEATURES 1เพื่อเปิดใช้งานคุณสมบัติเหล่านี้ (ดูการกำหนดค่า)
คุณสมบัติทั้งหมดที่รองรับรวมถึง:
คุณสมบัติทั้งหมดที่รองรับ
การบริจาคยินดีต้อนรับมาก! ไม่ว่าจะโดยการรายงานปัญหาหรือส่งคำขอดึง หากคุณต้องการส่งคำขอดึงโปรดดูที่มีส่วนร่วมสำหรับรายละเอียดทั้งหมดที่คุณต้องไป
Toml ++ ได้รับใบอนุญาตภายใต้เงื่อนไขของใบอนุญาต MIT - ดูใบอนุญาต
การถอดรหัส UTF-8 ดำเนินการโดยใช้เครื่องจักรของรัฐตาม 'ตัวถอดรหัส UTF-8 ที่ยืดหยุ่นและประหยัด' ของ Bjoern Hoehrmann
toml::path Sสำหรับรายงานข้อผิดพลาดและคำขอคุณสมบัติโปรดพิจารณาใช้ระบบปัญหาที่นี่ใน GitHub สำหรับสิ่งอื่นใดแม้ว่าคุณจะยินดีที่จะเข้าถึงผ่านวิธีอื่น ตามลำดับเวลาตอบสนองที่เป็นไปได้: