1 | // Copyright (C) 2023 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | |
4 | #ifndef QHTTPHEADERS_H |
5 | #define |
6 | |
7 | #include <QtNetwork/qtnetworkglobal.h> |
8 | |
9 | #include <QtCore/qobjectdefs.h> |
10 | #include <QtCore/qshareddata.h> |
11 | #include <QtCore/qcontainerfwd.h> |
12 | |
13 | QT_BEGIN_NAMESPACE |
14 | |
15 | class QDebug; |
16 | |
17 | class ; |
18 | QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QHttpHeadersPrivate, Q_NETWORK_EXPORT) |
19 | class |
20 | { |
21 | Q_GADGET_EXPORT(Q_NETWORK_EXPORT) |
22 | public: |
23 | enum class { |
24 | // IANA Permanent status: |
25 | , |
26 | , |
27 | , |
28 | , |
29 | , |
30 | , |
31 | , |
32 | , |
33 | , |
34 | , |
35 | , |
36 | , |
37 | , |
38 | , |
39 | , |
40 | , |
41 | , |
42 | , |
43 | , |
44 | , |
45 | , |
46 | , |
47 | , |
48 | , |
49 | , |
50 | , |
51 | , |
52 | , |
53 | , |
54 | , |
55 | , |
56 | , |
57 | , |
58 | , |
59 | , |
60 | , |
61 | , |
62 | , |
63 | , |
64 | , |
65 | , |
66 | , |
67 | , |
68 | , |
69 | , |
70 | , |
71 | , |
72 | , |
73 | , |
74 | , |
75 | , |
76 | , |
77 | , |
78 | , |
79 | , |
80 | , |
81 | , |
82 | , |
83 | , |
84 | , |
85 | , |
86 | , |
87 | , |
88 | , |
89 | , |
90 | , |
91 | , |
92 | , |
93 | , |
94 | , |
95 | , |
96 | , |
97 | , |
98 | , |
99 | , |
100 | , |
101 | , |
102 | , |
103 | , |
104 | , |
105 | , |
106 | , |
107 | , |
108 | , |
109 | , |
110 | , |
111 | , |
112 | , |
113 | , |
114 | , |
115 | , |
116 | , |
117 | , |
118 | , |
119 | , |
120 | , |
121 | , |
122 | , |
123 | , |
124 | , |
125 | , |
126 | , |
127 | , |
128 | , |
129 | , |
130 | , |
131 | , |
132 | , |
133 | , |
134 | , |
135 | , |
136 | , |
137 | , |
138 | , |
139 | , |
140 | , |
141 | , |
142 | , |
143 | , |
144 | , |
145 | , |
146 | , |
147 | , |
148 | , |
149 | , |
150 | , |
151 | , |
152 | , |
153 | , |
154 | , |
155 | , |
156 | , |
157 | , |
158 | , |
159 | , |
160 | , |
161 | , |
162 | , |
163 | , |
164 | , |
165 | , |
166 | , |
167 | , |
168 | , |
169 | , |
170 | , |
171 | , |
172 | , |
173 | , |
174 | , |
175 | , |
176 | , |
177 | , |
178 | , |
179 | , |
180 | , |
181 | , |
182 | , |
183 | , |
184 | , |
185 | , |
186 | , |
187 | , |
188 | , |
189 | , |
190 | , |
191 | , |
192 | , |
193 | , |
194 | , |
195 | , |
196 | , |
197 | // IANA Deprecated status: |
198 | , |
199 | , |
200 | , |
201 | , |
202 | , |
203 | }; |
204 | Q_ENUM(WellKnownHeader) |
205 | |
206 | Q_NETWORK_EXPORT () noexcept; |
207 | Q_NETWORK_EXPORT (); |
208 | |
209 | Q_NETWORK_EXPORT (const QHttpHeaders &other); |
210 | (QHttpHeaders &&other) noexcept = default; |
211 | Q_NETWORK_EXPORT QHttpHeaders &(const QHttpHeaders &other); |
212 | QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QHttpHeaders) |
213 | void (QHttpHeaders &other) noexcept { d.swap(other&: other.d); } |
214 | |
215 | Q_NETWORK_EXPORT bool (QAnyStringView name, QAnyStringView value); |
216 | Q_NETWORK_EXPORT bool (WellKnownHeader name, QAnyStringView value); |
217 | |
218 | Q_NETWORK_EXPORT bool (qsizetype i, QAnyStringView name, QAnyStringView value); |
219 | Q_NETWORK_EXPORT bool (qsizetype i, WellKnownHeader name, QAnyStringView value); |
220 | |
221 | Q_NETWORK_EXPORT bool (qsizetype i, QAnyStringView name, QAnyStringView newValue); |
222 | Q_NETWORK_EXPORT bool (qsizetype i, WellKnownHeader name, QAnyStringView newValue); |
223 | |
224 | Q_NETWORK_EXPORT bool (QAnyStringView name, QAnyStringView newValue); |
225 | Q_NETWORK_EXPORT bool (WellKnownHeader name, QAnyStringView newValue); |
226 | |
227 | Q_NETWORK_EXPORT bool (QAnyStringView name) const; |
228 | Q_NETWORK_EXPORT bool (WellKnownHeader name) const; |
229 | |
230 | Q_NETWORK_EXPORT void (); |
231 | Q_NETWORK_EXPORT void (QAnyStringView name); |
232 | Q_NETWORK_EXPORT void (WellKnownHeader name); |
233 | Q_NETWORK_EXPORT void (qsizetype i); |
234 | |
235 | Q_NETWORK_EXPORT QByteArrayView (QAnyStringView name, QByteArrayView defaultValue = {}) const noexcept; |
236 | Q_NETWORK_EXPORT QByteArrayView (WellKnownHeader name, QByteArrayView defaultValue = {}) const noexcept; |
237 | |
238 | Q_NETWORK_EXPORT QList<QByteArray> (QAnyStringView name) const; |
239 | Q_NETWORK_EXPORT QList<QByteArray> (WellKnownHeader name) const; |
240 | |
241 | Q_NETWORK_EXPORT QByteArrayView (qsizetype i) const noexcept; |
242 | Q_NETWORK_EXPORT QLatin1StringView (qsizetype i) const noexcept; |
243 | |
244 | Q_NETWORK_EXPORT QByteArray (QAnyStringView name) const; |
245 | Q_NETWORK_EXPORT QByteArray (WellKnownHeader name) const; |
246 | |
247 | Q_NETWORK_EXPORT qsizetype () const noexcept; |
248 | Q_NETWORK_EXPORT void (qsizetype size); |
249 | bool () const noexcept { return size() == 0; } |
250 | |
251 | Q_NETWORK_EXPORT static QByteArrayView (WellKnownHeader name) noexcept; |
252 | |
253 | Q_NETWORK_EXPORT static QHttpHeaders |
254 | (const QList<std::pair<QByteArray, QByteArray>> &); |
255 | Q_NETWORK_EXPORT static QHttpHeaders |
256 | (const QMultiMap<QByteArray, QByteArray> &); |
257 | Q_NETWORK_EXPORT static QHttpHeaders |
258 | (const QMultiHash<QByteArray, QByteArray> &); |
259 | |
260 | Q_NETWORK_EXPORT QList<std::pair<QByteArray, QByteArray>> () const; |
261 | Q_NETWORK_EXPORT QMultiMap<QByteArray, QByteArray> () const; |
262 | Q_NETWORK_EXPORT QMultiHash<QByteArray, QByteArray> () const; |
263 | |
264 | private: |
265 | #ifndef QT_NO_DEBUG_STREAM |
266 | friend Q_NETWORK_EXPORT QDebug (QDebug debug, const QHttpHeaders &); |
267 | #endif |
268 | Q_ALWAYS_INLINE void ([[maybe_unused]] qsizetype pos = 0, |
269 | [[maybe_unused]] qsizetype n = 1) const |
270 | { |
271 | Q_ASSERT(pos >= 0); |
272 | Q_ASSERT(pos <= size()); |
273 | Q_ASSERT(n >= 0); |
274 | Q_ASSERT(n <= size() - pos); |
275 | } |
276 | QExplicitlySharedDataPointer<QHttpHeadersPrivate> ; |
277 | }; |
278 | |
279 | Q_DECLARE_SHARED(QHttpHeaders) |
280 | |
281 | QT_END_NAMESPACE |
282 | |
283 | #endif // QHTTPHEADERS_H |
284 | |