TreeParser - библиотека, предоставляющая функционал для работы с деревом.
example
- демонстрационная программаinclude
- заголовочные файлы библиотекиsrc
- файлы реализации библиотекиtest
- Gtest'ыMakefile
- набор инструкций для автоматизации сборки (библиотеки, демонстрационной программы и тестов)
- Разделитель у вещественного числа - точка
Для хранения дерева в файле был разработан специальный формат (пример файла). Дочерние узлы имеют отступ в 1 знак табуляции
Таким образом дерево Записывается в конфиг как
8
"bar"
2.015
9
2015
"2015"
"baz"
"foo"
6.28318
"hello"
Для демонстрации работы библиотеки была создана программа, в виде консольного приложения, которая имеет следующие параметры:
- -i/--input - имя входного файла с сериализованным деревом;
- -o/--output - имя выходного файла, в которое будет сериализовано дерева
Программа десериализовывает дерево из файла input, печатает дерево на экран, и сериализовывает его в файл output.
void print(const std::shared_ptr<Node>& tree, std::ostream& stream = std::cout)
void read(const std::string& filename, std::shared_ptr<Node>& tree)
void write(const std::string& filename, const std::shared_ptr<Node>& tree)
void print(const std::shared_ptr<Node>& tree, std::ostream& stream = std::cout)
- Печатает дерево в поток
tree
- дерево, которое будет распечатаноstream
- поток вывода
void read(const std::string& filename, std::shared_ptr<Node>& tree)
- Десериализовать дерево из файла.
filename
- файл, откуда нужно считать деревоtree
- указатель, куда считается дерево
Исключения:
- TreeBadFile - если не удалось прочитать данные из файла
- TreeBadData - если в файле содержится ошибка
void write(const std::string& filename, const std::shared_ptr<Node>& tree)
- Сериализовать дерево в файл.
filename
- файл, куда нужно сериализовывать деревоtree
- указатель на дерево, которое нужно сериализовать
Исключения:
- TreeBadFile - если не удалось записать данные в файл