.. _program_listing_file_src_flamegpu_model_SubAgentData.cpp: Program Listing for File SubAgentData.cpp ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/flamegpu/model/SubAgentData.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "flamegpu/model/SubAgentData.h" #include "flamegpu/model/SubAgentDescription.h" #include "flamegpu/model/AgentData.h" #include "flamegpu/model/ModelData.h" namespace flamegpu { SubAgentData::SubAgentData(std::shared_ptr _model, const std::shared_ptr &_parent, const SubAgentData &other) : model(std::move(_model)) , subAgent(_parent->submodel->agents.at(other.subAgent.lock()->name)) // These two can only fail if the submodeldesc is cloned before the submodel , masterAgent(_model->agents.at(other.masterAgent.lock()->name)) , parent(_parent) { variables.insert(other.variables.begin(), other.variables.end()); states.insert(other.states.begin(), other.states.end()); } SubAgentData::SubAgentData(std::shared_ptr _model, const std::shared_ptr &_parent, const std::shared_ptr &_subAgent, const std::shared_ptr &_masterAgent) : model(std::move(_model)) , subAgent(_subAgent) , masterAgent(_masterAgent) , parent(_parent) { } bool SubAgentData::operator==(const SubAgentData &rhs) const { if (this == &rhs) // They point to same object return true; // Compare members if (variables == rhs.variables && states == rhs.states // && model.lock() == rhs.model.lock() // Don't check weak pointers // && masterAgent.lock() == rhs.masterAgent.lock() // Skipping any equality here feels unsafe ) { // Compare variables map return true; } return false; } bool SubAgentData::operator!=(const SubAgentData &rhs) const { return !(*this == rhs); } } // namespace flamegpu