119 std::cout <<
"Pipeline::updateImpl" << std::endl;
136 std::stringstream name;
137 std::stringstream ss;
138 name << std::setw(40) << m->getClassInfo()->getClassName();
141 std::string info =
"\t Module: " + name.str() +
": \t " + ss.str() +
"ms";
182 std::queue<Module*> moduleQueue;
183 std::set<ObjectId> moduleSet;
187 auto retrieveModules = [&](
ObjectId id, std::vector<FBase*>& fields) {
188 for (
auto f : fields) {
189 auto& sinks = f->getSinks();
190 for (
auto sink : sinks)
193 if (module !=
nullptr)
198 if (moduleSet.find(oId) == moduleSet.end() &&
mModuleMap.count(oId) > 0)
200 moduleSet.insert(oId);
201 moduleQueue.push(module);
209 retrieveModules(
baseId, fields);
211 auto flushQueue = [&]()
213 while (!moduleQueue.empty())
215 Module* m = moduleQueue.front();
218 retrieveModules(m->
objectId(), outFields);
227 ObjectId oId = m.second->objectId();
230 if (moduleSet.find(oId) == moduleSet.end())
232 moduleSet.insert(oId);
233 moduleQueue.push(m.second.get());
239 auto exports = m.second->getExportModules();
240 for (
auto exp : exports)
242 auto eId =
exp->getParent()->objectId();
double getElapsedTime()
return the elapsed time in (ms)
Graph class represents a directed graph.
void addEdge(ObjectId v, ObjectId w)
std::vector< ObjectId > & topologicalSort(ObjectId v)
FieldTypeEnum getFieldType()
@ Info
Information to user.
static void sendMessage(MessageType type, const std::string &text)
Add a new message to log.
virtual void setParentNode(Node *node)
Set the parent node.
Module(std::string name="default")
bool addModule(std::shared_ptr< Module > module)
Add a module to m_module_list and other special module lists.
bool deleteModule(std::shared_ptr< Module > module)
std::vector< FBase * > & getAllFields()
std::vector< FBase * > & getOutputFields()
bool removeOutputField(FBase *field)
bool addOutputField(FBase *field)
static ObjectId baseId()
Base Id.
std::list< std::shared_ptr< Module > > mModuleList
uint sizeOfDynamicModules()
std::map< ObjectId, std::shared_ptr< Module > > mModuleMap
uint sizeOfPersistentModules()
void pushModule(std::shared_ptr< Module > m)
virtual bool printDebugInfo()
void updateExecutionQueue()
FBase * promoteOutputToNode(FBase *base)
void pushPersistentModule(std::shared_ptr< Module > m)
bool requireUpdate() final
void demoteOutputFromNode(FBase *base)
std::list< std::shared_ptr< Module > > mPersistentModule
void updateImpl() override
void popModule(std::shared_ptr< Module > m)
void reconstructPipeline()
This is an implementation of AdditiveCCD based on peridyno.
DYN_FUNC Complex< Real > exp(const Complex< Real > &)