# Типы данных Сия спецификация, помимо всего прочего, также определяет некоторые необходимые типы и структуры данных. В данном файле вы найдёте их описание и декларации. #### ID Класс, реализующий абстракцию над более конкретными типами идентификаторов. В этой спецификации указывается в качестве типа в тех случаях, когда применим любой из трёх типов. ```C++ class ID { private: uint64_t object_id, server_id; std::string server_domain; public: ID (uint64_t oid, uint64_t sid, std::string sd) { this->object_id = oid; this->server_id = sid; this->server_domain = sd; } LocID GetValue () { return this->object_id; } FedID GetValue () { FedID fid; fid.Object = this->object_id; fid.Server = this->server_id; return fid; } GlobID GetValue () { GlobID gid; gid.Object = this->object_id; gid.Server = this->server_domain; return gid; } } ``` #### LocID Идентификатор локального для конкретного сервера объекта. ```C++ typedef uint64_t LocID; ``` #### FedID Идентификатор объекта в пределах федерации. ```C++ typedef struct { uint64_t Object; uint64_t Server; } FedID; ``` #### GlobID Идентификатор объекта за пределами федерации. ```C++ typedef struct { uint64_t Object; std::string Server; // Доменное имя целевого сервера } GlobID; ``` #### Power Права доступа к какому-либо объекту. Представляет из себя набор следующих флагов: - `0b00000000000000000000000000000001`: чтение - `0b00000000000000000000000000000010`: запись - `0b00000000000000000000000000000100`: удаление - `0b10000000000000000000000000000000`: изменение прав доступа - `0b01111111111111111111111111111000`: нераспределено Нераспределённые флаги могут быть использованы в SPX. ```C++ typedef uint32_t Power; ```