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

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

Added Descriptor that allows querying of atoms by their type

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