/** * feature.h * Feature means a set of functions of robot * * Created By Tony Huang @ 2014-5-22 * Copyright (c) 2014 Shanghai SlamTec Co., Ltd. */ #pragma once #include #include #include #include namespace rpos { namespace core { class Feature; namespace detail { class FeatureImpl; template struct feature_caster { static FeatureT cast(Feature&); }; } class RPOS_CORE_API Feature : public rpos::system::ObjectHandle{ public: RPOS_OBJECT_CTORS(Feature); ~Feature(); public: std::string featureId(); std::string description(); std::vector dependencies(); bool initialize(); bool finalize(); template FeatureT cast() { return detail::feature_caster::cast(*this); } private: template friend struct detail::feature_caster; }; } }