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 - если не удалось записать данные в файл