selectors.h
Go to the documentation of this file.
1#pragma once
2
3#include <RobotAPI/interface/armem/query.h>
5
8
10{
12 public detail::ChildSelectorOps<SnapshotSelector, armem::query::data::EntityQueryPtr>
13 {
14 public:
15 SnapshotSelector() = default;
16
17 armem::query::data::EntityQuerySeq buildQueries() const;
18
19
20 SnapshotSelector& all() override;
21
23 withID(const MemoryID& id) override
24 {
25 return atTime(id.timestamp);
26 }
27
31
32 SnapshotSelector& beforeTime(Time timestamp, long maxEntries = 1);
34
36 SnapshotSelector& indexRange(long first, long last);
37 };
38
40 public detail::InnerSelectorOps<EntitySelector,
41 armem::query::data::ProviderSegmentQueryPtr,
42 SnapshotSelector>,
43 public detail::NameSelectorOps<EntitySelector>
44
45 {
46 public:
47 EntitySelector() = default;
48
49 /// Start specifying entity snapshots.
52
53 template <class... Ts>
55 snapshots(Ts... args)
56 {
57 return _addChild(args...);
58 }
59
60 EntitySelector& all() override;
61
63 withID(const MemoryID& id) override
64 {
65 return withName(id.entityName);
66 }
67
68 EntitySelector& withName(const std::string& name) override;
69 EntitySelector& withNamesMatching(const std::string& regex) override;
70 using NameSelectorOps::withNames;
71
72
73 protected:
74 void
75 _setChildQueries(armem::query::data::ProviderSegmentQueryPtr& query,
76 const armem::query::data::EntityQuerySeq& childQueries) const override;
77 };
78
80 public detail::InnerSelectorOps<ProviderSegmentSelector,
81 armem::query::data::CoreSegmentQueryPtr,
82 EntitySelector>,
83 public detail::NameSelectorOps<ProviderSegmentSelector>
84 {
85 public:
87
88 /// Start specifying entities.
90 EntitySelector& entities(const EntitySelector& selector);
91
92 template <class... Ts>
94 entities(Ts... args)
95 {
96 return _addChild(args...);
97 }
98
99 ProviderSegmentSelector& all() override;
100
102 withID(const MemoryID& id) override
103 {
104 return withName(id.providerSegmentName);
105 }
106
107 ProviderSegmentSelector& withName(const std::string& name) override;
108 ProviderSegmentSelector& withNamesMatching(const std::string& regex) override;
109 using NameSelectorOps::withNames;
110
111
112 protected:
113 void _setChildQueries(
114 armem::query::data::CoreSegmentQueryPtr& query,
115 const armem::query::data::ProviderSegmentQuerySeq& childQueries) const override;
116 };
117
119 public detail::InnerSelectorOps<CoreSegmentSelector,
120 armem::query::data::MemoryQueryPtr,
121 ProviderSegmentSelector>,
122 public detail::NameSelectorOps<CoreSegmentSelector>
123 {
124 public:
126
127 /// Start specifying provider segments.
130
131 template <class... Ts>
134 {
135 return _addChild(args...);
136 }
137
138 CoreSegmentSelector& all() override;
139
141 withID(const MemoryID& id) override
142 {
143 return withName(id.coreSegmentName);
144 }
145
146 CoreSegmentSelector& withName(const std::string& name) override;
147 CoreSegmentSelector& withNamesMatching(const std::string& regex) override;
148 using NameSelectorOps::withNames;
149
150
151 protected:
152 void _setChildQueries(
153 armem::query::data::MemoryQueryPtr& query,
154 const armem::query::data::CoreSegmentQuerySeq& childQueries) const override;
155 };
156
157} // namespace armarx::armem::client::query
std::string timestamp()
void _setChildQueries(armem::query::data::MemoryQueryPtr &query, const armem::query::data::CoreSegmentQuerySeq &childQueries) const override
CoreSegmentSelector & withID(const MemoryID &id) override
Definition selectors.h:141
CoreSegmentSelector & withNamesMatching(const std::string &regex) override
CoreSegmentSelector & withName(const std::string &name) override
ProviderSegmentSelector & providerSegments(Ts... args)
Definition selectors.h:133
ProviderSegmentSelector & providerSegments()
Start specifying provider segments.
EntitySelector & withID(const MemoryID &id) override
Definition selectors.h:63
EntitySelector & withName(const std::string &name) override
SnapshotSelector & snapshots(const SnapshotSelector &selector)
SnapshotSelector & snapshots(Ts... args)
Definition selectors.h:55
EntitySelector & withNamesMatching(const std::string &regex) override
SnapshotSelector & snapshots()
Start specifying entity snapshots.
Definition selectors.cpp:92
void _setChildQueries(armem::query::data::ProviderSegmentQueryPtr &query, const armem::query::data::EntityQuerySeq &childQueries) const override
void _setChildQueries(armem::query::data::CoreSegmentQueryPtr &query, const armem::query::data::ProviderSegmentQuerySeq &childQueries) const override
ProviderSegmentSelector & withName(const std::string &name) override
ProviderSegmentSelector & withID(const MemoryID &id) override
Definition selectors.h:102
EntitySelector & entities()
Start specifying entities.
ProviderSegmentSelector & all() override
ProviderSegmentSelector & withNamesMatching(const std::string &regex) override
SnapshotSelector & indexRange(long first, long last)
Definition selectors.cpp:64
SnapshotSelector & atTime(Time timestamp)
Definition selectors.cpp:38
SnapshotSelector & beforeOrAtTime(Time timestamp)
Definition selectors.cpp:73
SnapshotSelector & beforeTime(Time timestamp, long maxEntries=1)
Definition selectors.cpp:81
armem::query::data::EntityQuerySeq buildQueries() const
Definition selectors.cpp:16
SnapshotSelector & timeRange(Time min, Time max)
Definition selectors.cpp:46
SnapshotSelector & atTimeApprox(Time timestamp, Duration eps)
Definition selectors.cpp:55
SnapshotSelector & withID(const MemoryID &id) override
Definition selectors.h:23
armarx::core::time::DateTime Time
armarx::core::time::Duration Duration
std::vector< T > max(const std::vector< T > &v1, const std::vector< T > &v2)
std::vector< T > min(const std::vector< T > &v1, const std::vector< T > &v2)