1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
|
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QPROTOBUFPROPERTYORDERING_H
#define QPROTOBUFPROPERTYORDERING_H
#if 0
# pragma qt_sync_skip_header_check
# pragma qt_sync_stop_processing
#endif
#include <QtProtobuf/qtprotobufexports.h>
#include <QtCore/qflags.h>
#include <QtCore/qtclasshelpermacros.h>
#include <QtCore/qutf8stringview.h>
#include <QtCore/qxptype_traits.h>
QT_BEGIN_NAMESPACE
namespace QtProtobufPrivate {
enum class FieldFlag : uint {
NoFlags = 0x0,
NonPacked = 0x1,
Oneof = 0x02,
Optional = 0x04,
ExplicitPresence = 0x08,
Message = 0x10,
Enum = 0x20,
Repeated = 0x40,
Map = 0x80,
};
Q_DECLARE_FLAGS(FieldFlags, FieldFlag)
Q_DECLARE_OPERATORS_FOR_FLAGS(FieldFlags)
class QProtobufPropertyOrderingBuilder;
struct QProtobufPropertyOrdering
{
const struct Data
{
uint version;
uint numFields;
uint fieldNumberOffset;
uint propertyIndexOffset;
uint flagsOffset;
uint fullPackageNameSize;
} *data;
Q_PROTOBUF_EXPORT QUtf8StringView messageFullName() const;
Q_PROTOBUF_EXPORT QUtf8StringView jsonName(int index) const;
Q_PROTOBUF_EXPORT int fieldNumber(int index) const;
Q_PROTOBUF_EXPORT int propertyIndex(int index) const;
Q_PROTOBUF_EXPORT FieldFlags fieldFlags(int index) const;
Q_PROTOBUF_EXPORT int indexOfFieldNumber(int fieldNumber) const;
int fieldCount() const { return int(data->numFields); }
private:
friend class QProtobufPropertyOrderingBuilder;
QT_DEFINE_TAG_STRUCT(NonConstTag);
uint *uint_data(NonConstTag) const;
char *char_data(NonConstTag) const;
const uint *uint_data() const;
const char *char_data() const;
const uint &uint_dataForIndex(int index, uint offset) const;
};
// Convenience structure to hold a reference to a single field information
struct QProtobufFieldInfo
{
QProtobufFieldInfo(QProtobufPropertyOrdering ord, int ind)
: ordering(ord), index(ind)
{
Q_ASSERT(index >= 0);
}
QUtf8StringView jsonName() const { return ordering.jsonName(index); }
int fieldNumber() const { return ordering.fieldNumber(index); }
int propertyIndex() const { return ordering.propertyIndex(index); }
FieldFlags fieldFlags() const { return ordering.fieldFlags(index); }
private:
const QProtobufPropertyOrdering ordering;
const int index;
};
} // namespace QtProtobufPrivate
QT_END_NAMESPACE
#endif // QPROTOBUFPROPERTYORDERING_H
|