Modernize mapper core types
There's a number of best practices that have evolved in our use of
flat_maps and flat_sets since this code was originally written.
First, add std::less<> to the Compare template argument. The default
for this is std::less<Key> which limits find() calls (and any lookup for
that matter) to only supporting std::string. Using std::less<> allows
lookup by std::string_view, which can prevent some copies in some cases.
Next, add std::vector<...> to the types under the AllocatorOrContainer
template arg. Per our coding standard, this overrides the default of
using boost::vector, and replaces it with std::vector, which, although
it has a very similar interface, tends to optimize better, and be better
supported overall.
The rest of this patch updates a couple places where the various types
were specifically hardcoded, so it moves to using the various using
declarations.
Tested: Unit tests; Next patch tests this more fully.
Change-Id: I11e8ecb669f31193c55dda344b25d3fa5d191502
Signed-off-by: Ed Tanous <edtanous@google.com>
diff --git a/src/main.cpp b/src/main.cpp
index 86ef055..9ceb9ab 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -359,11 +359,9 @@
}
}
-void addObjectMapResult(
- std::vector<InterfaceMapType::value_type>& objectMap,
- const std::string& objectPath,
- const std::pair<std::string, boost::container::flat_set<std::string>>&
- interfaceMap)
+void addObjectMapResult(std::vector<InterfaceMapType::value_type>& objectMap,
+ const std::string& objectPath,
+ const ConnectionNames::value_type& interfaceMap)
{
// Adds an object path/service name/interface list entry to
// the results of GetSubTree and GetAncestors.
@@ -494,13 +492,11 @@
return ret;
}
-boost::container::flat_map<std::string, boost::container::flat_set<std::string>>
- getObject(const InterfaceMapType& interfaceMap, const std::string& path,
- std::vector<std::string>& interfaces)
+ConnectionNames getObject(const InterfaceMapType& interfaceMap,
+ const std::string& path,
+ std::vector<std::string>& interfaces)
{
- boost::container::flat_map<std::string,
- boost::container::flat_set<std::string>>
- results;
+ ConnectionNames results;
// Interfaces need to be sorted for intersect to function
std::sort(interfaces.begin(), interfaces.end());