1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QGRPCSERIALIZATIONFORMAT_H
5#define QGRPCSERIALIZATIONFORMAT_H
6
7#include <QtGrpc/qtgrpcglobal.h>
8#include <QtGrpc/qtgrpcnamespace.h>
9
10#include <QtCore/qbytearrayview.h>
11#include <QtCore/qshareddata.h>
12#include <QtCore/qtclasshelpermacros.h>
13
14#include <memory>
15
16QT_BEGIN_NAMESPACE
17
18class QAbstractProtobufSerializer;
19class QDebug;
20class QVariant;
21
22class QGrpcSerializationFormatPrivate;
23QT_DECLARE_QESDP_SPECIALIZATION_DTOR(QGrpcSerializationFormatPrivate)
24
25class QGrpcSerializationFormat final
26{
27public:
28 Q_GRPC_EXPORT Q_IMPLICIT QGrpcSerializationFormat(QtGrpc::SerializationFormat format = {});
29 Q_GRPC_EXPORT explicit QGrpcSerializationFormat(QByteArrayView suffix,
30 std::shared_ptr<QAbstractProtobufSerializer>
31 serializer);
32 Q_GRPC_EXPORT ~QGrpcSerializationFormat();
33
34 Q_GRPC_EXPORT QGrpcSerializationFormat(const QGrpcSerializationFormat &);
35 Q_GRPC_EXPORT QGrpcSerializationFormat &operator=(const QGrpcSerializationFormat &);
36
37 QGrpcSerializationFormat(QGrpcSerializationFormat &&other) noexcept = default;
38 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QGrpcSerializationFormat)
39
40 Q_GRPC_EXPORT Q_IMPLICIT operator QVariant() const;
41
42 void swap(QGrpcSerializationFormat &other) noexcept { d_ptr.swap(other&: other.d_ptr); }
43
44 [[nodiscard]] Q_GRPC_EXPORT QByteArrayView suffix() const noexcept;
45
46 [[nodiscard]] Q_GRPC_EXPORT std::shared_ptr<QAbstractProtobufSerializer> serializer() const;
47
48private:
49 QExplicitlySharedDataPointer<QGrpcSerializationFormatPrivate> d_ptr;
50
51 Q_GRPC_EXPORT friend bool comparesEqual(const QGrpcSerializationFormat &lhs,
52 const QGrpcSerializationFormat &rhs) noexcept;
53 Q_DECLARE_EQUALITY_COMPARABLE(QGrpcSerializationFormat)
54
55 Q_GRPC_EXPORT friend size_t qHash(const QGrpcSerializationFormat &key, size_t seed) noexcept;
56 friend size_t qHash(const QGrpcSerializationFormat &key) noexcept { return qHash(key, seed: 0); }
57
58#ifndef QT_NO_DEBUG_STREAM
59 friend Q_GRPC_EXPORT QDebug operator<<(QDebug debug, const QGrpcSerializationFormat &sfmt);
60#endif
61
62 Q_DECLARE_PRIVATE(QGrpcSerializationFormat)
63};
64
65Q_DECLARE_SHARED(QGrpcSerializationFormat)
66
67QT_END_NAMESPACE
68
69#endif // QGRPCSERIALIZATIONFORMAT_H
70

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtgrpc/src/grpc/qgrpcserializationformat.h