cutelyst 4.3.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
component.h
1/*
2 * SPDX-FileCopyrightText: (C) 2014-2022 Daniel Nicoletti <dantti12@gmail.com>
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5#ifndef CUTELYST_COMPONENT_H
6#define CUTELYST_COMPONENT_H
7
8#include <Cutelyst/cutelyst_global.h>
9
10#include <QtCore/qobject.h>
11
12namespace Cutelyst {
13
14class Application;
15class Context;
16class Controller;
17class Dispatcher;
18class ComponentPrivate;
19
29class CUTELYST_LIBRARY Component : public QObject
30{
31 Q_OBJECT
32 Q_DECLARE_PRIVATE(Component)
33 Q_FLAGS(Modifiers)
34public:
36 enum Modifier {
37 None = 0 << 1,
38 OnlyExecute = 1 << 1,
39 BeforeExecute = 2 << 1,
40 AroundExecute = 3 << 1,
41 AfterExecute = 4 << 1,
42 };
43 Q_ENUM(Modifier)
44 Q_DECLARE_FLAGS(Modifiers, Modifier)
45
46
51 explicit Component(QObject *parent = nullptr);
52
56 virtual ~Component() override;
57
61 [[nodiscard]] virtual Modifiers modifiers() const;
62
67 [[nodiscard]] QString name() const noexcept;
68
73 void setName(const QString &name);
74
79 [[nodiscard]] QString reverse() const noexcept;
80
85 void setReverse(const QString &reverse);
86
93 virtual bool init(Application *application, const QVariantHash &args);
94
98 bool execute(Context *c);
99
100protected:
105 explicit Component(ComponentPrivate *d, QObject *parent = nullptr);
106
110 virtual bool beforeExecute(Context *c);
111
116 virtual bool aroundExecute(Context *c, QStack<Component *> stack);
117
121 virtual bool afterExecute(Context *c);
122
126 virtual bool doExecute(Context *c);
127
131 void applyRoles(const QStack<Component *> &roles);
132
139 virtual bool dispatcherReady(const Dispatcher *dispatch, Controller *controller);
140
141protected:
142 friend class Controller;
143 ComponentPrivate
144 *d_ptr;
145};
146
147} // namespace Cutelyst
148
149#endif // CUTELYST_COMPONENT_H
The Cutelyst application.
Definition application.h:66
The Cutelyst Component base class.
Definition component.h:30
The Cutelyst Context.
Definition context.h:42
Cutelyst Controller base class.
Definition controller.h:56
The Cutelyst Dispatcher.
Definition dispatcher.h:29
The Cutelyst namespace holds all public Cutelyst API.