virtual void AddAgent(Agent *new_agent)=0
Adds the agent to the simulation (threadsafe, takes ownership). Note that we avoid the use of smart p...
virtual Agent * GetAgent(const AgentUid &uid)=0
virtual ~ExecutionContext()=default
virtual void ForEachNeighbor(Functor< void, Agent * > &lambda, const Agent &query, void *criteria)=0
virtual void TearDownIterationAll(const std::vector< ExecutionContext * > &all_exec_ctxts)=0
virtual void SetupIterationAll(const std::vector< ExecutionContext * > &all_exec_ctxts)=0
virtual void SetupAgentOpsAll(const std::vector< ExecutionContext * > &all_exec_ctxts)=0
virtual const Agent * GetConstAgent(const AgentUid &uid)=0
virtual void TearDownAgentOpsAll(const std::vector< ExecutionContext * > &all_exec_ctxts)=0
virtual void Execute(Agent *agent, AgentHandle ah, const std::vector< Operation * > &operations)=0
virtual void RemoveAgent(const AgentUid &uid)=0