5#include <RobotAPI/interface/armem/query.h>
16 template <
class _CoreSegmentT,
class _ResultCoreSegmentT,
class _ChildProcessorT>
20 armem::query::data::CoreSegmentQuery>
25 armem::query::data::CoreSegmentQuery>;
51 const armem::query::data::CoreSegmentQuery&
query,
54 if (
auto q =
dynamic_cast<const armem::query::data::core::All*
>(&
query))
58 else if (
auto q =
dynamic_cast<const armem::query::data::core::Single*
>(&
query))
62 else if (
auto q =
dynamic_cast<const armem::query::data::core::Regex*
>(&
query))
74 const armem::query::data::core::All&
query,
77 coreSegment.forEachProviderSegment(
84 const armem::query::data::core::Single&
query,
87 if (
auto providerSegment = coreSegment.findProviderSegment(
query.providerSegmentName))
95 const armem::query::data::core::Regex&
query,
98 const std::regex regex(
query.providerSegmentNameRegex);
99 coreSegment.forEachProviderSegment(
102 if (std::regex_search(providerSegment.name(), regex))
114 const armem::query::data::CoreSegmentQuery&
query)
const
117 if (child ==
nullptr)
120 &result.addProviderSegment(providerSegment.name(), providerSegment.aronType());
Indicates that an entity's history was queried, but is empty.
Base class for memory query processors.
_ResultCoreSegmentT process(const armem::query::data::CoreSegmentQuery &query, const _CoreSegmentT &data) const
typename ResultCoreSegmentT::ProviderSegmentT ResultProviderSegmentT
virtual void process(ResultCoreSegmentT &result, const armem::query::data::core::All &query, const CoreSegmentT &coreSegment) const
virtual void process(ResultCoreSegmentT &result, const armem::query::data::core::Single &query, const CoreSegmentT &coreSegment) const
CoreSegmentQueryProcessorBase()
_ResultCoreSegmentT ResultCoreSegmentT
ChildProcessorT childProcessor
void _processResult(ResultCoreSegmentT &result, const ProviderSegmentT &providerSegment, const armem::query::data::CoreSegmentQuery &query) const
virtual void process(ResultCoreSegmentT &result, const armem::query::data::CoreSegmentQuery &query, const CoreSegmentT &coreSegment) const override
Process the query and populate result.
typename CoreSegmentT::ProviderSegmentT ProviderSegmentT
BaseQueryProcessorBase< _CoreSegmentT, _ResultCoreSegmentT, armem::query::data::CoreSegmentQuery > Base
virtual void process(ResultCoreSegmentT &result, const armem::query::data::core::Regex &query, const CoreSegmentT &coreSegment) const
CoreSegmentQueryProcessorBase(ChildProcessorT &&childProcessor)
_ChildProcessorT ChildProcessorT
_CoreSegmentT CoreSegmentT