diff --git a/src/cxxTemplates/test/resourceLibTest.cc b/src/cxxTemplates/test/resourceLibTest.cc new file mode 100644 index 000000000..e5f4d4b98 --- /dev/null +++ b/src/cxxTemplates/test/resourceLibTest.cc @@ -0,0 +1,110 @@ + + +#include +#include +#include +#include + +class uintId { +public: + uintId (unsigned idIn) : id(idIn) {} + + resourceTableID resourceHash(unsigned nBitsId) const + { + unsigned src = this->id; + resourceTableID hashid; + + hashid = src; + src = src >> nBitsId; + while (src) { + hashid = hashid ^ src; + src = src >> nBitsId; + } + // + // the result here is always masked to the + // proper size after it is returned to the resource class + // + return hashid; + } + + int operator == (const uintId &idIn) + { + return this->id == idIn.id; + } +private: + unsigned const id; +}; + +class fred : public uintId, tsSLNode { +public: + fred (const char *pNameIn, unsigned idIn) : + pName(pNameIn), uintId(idIn) {} +private: + const char * const pName; +}; + +main() +{ + unsigned i; + clock_t start, finish; + double duration; + const int LOOPS = 500000; + resourceTable tbl; + fred fred1("fred1",0x1000a432); + fred fred2("fred2",0x0000a432); + fred *pFred; + uintId id1(0x1000a432); + uintId id2(0x0000a432); + int status; + + status = tbl.init(8); + if (status) { + return -1; + } + + status = tbl.add(fred1); + assert (!status); + status = tbl.add(fred2); + assert (!status); + + start = clock(); + for(i=0; i +#include +#include +#include + +class fred : public tsDLNode { +public: + fred() : count(0) {} + void inc () {count++;} +private: + unsigned count; +}; + +class jane : public fred, public tsDLNode { +public: + jane() {} +private: +}; + +#define LOOPCOUNT 100000 + +main () +{ + tsDLList list; + tsDLIter iter(list); + fred *pFred; + unsigned i; + clock_t clk; + clock_t diff; + double delay; + + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); + + pFred = new fred(); + clk = clock(); + iter = list; + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); +} + diff --git a/src/cxxTemplates/test/tsDLListTest.cc b/src/cxxTemplates/test/tsDLListTest.cc new file mode 100644 index 000000000..98815c3c2 --- /dev/null +++ b/src/cxxTemplates/test/tsDLListTest.cc @@ -0,0 +1,72 @@ + + + +#include +#include +#include + +class fred : public tsDLNode { +public: + fred(const char * const pNameIn) : pName(pNameIn){} + void show () {printf("%s\n", pName);} +private: + const char * const pName; +}; + +class jane : public fred, public tsDLNode { +public: + jane(const char * const pNameIn) : fred(pNameIn){} +private: +}; + +main () +{ + tsDLList list; + tsDLIter iter(list); + fred *pFred; + fred *pFredII; + fred *pFredBack; + tsDLList janeList; + tsDLIter janeIter(janeList); + jane *pJane; + + pFred = new fred("A"); + pFredII = new fred("B"); + + list.add(*pFred); + list.add(*pFredII); + pFredBack = list.first(); + assert(pFredBack == pFred); + pFredBack = list.last(); + assert(pFredBack == pFredII); + list.remove(*pFred); + list.add(*pFred); + pFredBack = list.get(); + assert (pFredBack == pFredII); + pFredBack = list.get(); + assert (pFredBack == pFred); + assert (list.count() == 0u); + list.add(*pFred); + list.add(*pFredII); + list.add(* new fred("C")); + list.add(* new fred("D")); + + while (pFredBack = iter()) { + pFredBack->show(); + } + + pJane = new jane("JA"); + janeList.add(*pJane); + pJane = new jane("JB"); + janeList.add(*pJane); + + while (pJane = janeIter()) { + pJane->show(); + } + + iter = list; + while (pFredBack = iter()) { + pFredBack->show(); + } +} + diff --git a/src/cxxTemplates/test/tsSLListBench.cc b/src/cxxTemplates/test/tsSLListBench.cc new file mode 100644 index 000000000..df12cf361 --- /dev/null +++ b/src/cxxTemplates/test/tsSLListBench.cc @@ -0,0 +1,62 @@ + + + +#include +#include +#include + +class fred : public tsSLNode { +public: + fred() : count(0) {} + void inc () {count++;} +private: + unsigned count; +}; + +class jane : public fred, public tsSLNode { +public: + jane() {} +private: +}; + +#define LOOPCOUNT 100000 + +main () +{ + tsSLList list; + tsSLIter iter(list); + fred *pFred; + unsigned i; + clock_t clk; + clock_t diff; + double delay; + + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); + + pFred = new fred(); + clk = clock(); + iter = list; + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); +} + diff --git a/src/cxxTemplates/test/tsSLListTest.cc b/src/cxxTemplates/test/tsSLListTest.cc new file mode 100644 index 000000000..3cd21e708 --- /dev/null +++ b/src/cxxTemplates/test/tsSLListTest.cc @@ -0,0 +1,67 @@ + + + +#include +#include + +class fred : public tsSLNode { +public: + fred(const char * const pNameIn) : pName(pNameIn){} + void show () {printf("%s\n", pName);} +private: + const char * const pName; +}; + +class jane : public fred, public tsSLNode { +public: + jane(const char * const pNameIn) : fred(pNameIn){} +private: +}; + +main () +{ + tsSLList list; + tsSLIter iter(list); + fred *pFred; + fred *pFredII; + fred *pFredBack; + tsSLList janeList; + tsSLIter janeIter(janeList); + jane *pJane; + + pFred = new fred("A"); + pFredII = new fred("B"); + + list.add(*pFred); + list.add(*pFredII); + pFredBack = list.first(); + assert(pFredBack == pFredII); + list.remove(*pFred, *pFredII); + list.add(*pFred); + pFredBack = list.get(); + assert (pFredBack == pFred); + pFredBack = list.get(); + assert (pFredBack == pFredII); + list.add(*pFred); + list.add(*pFredII); + list.add(* new fred("C")); + list.add(* new fred("D")); + + while (pFredBack = iter()) { + pFredBack->show(); + } + + pJane = new jane("JA"); + janeList.add(*pJane); + pJane = new jane("JB"); + janeList.add(*pJane); + + while (pJane = janeIter()) { + pJane->show(); + } + + while (pFredBack = iter()) { + pFredBack->show(); + } +} + diff --git a/src/libCom/cxxTemplates/test/resourceLibTest.cc b/src/libCom/cxxTemplates/test/resourceLibTest.cc new file mode 100644 index 000000000..e5f4d4b98 --- /dev/null +++ b/src/libCom/cxxTemplates/test/resourceLibTest.cc @@ -0,0 +1,110 @@ + + +#include +#include +#include +#include + +class uintId { +public: + uintId (unsigned idIn) : id(idIn) {} + + resourceTableID resourceHash(unsigned nBitsId) const + { + unsigned src = this->id; + resourceTableID hashid; + + hashid = src; + src = src >> nBitsId; + while (src) { + hashid = hashid ^ src; + src = src >> nBitsId; + } + // + // the result here is always masked to the + // proper size after it is returned to the resource class + // + return hashid; + } + + int operator == (const uintId &idIn) + { + return this->id == idIn.id; + } +private: + unsigned const id; +}; + +class fred : public uintId, tsSLNode { +public: + fred (const char *pNameIn, unsigned idIn) : + pName(pNameIn), uintId(idIn) {} +private: + const char * const pName; +}; + +main() +{ + unsigned i; + clock_t start, finish; + double duration; + const int LOOPS = 500000; + resourceTable tbl; + fred fred1("fred1",0x1000a432); + fred fred2("fred2",0x0000a432); + fred *pFred; + uintId id1(0x1000a432); + uintId id2(0x0000a432); + int status; + + status = tbl.init(8); + if (status) { + return -1; + } + + status = tbl.add(fred1); + assert (!status); + status = tbl.add(fred2); + assert (!status); + + start = clock(); + for(i=0; i +#include +#include +#include + +class fred : public tsDLNode { +public: + fred() : count(0) {} + void inc () {count++;} +private: + unsigned count; +}; + +class jane : public fred, public tsDLNode { +public: + jane() {} +private: +}; + +#define LOOPCOUNT 100000 + +main () +{ + tsDLList list; + tsDLIter iter(list); + fred *pFred; + unsigned i; + clock_t clk; + clock_t diff; + double delay; + + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); + + pFred = new fred(); + clk = clock(); + iter = list; + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); +} + diff --git a/src/libCom/cxxTemplates/test/tsDLListTest.cc b/src/libCom/cxxTemplates/test/tsDLListTest.cc new file mode 100644 index 000000000..98815c3c2 --- /dev/null +++ b/src/libCom/cxxTemplates/test/tsDLListTest.cc @@ -0,0 +1,72 @@ + + + +#include +#include +#include + +class fred : public tsDLNode { +public: + fred(const char * const pNameIn) : pName(pNameIn){} + void show () {printf("%s\n", pName);} +private: + const char * const pName; +}; + +class jane : public fred, public tsDLNode { +public: + jane(const char * const pNameIn) : fred(pNameIn){} +private: +}; + +main () +{ + tsDLList list; + tsDLIter iter(list); + fred *pFred; + fred *pFredII; + fred *pFredBack; + tsDLList janeList; + tsDLIter janeIter(janeList); + jane *pJane; + + pFred = new fred("A"); + pFredII = new fred("B"); + + list.add(*pFred); + list.add(*pFredII); + pFredBack = list.first(); + assert(pFredBack == pFred); + pFredBack = list.last(); + assert(pFredBack == pFredII); + list.remove(*pFred); + list.add(*pFred); + pFredBack = list.get(); + assert (pFredBack == pFredII); + pFredBack = list.get(); + assert (pFredBack == pFred); + assert (list.count() == 0u); + list.add(*pFred); + list.add(*pFredII); + list.add(* new fred("C")); + list.add(* new fred("D")); + + while (pFredBack = iter()) { + pFredBack->show(); + } + + pJane = new jane("JA"); + janeList.add(*pJane); + pJane = new jane("JB"); + janeList.add(*pJane); + + while (pJane = janeIter()) { + pJane->show(); + } + + iter = list; + while (pFredBack = iter()) { + pFredBack->show(); + } +} + diff --git a/src/libCom/cxxTemplates/test/tsSLListBench.cc b/src/libCom/cxxTemplates/test/tsSLListBench.cc new file mode 100644 index 000000000..df12cf361 --- /dev/null +++ b/src/libCom/cxxTemplates/test/tsSLListBench.cc @@ -0,0 +1,62 @@ + + + +#include +#include +#include + +class fred : public tsSLNode { +public: + fred() : count(0) {} + void inc () {count++;} +private: + unsigned count; +}; + +class jane : public fred, public tsSLNode { +public: + jane() {} +private: +}; + +#define LOOPCOUNT 100000 + +main () +{ + tsSLList list; + tsSLIter iter(list); + fred *pFred; + unsigned i; + clock_t clk; + clock_t diff; + double delay; + + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); + + pFred = new fred(); + clk = clock(); + iter = list; + for (i=0; iinc(); + } + diff = clock() - clk; + delay = diff; + delay = delay/CLOCKS_PER_SEC; + delay = delay/LOOPCOUNT; + printf("delay = %15.10lf\n", delay); +} + diff --git a/src/libCom/cxxTemplates/test/tsSLListTest.cc b/src/libCom/cxxTemplates/test/tsSLListTest.cc new file mode 100644 index 000000000..3cd21e708 --- /dev/null +++ b/src/libCom/cxxTemplates/test/tsSLListTest.cc @@ -0,0 +1,67 @@ + + + +#include +#include + +class fred : public tsSLNode { +public: + fred(const char * const pNameIn) : pName(pNameIn){} + void show () {printf("%s\n", pName);} +private: + const char * const pName; +}; + +class jane : public fred, public tsSLNode { +public: + jane(const char * const pNameIn) : fred(pNameIn){} +private: +}; + +main () +{ + tsSLList list; + tsSLIter iter(list); + fred *pFred; + fred *pFredII; + fred *pFredBack; + tsSLList janeList; + tsSLIter janeIter(janeList); + jane *pJane; + + pFred = new fred("A"); + pFredII = new fred("B"); + + list.add(*pFred); + list.add(*pFredII); + pFredBack = list.first(); + assert(pFredBack == pFredII); + list.remove(*pFred, *pFredII); + list.add(*pFred); + pFredBack = list.get(); + assert (pFredBack == pFred); + pFredBack = list.get(); + assert (pFredBack == pFredII); + list.add(*pFred); + list.add(*pFredII); + list.add(* new fred("C")); + list.add(* new fred("D")); + + while (pFredBack = iter()) { + pFredBack->show(); + } + + pJane = new jane("JA"); + janeList.add(*pJane); + pJane = new jane("JB"); + janeList.add(*pJane); + + while (pJane = janeIter()) { + pJane->show(); + } + + while (pFredBack = iter()) { + pFredBack->show(); + } +} +