DataStream/mapcore.h

54 lines
1.8 KiB
C
Raw Permalink Normal View History

2024-03-06 15:09:20 +00:00
#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