Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtinfo / dtinfo / src / UAS / DtSR / Util_Classes / DictIter.C
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 // $XConsortium: DictIter.cc /main/3 1996/06/11 16:42:25 cde-hal $
24
25 #include "DictLink.hh"
26 #include "DictIter.hh"
27 #include "Dict.hh"
28
29 #include <assert.h>
30
31 template<class K, class V>
32 DictIter<K,V>::DictIter()
33 {
34     f_map = NULL;
35     f_link = NULL;
36 }
37
38 template<class K, class V>
39 DictIter<K,V>::DictIter(Dict<K,V>* map, DictLink<K,V>* link)
40 {
41     assert( map );
42     
43     f_map = map;
44     f_link = link;
45 }
46
47
48 template<class K, class V>
49 DictIter<K,V>::DictIter(Dict<K,V>& map)
50 {
51     f_map = &map;
52     f_link = f_map->head;
53 }
54
55 template<class K, class V>
56 const K&
57 DictIter<K,V>::key()
58 {
59     if (f_link)
60         return f_link->key;
61     else
62         return f_map->def_key;
63 }
64
65 template<class K, class V>
66 V&
67 DictIter<K,V>::value()
68 {
69     if (f_link)
70         return f_link->value;
71     else
72         return f_map->def_val;
73 }
74
75 template<class K, class V>
76 DictIter<K,V>&
77 DictIter<K,V>::operator--()
78 {
79     if (f_link)
80         f_link = f_link->pre;
81     return *this;
82 }
83
84 template<class K, class V>
85 void
86 DictIter<K,V>::operator--(int)
87 {
88     if (f_link)
89         f_link = f_link->pre;
90 }
91
92 template<class K, class V>
93 DictIter<K,V>&
94 DictIter<K,V>::operator++()
95 {
96     if (f_link)
97         f_link = f_link->suc;
98     return *this;
99 }
100
101 template<class K, class V>
102 void
103 DictIter<K,V>::operator++(int)
104 {
105     if (f_link)
106         f_link = f_link->suc;
107 }
108
109