LeechCraft
0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
ianemitter.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <variant>
12
#include <QtPlugin>
13
#include <QVariant>
14
#include <QStringList>
15
16
namespace
LC::AN
17
{
28
struct
FieldData
29
{
35
QString
ID_
;
36
41
QString
Name_
;
42
48
QString
Description_
;
49
59
QMetaType::Type
Type_
= QMetaType::UnknownType;
60
67
QStringList
EventTypes_
;
68
69
struct
AllowedValue
70
{
73
QByteArray
Id_
;
74
77
QString
Name_
;
78
79
bool
operator==
(
const
AllowedValue
&)
const
=
default
;
80
};
81
82
using
AllowedValues
=
QList<AllowedValue>
;
83
92
AllowedValues
AllowedValues_
= {};
93
};
94
97
struct
BoolValueMatcher
98
{
101
bool
Value_
;
102
103
auto
operator<=>
(
const
BoolValueMatcher
&)
const
=
default
;
104
};
105
108
struct
IntValueMatcher
109
{
112
int
Boundary_
;
113
116
enum
Operation
117
{
120
OGreater
= 0x01,
121
124
OLess
= 0x02,
125
128
OEqual
= 0x04
129
};
130
131
Q_DECLARE_FLAGS
(Operations,
Operation
)
132
133
137
Operations
Ops_
=
OEqual
;
138
139
bool
operator== (const
IntValueMatcher
&) const = default;
140
};
141
144
struct
StringValueMatcher
145
{
146
struct
Exact
147
{
148
QString
Pattern_
;
149
bool
operator==
(
const
Exact
&)
const
=
default
;
150
};
151
152
struct
Substring
153
{
154
QString
Pattern_
;
155
bool
operator==
(
const
Substring
&)
const
=
default
;
156
};
157
158
struct
Wildcard
159
{
160
QString
Pattern_
;
161
QRegularExpression
Compiled_
= QRegularExpression::fromWildcard (
Pattern_
);
162
163
bool
operator==
(
const
Wildcard
&)
const
=
default
;
164
};
165
166
struct
Pattern
: std::variant<Substring, Wildcard, QRegularExpression, Exact>
167
{
168
using
variant::variant;
169
170
explicit
(
false
)
Pattern
(
const
QString& str)
171
: variant {
Exact
{ str } }
172
{
173
}
174
175
using
Base
= variant;
176
};
177
180
Pattern
Pattern_
=
Exact
{};
181
187
bool
Positive_
=
true
;
188
189
bool
operator==
(
const
StringValueMatcher
&)
const
=
default
;
190
};
191
194
using
ValueMatcher
= std::variant<BoolValueMatcher, IntValueMatcher, StringValueMatcher>;
195
}
196
211
class
Q_DECL_EXPORT
IANEmitter
212
{
213
public
:
214
virtual
~IANEmitter
() =
default
;
215
231
virtual
QList<LC::AN::FieldData>
GetANFields
()
const
= 0;
232
};
233
234
Q_DECLARE_INTERFACE (
IANEmitter
,
"org.Deviant.LeechCraft.IANEmitter/1.0"
)
235
Q_DECLARE_METATYPE
(
LC
::AN::FieldData)
236
Q_DECLARE_METATYPE
(
LC
::AN::
ValueMatcher
)
237
Q_DECLARE_METATYPE
(
QList
<
LC
::AN::
ValueMatcher
>)
238
239
Q_DECLARE_OPERATORS_FOR_FLAGS (
LC
::AN::IntValueMatcher::Operations)
IANEmitter
Interface for plugins emitting AdvancedNotifications entries.
Definition
ianemitter.h:212
IANEmitter::~IANEmitter
virtual ~IANEmitter()=default
IANEmitter::GetANFields
virtual QList< LC::AN::FieldData > GetANFields() const =0
Returns the list of additional fields.
QList
Definition
ianrulesstorage.h:14
operator==
auto operator==(const T &left, const T &right)
Definition
common.h:21
LC::AN
Definition
constants.h:15
LC::AN::Q_DECLARE_FLAGS
Q_DECLARE_FLAGS(NotifyFlags, NotifyFlag)
LC::AN::ValueMatcher
std::variant< BoolValueMatcher, IntValueMatcher, StringValueMatcher > ValueMatcher
A matcher for a value of any supported type.
Definition
ianemitter.h:194
LC
Definition
constants.h:15
LC::AN::BoolValueMatcher
Matches boolean values.
Definition
ianemitter.h:98
LC::AN::BoolValueMatcher::operator<=>
auto operator<=>(const BoolValueMatcher &) const =default
LC::AN::BoolValueMatcher::Value_
bool Value_
The value to match.
Definition
ianemitter.h:101
LC::AN::FieldData::AllowedValue
Definition
ianemitter.h:70
LC::AN::FieldData::AllowedValue::operator==
bool operator==(const AllowedValue &) const =default
LC::AN::FieldData::AllowedValue::Name_
QString Name_
Human-readable name of the value.
Definition
ianemitter.h:77
LC::AN::FieldData::AllowedValue::Id_
QByteArray Id_
Persistent, stable value stored in rules on disk.
Definition
ianemitter.h:73
LC::AN::FieldData
A single additional AdvancedNotifications field.
Definition
ianemitter.h:29
LC::AN::FieldData::ID_
QString ID_
The field ID.
Definition
ianemitter.h:35
LC::AN::FieldData::EventTypes_
QStringList EventTypes_
The types of the event that contain this field.
Definition
ianemitter.h:67
LC::AN::FieldData::Type_
QMetaType::Type Type_
The type of this field.
Definition
ianemitter.h:59
LC::AN::FieldData::Name_
QString Name_
The name of the field.
Definition
ianemitter.h:41
LC::AN::FieldData::AllowedValues_
AllowedValues AllowedValues_
The allowed values of this field.
Definition
ianemitter.h:92
LC::AN::FieldData::AllowedValues
QList< AllowedValue > AllowedValues
Definition
ianemitter.h:82
LC::AN::FieldData::Description_
QString Description_
The description of the field.
Definition
ianemitter.h:48
LC::AN::IntValueMatcher
Matches integer values.
Definition
ianemitter.h:109
LC::AN::IntValueMatcher::Operation
Operation
Describes the elementary semantics of Boundary_.
Definition
ianemitter.h:117
LC::AN::IntValueMatcher::OEqual
@ OEqual
The value should be equal to Boundary_.
Definition
ianemitter.h:128
LC::AN::IntValueMatcher::OGreater
@ OGreater
The value should be greater than Boundary_.
Definition
ianemitter.h:120
LC::AN::IntValueMatcher::OLess
@ OLess
The value should be less than Boundary_.
Definition
ianemitter.h:124
LC::AN::IntValueMatcher::Boundary_
int Boundary_
The boundary to compare the matched values against.
Definition
ianemitter.h:112
LC::AN::IntValueMatcher::Ops_
Operations Ops_
Describe the semantics of Boundary_.
Definition
ianemitter.h:137
LC::AN::IntValueMatcher::operator==
bool operator==(const IntValueMatcher &) const =default
LC::AN::StringValueMatcher::Exact
Definition
ianemitter.h:147
LC::AN::StringValueMatcher::Exact::Pattern_
QString Pattern_
Definition
ianemitter.h:148
LC::AN::StringValueMatcher::Pattern
Definition
ianemitter.h:167
LC::AN::StringValueMatcher::Pattern::Base
variant Base
Definition
ianemitter.h:175
LC::AN::StringValueMatcher::Substring
Definition
ianemitter.h:153
LC::AN::StringValueMatcher::Substring::Pattern_
QString Pattern_
Definition
ianemitter.h:154
LC::AN::StringValueMatcher::Wildcard
Definition
ianemitter.h:159
LC::AN::StringValueMatcher::Wildcard::Compiled_
QRegularExpression Compiled_
Definition
ianemitter.h:161
LC::AN::StringValueMatcher::Wildcard::Pattern_
QString Pattern_
Definition
ianemitter.h:160
LC::AN::StringValueMatcher
Matches string values.
Definition
ianemitter.h:145
LC::AN::StringValueMatcher::Positive_
bool Positive_
Whether the values should match or not match Pattern_.
Definition
ianemitter.h:187
LC::AN::StringValueMatcher::Pattern_
Pattern Pattern_
The pattern the values should (not) match.
Definition
ianemitter.h:180
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(QVariantList *)
src
interfaces
an
ianemitter.h
Generated by
1.18.0