source: molecuilder/src/Descriptors/AtomDescriptor_impl.hpp@ 323177

Last change on this file since 323177 was 323177, checked in by Tillmann Crueger <crueger@…>, 16 years ago

Rebuilt AtomDescriptors using PIMPL-Idiom and added unittest for descriptors

  • Property mode set to 100644
File size: 1.8 KB
Line 
1#include "Descriptors/AtomDescriptor.hpp"
2
3/************************ Declarations of implementation Objects ************************/
4
5class AtomDescriptor_impl
6{
7 friend class AtomDescriptor;
8public:
9
10 AtomDescriptor_impl();
11 virtual ~AtomDescriptor_impl();
12
13 virtual bool predicate(std::pair<int,atom*>)=0;
14
15protected:
16 virtual atom* find();
17 virtual std::vector<atom*> findAll();
18 std::map<int,atom*>& getAtoms();
19};
20
21/************************** Universe and Emptyset *****************/
22
23class AtomAllDescriptor_impl : public AtomDescriptor_impl {
24public:
25 AtomAllDescriptor_impl();
26 virtual ~AtomAllDescriptor_impl();
27 virtual bool predicate(std::pair<int,atom*>);
28};
29
30class AtomNoneDescriptor_impl : public AtomDescriptor_impl {
31public:
32 AtomNoneDescriptor_impl();
33 virtual ~AtomNoneDescriptor_impl();
34 virtual bool predicate(std::pair<int,atom*>);
35};
36
37/************************** Operator stuff ************************/
38
39class AtomAndDescriptor_impl : public AtomDescriptor_impl
40{
41public:
42 AtomAndDescriptor_impl(AtomDescriptor::impl_ptr _lhs, AtomDescriptor::impl_ptr _rhs);
43 ~AtomAndDescriptor_impl();
44 virtual bool predicate(std::pair<int,atom*>);
45
46private:
47 AtomDescriptor::impl_ptr lhs;
48 AtomDescriptor::impl_ptr rhs;
49};
50
51class AtomOrDescriptor_impl : public AtomDescriptor_impl
52{
53public:
54 AtomOrDescriptor_impl(AtomDescriptor::impl_ptr _lhs, AtomDescriptor::impl_ptr _rhs);
55 virtual ~AtomOrDescriptor_impl();
56 virtual bool predicate(std::pair<int,atom*>);
57
58private:
59 AtomDescriptor::impl_ptr lhs;
60 AtomDescriptor::impl_ptr rhs;
61};
62
63class AtomNotDescriptor_impl : public AtomDescriptor_impl
64{
65public:
66 AtomNotDescriptor_impl(AtomDescriptor::impl_ptr _arg);
67 virtual ~AtomNotDescriptor_impl();
68
69 virtual bool predicate(std::pair<int,atom*>);
70
71private:
72 AtomDescriptor::impl_ptr arg;
73};
Note: See TracBrowser for help on using the repository browser.