1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cmvy2020-libczh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

libczh

Простой в использовании формат сериализации данных

build License Release

Document Document

Example

Tutorial

Синтаксис

Тип

  • int,double,string,bool,Array,Reference

Оператор

  • Отступ не требуется
  • Точка с запятой после оператора не требуется

Комментарий

  • <xxxx>

Узел

  • Дублирование имён запрещено
  • Узел: id: end
  • Значение: id = xxx

Массив

  • {} .

Ссылка

  • id = a::b::c::id

Использование libczh

Настройка

  • Просто #include "libczh/czh.hpp"!
  • Требуется C++ 20

Czh::Czh(str, mode)

mode
  • czh::InputMode::file -> str — это путь
  • czh::InputMode::string -> str — это std::string, где хранится czh
Czh("example: a = 1; end;", czh::InputMode::string);

Node::operator[str]

  • Возвращает узел с именем str

Node::operator(str)

  • Аналогично Node::operator[str], но предоставляет лучшее сообщение об ошибке.

Node::get()

  • Когда тип массива значений в czh не уникален, T должен быть czh::value::Array
auto arr = node["czh"]["any_array"].get<czh::value::Array>();

value_map

  • Когда значения под узлом имеют один и тот же тип, используйте value_map(), чтобы получить std::map, состоящую из всех идентификаторов и значений.

Node::value_map()

  • Возвращает std::map<std::string, T>
auto value_map = example["example"]["arrays"].value_map<vector<int>>();
example: 
  arrays:
    a = {1,2,3}
    b = {1,2,3}
  end
end

Node::operator=(value)

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

Добавить

Node::add(key, value, before)
  • Добавляет новое значение с именем key, значение которого равно value, перед узлом с именем before. -before по умолчанию пусто, что добавит в конце.
  • Возвращает ссылку на добавленный узел.
example["add"].add("add", "123", "abc");
Node::add_node(name, before)
  • Добавляет новый узел с именем name перед узлом с именем before.
  • Возвращает ссылку на добавленный узел.
example.add_node("new", "before");

Удалить

Node::remove()
example["example"].remove();

Очистить

Node::clear()
example["example"].clear();

Переименовать

Node::rename(name, newname)

example["a"].rename("b");

Вывод

Writer
  • libczh изначально поддерживает три писателя
Writer Format
BasicWriter No Format
PrettyWriter Format
ColorWriter Format + Highlight(ANSI Escape Code)
Node::accept()
  • Принять Writer
writer::BasicWriter<std::ostream> w{ std::cout };
node.accept(w);
operator<<
  • Равно BasicWriter
Написать Writer
  • Всё, что мы...

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

CZH — это простой формат сериализации данных. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (6)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/cmvy2020-libczh.git
git@api.gitlife.ru:oschina-mirror/cmvy2020-libczh.git
oschina-mirror
cmvy2020-libczh
cmvy2020-libczh
master