source: src/Descriptors/DescriptorBase.hpp@ 97dff0

Last change on this file since 97dff0 was feb5d0, checked in by Frederik Heber <heber@…>, 12 years ago

Added SelectiveConstIterator, allows for constant iteration over Descriptor-constraint ranges.

  • Property mode set to 100644
File size: 2.4 KB
RevLine 
[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
[56f73b]11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16
[6e97e5]17#include <vector>
18#include <boost/shared_ptr.hpp>
19
20/***
21 * Code in this file is not used.
22 *
23 * I was not able to figure out how to factor out the common code for
24 * descriptors and have given up :-( . If somebody else wants to have
25 * another shot just go ahead, but expect a hard ride from here on.
26 */
27
28template<class _Target,
29 class _Container>
30class DescriptorBase_impl;
31
32
33template<class _Target,
34 class _Container>
35class SelectiveIterator;
36
[feb5d0]37template<class _Target,
38 class _Container>
39class SelectiveConstIterator;
40
[6e97e5]41template<class _Target,
42 class _Container>
43class DescriptorBase
44{
45 friend class DescriptorBase_impl<_Target,_Container>;
46 friend class SelectiveIterator<_Target,_Container>;
[feb5d0]47 friend class SelectiveConstIterator<_Target,_Container>;
[6e97e5]48
49
50 // expose the type of this descriptor to the public
51public:
52 typedef _Target Target;
53 typedef std::vector<Target> TargetVec;
54
55protected:
56 typedef _Container Container;
57 typedef typename Container::iterator iterator;
58
59 typedef DescriptorBase_impl<Target,Container> impl;
60 typedef boost::shared_ptr<impl> impl_ptr;
61
62
63public:
64
65 DescriptorBase();
66 DescriptorBase(const DescriptorBase&);
67 DescriptorBase(impl_ptr);
68 virtual ~DescriptorBase();
69
70 DescriptorBase& operator=(const DescriptorBase&);
71
72 /**
73 * forward Method to implementation
74 */
75 Target find(Container&);
76
77 /**
78 * forward Method to implementation
79 */
80 TargetVec findAll(Container&);
81
82
83private:
84 impl_ptr theImpl;
85};
86
87template<class _Target,
88 class _Container>
89DescriptorBase<_Target,_Container> AllX();
90
91template<class _Target,
92 class _Container>
93DescriptorBase<_Target,_Container> NoX();
94
95template<class _Target,
96 class _Container>
97DescriptorBase<_Target,_Container>
98 operator&&(DescriptorBase<_Target,_Container>&,
99 DescriptorBase<_Target,_Container>&);
100
101template<class _Target,
102 class _Container>
103DescriptorBase<_Target,_Container>
104 operator||(DescriptorBase<_Target,_Container>&,
105 DescriptorBase<_Target,_Container>&);
106
107template<class _Target,
108 class _Container>
109DescriptorBase<_Target,_Container>
110 operator!(DescriptorBase<_Target,_Container>&);
111
112#endif /* DESCRIPTORBASE_HPP_ */
Note: See TracBrowser for help on using the repository browser.