source: molecuilder/src/Descriptors/DescriptorBase.hpp@ 0f55b2

Last change on this file since 0f55b2 was 5738177, checked in by Tillmann Crueger <crueger@…>, 15 years ago

Added a generic Iterator that can be used to iterate only over certain parts of an internal data structure

  • Property mode set to 100644
File size: 2.2 KB
Line 
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
22template<class _Target,
23 class _Container>
24class DescriptorBase_impl;
25
26
27template<class _Target,
28 class _Container>
29class SelectiveIterator;
30
31template<class _Target,
32 class _Container>
33class 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
40public:
41 typedef _Target Target;
42 typedef std::vector<Target> TargetVec;
43
44protected:
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
52public:
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
72private:
73 impl_ptr theImpl;
74};
75
76template<class _Target,
77 class _Container>
78DescriptorBase<_Target,_Container> AllX();
79
80template<class _Target,
81 class _Container>
82DescriptorBase<_Target,_Container> NoX();
83
84template<class _Target,
85 class _Container>
86DescriptorBase<_Target,_Container>
87 operator&&(DescriptorBase<_Target,_Container>&,
88 DescriptorBase<_Target,_Container>&);
89
90template<class _Target,
91 class _Container>
92DescriptorBase<_Target,_Container>
93 operator||(DescriptorBase<_Target,_Container>&,
94 DescriptorBase<_Target,_Container>&);
95
96template<class _Target,
97 class _Container>
98DescriptorBase<_Target,_Container>
99 operator!(DescriptorBase<_Target,_Container>&);
100
101#endif /* DESCRIPTORBASE_HPP_ */
Note: See TracBrowser for help on using the repository browser.