Program Listing for File SubEnvironmentData.cpp
↰ Return to documentation for file (src/flamegpu/model/SubEnvironmentData.cpp
)
#include "flamegpu/model/SubEnvironmentData.h"
#include "flamegpu/model/SubEnvironmentDescription.h"
#include "flamegpu/model/ModelData.h"
#include "flamegpu/model/SubModelData.h"
namespace flamegpu {
SubEnvironmentData::SubEnvironmentData(std::shared_ptr<const ModelData> _model, const std::shared_ptr<SubModelData> &_parent, const SubEnvironmentData &other)
: model(std::move(_model))
, subEnvironment(_parent->submodel->environment) // These two can only fail if the submodeldesc is cloned before the submodel
, masterEnvironment(_model->environment)
, parent(_parent) {
properties.insert(other.properties.begin(), other.properties.end());
macro_properties.insert(other.macro_properties.begin(), other.macro_properties.end());
directed_graphs.insert(other.directed_graphs.begin(), other.directed_graphs.end());
}
SubEnvironmentData::SubEnvironmentData(
std::shared_ptr<const ModelData> _model,
const std::shared_ptr<SubModelData> &_parent,
const std::shared_ptr<EnvironmentData> &_subEnvironment)
: model(std::move(_model))
, subEnvironment(_parent->submodel->environment)
, masterEnvironment(_model->environment)
, parent(_parent) { }
bool SubEnvironmentData::operator==(const SubEnvironmentData& rhs) const {
if (this == &rhs) // They point to same object
return true;
// Compare members
if (properties == rhs.properties
&& macro_properties == rhs.macro_properties
&& directed_graphs == rhs.directed_graphs
// && model.lock() == rhs.model.lock() // Don't check weak pointers
// && masterEnvironment.lock() == rhs.masterEnvironment.lock() // Skipping any equality here feels unsafe
) {
return true;
}
return false;
}
bool SubEnvironmentData::operator!=(const SubEnvironmentData& rhs) const {
return !(*this == rhs);
}
} // namespace flamegpu