vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | 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 <[email protected]> > 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; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
