source: subversion/applications/editors/merkaartor/PaintStyle/TagSelector.h @ 13989

Last change on this file since 13989 was 13187, checked in by richardbrinkman, 11 years ago

Removed one more memory leak.

File size: 3.6 KB
Line 
1#ifndef MERKAARTOR_STYLE_TAGSELECTOR_H_
2#define MERKAARTOR_STYLE_TAGSELECTOR_H_
3
4class MapFeature;
5
6#include <QtCore/QString>
7#include <QRegExp>
8#include <QVector>
9
10#include <vector>
11
12enum TagSelectorMatchResult {
13        TagSelect_NoMatch,
14        TagSelect_Match,
15        TagSelect_DefaultMatch
16};
17
18class TagSelector
19{
20        public:
21                virtual ~TagSelector() = 0;
22
23                virtual TagSelector* copy() const = 0;
24                virtual TagSelectorMatchResult matches(const MapFeature* F) const = 0;
25                virtual QString asExpression(bool Precedence) const = 0;
26
27                static TagSelector* parse(const QString& Expression);
28};
29
30class TagSelectorIs : public TagSelector
31{
32        public:
33                TagSelectorIs(const QString& key, const QString& value);
34
35                virtual TagSelector* copy() const;
36                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
37                virtual QString asExpression(bool Precedence) const;
38
39        private:
40                QRegExp rx;
41                QString Key, Value;
42};
43
44class TagSelectorTypeIs : public TagSelector
45{
46        public:
47                TagSelectorTypeIs(const QString& type);
48
49                virtual TagSelector* copy() const;
50                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
51                virtual QString asExpression(bool Precedence) const;
52
53        private:
54                QString Type;
55};
56
57class TagSelectorHasTags : public TagSelector
58{
59        public:
60                TagSelectorHasTags();
61
62                virtual TagSelector* copy() const;
63                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
64                virtual QString asExpression(bool Precedence) const;
65};
66
67class TagSelectorIsOneOf : public TagSelector
68{
69        public:
70                TagSelectorIsOneOf(const QString& key, const std::vector<QString>& values);
71
72                virtual TagSelector* copy() const;
73                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
74                virtual QString asExpression(bool Precedence) const;
75
76        private:
77                QVector<QRegExp> rxv;
78                QString Key;
79                std::vector<QString> Values;
80};
81
82class TagSelectorOr : public TagSelector
83{
84        public:
85                TagSelectorOr(const std::vector<TagSelector*> Terms);
86                virtual ~TagSelectorOr();
87
88                virtual TagSelector* copy() const;
89                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
90                virtual QString asExpression(bool Precedence) const;
91
92        private:
93                std::vector<TagSelector*> Terms;
94};
95
96class TagSelectorAnd : public TagSelector
97{
98        public:
99                TagSelectorAnd(const std::vector<TagSelector*> Terms);
100                virtual ~TagSelectorAnd();
101
102                virtual TagSelector* copy() const;
103                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
104                virtual QString asExpression(bool Precedence) const;
105
106        private:
107                std::vector<TagSelector*> Terms;
108};
109
110class TagSelectorNot : public TagSelector
111{
112        public:
113                TagSelectorNot(TagSelector* Term);
114                virtual ~TagSelectorNot();
115
116                virtual TagSelector* copy() const;
117                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
118                virtual QString asExpression(bool Precedence) const;
119
120        private:
121                TagSelector* Term;
122};
123
124class TagSelectorFalse : public TagSelector
125{
126        public:
127                TagSelectorFalse();
128
129                virtual TagSelector* copy() const;
130                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
131                virtual QString asExpression(bool Precedence) const;
132};
133
134class TagSelectorTrue : public TagSelector
135{
136        public:
137                TagSelectorTrue();
138
139                virtual TagSelector* copy() const;
140                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
141                virtual QString asExpression(bool Precedence) const;
142};
143
144class TagSelectorDefault : public TagSelector
145{
146        public:
147                TagSelectorDefault(TagSelector* Term);
148                virtual ~TagSelectorDefault();
149
150                virtual TagSelector* copy() const;
151                virtual TagSelectorMatchResult matches(const MapFeature* F) const;
152                virtual QString asExpression(bool Precedence) const;
153
154        private:
155                TagSelector* Term;
156};
157
158
159#endif
Note: See TracBrowser for help on using the repository browser.