84 lines
2.1 KiB
C++
84 lines
2.1 KiB
C++
/*
|
|
* OutputDriver.cpp
|
|
*
|
|
* Created on: Aug 2, 2018
|
|
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
|
|
*/
|
|
|
|
#include "OutputDriver.h"
|
|
|
|
#include <boost/range/adaptor/map.hpp>
|
|
#include <boost/range/algorithm/copy.hpp>
|
|
|
|
namespace flippR_driver
|
|
{
|
|
namespace output
|
|
{
|
|
|
|
using namespace items;
|
|
|
|
OutputDriver::OutputDriver(std::map<std::string, std::shared_ptr<ISolenoid>> solenoids, std::map<std::string, std::shared_ptr<ILamp>> lamps, std::map<char, std::shared_ptr<IDisplay>> displays, std::map<std::string, std::shared_ptr<ISound>> sounds)
|
|
: solenoids(std::move(solenoids)), lamps(std::move(lamps)), displays(std::move(displays)), sounds(std::move(sounds))
|
|
{}
|
|
|
|
|
|
std::vector<std::shared_ptr<ISound>> OutputDriver::get_sounds()
|
|
{
|
|
std::vector<std::shared_ptr<ISound>> sounds;
|
|
|
|
boost::copy(this->sounds | boost::adaptors::map_values, std::back_inserter(sounds));
|
|
|
|
return sounds;
|
|
}
|
|
|
|
std::vector<std::shared_ptr<IDisplay>> OutputDriver::get_displays()
|
|
{
|
|
std::vector<std::shared_ptr<IDisplay>> displays;
|
|
|
|
boost::copy(this->displays | boost::adaptors::map_values, std::back_inserter(displays));
|
|
|
|
return displays;
|
|
}
|
|
|
|
std::vector<std::shared_ptr<ILamp>> OutputDriver::get_lamps()
|
|
{
|
|
std::vector<std::shared_ptr<ILamp>> lamps;
|
|
|
|
boost::copy(this->lamps | boost::adaptors::map_values, std::back_inserter(lamps));
|
|
|
|
return lamps;
|
|
}
|
|
|
|
std::vector<std::shared_ptr<ISolenoid>> OutputDriver::get_solenoids()
|
|
{
|
|
std::vector<std::shared_ptr<ISolenoid>> solenoids;
|
|
|
|
boost::copy(this->solenoids | boost::adaptors::map_values, std::back_inserter(solenoids));
|
|
|
|
return solenoids;
|
|
}
|
|
|
|
boost::optional<std::shared_ptr<items::ILamp>> OutputDriver::get_lamp(std::string name)
|
|
{
|
|
return this->lamps.find(name)->second;
|
|
}
|
|
|
|
boost::optional<std::shared_ptr<items::ISolenoid>> OutputDriver::get_solenoid(std::string name)
|
|
{
|
|
return this->solenoids.find(name)->second;
|
|
}
|
|
|
|
boost::optional<std::shared_ptr<items::ISound>> OutputDriver::get_sound(std::string name)
|
|
{
|
|
return this->sounds.find(name)->second;
|
|
}
|
|
|
|
boost::optional<std::shared_ptr<items::IDisplay>> OutputDriver::get_display(char number)
|
|
{
|
|
return this->displays.find(number)->second;
|
|
}
|
|
|
|
|
|
} /* namespace output */
|
|
}
|