Program Listing for File Properties.hpp

Return to documentation for file (include/depthai/properties/Properties.hpp)

#pragma once

#include "depthai/utility/Serialization.hpp"

namespace dai {

struct Properties {
    virtual void serialize(std::vector<std::uint8_t>& data, SerializationType type) const = 0;
    virtual std::unique_ptr<Properties> clone() const = 0;
    virtual ~Properties();
};

template <typename Base, typename Derived>
struct PropertiesSerializable : Base {
    virtual void serialize(std::vector<std::uint8_t>& data, SerializationType type = SerializationType::LIBNOP) const override {
        utility::serialize(static_cast<const Derived&>(*this), data, type);
    }

    virtual std::unique_ptr<Properties> clone() const override {
        return std::make_unique<Derived>(static_cast<const Derived&>(*this));
    }
};

}  // namespace dai