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