fpmas 1.6
Public Member Functions | List of all members
fpmas::api::model::Agent Class Referenceabstract

#include <model.h>

Inheritance diagram for fpmas::api::model::Agent:
Inheritance graph
[legend]

Public Member Functions

virtual GroupId groupId () const =0
 
virtual std::vector< GroupIdgroupIds () const =0
 
virtual void setGroupId (GroupId id)=0
 
virtual void addGroupId (GroupId id)=0
 
virtual void removeGroupId (GroupId id)=0
 
virtual AgentGroupgroup ()=0
 
virtual const AgentGroupgroup () const =0
 
virtual std::vector< AgentGroup * > groups ()=0
 
virtual std::vector< const AgentGroup * > groups () const =0
 
virtual void setGroup (AgentGroup *group)=0
 
virtual void addGroup (AgentGroup *group)=0
 
virtual void removeGroup (AgentGroup *group)=0
 
virtual void setGroupPos (api::model::GroupId gid, std::list< Agent * >::iterator pos)=0
 
virtual std::list< Agent * >::iterator getGroupPos (api::model::GroupId gid) const =0
 
virtual TypeId typeId () const =0
 
virtual Agentcopy () const =0
 
virtual void copyAssign (Agent *agent)=0
 
virtual void moveAssign (Agent *agent)=0
 
virtual AgentNodenode ()=0
 
virtual const AgentNodenode () const =0
 
virtual void setNode (AgentNode *node)=0
 
virtual Modelmodel ()=0
 
virtual const Modelmodel () const =0
 
virtual void setModel (Model *model)=0
 
virtual AgentTasktask ()=0
 
virtual const AgentTasktask () const =0
 
virtual void setTask (AgentTask *task)=0
 
virtual AgentTasktask (GroupId id)=0
 
virtual const AgentTasktask (GroupId id) const =0
 
virtual void setTask (GroupId id, AgentTask *task)=0
 
virtual const std::unordered_map< GroupId, AgentTask * > & tasks ()=0
 
virtual void act ()=0
 

Detailed Description

Generic Agent API.

Agents in a simulation are assumed to take advantage of polymorphism : a single type is used to store Agents in an api::graph::DistributedGraph (more precisely, AgentPtr is used), but pointed Agents might have different types and implement different the act() functions to produce different behaviors.

Member Function Documentation

◆ groupId()

virtual GroupId fpmas::api::model::Agent::groupId ( ) const
pure virtual

◆ groupIds()

virtual std::vector< GroupId > fpmas::api::model::Agent::groupIds ( ) const
pure virtual

◆ setGroupId()

virtual void fpmas::api::model::Agent::setGroupId ( GroupId  id)
pure virtual

◆ addGroupId()

virtual void fpmas::api::model::Agent::addGroupId ( GroupId  id)
pure virtual

◆ removeGroupId()

virtual void fpmas::api::model::Agent::removeGroupId ( GroupId  id)
pure virtual

◆ group() [1/2]

virtual AgentGroup * fpmas::api::model::Agent::group ( )
pure virtual

◆ group() [2/2]

virtual const AgentGroup * fpmas::api::model::Agent::group ( ) const
pure virtual

◆ groups() [1/2]

virtual std::vector< AgentGroup * > fpmas::api::model::Agent::groups ( )
pure virtual

◆ groups() [2/2]

virtual std::vector< const AgentGroup * > fpmas::api::model::Agent::groups ( ) const
pure virtual

◆ setGroup()

virtual void fpmas::api::model::Agent::setGroup ( AgentGroup group)
pure virtual

◆ addGroup()

virtual void fpmas::api::model::Agent::addGroup ( AgentGroup group)
pure virtual

◆ removeGroup()

virtual void fpmas::api::model::Agent::removeGroup ( AgentGroup group)
pure virtual

◆ setGroupPos()

virtual void fpmas::api::model::Agent::setGroupPos ( api::model::GroupId  gid,
std::list< Agent * >::iterator  pos 
)
pure virtual

Sets a list position associated to the group represented by gid, that can be retrieved with getGroupPos().

There is no specific requirement about those methods, that can be used or not. However, AgentGroup implementations can take advantage of this feature to optimize Agent insertion and removal in constant time, using an std::list as an internal data structure.

Parameters
gidgroup ID
poslist iterator that references the current Agent within the group associated to gid

◆ getGroupPos()

virtual std::list< Agent * >::iterator fpmas::api::model::Agent::getGroupPos ( api::model::GroupId  gid) const
pure virtual

◆ typeId()

virtual TypeId fpmas::api::model::Agent::typeId ( ) const
pure virtual

◆ copy()

virtual Agent * fpmas::api::model::Agent::copy ( ) const
pure virtual

◆ copyAssign()

virtual void fpmas::api::model::Agent::copyAssign ( Agent agent)
pure virtual

◆ moveAssign()

virtual void fpmas::api::model::Agent::moveAssign ( Agent agent)
pure virtual

◆ node() [1/2]

virtual AgentNode * fpmas::api::model::Agent::node ( )
pure virtual

◆ node() [2/2]

virtual const AgentNode * fpmas::api::model::Agent::node ( ) const
pure virtual

◆ setNode()

virtual void fpmas::api::model::Agent::setNode ( AgentNode node)
pure virtual

◆ model() [1/2]

virtual Model * fpmas::api::model::Agent::model ( )
pure virtual

◆ model() [2/2]

virtual const Model * fpmas::api::model::Agent::model ( ) const
pure virtual

◆ setModel()

virtual void fpmas::api::model::Agent::setModel ( Model model)
pure virtual

◆ task() [1/4]

virtual AgentTask * fpmas::api::model::Agent::task ( )
pure virtual

◆ task() [2/4]

virtual const AgentTask * fpmas::api::model::Agent::task ( ) const
pure virtual

◆ setTask() [1/2]

virtual void fpmas::api::model::Agent::setTask ( AgentTask task)
pure virtual

◆ task() [3/4]

virtual AgentTask * fpmas::api::model::Agent::task ( GroupId  id)
pure virtual

◆ task() [4/4]

virtual const AgentTask * fpmas::api::model::Agent::task ( GroupId  id) const
pure virtual

◆ setTask() [2/2]

virtual void fpmas::api::model::Agent::setTask ( GroupId  id,
AgentTask task 
)
pure virtual

◆ tasks()

virtual const std::unordered_map< GroupId, AgentTask * > & fpmas::api::model::Agent::tasks ( )
pure virtual

◆ act()

virtual void fpmas::api::model::Agent::act ( )
pure virtual

The documentation for this class was generated from the following file: