db/upnp/Object: disallow copying, always move

Reduce bloat.
This commit is contained in:
Max Kellermann 2014-01-14 14:11:07 +01:00
parent 9a4b572d34
commit 46debfb8b5
4 changed files with 11 additions and 8 deletions

View File

@ -488,7 +488,7 @@ UpnpDatabase::ReadNode(ContentDirectoryService *server,
return false;
if (dirbuf.objects.size() == 1) {
dirent = dirbuf.objects[0];
dirent = std::move(dirbuf.objects[0]);
} else {
error.Format(upnp_domain, "Bad resource");
return false;
@ -542,8 +542,7 @@ UpnpDatabase::Namei(ContentDirectoryService* server,
return false;
// Look for the name in the sub-container list
const UPnPDirObject *child =
dirbuf.FindObject(vpath[i].c_str());
UPnPDirObject *child = dirbuf.FindObject(vpath[i].c_str());
if (child == nullptr)
break;
@ -558,7 +557,7 @@ UpnpDatabase::Namei(ContentDirectoryService* server,
// The last element in the path was found and it's
// a container, we're done
oobjid = objid;
odirent = *child;
odirent = std::move(*child);
return true;
}
break;
@ -568,7 +567,7 @@ UpnpDatabase::Namei(ContentDirectoryService* server,
// else it does not exist
if (i == vpath.size() - 1) {
oobjid = objid;
odirent = *child;
odirent = std::move(*child);
return true;
} else {
error.Format(db_domain, DB_NOT_FOUND,

View File

@ -151,7 +151,7 @@ protected:
{
if ((!strcmp(name, "container") || !strcmp(name, "item")) &&
checkobjok())
m_dir.objects.push_back(m_tobj);
m_dir.objects.push_back(std::move(m_tobj));
m_path.pop_back();
}

View File

@ -37,8 +37,8 @@ public:
std::vector<UPnPDirObject> objects;
gcc_pure
const UPnPDirObject *FindObject(const char *name) const {
for (const auto &o : objects)
UPnPDirObject *FindObject(const char *name) {
for (auto &o : objects)
if (o.name == name)
return &o;

View File

@ -70,6 +70,10 @@ public:
*/
int duration;
UPnPDirObject() = default;
UPnPDirObject(UPnPDirObject &&) = default;
UPnPDirObject &operator=(UPnPDirObject &&) = default;
/** Get named property
* @param property name (e.g. upnp:artist, upnp:album,
* upnp:originalTrackNumber, upnp:genre). Use m_title instead