| [6e97e5] | 1 | /* | 
|---|
|  | 2 | * DescriptorBase.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Mar 12, 2010 | 
|---|
|  | 5 | *      Author: crueger | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #ifndef DESCRIPTORBASE_HPP_ | 
|---|
|  | 9 | #define DESCRIPTORBASE_HPP_ | 
|---|
|  | 10 |  | 
|---|
|  | 11 | #include <vector> | 
|---|
|  | 12 | #include <boost/shared_ptr.hpp> | 
|---|
|  | 13 |  | 
|---|
|  | 14 | /*** | 
|---|
|  | 15 | * Code in this file is not used. | 
|---|
|  | 16 | * | 
|---|
|  | 17 | * I was not able to figure out how to factor out the common code for | 
|---|
|  | 18 | * descriptors and have given up :-( . If somebody else wants to have | 
|---|
|  | 19 | * another shot just go ahead, but expect a hard ride from here on. | 
|---|
|  | 20 | */ | 
|---|
|  | 21 |  | 
|---|
|  | 22 | template<class _Target, | 
|---|
|  | 23 | class _Container> | 
|---|
|  | 24 | class DescriptorBase_impl; | 
|---|
|  | 25 |  | 
|---|
|  | 26 |  | 
|---|
|  | 27 | template<class _Target, | 
|---|
|  | 28 | class _Container> | 
|---|
|  | 29 | class SelectiveIterator; | 
|---|
|  | 30 |  | 
|---|
|  | 31 | template<class _Target, | 
|---|
|  | 32 | class _Container> | 
|---|
|  | 33 | class DescriptorBase | 
|---|
|  | 34 | { | 
|---|
|  | 35 | friend class DescriptorBase_impl<_Target,_Container>; | 
|---|
|  | 36 | friend class SelectiveIterator<_Target,_Container>; | 
|---|
|  | 37 |  | 
|---|
|  | 38 |  | 
|---|
|  | 39 | // expose the type of this descriptor to the public | 
|---|
|  | 40 | public: | 
|---|
|  | 41 | typedef _Target     Target; | 
|---|
|  | 42 | typedef std::vector<Target> TargetVec; | 
|---|
|  | 43 |  | 
|---|
|  | 44 | protected: | 
|---|
|  | 45 | typedef _Container  Container; | 
|---|
|  | 46 | typedef typename Container::iterator iterator; | 
|---|
|  | 47 |  | 
|---|
|  | 48 | typedef DescriptorBase_impl<Target,Container>  impl; | 
|---|
|  | 49 | typedef boost::shared_ptr<impl> impl_ptr; | 
|---|
|  | 50 |  | 
|---|
|  | 51 |  | 
|---|
|  | 52 | public: | 
|---|
|  | 53 |  | 
|---|
|  | 54 | DescriptorBase(); | 
|---|
|  | 55 | DescriptorBase(const DescriptorBase&); | 
|---|
|  | 56 | DescriptorBase(impl_ptr); | 
|---|
|  | 57 | virtual ~DescriptorBase(); | 
|---|
|  | 58 |  | 
|---|
|  | 59 | DescriptorBase& operator=(const DescriptorBase&); | 
|---|
|  | 60 |  | 
|---|
|  | 61 | /** | 
|---|
|  | 62 | * forward Method to implementation | 
|---|
|  | 63 | */ | 
|---|
|  | 64 | Target find(Container&); | 
|---|
|  | 65 |  | 
|---|
|  | 66 | /** | 
|---|
|  | 67 | * forward Method to implementation | 
|---|
|  | 68 | */ | 
|---|
|  | 69 | TargetVec findAll(Container&); | 
|---|
|  | 70 |  | 
|---|
|  | 71 |  | 
|---|
|  | 72 | private: | 
|---|
|  | 73 | impl_ptr theImpl; | 
|---|
|  | 74 | }; | 
|---|
|  | 75 |  | 
|---|
|  | 76 | template<class _Target, | 
|---|
|  | 77 | class _Container> | 
|---|
|  | 78 | DescriptorBase<_Target,_Container> AllX(); | 
|---|
|  | 79 |  | 
|---|
|  | 80 | template<class _Target, | 
|---|
|  | 81 | class _Container> | 
|---|
|  | 82 | DescriptorBase<_Target,_Container> NoX(); | 
|---|
|  | 83 |  | 
|---|
|  | 84 | template<class _Target, | 
|---|
|  | 85 | class _Container> | 
|---|
|  | 86 | DescriptorBase<_Target,_Container> | 
|---|
|  | 87 | operator&&(DescriptorBase<_Target,_Container>&, | 
|---|
|  | 88 | DescriptorBase<_Target,_Container>&); | 
|---|
|  | 89 |  | 
|---|
|  | 90 | template<class _Target, | 
|---|
|  | 91 | class _Container> | 
|---|
|  | 92 | DescriptorBase<_Target,_Container> | 
|---|
|  | 93 | operator||(DescriptorBase<_Target,_Container>&, | 
|---|
|  | 94 | DescriptorBase<_Target,_Container>&); | 
|---|
|  | 95 |  | 
|---|
|  | 96 | template<class _Target, | 
|---|
|  | 97 | class _Container> | 
|---|
|  | 98 | DescriptorBase<_Target,_Container> | 
|---|
|  | 99 | operator!(DescriptorBase<_Target,_Container>&); | 
|---|
|  | 100 |  | 
|---|
|  | 101 | #endif /* DESCRIPTORBASE_HPP_ */ | 
|---|