diff options
author | Max Kellermann <max@duempel.org> | 2014-01-21 22:46:47 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-21 23:33:28 +0100 |
commit | 54348561362f23b709c04d3e5deac9694698d784 (patch) | |
tree | afcbd4eb71a48b5fd129d9f704794ed8445169ed /src | |
parent | aa1eb2f40dc7fdef6490634ab82c6f0f82ccfd79 (diff) | |
download | mpd-54348561362f23b709c04d3e5deac9694698d784.tar.gz mpd-54348561362f23b709c04d3e5deac9694698d784.tar.xz mpd-54348561362f23b709c04d3e5deac9694698d784.zip |
db/upnp: use std::list instead of std::vector
Reduce overhead.
Diffstat (limited to 'src')
-rw-r--r-- | src/db/UpnpDatabasePlugin.cxx | 13 | ||||
-rw-r--r-- | src/db/upnp/Util.cxx | 4 | ||||
-rw-r--r-- | src/db/upnp/Util.hxx | 4 |
3 files changed, 11 insertions, 10 deletions
diff --git a/src/db/UpnpDatabasePlugin.cxx b/src/db/UpnpDatabasePlugin.cxx index 7e2bfb2f6..3b9615295 100644 --- a/src/db/UpnpDatabasePlugin.cxx +++ b/src/db/UpnpDatabasePlugin.cxx @@ -105,7 +105,7 @@ protected: private: bool VisitServer(ContentDirectoryService &server, - const std::vector<std::string> &vpath, + const std::list<std::string> &vpath, const DatabaseSelection &selection, VisitDirectory visit_directory, VisitSong visit_song, @@ -129,7 +129,7 @@ private: Error &error) const; bool Namei(ContentDirectoryService &server, - const std::vector<std::string> &vpath, + const std::list<std::string> &vpath, UPnPDirObject &dirent, Error &error) const; @@ -229,7 +229,8 @@ UpnpDatabase::GetSong(const char *uri, Error &error) const if (!m_superdir->getServer(vpath.front().c_str(), server, error)) return nullptr; - vpath.erase(vpath.begin()); + vpath.pop_front(); + UPnPDirObject dirent; if (vpath.front() != rootid) { if (!Namei(server, vpath, dirent, error)) @@ -463,7 +464,7 @@ UpnpDatabase::BuildPath(ContentDirectoryService &server, // Take server and internal title pathname and return objid and metadata. bool UpnpDatabase::Namei(ContentDirectoryService &server, - const std::vector<std::string> &vpath, + const std::list<std::string> &vpath, UPnPDirObject &odirent, Error &error) const { @@ -528,7 +529,7 @@ UpnpDatabase::Namei(ContentDirectoryService &server, // really just one path parameter. bool UpnpDatabase::VisitServer(ContentDirectoryService &server, - const std::vector<std::string> &vpath, + const std::list<std::string> &vpath, const DatabaseSelection &selection, VisitDirectory visit_directory, VisitSong visit_song, @@ -706,7 +707,7 @@ UpnpDatabase::Visit(const DatabaseSelection &selection, // We do have a path: the first element selects the server std::string servername(std::move(vpath.front())); - vpath.erase(vpath.begin()); + vpath.pop_front(); ContentDirectoryService server; if (!m_superdir->getServer(servername.c_str(), server, error)) diff --git a/src/db/upnp/Util.cxx b/src/db/upnp/Util.cxx index fc9ef6281..383e23074 100644 --- a/src/db/upnp/Util.cxx +++ b/src/db/upnp/Util.cxx @@ -88,11 +88,11 @@ path_getfather(const std::string &s) return father; } -std::vector<std::string> +std::list<std::string> stringToTokens(const std::string &str, const char *delims, bool skipinit) { - std::vector<std::string> tokens; + std::list<std::string> tokens; std::string::size_type startPos = 0; diff --git a/src/db/upnp/Util.hxx b/src/db/upnp/Util.hxx index ba5633331..5812c5d9f 100644 --- a/src/db/upnp/Util.hxx +++ b/src/db/upnp/Util.hxx @@ -23,7 +23,7 @@ #include "Compiler.h" #include <string> -#include <vector> +#include <list> std::string caturl(const std::string& s1, const std::string& s2); @@ -36,7 +36,7 @@ std::string path_getfather(const std::string &s); gcc_pure -std::vector<std::string> +std::list<std::string> stringToTokens(const std::string &str, const char *delims = "/", bool skipinit = true); |