138 std::vector<TreeEntry> entries;
152 explicit Tree(std::vector<TreeEntry> entries);
166 [[nodiscard]] std::string
getType()
const override;
180 [[nodiscard]] std::string
serialize()
const override;
232 [[nodiscard]] std::optional<TreeEntry>
findEntry(
const std::string& name)
const;
243 [[nodiscard]]
const std::vector<TreeEntry>&
getEntries()
const;
Определение абстрактного базового класса для всех объектов системы контроля версий.
Представляет состояние директории в СКВ, реализуя контракт VcsObject.
Определения Tree.hxx:74
void addEntry(const TreeEntry &entry)
Добавляет новую запись в Tree или обновляет существующую запись, если имя совпадает.
Определения Tree.cxx:106
Tree(std::vector< TreeEntry > entries)
Конструктор для объекта Tree.
Определения Tree.cxx:28
const std::vector< TreeEntry > & getEntries() const
Возвращает список записей, хранящихся в Tree.
Определения Tree.cxx:145
bool removeEntry(const std::string &name)
Удаляет запись (файл или поддиректорию) из Tree по имени.
Определения Tree.cxx:118
std::string getType() const override
Возвращает тип объекта СКВ.
Определения Tree.cxx:129
std::optional< TreeEntry > findEntry(const std::string &name) const
Ищет конкретную запись внутри Tree по имени.
Определения Tree.cxx:133
static Tree deserialize(const std::string &raw_content)
Создает объект Tree из сериализованной строки, прочитанной из базы данных объектов.
Определения Tree.cxx:60
std::string serialize() const override
Сериализует содержимое Tree в стандартизированный строковый формат для хеширования и хранения.
Определения Tree.cxx:44
Абстрактный базовый класс, представляющий любой сохраняемый, адресуемый объект в СКВ.
Определения VcsObject.hxx:30
std::string hash_id
Уникальный криптографический хеш-идентификатор (например, SHA-256) для этого объекта.
Определения VcsObject.hxx:36
Основные структуры данных СКВ и модель объектов.
TreeEntry createEntry(std::string name, std::string hash_id)
Создание записи дерева.
Определения Tree.cxx:24
Представляет отдельный элемент (файл или поддиректорию) внутри объекта Tree.
Определения Tree.hxx:31
std::string type
Тип ссылаемого объекта ("blob" или "tree").
Определения Tree.hxx:50
std::string name
Имя файла или поддиректории.
Определения Tree.hxx:40
std::string mode
Режим файла (права доступа) и идентификатор типа (например, "100644" для blob, "040000" для tree).
Определения Tree.hxx:35
bool operator<(const TreeEntry &other) const
Оператор сравнения, необходимый для сортировки.
Определения Tree.cxx:20