4 #include <rudiments/stdio.h>
5 #include <rudiments/private/rudimentsinlines.h>
6 #include <rudiments/private/linkedlistutilinlines.h>
8 #define DICTIONARY_TEMPLATE \
9 template <class keytype, class valuetype>
11 #define DICTIONARY_CLASS \
12 dictionary<keytype,valuetype>
15 RUDIMENTS_TEMPLATE_INLINE
16 DICTIONARY_CLASS::dictionary() {
20 RUDIMENTS_TEMPLATE_INLINE
21 DICTIONARY_CLASS::~dictionary() {
26 RUDIMENTS_TEMPLATE_INLINE
27 void DICTIONARY_CLASS::setValue(keytype key, valuetype value) {
38 RUDIMENTS_TEMPLATE_INLINE
39 bool DICTIONARY_CLASS::getValue(keytype key, valuetype *value) {
50 RUDIMENTS_TEMPLATE_INLINE
51 bool DICTIONARY_CLASS::removeValue(keytype key) {
55 return dict.removeNode(node);
61 RUDIMENTS_TEMPLATE_INLINE
63 findNode(keytype key) {
65 dict.getFirstNode(); node; node=node->
getNext()) {
66 if (!node->
getValue()->compare(key)) {
74 RUDIMENTS_TEMPLATE_INLINE
80 RUDIMENTS_TEMPLATE_INLINE
81 void DICTIONARY_CLASS::clear() {
83 dict.getFirstNode(); node; node=node->
getNext()) {
90 RUDIMENTS_TEMPLATE_INLINE
91 void DICTIONARY_CLASS::print() {
93 dict.getFirstNode(); node; node=node->
getNext()) {
99 #define DICTIONARYNODE_TEMPLATE \
100 template <class keytype, class valuetype>
102 #define DICTIONARYNODE_CLASS \
103 dictionarynode<keytype,valuetype>
105 DICTIONARYNODE_TEMPLATE
106 RUDIMENTS_TEMPLATE_INLINE
107 DICTIONARYNODE_CLASS::dictionarynode(keytype key, valuetype value) {
112 DICTIONARYNODE_TEMPLATE
113 RUDIMENTS_TEMPLATE_INLINE
114 DICTIONARYNODE_CLASS::~dictionarynode() {}
116 DICTIONARYNODE_TEMPLATE
117 RUDIMENTS_TEMPLATE_INLINE
118 void DICTIONARYNODE_CLASS::setKey(keytype key) {
122 DICTIONARYNODE_TEMPLATE
123 RUDIMENTS_TEMPLATE_INLINE
124 void DICTIONARYNODE_CLASS::setValue(valuetype value) {
128 DICTIONARYNODE_TEMPLATE
129 RUDIMENTS_TEMPLATE_INLINE
130 keytype DICTIONARYNODE_CLASS::getKey()
const {
134 DICTIONARYNODE_TEMPLATE
135 RUDIMENTS_TEMPLATE_INLINE
136 valuetype DICTIONARYNODE_CLASS::getValue()
const {
140 DICTIONARYNODE_TEMPLATE
141 RUDIMENTS_TEMPLATE_INLINE
142 int32_t DICTIONARYNODE_CLASS::compare(keytype testkey)
const {
143 return _linkedlistutil_compare(key,testkey);
146 DICTIONARYNODE_TEMPLATE
147 RUDIMENTS_TEMPLATE_INLINE
148 void DICTIONARYNODE_CLASS::print()
const {
149 _linkedlistutil_print(key);
151 _linkedlistutil_print(value);