#ifndef DEVICEMANAGER_H #define DEVICEMANAGER_H #include #include #include #include #include #include class DeviceManager { public: struct SensorDeviceSpec { char sensorType; std::string implexor; std::string api; std::vector apiParams; std::string provider; std::vector providerParams; std::string deviceSelector; friend std::ostream& operator<<( std::ostream& os, const SensorDeviceSpec& spec); }; struct InteroceptorDeviceSpec : public SensorDeviceSpec { }; struct ExtrospectorDeviceSpec : public SensorDeviceSpec { }; static DeviceManager& getInstance() { static DeviceManager instance; return instance; } std::string readDeviceFile(const std::string& filename); void collateAllDeviceSpecs(const OptionParser& options); void parseAllDeviceSpecs(void); static const std::string printDeviceSpecs(); private: DeviceManager() = default; ~DeviceManager() = default; DeviceManager(const DeviceManager&) = delete; DeviceManager& operator=(const DeviceManager&) = delete; public: std::string allDeviceSpecs; static std::vector> interoceptorDeviceSpecs; static std::vector> extrospectorDeviceSpecs; static std::vector> sensorDeviceSpecs; }; #endif // DEVICEMANAGER_H