Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gistrec/treeparser

TreeParser - библиотека, предоставляющая функционал для работы с деревом
https://github.com/gistrec/treeparser

Last synced: about 13 hours ago
JSON representation

TreeParser - библиотека, предоставляющая функционал для работы с деревом

Awesome Lists containing this project

README

        

# TreeParser

TreeParser - библиотека, предоставляющая функционал для работы с деревом.



Build status

## Структура проекта
* `example` - демонстрационная программа
* `include` - заголовочные файлы библиотеки
* `src` - файлы реализации библиотеки
* `test` - Gtest'ы
* `Makefile` - набор инструкций для автоматизации сборки (библиотеки, демонстрационной программы и тестов)

## Особенности
* Разделитель у вещественного числа - точка

## Пример конфига

Для хранения дерева в файле был разработан специальный формат ([пример файла](https://github.com/gistrec/TreeParser/blob/develop/example/input.txt)).
Дочерние узлы имеют отступ в 1 знак табуляции

Таким образом дерево
![](https://gistrec.ru/wp-content/uploads/2020/02/TreeParse.png "Пример дерева")
Записывается в конфиг как
```
8
"bar"
2.015
9
2015
"2015"
"baz"
"foo"
6.28318
"hello"
```

## Пример использования

Для демонстрации работы библиотеки была создана [программа](https://github.com/gistrec/TreeParser/blob/develop/example/example.cpp), в виде консольного приложения, которая имеет следующие параметры:
* -i/--input - имя входного файла с сериализованным деревом;
* -o/--output - имя выходного файла, в которое будет сериализовано дерева

Программа десериализовывает дерево из файла input, печатает дерево на экран, и сериализовывает его в файл output.

## Доступные функции

* [`void print(const std::shared_ptr& tree, std::ostream& stream = std::cout)`](#print)
* [`void read(const std::string& filename, std::shared_ptr& tree)`](#read)
* [`void write(const std::string& filename, const std::shared_ptr& tree)`](#write)

## Описание функций


**`void print(const std::shared_ptr& tree, std::ostream& stream = std::cout)`** - Печатает дерево в поток

* `tree` - дерево, которое будет распечатано
* `stream` - поток вывода

---


**`void read(const std::string& filename, std::shared_ptr& tree)`** - Десериализовать дерево из файла.

* `filename` - файл, откуда нужно считать дерево
* `tree` - указатель, куда считается дерево

Исключения:
* TreeBadFile - если не удалось прочитать данные из файла
* TreeBadData - если в файле содержится ошибка

---


**`void write(const std::string& filename, const std::shared_ptr& tree)`** - Сериализовать дерево в файл.

* `filename` - файл, куда нужно сериализовывать дерево
* `tree` - указатель на дерево, которое нужно сериализовать

Исключения:
* TreeBadFile - если не удалось записать данные в файл