Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cbordevice.h
Go to the documentation of this file.
1// Copyright (C) 2018 Intel Corporation.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef CBORDEVICE_H
5#define CBORDEVICE_H
6
7#include <QtCore/qtypes.h>
8
9#include <memory>
10#include <stdio.h>
11
12#define CBOR_API inline
13#define CBOR_PRIVATE_API inline
14#define CBOR_NO_PARSER_API 1
15#include <cbor.h>
16
18{
19public:
20 CborDevice(FILE *out) : out(out) {}
21
22 void nextItem(const char *comment = nullptr)
23 {
24 i = 0;
25 if (comment)
26 fprintf(out, "\n // %s", comment);
27 }
28
29 static CborError callback(void *self, const void *ptr, size_t len, CborEncoderAppendType t)
30 {
31 auto that = static_cast<CborDevice *>(self);
32 auto data = static_cast<const char *>(ptr);
33 if (t == CborEncoderAppendCborData) {
34 while (len--)
35 that->putByte(*data++);
36 } else {
37 while (len--)
38 that->putChar(*data++);
39 }
40 return CborNoError;
41 }
42
43private:
44 FILE *out;
45 int i = 0;
46
47 void putNewline()
48 {
49 if ((i++ % 8) == 0)
50 fputs("\n ", out);
51 }
52
53 void putByte(uint8_t c)
54 {
55 putNewline();
56 fprintf(out, " 0x%02x, ", c);
57 }
58
59 void putChar(char c)
60 {
61 putNewline();
62 if (uchar(c) < 0x20)
63 fprintf(out, " '\\x%x',", uint8_t(c));
64 else if (uchar(c) >= 0x7f)
65 fprintf(out, " uchar('\\x%x'),", uint8_t(c));
66 else if (c == '\'' || c == '\\')
67 fprintf(out, " '\\%c',", c);
68 else
69 fprintf(out, " '%c', ", c);
70 }
71};
72
73#endif // CBORDEVICE_H
static CborError callback(void *self, const void *ptr, size_t len, CborEncoderAppendType t)
Definition cbordevice.h:29
void nextItem(const char *comment=nullptr)
Definition cbordevice.h:22
CborDevice(FILE *out)
Definition cbordevice.h:20
qsizetype registeredStringsCount()
Definition generator.h:24
Generator(Moc *moc, ClassDef *classDef, const QList< QByteArray > &metaTypes, const QHash< QByteArray, QByteArray > &knownQObjectClasses, const QHash< QByteArray, QByteArray > &knownGadgets, FILE *outfile=nullptr, bool requireCompleteTypes=false)
Definition generator.cpp:81
void generateCode()
Definition moc.h:223
Definition qlist.h:80
TypeTag
Definition moc.h:23
@ HasEnum
Definition moc.h:27
@ HasClass
Definition moc.h:26
@ HasStruct
Definition moc.h:25
static QByteArray generateQualifiedClassNameIdentifier(const QByteArray &identifier)
static bool qualifiedNameEquals(const QByteArray &qualifiedName, const QByteArray &name)
static const char * metaTypeEnumValueString(int type)
Definition generator.cpp:69
static void printStringWithIndentation(FILE *out, const QByteArray &s)
static qsizetype lengthOfEscapeSequence(const QByteArray &s, qsizetype i)
Definition generator.cpp:97
constexpr const char * cxxTypeTag(TypeTags t)
Definition generator.cpp:55
static bool isBuiltinType(const QByteArray &type)
Definition generator.cpp:49
static int nameToBuiltinType(const QByteArray &name)
Definition generator.cpp:29
bool hasQObject
Definition moc.h:206
bool hasQGadget
Definition moc.h:207
bool requireCompleteMethodTypes
Definition moc.h:209
bool hasQNamespace
Definition moc.h:208
Definition moc.h:53
bool wasCloned
Definition moc.h:94
bool isRawSlot
Definition moc.h:107
bool isConst
Definition moc.h:90
bool isAbstract
Definition moc.h:106
bool isPrivateSignal
Definition moc.h:103
@ Private
Definition moc.h:85
bool isStatic
Definition moc.h:92
int notifyId
Definition moc.h:126
bool constant
Definition moc.h:131
Specification gspec
Definition moc.h:128
@ ReferenceSpec
Definition moc.h:127
@ PointerSpec
Definition moc.h:127