32 m->second->setParentNode(node);
37 m->setParentNode(node);
64 std::queue<Module*> moduleQueue;
65 std::set<ObjectId> moduleSet;
69 auto retrieveModules = [&](
ObjectId id, std::vector<FBase *>& fields) {
70 for(
auto f : fields) {
71 auto& sinks = f->getSinks();
72 for(
auto sink : sinks)
75 if (module !=
nullptr)
80 if (moduleSet.find(oId) == moduleSet.end() &&
mModuleMap.count(oId) > 0)
82 moduleSet.insert(oId);
83 moduleQueue.push(module);
91 retrieveModules(
baseId, fields);
95 moduleQueue.push(m.get());
101 while (!moduleQueue.empty())
103 Module* m = moduleQueue.front();
106 retrieveModules(m->
objectId(), outFields);
Graph class represents a directed graph.
void addEdge(ObjectId v, ObjectId w)
std::vector< ObjectId > & topologicalSort(ObjectId v)
void pushModule(std::shared_ptr< Module > m)
std::list< Module * > mModuleList
void reconstructPipeline()
std::list< std::shared_ptr< Module > > mPersistentModule
std::map< ObjectId, std::shared_ptr< Module > > mModuleMap
void setParentNode(Node *node) override
Set the parent node.
void updateImpl() override
virtual void setParentNode(Node *node)
Set the parent node.
Module(std::string name="default")
std::vector< FBase * > & getOutputFields()
std::vector< FBase * > & getInputFields()
static ObjectId baseId()
Base Id.
This is an implementation of AdditiveCCD based on peridyno.