SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
VcsObject.hxx
См. документацию.
1
17#pragma once
18
19#include <string>
20
30 * @brief Основные структуры данных СКВ и модель объектов.
31 * @details Содержит фундаментальные типы объектов СКВ, такие как Blob, Tree, Commit,
32 * которые формируют строительные блоки системы контроля версий.
33 */
34namespace svcs::core {
35
51class VcsObject {
52protected:
62 std::string hash_id;
63
77 void computeHash(const std::string& content);
78
79public:
87 VcsObject() = default;
88
91
98 VcsObject(const VcsObject& other) = default;
99
100 /**
101 * @english
102 * @brief Virtual destructor.
103 * @details Ensures proper cleanup when deleting derived objects via a base class pointer.
104 *
105 * @russian
106 * @brief Виртуальный деструктор.
107 * @details Обеспечивает правильную очистку при удалении производных объектов через указатель на базовый класс.
108 */
109 virtual ~VcsObject() = default;
110
122 [[nodiscard]] virtual std::string serialize() const = 0;
123
130
135 [[nodiscard]] virtual std::string getType() const = 0;
136
148 static std::string calculateHash(const std::string& content);
149
159 [[nodiscard]] std::string getHashId() const;
160};
161
162
178class TestableObject : public VcsObject {
179private:
187 std::string type_name;
188
196 std::string content_data;
197
198public:
210 TestableObject(std::string type, std::string data);
211
220 [[nodiscard]] std::string serialize() const override;
221
230 [[nodiscard]] std::string getType() const override;
231};
232
233}
Вспомогательный класс для тестирования неабстрактных методов VcsObject.
Определения VcsObject.hxx:100
std::string serialize() const override
Реализация чисто виртуального метода. Возвращает сохраненное содержимое.
Определения VcsObject.cxx:57
std::string getType() const override
Реализация чисто виртуального метода. Возвращает сохраненное имя типа.
Определения VcsObject.cxx:61
TestableObject(std::string type, std::string data)
Основной конструктор.
Определения VcsObject.cxx:52
Абстрактный базовый класс, представляющий любой сохраняемый, адресуемый объект в СКВ.
Определения VcsObject.hxx:30
virtual std::string getType() const =0
Чисто виртуальный метод для получения типа объекта СКВ.
std::string getHashId() const
Возвращает уникальный хеш-идентификатор объекта.
Определения VcsObject.cxx:33
virtual std::string serialize() const =0
Чисто виртуальный метод для сериализации основных данных объекта.
void computeHash(const std::string &content)
Вычисляет криптографический хеш-идентификатор для содержимого объекта.
Определения VcsObject.cxx:19
VcsObject()=default
Конструктор по умолчанию. Требуется для производных классов.
virtual ~VcsObject()=default
Виртуальный деструктор.
static std::string calculateHash(const std::string &content)
Вычисляет SHA-256 хеш для заданного канонического содержимого.
Определения VcsObject.cxx:37
std::string hash_id
Уникальный криптографический хеш-идентификатор (например, SHA-256) для этого объекта.
Определения VcsObject.hxx:36
Основные структуры данных СКВ и модель объектов.