#include <rudiments/dictionary.h>
#include <rudiments/stdio.h>

int main(int argc, const char **argv) {

        // create a dictionary of name-value pairs
        dictionary<char *,char *>       nvp;

        // set some name-value pairs
        nvp.setValue(charstring::duplicate("color"),
                        charstring::duplicate("blue"));
        nvp.setValue(charstring::duplicate("number"),
                        charstring::duplicate("one"));
        nvp.setValue(charstring::duplicate("automobile"),
                        charstring::duplicate("car"));
        nvp.setValue(charstring::duplicate("dwelling"),
                        charstring::duplicate("house"));
        nvp.setValue(charstring::duplicate("parent"),
                        charstring::duplicate("dad"));

        // print the dictionary
        stdoutput.write("Current contents:\n");
        nvp.print();
        stdoutput.write('\n');

        // remove a value
        dictionarynode<char *,char *>   *n=nvp.getNode((char *)"color");
        delete[] n->getKey();
        delete[] n->getValue();
        nvp.remove(n);

        // print the dictionary
        stdoutput.write("Current contents:\n");
        nvp.print();
        stdoutput.write('\n');

        // clear the dictionary
        linkedlist< dictionarynode< char *, char * > *> *list=nvp.getList();
        for (linkedlistnode< dictionarynode< char *, char *> *> *ln=
                                                list->getFirst();
                                                ln; ln=ln->getNext()) {
                delete[] ln->getValue()->getKey();
                delete[] ln->getValue()->getValue();
        }
        nvp.clear();
}