Program Listing for File Capability.hpp
↰ Return to documentation for file (include/depthai/capabilities/Capability.hpp)
#pragma once
#include <cstring>
namespace dai {
class Capability {
public:
virtual const char* getName() const = 0;
// virtual Capability getIntersection(const Capability& other) = 0;
virtual ~Capability();
};
// Capability CRTP class
template <typename Base, typename Derived>
class CapabilityCRTP : public Base {
public:
virtual ~CapabilityCRTP() = default;
const char* getName() const override {
// This has to be a global unique name, please use your prefix and / to separate. Example: dai/img-frame
return Derived::NAME;
};
static const Derived* get(const Capability& cap) {
if(strcmp(cap.getName(), Derived::NAME) == 0) {
return static_cast<const Derived*>(&cap);
}
return nullptr;
}
friend Derived;
friend Base;
};
} // namespace dai