49 lines
970 B
C++
49 lines
970 B
C++
//
|
|
// 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
|