#ifndef MAPCORE_H #define MAPCORE_H #include #include "moduleprototype.h" class MapCore { public: MapCore(); std::shared_ptr root() const; void setRoot(std::shared_ptr root); std::shared_ptr refreshRoot(std::shared_ptr old, std::shared_ptr _new); QList> dataTypes() const; void typeAppend(std::shared_ptr type); void typeRemove(std::shared_ptr type); void typeUpdate(std::shared_ptr type); private: std::shared_ptr root_bind = nullptr; }; class MapVisitor{ public: explicit MapVisitor(MapCore &base); /** * @brief 获取指定节点的访问句柄 * @param node * @return */ std::shared_ptr findTarget(std::shared_ptr node) const; std::shared_ptr findLink(std::shared_ptr node) const; /** * @brief 获取满足指定条件的节点 * @param proc * @return */ QList> collect(std::function)> proc) const; private: MapCore &core_bind; std::shared_ptr find_link(std::shared_ptr pinst, std::shared_ptr handle, std::shared_ptr node) const; std::shared_ptr find_target(std::shared_ptr handle, std::shared_ptr node) const; QList> collect(std::shared_ptr handle, std::function)> proc) const; }; #endif // MAPCORE_H