/*
 * InputDriver.h
 *
 *  Created on: Jun 14, 2018
 *      Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
 */

#ifndef SRC_INPUT_IINPUTDRIVER_H_
#define SRC_INPUT_IINPUTDRIVER_H_

#include "Event.h"

#include <memory>

#include <boost/optional/optional_io.hpp>

namespace flippR_driver
{
namespace input
{

class EventHandler;

class InputDriver {
  public:
    virtual ~InputDriver() = default;

    virtual void register_event_handler(std::shared_ptr<EventHandler> handler) = 0;

    virtual void unregister_event_handler(std::shared_ptr<EventHandler> handler) = 0;

    virtual boost::optional<std::shared_ptr<Event>> get_event(std::string name) = 0;
};

}
}
#endif /* SRC_INPUT_IINPUTDRIVER_H_ */
