NameSelectorOps.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
7 {
8 
9  template <class DerivedT>
11  {
12  public:
13  NameSelectorOps() = default;
14  virtual ~NameSelectorOps() = default;
15 
16 
17  virtual DerivedT& withName(const std::string& name) = 0;
18  virtual DerivedT& withNamesMatching(const std::string& regex) = 0;
19 
20  virtual DerivedT&
21  withNames(const std::vector<std::string>& names)
22  {
23  return withNames<std::vector<std::string>>(names);
24  }
25 
26  template <class StringContainerT>
27  DerivedT&
28  withNames(const StringContainerT& names)
29  {
30  return withNames(names.begin(), names.end());
31  }
32 
33  template <class IteratorT>
34  DerivedT&
35  withNames(IteratorT begin, IteratorT end)
36  {
37  for (auto it = begin; it != end; ++it)
38  {
39  this->withName(*it);
40  }
41  return dynamic_cast<DerivedT&>(*this);
42  }
43 
44  virtual DerivedT&
45  withNamesStartingWith(const std::string& prefix)
46  {
47  return withNamesMatching(prefix + ".*");
48  }
49 
50  virtual DerivedT&
51  withNamesEndingWith(const std::string& suffix)
52  {
53  return withNamesMatching(".*" + suffix);
54  }
55 
56  virtual DerivedT&
57  withNamesContaining(const std::string& substring)
58  {
59  return withNamesMatching(".*" + substring + ".*");
60  }
61  };
62 
63 } // namespace armarx::armem::client::query::detail
armarx::armem::client::query::detail
Definition: NameSelectorOps.h:6
armarx::armem::client::query::detail::NameSelectorOps::withName
virtual DerivedT & withName(const std::string &name)=0
armarx::armem::client::query::detail::NameSelectorOps::withNamesStartingWith
virtual DerivedT & withNamesStartingWith(const std::string &prefix)
Definition: NameSelectorOps.h:45
armarx::armem::client::query::detail::NameSelectorOps::withNames
DerivedT & withNames(IteratorT begin, IteratorT end)
Definition: NameSelectorOps.h:35
armarx::armem::client::query::detail::NameSelectorOps
Definition: NameSelectorOps.h:10
armarx::armem::client::query::detail::NameSelectorOps::withNamesMatching
virtual DerivedT & withNamesMatching(const std::string &regex)=0
armarx::armem::client::query::detail::NameSelectorOps::withNames
virtual DerivedT & withNames(const std::vector< std::string > &names)
Definition: NameSelectorOps.h:21
armarx::armem::client::query::detail::NameSelectorOps::NameSelectorOps
NameSelectorOps()=default
armarx::viz::data::ElementFlags::names
const simox::meta::IntEnumNames names
Definition: json_elements.cpp:13
armarx::armem::client::query::detail::NameSelectorOps::withNamesEndingWith
virtual DerivedT & withNamesEndingWith(const std::string &suffix)
Definition: NameSelectorOps.h:51
armarx::armem::client::query::detail::NameSelectorOps::withNames
DerivedT & withNames(const StringContainerT &names)
Definition: NameSelectorOps.h:28
armarx::armem::client::query::detail::NameSelectorOps::~NameSelectorOps
virtual ~NameSelectorOps()=default
armarx::armem::client::query::detail::NameSelectorOps::withNamesContaining
virtual DerivedT & withNamesContaining(const std::string &substring)
Definition: NameSelectorOps.h:57