db/upnp: move stringToTokens() to Util.cxx
This commit is contained in:
parent
8351543c0f
commit
b50d79542c
@ -24,6 +24,7 @@
|
||||
#include "upnp/Discovery.hxx"
|
||||
#include "upnp/ContentDirectoryService.hxx"
|
||||
#include "upnp/Directory.hxx"
|
||||
#include "upnp/Util.hxx"
|
||||
#include "LazyDatabase.hxx"
|
||||
#include "DatabasePlugin.hxx"
|
||||
#include "DatabaseSelection.hxx"
|
||||
@ -146,42 +147,6 @@ private:
|
||||
Error &error) const;
|
||||
};
|
||||
|
||||
gcc_pure
|
||||
static std::vector<std::string>
|
||||
stringToTokens(const std::string &str,
|
||||
const char *delims = "/", bool skipinit = true)
|
||||
{
|
||||
std::vector<std::string> tokens;
|
||||
|
||||
std::string::size_type startPos = 0;
|
||||
|
||||
// Skip initial delims, return empty if this eats all.
|
||||
if (skipinit &&
|
||||
(startPos = str.find_first_not_of(delims, 0)) == std::string::npos)
|
||||
return tokens;
|
||||
|
||||
while (startPos < str.size()) {
|
||||
// Find next delimiter or end of string (end of token)
|
||||
auto pos = str.find_first_of(delims, startPos);
|
||||
|
||||
// Add token to the vector and adjust start
|
||||
if (pos == std::string::npos) {
|
||||
tokens.push_back(str.substr(startPos));
|
||||
break;
|
||||
} else if (pos == startPos) {
|
||||
// Dont' push empty tokens after first
|
||||
if (tokens.empty())
|
||||
tokens.push_back(std::string());
|
||||
startPos = ++pos;
|
||||
} else {
|
||||
tokens.push_back(str.substr(startPos, pos - startPos));
|
||||
startPos = ++pos;
|
||||
}
|
||||
}
|
||||
|
||||
return tokens;
|
||||
}
|
||||
|
||||
Database *
|
||||
UpnpDatabase::Create(gcc_unused EventLoop &loop,
|
||||
gcc_unused DatabaseListener &listener,
|
||||
|
@ -89,6 +89,41 @@ path_getfather(const std::string &s)
|
||||
return father;
|
||||
}
|
||||
|
||||
std::vector<std::string>
|
||||
stringToTokens(const std::string &str,
|
||||
const char *delims, bool skipinit)
|
||||
{
|
||||
std::vector<std::string> tokens;
|
||||
|
||||
std::string::size_type startPos = 0;
|
||||
|
||||
// Skip initial delims, return empty if this eats all.
|
||||
if (skipinit &&
|
||||
(startPos = str.find_first_not_of(delims, 0)) == std::string::npos)
|
||||
return tokens;
|
||||
|
||||
while (startPos < str.size()) {
|
||||
// Find next delimiter or end of string (end of token)
|
||||
auto pos = str.find_first_of(delims, startPos);
|
||||
|
||||
// Add token to the vector and adjust start
|
||||
if (pos == std::string::npos) {
|
||||
tokens.push_back(str.substr(startPos));
|
||||
break;
|
||||
} else if (pos == startPos) {
|
||||
// Dont' push empty tokens after first
|
||||
if (tokens.empty())
|
||||
tokens.push_back(std::string());
|
||||
startPos = ++pos;
|
||||
} else {
|
||||
tokens.push_back(str.substr(startPos, pos - startPos));
|
||||
startPos = ++pos;
|
||||
}
|
||||
}
|
||||
|
||||
return tokens;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool
|
||||
csvToStrings(const std::string &s, T &tokens)
|
||||
|
@ -20,7 +20,10 @@
|
||||
#ifndef MPD_UPNP_UTIL_HXX
|
||||
#define MPD_UPNP_UTIL_HXX
|
||||
|
||||
#include "Compiler.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
std::string
|
||||
caturl(const std::string& s1, const std::string& s2);
|
||||
@ -31,6 +34,11 @@ trimstring(std::string &s, const char *ws = " \t\n");
|
||||
std::string
|
||||
path_getfather(const std::string &s);
|
||||
|
||||
gcc_pure
|
||||
std::vector<std::string>
|
||||
stringToTokens(const std::string &str,
|
||||
const char *delims = "/", bool skipinit = true);
|
||||
|
||||
template <class T>
|
||||
bool csvToStrings(const std::string& s, T &tokens);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user