libczh
Простой и удобный формат сериализации данных
int
,double
,string
,bool
,Array
,Reference
;
, но это необязательно.<xxxx>
id: end
id = xxx
{}
.id = a::b::c::id
#include "libczh/czh.hpp"
!czh::InputMode::file
-> str
— путь.czh::InputMode::string
-> str
— строка, которая содержит czh
. Czh("example: a = 1; end;", czh::InputMode::string);
Возвращает узел с именем str
.
Аналогичен Node::operator[str]
, но предоставляет более точные сообщения об ошибках.
Когда тип данных в массиве czh
не уникален, T
должен быть czh::value::Array
.
auto arr = node["czh"]["any_array"].get<czh::value::Array>();
Пример:
example:
arrays:
a = {1,2,3}
b = {1,2,3}
end
end
Если значения в одном узле имеют одинаковый тип, используйте value_map()
для получения std::map
, который содержит все ключи и значения.
Возвращает std::map<std::string, T>
.
auto value_map = example["example"]["arrays"].value_map<vector<int>>();
node["czh"]["int_array"] = Range(1, 10); // custom container
node["czh"]["int_array"] = std::ranges::views::iota(1,10); // std::ranges
node["czh"]["int_array"] = {1, 2, 3}; // brace-enclosed initializer list
node["czh"]["any_array"] = {false, 1, "2", 3.0};// czh::value::Array
Добавляет значение value
перед узлом с именем before
. Если before
не указан, то добавляется в конец. Возвращает ссылку на добавленный узел.
example["add"].add("add", "123", "abc");
Перед узлом с именем before
добавляется узел с именем name
. Возвращается ссылка на добавленный узел.
example.add_node("new", "before");
Удаляет узел.
Очищает узел.
Переименовывает узел.
libczh изначально поддерживает три writer
:
Writer | Формат |
---|---|
BasicWriter | Без форматирования |
PrettyWriter | Форматированный |
ColorWriter | Форматированный + подсветка (ANSI Escape Code) |
Принимает Writer
.
writer::BasicWriter<std::ostream> w{ std::cout };
node.accept(w);
Эквивалентен BasicWriter
.
Нам нужно написать класс, который соответствует концепции Writer
:
template<typename T>
concept Writer =
requires(T w)
{
{ w.node_begin(std::string()) };
{ w.node_end() };
{ w.value_begin(std::string()) };
{ w.value(value::Value{}) };
{ w.value_ref_path_set_global() };
{ w.value_ref_path(std::string()) };
{ w.value_ref_id(std::string()) };
{ w.value_array_begin() };
{ w.value_array_value(value::Array::value_type{}) };
{ w.value_array_end(value::Array::value_type{}) };
{ w.value_array_end() };
};
Если у вас есть вопросы или предложения, отправьте issue или напишите мне по электронной почте.
Электронная почта: cao2013zh at 163 dot com
Мы приветствуем любые вклады. Просто отправьте PR.
libczh лицензирован под Apache-2.0. Лицензия (LICENSE) получить лицензию
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )