| [aba92d] | 1 | /* | 
|---|
|  | 2 | * ActOnAlltest.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: 04.10.2009 | 
|---|
|  | 5 | *      Author: FrederikHeber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #ifndef ACTONALLTEST_HPP_ | 
|---|
|  | 9 | #define ACTONALLTEST_HPP_ | 
|---|
|  | 10 |  | 
|---|
|  | 11 | using namespace std; | 
|---|
|  | 12 |  | 
|---|
|  | 13 | #include <list> | 
|---|
| [46ea3b] | 14 | #include "../vector.hpp" | 
|---|
| [aba92d] | 15 |  | 
|---|
|  | 16 | #define ListOfVectors list<Vector *> | 
|---|
|  | 17 |  | 
|---|
|  | 18 | class VectorList | 
|---|
|  | 19 | { | 
|---|
|  | 20 | public: | 
|---|
|  | 21 | VectorList(); | 
|---|
| [33f9f7] | 22 | VectorList(VectorList &ref); | 
|---|
| [aba92d] | 23 | ~VectorList(); | 
|---|
|  | 24 |  | 
|---|
|  | 25 | void AddVector(Vector *v); | 
|---|
|  | 26 | void EmptyList(); | 
|---|
|  | 27 |  | 
|---|
| [eaee7f] | 28 | template <typename klasse, typename res, typename T> void ActOnAll( res (klasse::*f)(T), T t ); | 
|---|
|  | 29 | template <typename klasse, typename res, typename T, typename U> void ActOnAll( res (klasse::*f)(T, U), T t, U u ); | 
|---|
|  | 30 | template <typename klasse, typename res, typename T, typename U, typename V> void ActOnAll( res (klasse::*f)(T, U, V), T t, U u, V v); | 
|---|
| [aba92d] | 31 |  | 
|---|
| [33f9f7] | 32 | bool operator == (VectorList &rhs); | 
|---|
|  | 33 | VectorList& operator = (VectorList &ref); | 
|---|
|  | 34 |  | 
|---|
|  | 35 | //private: | 
|---|
| [aba92d] | 36 | ListOfVectors Vectors; | 
|---|
|  | 37 | }; | 
|---|
|  | 38 |  | 
|---|
| [33f9f7] | 39 |  | 
|---|
|  | 40 | VectorList::VectorList() { }; | 
|---|
|  | 41 | VectorList::VectorList(VectorList &ref) | 
|---|
|  | 42 | { | 
|---|
|  | 43 | ref.EmptyList(); | 
|---|
|  | 44 | for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) { | 
|---|
|  | 45 | ref.Vectors.push_back(new Vector (**Runner)); | 
|---|
|  | 46 | } | 
|---|
|  | 47 | }; | 
|---|
|  | 48 |  | 
|---|
|  | 49 | VectorList & VectorList::operator = (VectorList &ref) | 
|---|
|  | 50 | { | 
|---|
|  | 51 | EmptyList(); | 
|---|
|  | 52 | for (ListOfVectors::iterator Runner = ref.Vectors.begin(); Runner != ref.Vectors.end(); Runner++) { | 
|---|
|  | 53 | Vectors.push_back(new Vector (**Runner)); | 
|---|
|  | 54 | } | 
|---|
|  | 55 | return *this; | 
|---|
|  | 56 | }; | 
|---|
|  | 57 |  | 
|---|
|  | 58 | bool VectorList::operator == (VectorList &rhs) | 
|---|
|  | 59 | { | 
|---|
|  | 60 | bool status = true; | 
|---|
|  | 61 | ListOfVectors::iterator lRunner = Vectors.begin(); | 
|---|
|  | 62 | ListOfVectors::iterator rRunner = rhs.Vectors.begin(); | 
|---|
|  | 63 | for (;(lRunner != Vectors.end()) && (rRunner != rhs.Vectors.end()); lRunner++, rRunner++) { | 
|---|
| [e138de] | 64 | //Log() << Verbose(0) << **lRunner << " == " << **rRunner << endl; | 
|---|
| [33f9f7] | 65 | status = status && (**lRunner == **rRunner); | 
|---|
|  | 66 | } | 
|---|
|  | 67 | return status; | 
|---|
|  | 68 | }; | 
|---|
|  | 69 |  | 
|---|
|  | 70 | VectorList::~VectorList() { }; | 
|---|
|  | 71 |  | 
|---|
| [eaee7f] | 72 | template <typename klasse, typename res, typename T> void VectorList::ActOnAll( res (klasse::*f)(T), T t ) | 
|---|
| [33f9f7] | 73 | { | 
|---|
| [eaee7f] | 74 | for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) | 
|---|
|  | 75 | ((*Runner)->*f)(t); | 
|---|
| [33f9f7] | 76 | }; | 
|---|
|  | 77 |  | 
|---|
| [eaee7f] | 78 | template <typename klasse, typename res, typename T, typename U> void VectorList::ActOnAll( res (klasse::*f)(T, U), T t, U u ) | 
|---|
| [aba92d] | 79 | { | 
|---|
| [eaee7f] | 80 | for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) | 
|---|
|  | 81 | ((*Runner)->*f)(t, u); | 
|---|
| [33f9f7] | 82 | }; | 
|---|
|  | 83 |  | 
|---|
| [eaee7f] | 84 | template <typename klasse, typename res, typename T, typename U, typename V> void VectorList::ActOnAll( res (klasse::*f)(T, U, V), T t, U u, V v) | 
|---|
| [33f9f7] | 85 | { | 
|---|
| [eaee7f] | 86 | for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) | 
|---|
|  | 87 | ((*Runner)->*f)(t, u, v); | 
|---|
| [aba92d] | 88 | }; | 
|---|
|  | 89 |  | 
|---|
|  | 90 | void VectorList::AddVector(Vector *v) | 
|---|
|  | 91 | { | 
|---|
|  | 92 | Vectors.push_back(v); | 
|---|
|  | 93 | }; | 
|---|
|  | 94 |  | 
|---|
|  | 95 | void VectorList::EmptyList() | 
|---|
|  | 96 | { | 
|---|
|  | 97 | for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) { | 
|---|
|  | 98 | delete(*Runner); | 
|---|
|  | 99 | } | 
|---|
|  | 100 | Vectors.clear(); | 
|---|
|  | 101 | } | 
|---|
|  | 102 |  | 
|---|
|  | 103 | #endif /* ACTONALLTEST_HPP_ */ | 
|---|