#ifndef SMART_VALUE_MANAGER_H_INCLUDED #define SMART_VALUE_MANAGER_H_INCLUDED #include "include/Utils/Utils.h" #pragma warning(disable: 4503) //ololo, DisctionariesMap expands into looong boolshit namespace SE { typedef boost::variant< std::shared_ptr>, std::shared_ptr>, std::shared_ptr>, std::shared_ptr>, std::shared_ptr>, std::shared_ptr>, std::shared_ptr>> TSmartValue; class TSmartValueManager : public TSerializeInterface { protected: std::map> DisctionariesMap; public: TSmartValue& GetSmartValue(const std::string& dictName, const std::string& valueName); template TYPENAME GetImmediateValue(const std::string& dictName, const std::string& valueName) { return (*boost::get>>(GetSmartValue(dictName, valueName)))(); } template void SetImmediateValue(const std::string& dictName, const std::string& valueName, TYPENAME value) { *boost::get>>(GetSmartValue(dictName, valueName)) = value; } template boost::signal& GetSignal(const std::string& dictName, const std::string& valueName) { return boost::get>>(GetSmartValue(dictName, valueName))->OnVarChanged; } virtual void Serialize(boost::property_tree::ptree& propertyTree); }; } //namespace SE #endif