37 template <
class type_t>
45 template <
class type_t>
50 for (ptr = p.root; ptr != NULL; ptr = ptr->
next)
51 append (ptr->
key,
new type_t (*(ptr->
value)));
55 template <
class type_t>
61 template <
class type_t>
74 template <
class type_t>
77 if (root) root->
prev = entry;
78 entry->
key = strdup (n);
83 if (!last) last = root;
88 template <
class type_t>
91 entry->
key = strdup (n);
96 for (p = root; p->
next != NULL; p = p->
next) ;
109 template <
class type_t>
112 append (ptr->key,
new type_t (*(ptr->value)));
116 template <
class type_t>
122 template <
class type_t>
127 if (!strcmp (p->key, n)) {
130 if (root) root->
prev = NULL;
136 if (p == last) last = p->
prev;
144 template <
class type_t>
148 if (!strcmp (p->key, n)) count++;
154 template <
class type_t>
157 if (!strcmp (p->key, n))
return p->value;
163 template <
class type_t>
171 template <
class type_t>
176 template <
class type_t>
178 return _valuelist->size;
182 template <
class type_t>
184 _current = _first = _valuelist->root;
185 return _current ? _current->key : NULL;
189 template <
class type_t>
191 _current = _last = _valuelist->last;
192 return _current ? _current->key : NULL;
196 template <
class type_t>
198 _current = _current->next;
199 return _current ? _current->key : NULL;
203 template <
class type_t>
205 _current = _current->prev;
206 return _current ? _current->key : NULL;
210 template <
class type_t>
212 return _current ? _current->key : NULL;
216 template <
class type_t>
222 template <
class type_t>
224 return _current ? _current->value : NULL;
228 template <
class type_t>
230 return _first ? _first->key : NULL;
234 template <
class type_t>
236 return _last ? _last->key : NULL;