2
* Inkscape::Whiteboard::KeyNodeTable - structure for lookup of values from keys
8
* Copyright (c) 2005 Authors
11
#include "util/ucompose.hpp"
20
void KeyNodeTable::clear()
25
void KeyNodeTable::append(const KeyNodeTable &other)
27
for (unsigned int i = 0; i<other.size() ; i++)
29
KeyNodePair pair = other.item(i);
34
void KeyNodeTable::put(const KeyNodePair &pair)
36
put(pair.key, pair.node);
39
void KeyNodeTable::put(const Glib::ustring &key, const XML::Node *node)
42
std::vector<KeyNodePair>::iterator iter;
43
for (iter = items.begin() ; iter != items.end() ; )
45
if (key == iter->key || node == iter->node)
46
iter = items.erase(iter);
52
KeyNodePair pair(key, node);
53
items.push_back(pair);
56
XML::Node * KeyNodeTable::get(const Glib::ustring &key) const
58
std::vector<KeyNodePair>::const_iterator iter;
59
for (iter = items.begin() ; iter != items.end() ; iter++)
68
void KeyNodeTable::remove(const Glib::ustring &key)
70
std::vector<KeyNodePair>::iterator iter;
71
for (iter = items.begin() ; iter != items.end() ; )
74
iter = items.erase(iter);
81
Glib::ustring KeyNodeTable::get(XML::Node *node) const
83
std::vector<KeyNodePair>::const_iterator iter;
84
for (iter = items.begin() ; iter != items.end() ; iter++)
86
if (node == iter->node)
92
unsigned int KeyNodeTable::incrementVersion(XML::Node *node)
94
std::vector<KeyNodePair>::iterator iter;
95
for (iter = items.begin() ; iter != items.end() ; iter++)
97
if (node == iter->node)
100
return ++iter->version;
103
unsigned int KeyNodeTable::getVersion(XML::Node *node)
105
std::vector<KeyNodePair>::iterator iter;
106
for (iter = items.begin() ; iter != items.end() ; iter++)
108
if (node == iter->node)
111
return iter->version;
114
void KeyNodeTable::addHistory(XML::Node *node, Glib::ustring attribute, Glib::ustring value)
116
std::vector<KeyNodePair>::iterator iter;
117
for (iter = items.begin() ; iter != items.end() ; iter++)
119
if (node == iter->node)
121
Configure pair(attribute, value);
122
iter->history.push_back(pair);
127
Glib::ustring KeyNodeTable::getLastHistory(XML::Node *node, Glib::ustring att)
129
std::list<Configure> hist;
131
std::vector<KeyNodePair>::iterator iter;
132
for (iter = items.begin() ; iter != items.end() ; iter++)
134
if (node == iter->node)
135
hist = iter->history;
138
std::list<Configure>::iterator it;
139
for(it = hist.end() ; it != hist.begin() ; it--)
143
//g_warning("hist %s %s",it->first,it->second);
150
void KeyNodeTable::remove(XML::Node *node)
152
std::vector<KeyNodePair>::iterator iter;
153
for (iter = items.begin() ; iter != items.end() ; )
155
if (node == iter->node)
156
iter = items.erase(iter);
162
unsigned int KeyNodeTable::size() const
168
KeyNodePair KeyNodeTable::item(unsigned int index) const
170
if (index>=items.size())
172
KeyNodePair pair("", NULL);
179
KeyNodeTable::generateKey(Glib::ustring jid)
181
return String::ucompose("%1/%2",this->counter++,jid);
185
} // namespace Whiteboard
187
} // namespace Inkscape
188
//#########################################################################
189
//# E N D O F F I L E
190
//#########################################################################