added ItemVarHolder

This commit is contained in:
Johannes Wendel
2019-08-29 22:19:21 +02:00
parent 4aa6a68a2f
commit 2b5fb960b8
7 changed files with 62 additions and 7 deletions

View File

@@ -7,7 +7,8 @@ set(SOURCES
output/OutputRequestHandler.cpp
output/OutputRequestHandlerFactory.cpp
FlippRServer.cpp
input/InputSocketHandlerFactory.cpp)
input/InputSocketHandlerFactory.cpp
output/ItemVarHolder.h)
add_executable(${PROJECT_NAME} ${SOURCES})

View File

@@ -0,0 +1,48 @@
//
// Created by johannes on 29.08.19.
//
#ifndef FLIPPR_DRIVER_ITEMVARHOLDER_H
#define FLIPPR_DRIVER_ITEMVARHOLDER_H
#include <Poco/Dynamic/VarHolder.h>
#include <memory>
#include "output/items/Item.h"
template <>
class Poco::Dynamic::VarHolderImpl<std::shared_ptr<flippR_driver::output::items::Item>> : public Poco::Dynamic::VarHolder
{
public:
VarHolderImpl(const std::shared_ptr<flippR_driver::output::items::Item> & item) :
item(item)
{}
void convert(std::string & val) const override
{
val = this->item->get_name();
}
VarHolder * clone(Placeholder < VarHolder > * pHolder = 0) const override
{
return cloneHolder(pHolder, item);
}
const std::type_info & type() const override
{
return typeid(item);
}
const std::shared_ptr<flippR_driver::output::items::Item> & value() const
{
return item;
}
private:
std::shared_ptr<flippR_driver::output::items::Item> item;
};
#endif //FLIPPR_DRIVER_ITEMVARHOLDER_H