#pragma once #include "dll_macro.h" #include "HardwareType.h" #include "Identifier.h" #include #include #include class Sensor; class Visitor; struct innerHardware; class DLL_API Hardware { public: Hardware(std::shared_ptr inner); Hardware(const Hardware& src); bool isNull() const; Hardware operator=(const Hardware& src) const{ return Hardware(src); } bool operator==(const Hardware& other) const; HardwareType getHardwareType(); std::vector getSensors(); Hardware getParent(); std::vector getSubHardware(); void Update(); std::string Name(); std::string GetReport(); void Accept(Visitor* visitor); void Traverse(Visitor* visitor); Identifier getIdenifier(); ~Hardware(); private: std::shared_ptr inner; };