Code

empty messages are passed onto all listeners in pedro, gui ignores such messages
[inkscape.git] / src / jabber_whiteboard / keynode.cpp
1 /**
2  * Inkscape::Whiteboard::KeyNodeTable - structure for lookup of values from keys
3  * and vice versa
4  *
5  * Authors:
6  * Bob Jamison
7  *
8  * Copyright (c) 2005 Authors
9  */
10 #include "keynode.h"
13 namespace Inkscape
14 {
15 namespace Whiteboard
16 {
20 void KeyNodeTable::clear()
21 {
22     items.clear();
23 }
25 void KeyNodeTable::append(const KeyNodeTable &other)
26 {
27     for (unsigned int i = 0; i<other.size() ; i++)
28         {
29         KeyNodePair pair = other.item(i);
30         put(pair);
31         }
32 }
34 void KeyNodeTable::put(const KeyNodePair &pair)
35 {
36     put(pair.key, pair.node);
37 }
39 void KeyNodeTable::put(const Glib::ustring &key, const XML::Node *node)
40 {
41     //delete existing
42     std::vector<KeyNodePair>::iterator iter;
43     for (iter = items.begin() ; iter != items.end() ; )
44         {
45         if (key == iter->key || node == iter->node)
46             iter = items.erase(iter);
47         else
48             iter++;
49         }
50         
51     //add new
52     KeyNodePair pair(key, node);
53     items.push_back(pair);
54 }
56 XML::Node * KeyNodeTable::get(const Glib::ustring &key) const
57 {
58     std::vector<KeyNodePair>::const_iterator iter;
59     for (iter = items.begin() ; iter != items.end() ; iter++)
60         {
61         if (key == iter->key)
62             return iter->node;
63         }
64     return NULL;
65 }
68 void KeyNodeTable::remove(const Glib::ustring &key)
69 {
70     std::vector<KeyNodePair>::iterator iter;
71     for (iter = items.begin() ; iter != items.end() ; )
72         {
73         if (key == iter->key)
74             iter = items.erase(iter);
75         else
76             iter++;
77         }
78 }
81 Glib::ustring KeyNodeTable::get(XML::Node *node) const
82 {
83     std::vector<KeyNodePair>::const_iterator iter;
84     for (iter = items.begin() ; iter != items.end() ; iter++)
85         {
86         if (node == iter->node)
87             return iter->key;
88         }
89     return "";
90 }
93 void KeyNodeTable::remove(XML::Node *node)
94 {
95     std::vector<KeyNodePair>::iterator iter;
96     for (iter = items.begin() ; iter != items.end() ; )
97         {
98         if (node == iter->node)
99             iter = items.erase(iter);
100         else
101             iter++;
102         }
105 unsigned int KeyNodeTable::size() const
107     return items.size();
111 KeyNodePair KeyNodeTable::item(unsigned int index) const
113     if (index>=items.size())
114         {
115         KeyNodePair pair("", NULL);
116         return pair;
117         }
118     return items[index];
123 } // namespace Whiteboard
125 } // namespace Inkscape
126 //#########################################################################
127 //# E N D    O F    F I L E
128 //#########################################################################