/* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: test-container.cpt */ #line 1 "test-container.cpt" /** @file test-container.c Sorted storage demo. This program demonstrates how to use the Dk4Comparable and Dk4Container classes for sorted storage. */ #include "dk4conf.h" #if DK4_HAVE_STDLIB_H #include #endif #if DK4_HAVE_UNISTD_H #include #endif #if DK4_TIME_WITH_SYS_TIME #include #include #else #if DK4_HAVE_TIME_H #include #else #if DK4_HAVE_SYS_TIME_H #include #endif #endif #endif #include "Dk4Comparable.h" #include "Dk4Container.h" /** Random numbers to store. */ class RandomNumber: public DkTools4::Comparable { private: /** Random number. */ int i; public: /** Constructor. */ RandomNumber(void); /** Destructor. */ ~RandomNumber(); /** Retrieve stored number. @return The stored number. */ int getNumber() const; /** Compare against some data. @param data Data to compare against (address of a RandomNumber). @param cr Comparison criteria (ignored). @return Comparison result. */ int compareAgainst(void const *data, int cr) const; }; RandomNumber::RandomNumber(void) { i = rand(); } RandomNumber::~RandomNumber() { fputs("Destructor for RandomNumber\n", stdout); } int RandomNumber::getNumber() const { return i; } int RandomNumber::compareAgainst(void const *data, int cr) const { int back = 0; int j; RandomNumber const *pr = (RandomNumber const *)data; j = pr->getNumber(); if(i > j) { back = 1; } else { if(i < j) { back = -1; } } return back; } int main(int argc, char *argv[]) { int i; time_t timer; RandomNumber *rndn; time(&timer); srand(timer); try { DkTools4::Container container(0, true); DkTools4::Iterator iterator(container); for(i = 0; i < 100; i++) { printf("Generate random number %03d\n", i); RandomNumber *rndn = new RandomNumber(); if(!container.add(rndn)) { delete rndn ; } } container.reset(); i = 0; while(NULL != (rndn = container.next())) { printf("%04d: %d\n", ++i, rndn->getNumber()); #if 0 if (50 == i) { throw(std::bad_alloc()); } #endif } printf("Pass 2\n"); iterator.reset(); while (NULL != (rndn = iterator.next())) { printf("%04d: %d\n", ++i, rndn->getNumber()); } } catch(...) { printf("Poese Exception beim Container\n"); } return 0; } /* vim: set ai sw=4 ts=4 : */