Представляет состояние директории в СКВ, реализуя контракт VcsObject.
Подробнее...
#include <Tree.hxx>
|
| | Tree (std::vector< TreeEntry > entries) |
| | Конструктор для объекта Tree.
|
| std::string | getType () const override |
| | Возвращает тип объекта СКВ.
|
| std::string | serialize () const override |
| | Сериализует содержимое Tree в стандартизированный строковый формат для хеширования и хранения.
|
| void | addEntry (const TreeEntry &entry) |
| | Добавляет новую запись в Tree или обновляет существующую запись, если имя совпадает.
|
| bool | removeEntry (const std::string &name) |
| | Удаляет запись (файл или поддиректорию) из Tree по имени.
|
| std::optional< TreeEntry > | findEntry (const std::string &name) const |
| | Ищет конкретную запись внутри Tree по имени.
|
| const std::vector< TreeEntry > & | getEntries () const |
| | Возвращает список записей, хранящихся в Tree.
|
|
| VcsObject ()=default |
| | Конструктор по умолчанию. Требуется для производных классов.
|
| | VcsObject (const VcsObject &other)=default |
| | Конструктор копирования. Требуется для производных классов для корректного копирования hash_id.
|
| virtual | ~VcsObject ()=default |
| | Виртуальный деструктор.
|
| std::string | getHashId () const |
| | Возвращает уникальный хеш-идентификатор объекта.
|
|
| static Tree | deserialize (const std::string &raw_content) |
| | Создает объект Tree из сериализованной строки, прочитанной из базы данных объектов.
|
| static std::string | calculateHash (const std::string &content) |
| | Вычисляет SHA-256 хеш для заданного канонического содержимого.
|
|
| void | computeHash (const std::string &content) |
| | Вычисляет криптографический хеш-идентификатор для содержимого объекта.
|
| std::string | hash_id |
| | Уникальный криптографический хеш-идентификатор (например, SHA-256) для этого объекта.
|
Представляет состояние директории в СКВ, реализуя контракт VcsObject.
Хранит коллекцию объектов TreeEntry, эффективно отображая имена на хеш-указатели.
◆ Tree()
| svcs::core::Tree::Tree |
( |
std::vector< TreeEntry > | entries | ) |
|
|
explicit |
Конструктор для объекта Tree.
Конструктор должен внутренне отсортировать записи перед вызовом computeHash().
- Аргументы
-
| entries | Коллекция структур TreeEntry, представляющих содержимое директории. |
◆ addEntry()
| void svcs::core::Tree::addEntry |
( |
const TreeEntry & | entry | ) |
|
Добавляет новую запись в Tree или обновляет существующую запись, если имя совпадает.
Если список записей изменен, хеш Tree становится недействительным и должен быть пересчитан перед сохранением.
- Аргументы
-
| entry | Запись TreeEntry для добавления или обновления. |
◆ deserialize()
| Tree svcs::core::Tree::deserialize |
( |
const std::string & | raw_content | ) |
|
|
static |
Создает объект Tree из сериализованной строки, прочитанной из базы данных объектов.
- Аргументы
-
| raw_content | Сериализованные строковые данные, обычно прочитанные из распакованного файла объекта. |
- Возвращает
- Tree Полностью восстановленный объект Tree.
◆ findEntry()
| std::optional< TreeEntry > svcs::core::Tree::findEntry |
( |
const std::string & | name | ) |
const |
|
nodiscard |
Ищет конкретную запись внутри Tree по имени.
- Аргументы
-
| name | Имя записи для поиска. |
- Возвращает
- std::optional<TreeEntry> Опциональное значение, содержащее запись, если найдена, иначе пустое.
◆ getEntries()
| const std::vector< TreeEntry > & svcs::core::Tree::getEntries |
( |
| ) |
const |
|
nodiscard |
Возвращает список записей, хранящихся в Tree.
- Возвращает
- std::vector<TreeEntry>& Константная ссылка на внутренний вектор записей.
◆ getType()
| std::string svcs::core::Tree::getType |
( |
| ) |
const |
|
nodiscardoverridevirtual |
Возвращает тип объекта СКВ.
- Возвращает
- std::string Всегда возвращает "tree".
Замещает svcs::core::VcsObject.
◆ removeEntry()
| bool svcs::core::Tree::removeEntry |
( |
const std::string & | name | ) |
|
Удаляет запись (файл или поддиректорию) из Tree по имени.
- Аргументы
-
| name | Имя записи для удаления. |
- Возвращает
- bool True, если запись найдена и удалена, иначе false.
◆ serialize()
| std::string svcs::core::Tree::serialize |
( |
| ) |
const |
|
nodiscardoverridevirtual |
Сериализует содержимое Tree в стандартизированный строковый формат для хеширования и хранения.
Сериализация должна гарантировать, что записи отсортированы для обеспечения согласованности хеша.
- Возвращает
- std::string Стандартизированная, сериализованная структура директории.
Замещает svcs::core::VcsObject.
Объявления и описания членов классов находятся в файлах: