25 namespace SourceXtractor {
28 : m_source(source), m_group(group) {
35 if (entangled_ptr !=
nullptr) {
48 if (m_group.m_property_holder.isPropertySet(property_id)) {
49 return m_group.getProperty(property_id);
55 return m_source->getProperty(property_id);
60 auto group_task = m_group.m_task_provider->getTask<
GroupTask>(property_id);
67 group_task->computeProperties(m_group);
73 return m_group.m_property_holder.getProperty(property_id);
84 return this->m_source < other.
m_source;
void setProperty(std::unique_ptr< Property > property, const PropertyId &property_id) override
A SourceGroupInterface implementation which used a TaskProvider to compute missing properties...
const Property & getProperty(const PropertyId &property_id) const override
std::shared_ptr< SourceInterface > m_source
PropertyHolder m_property_holder
T dynamic_pointer_cast(T...args)
bool operator<(const EntangledSource &other) const
EntangledSource(std::shared_ptr< SourceInterface > source, SourceGroupWithOnDemandProperties &group)