/* {{copyright}} */ /* {{version}} */ /* {{license}} */ #pragma once #include #include #include namespace sdi_toolBox::crypto { //-------------------------------------------------------------- class Data8 { public: Data8() = default; // Default constructor explicit Data8(const std::string &data); // Constructor from string explicit Data8(const std::span &data); // Constructor from byte span virtual ~Data8() = default; // Default destructor Data8(const Data8 &obj) = delete; // Copy constructor Data8(Data8 &&obj) noexcept = delete; // Move constructor Data8 &operator=(const Data8 &obj) = delete; // Copy assignment operator Data8 &operator=(Data8 &&obj) noexcept = delete; // Move assignment operator [[nodiscard]] std::string getString() const; // Get data as string [[nodiscard]] std::span getBytes() const; // Get data as byte span [[nodiscard]] size_t getSize() const; // Get data size protected: std::vector m_data; // Raw data storage }; //-------------------------------------------------------------- /* Constructor from string */ inline Data8::Data8(const std::string &data) { m_data = std::vector(data.begin(), data.end()); } //-------------------------------------------------------------- inline Data8::Data8(const std::span &data) { m_data = std::vector(data.begin(), data.end()); } //-------------------------------------------------------------- /* Get data as string */ inline std::string Data8::getString() const { return std::string(m_data.begin(), m_data.end()); } //-------------------------------------------------------------- /* Get data as byte span */ inline std::span Data8::getBytes() const { return m_data; } //-------------------------------------------------------------- /* Get data size */ inline size_t Data8::getSize() const { return m_data.size(); } //-------------------------------------------------------------- } // namespace sdi_toolBox::crypto