[vlc-commits] dash: Node: Avoiding lots of copies
Hugo Beauzée-Luyssen
git at videolan.org
Thu Nov 24 18:14:57 CET 2011
vlc | branch: master | Hugo Beauzée-Luyssen <beauze.h at gmail.com> | Thu Nov 24 17:26:00 2011 +0100| [d6576e6af2472d48bfb36966e29d36bfb74b64ee] | committer: Rémi Denis-Courmont
dash: Node: Avoiding lots of copies
Signed-off-by: Rémi Denis-Courmont <remi at remlab.net>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d6576e6af2472d48bfb36966e29d36bfb74b64ee
---
modules/stream_filter/dash/xml/Node.cpp | 32 ++++++++++++++++++++----------
modules/stream_filter/dash/xml/Node.h | 19 +++++++++--------
2 files changed, 31 insertions(+), 20 deletions(-)
diff --git a/modules/stream_filter/dash/xml/Node.cpp b/modules/stream_filter/dash/xml/Node.cpp
index 3f2b549..fe8c4ca 100644
--- a/modules/stream_filter/dash/xml/Node.cpp
+++ b/modules/stream_filter/dash/xml/Node.cpp
@@ -29,6 +29,8 @@
using namespace dash::xml;
+const std::string Node::EmptyString = "";
+
Node::Node ()
{
}
@@ -38,7 +40,7 @@ Node::~Node ()
delete(this->subNodes.at(i));
}
-std::vector<Node*> Node::getSubNodes ()
+const std::vector<Node*>& Node::getSubNodes () const
{
return this->subNodes;
}
@@ -46,23 +48,29 @@ void Node::addSubNode (Node *node)
{
this->subNodes.push_back(node);
}
-std::string Node::getName ()
+const std::string& Node::getName () const
{
return this->name;
}
-void Node::setName (std::string name)
+void Node::setName (const std::string& name)
{
this->name = name;
}
-std::string Node::getAttributeValue (std::string key)
+
+const std::string& Node::getAttributeValue (const std::string& key) const
{
- return this->attributes[key];
+ std::map<std::string, std::string>::const_iterator it = this->attributes.find( key );
+
+ if ( it != this->attributes.end() )
+ return it->second;
+ return EmptyString;
}
-void Node::addAttribute (std::string key, std::string value)
+
+void Node::addAttribute ( const std::string& key, const std::string& value)
{
this->attributes[key] = value;
}
-std::vector<std::string> Node::getAttributeKeys ()
+std::vector<std::string> Node::getAttributeKeys () const
{
std::vector<std::string> keys;
std::map<std::string, std::string>::const_iterator it;
@@ -73,15 +81,17 @@ std::vector<std::string> Node::getAttributeKeys ()
}
return keys;
}
-bool Node::hasText ()
+
+bool Node::hasText () const
{
return false;
}
-std::string Node::getText ()
+
+const std::string& Node::getText () const
{
- return "";
+ return EmptyString;
}
-std::map<std::string,std::string> Node::getAttributes ()
+const std::map<std::string,std::string>& Node::getAttributes () const
{
return this->attributes;
}
diff --git a/modules/stream_filter/dash/xml/Node.h b/modules/stream_filter/dash/xml/Node.h
index 4a28c5f..e4973a5 100644
--- a/modules/stream_filter/dash/xml/Node.h
+++ b/modules/stream_filter/dash/xml/Node.h
@@ -40,18 +40,19 @@ namespace dash
Node ();
virtual ~Node ();
- std::vector<Node *> getSubNodes ();
+ const std::vector<Node *>& getSubNodes () const;
void addSubNode (Node *node);
- std::string getName ();
- void setName (std::string name);
- void addAttribute (std::string key, std::string value);
- std::string getAttributeValue (std::string key);
- std::vector<std::string> getAttributeKeys ();
- bool hasText ();
- std::string getText ();
- std::map<std::string, std::string> getAttributes ();
+ const std::string& getName () const;
+ void setName (const std::string& name);
+ void addAttribute (const std::string& key, const std::string& value);
+ const std::string& getAttributeValue (const std::string& key) const;
+ std::vector<std::string> getAttributeKeys () const;
+ bool hasText () const;
+ const std::string& getText () const;
+ const std::map<std::string, std::string>& getAttributes () const;
private:
+ static const std::string EmptyString;
std::vector<Node *> subNodes;
std::map<std::string, std::string> attributes;
std::string name;
More information about the vlc-commits
mailing list