️ هذه القراءة جيدة ، لكن الصفحة الرئيسية 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++ في نكهات: رأس واحد ومنتظم. واجهة برمجة التطبيقات هي نفسها لكليهما.
toml.hpp أينما تريد في شجرة المصدر الخاصة بكtomlplusplus/include إلى مسارات تضمينك#include <toml++/toml.hpp> أضف tomlplusplus/3.4.0 إلى conanfile الخاص بك.
أضف tomlpp إلى package.json5 ، على سبيل المثال:
depends: [
'tomlpp^3.4.0',
]
ما هو DDS؟
يمكن استخدام tomlplusplus بسهولة في مشاريع Tipi.Build عن طريق إضافة الإدخال التالي إلى .tipi/deps :
{
"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 | منطقية | يتيح دعم التحويل الشفاف بين السلاسل الواسعة والضيقة. | 1 على Windows |
TOML_EXCEPTIONS | منطقية | تحدد ما إذا كانت المكتبة تستخدم الاستثناءات. | لكل برنامج التحويل البرمجي |
TOML_EXPORTED_CLASS | يُعرِّف | API Export Export Export لإضافة إلى الفصول. | غير محدد |
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 | اكتب الاسم | يتجاوز النوع optional<T> الذي تستخدمه المكتبة إذا كنت بحاجة إلى شيء أفضل من STD :: اختياري. | غير محدد |
TOML_SMALL_FLOAT_TYPE | اكتب الاسم | إذا كان قاعدة الكود الخاصة بك تحتوي على نوع مخصص "تعويم صغير" (على سبيل المثال نصف الدقة) ، فإن هذا يخبر Toml ++ عنها. | غير محدد |
TOML_SMALL_INT_TYPE | اكتب الاسم | إذا كانت قاعدة الكود الخاصة بك تحتوي على نوع "عدد صحيح صغير" مخصص (على سبيل المثال 24 بت) ، فإن هذا يخبر Toml ++ عنها. | غير محدد |
عدد من هؤلاء لها آثار ABI. تستخدم المكتبة مساحات أسماء مضمنة لمنعك من ربط مجموعات غير متوافقة مع بعضها البعض.
في أي وقت ، تهدف المكتبة إلى دعم أي إصدار تم إصداره مؤخرًا من Toml ، مع دعم التقيد لعدد من الميزات غير المُصدر من Toml Master وبعض مخططات الكرز العاقلة من قائمة مشكلات Toml حيث تشير المناقشة بقوة إلى الإدراج في إصدار قريب.
تعلن المكتبة عن أحدث إصدار من اللغة المرقمة التي يدعمها بالكامل عبر المعالج المسبق ، تحدد TOML_LANG_MAJOR و TOML_LANG_MINOR و TOML_LANG_PATCH .
+ في أسماء المفاتيح09:30 بدلاً من 09:30:00e (اختصار لـ u001B )xHH
#define TOML_ENABLE_UNRELEASED_FEATURES 1لتمكين هذه الميزات (انظر التكوين).
جميع الميزات المدعومة ، بما في ذلك:
جميع الميزات المدعومة.
المساهمات مرحب بها للغاية! إما عن طريق الإبلاغ عن المشكلات أو تقديم طلبات السحب. إذا كنت ترغب في إرسال طلب سحب ، فيرجى الاطلاع على المساهمة في جميع التفاصيل التي تحتاجها للذهاب.
تم ترخيص Toml ++ بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا - انظر الترخيص.
يتم تنفيذ فك تشفير UTF-8 باستخدام جهاز حالة يعتمد على "فك ترميز UTF-8 المرن والاقتصادي" من Bjoern Hoehrmann.
toml::path Sبالنسبة لتقارير الأخطاء وطلبات الميزات ، يرجى النظر في استخدام نظام المشكلات هنا على Github. لأي شيء آخر على الرغم من أنك مرحب بك للوصول عبر وسائل أخرى. من أجل وقت الاستجابة المحتمل: