/** * Inkscape::Whiteboard::KeyNodeTable - structure for lookup of values from keys * and vice versa * * Authors: * Bob Jamison * * Copyright (c) 2005 Authors */ #include "keynode.h" #include "util/ucompose.hpp" namespace Inkscape { namespace Whiteboard { void KeyNodeTable::clear() { items.clear(); } void KeyNodeTable::append(const KeyNodeTable &other) { for (unsigned int i = 0; i::iterator iter; for (iter = items.begin() ; iter != items.end() ; ) { if (key == iter->key || node == iter->node) iter = items.erase(iter); else iter++; } //add new KeyNodePair pair(key, node); items.push_back(pair); } XML::Node * KeyNodeTable::get(const Glib::ustring &key) const { std::vector::const_iterator iter; for (iter = items.begin() ; iter != items.end() ; iter++) { if (key == iter->key) return iter->node; } return NULL; } void KeyNodeTable::remove(const Glib::ustring &key) { std::vector::iterator iter; for (iter = items.begin() ; iter != items.end() ; ) { if (key == iter->key) iter = items.erase(iter); else iter++; } } Glib::ustring KeyNodeTable::get(XML::Node *node) const { std::vector::const_iterator iter; for (iter = items.begin() ; iter != items.end() ; iter++) { if (node == iter->node) return iter->key; } return ""; } void KeyNodeTable::remove(XML::Node *node) { std::vector::iterator iter; for (iter = items.begin() ; iter != items.end() ; ) { if (node == iter->node) iter = items.erase(iter); else iter++; } } unsigned int KeyNodeTable::size() const { return items.size(); } KeyNodePair KeyNodeTable::item(unsigned int index) const { if (index>=items.size()) { KeyNodePair pair("", NULL); return pair; } return items[index]; } Glib::ustring KeyNodeTable::generateKey(Glib::ustring jid) { return String::ucompose("%1/%2",this->counter++,jid); } } // namespace Whiteboard } // namespace Inkscape //######################################################################### //# E N D O F F I L E //#########################################################################