/****
 *
 * Implementation of IntList.
 *
 */
#include <stdio.h>
#include <string.h>
#include "strlist.h"


StrListElem* StrList::Pull() {
    return (StrListElem*) List::Pull();
}

StrListElem* StrList::Pop() {
    return (StrListElem*) List::Pop();
}

StrListElem* StrList::GetNth(int n) {
    return (StrListElem*) List::GetNth(n);
}

StrListElem* StrList::RemoveNth(int n) {
    return (StrListElem*) List::RemoveNth(n);
}

StrListElem* StrList::Find(String* k) {
    return (StrListElem*) List::Find((ListElemKey*) k);
}

int StrList::FindPos(String* k) {
    return List::FindPos((ListElemKey*) k);
}

StrListElem* StrList::Find(const char* k) {
    return (StrListElem*) List::Find((ListElemKey*) new String(k));
}

int StrList::FindPos(const char* k) {
    return List::FindPos((ListElemKey*) new String(k));
}

StrListElem* StrList::Enum() {
    return (StrListElem*) List::Enum();
}

StrList* StrList::Sort(bool ascending) {
    return (StrList *) List::Sort(ascending);
}

StrListElem::StrListElem(String* initval, void* initauxval) :
    data(initval), auxdata(initauxval) {}

StrListElem::StrListElem(char* initval, void* initauxval) :
    data(new String(initval)), auxdata(initauxval) {}

StrListElem::~StrListElem() {
    if (data) delete data;
}

String* StrListElem::GetData() {
    return this ? data : null;
}

void* StrListElem::GetAuxData() {
    return this ? auxdata : (void*) null;
}

ListElemKey* StrListElem::GetKey() {
    return (ListElemKey*) data;
}

int StrListElem::Compare(ListElem* e) {
    StrListElem* se = (StrListElem*) e;
    return this->data->Compare(se->data);
}

int StrListElem::Compare(ListElemKey* k) {
    return this->data->Compare((String*) k);
}

void StrListElem::Print() {
    if (this)
	printf("%s ", data->Convert());
}