selectors.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <RobotAPI/interface/armem/query.h>
5 
7 #include "detail/SelectorOps.h"
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 
29  SnapshotSelector& atTime(Time timestamp);
30  SnapshotSelector& atTimeApprox(Time timestamp, Duration eps);
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;
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:
86  ProviderSegmentSelector() = default;
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;
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:
125  CoreSegmentSelector() = default;
126 
127  /// Start specifying provider segments.
130 
131  template <class... Ts>
133  providerSegments(Ts... args)
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;
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
armarx::armem::client::query::EntitySelector::all
EntitySelector & all() override
Definition: selectors.cpp:104
armarx::armem::client::query::ProviderSegmentSelector
Definition: selectors.h:79
armarx::armem::client::query::ProviderSegmentSelector::withNamesMatching
ProviderSegmentSelector & withNamesMatching(const std::string &regex) override
Definition: selectors.cpp:163
armarx::armem::client::query::SnapshotSelector::latest
SnapshotSelector & latest()
Definition: selectors.cpp:30
armarx::armem::client::query::ProviderSegmentSelector::entities
EntitySelector & entities()
Start specifying entities.
Definition: selectors.cpp:135
armarx::armem::client::query::CoreSegmentSelector::_setChildQueries
void _setChildQueries(armem::query::data::MemoryQueryPtr &query, const armem::query::data::CoreSegmentQuerySeq &childQueries) const override
Definition: selectors.cpp:214
armarx::armem::client::query::SnapshotSelector::timeRange
SnapshotSelector & timeRange(Time min, Time max)
Definition: selectors.cpp:46
armarx::armem::client::query::EntitySelector::snapshots
SnapshotSelector & snapshots()
Start specifying entity snapshots.
Definition: selectors.cpp:92
armarx::armem::client::query::EntitySelector::EntitySelector
EntitySelector()=default
armarx::max
std::vector< T > max(const std::vector< T > &v1, const std::vector< T > &v2)
Definition: VectorHelpers.h:297
armarx::armem::client::query::SnapshotSelector::all
SnapshotSelector & all() override
Definition: selectors.cpp:22
NameSelectorOps.h
SelectorOps.h
armarx::armem::client::query::CoreSegmentSelector::all
CoreSegmentSelector & all() override
Definition: selectors.cpp:190
armarx::armem::client::query::ProviderSegmentSelector::_setChildQueries
void _setChildQueries(armem::query::data::CoreSegmentQueryPtr &query, const armem::query::data::ProviderSegmentQuerySeq &childQueries) const override
Definition: selectors.cpp:171
armarx::armem::client::query::EntitySelector::withID
EntitySelector & withID(const MemoryID &id) override
Definition: selectors.h:63
armarx::armem::client::query::ProviderSegmentSelector::withID
ProviderSegmentSelector & withID(const MemoryID &id) override
Definition: selectors.h:102
armarx::armem::client::query::SnapshotSelector::beforeTime
SnapshotSelector & beforeTime(Time timestamp, long maxEntries=1)
Definition: selectors.cpp:81
armarx::armem::client::query::SnapshotSelector::SnapshotSelector
SnapshotSelector()=default
armarx::armem::client::query::SnapshotSelector
Definition: selectors.h:11
armarx::armem::client::query
Definition: forward_declarations.h:6
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::client::query::EntitySelector::withNamesMatching
EntitySelector & withNamesMatching(const std::string &regex) override
Definition: selectors.cpp:120
armarx::armem::client::query::detail::NameSelectorOps
Definition: NameSelectorOps.h:10
armarx::armem::client::query::CoreSegmentSelector::withName
CoreSegmentSelector & withName(const std::string &name) override
Definition: selectors.cpp:198
armarx::armem::client::query::CoreSegmentSelector::withID
CoreSegmentSelector & withID(const MemoryID &id) override
Definition: selectors.h:141
armarx::armem::client::query::detail::InnerSelectorOps
Definition: SelectorOps.h:114
armarx::armem::client::query::SnapshotSelector::withID
SnapshotSelector & withID(const MemoryID &id) override
Definition: selectors.h:23
armarx::armem::client::query::SnapshotSelector::atTimeApprox
SnapshotSelector & atTimeApprox(Time timestamp, Duration eps)
Definition: selectors.cpp:55
armarx::armem::client::query_fns::withNames
auto withNames(const std::vector< std::string > &names)
Definition: query_fns.h:35
armarx::armem::client::query::CoreSegmentSelector::CoreSegmentSelector
CoreSegmentSelector()=default
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::client::query::SnapshotSelector::buildQueries
armem::query::data::EntityQuerySeq buildQueries() const
Definition: selectors.cpp:16
armarx::armem::client::query::EntitySelector::withName
EntitySelector & withName(const std::string &name) override
Definition: selectors.cpp:112
armarx::armem::client::query::ProviderSegmentSelector::withName
ProviderSegmentSelector & withName(const std::string &name) override
Definition: selectors.cpp:155
armarx::armem::client::query::SnapshotSelector::atTime
SnapshotSelector & atTime(Time timestamp)
Definition: selectors.cpp:38
armarx::armem::client::query::CoreSegmentSelector::withNamesMatching
CoreSegmentSelector & withNamesMatching(const std::string &regex) override
Definition: selectors.cpp:206
armarx::armem::client::query::SnapshotSelector::beforeOrAtTime
SnapshotSelector & beforeOrAtTime(Time timestamp)
Definition: selectors.cpp:73
armarx::min
std::vector< T > min(const std::vector< T > &v1, const std::vector< T > &v2)
Definition: VectorHelpers.h:327
armarx::armem::client::query::CoreSegmentSelector
Definition: selectors.h:118
armarx::core::time::Duration
Represents a duration.
Definition: Duration.h:16
Time.h
armarx::armem::client::query::EntitySelector::snapshots
SnapshotSelector & snapshots(Ts... args)
Definition: selectors.h:55
armarx::armem::client::query::CoreSegmentSelector::providerSegments
ProviderSegmentSelector & providerSegments()
Start specifying provider segments.
Definition: selectors.cpp:178
armarx::armem::client::query::EntitySelector
Definition: selectors.h:39
armarx::armem::client::query::ProviderSegmentSelector::entities
EntitySelector & entities(Ts... args)
Definition: selectors.h:94
armarx::armem::client::query::EntitySelector::_setChildQueries
void _setChildQueries(armem::query::data::ProviderSegmentQueryPtr &query, const armem::query::data::EntityQuerySeq &childQueries) const override
Definition: selectors.cpp:128
armarx::armem::client::query::SnapshotSelector::indexRange
SnapshotSelector & indexRange(long first, long last)
Definition: selectors.cpp:64
armarx::armem::client::query::ProviderSegmentSelector::all
ProviderSegmentSelector & all() override
Definition: selectors.cpp:147
armarx::armem::client::query::detail::ParentSelectorOps< EntitySelector, SnapshotSelector >::_addChild
ChildT & _addChild()
Definition: SelectorOps.h:90
armarx::armem::client::query::ProviderSegmentSelector::ProviderSegmentSelector
ProviderSegmentSelector()=default
armarx::armem::client::query::detail::ChildSelectorOps
Definition: SelectorOps.h:14
armarx::armem::client::query::CoreSegmentSelector::providerSegments
ProviderSegmentSelector & providerSegments(Ts... args)
Definition: selectors.h:133