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
|
// Copyright (C) 2017 Ford Motor Company
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#ifndef REPCODEGENERATOR_H
#define REPCODEGENERATOR_H
#include "repparser.h"
#include <QList>
#include <QSet>
#include <QString>
#include <QTextStream>
QT_BEGIN_NAMESPACE
class QIODevice;
class RepCodeGenerator
{
public:
enum Mode
{
REPLICA,
SOURCE,
SIMPLE_SOURCE,
MERGED
};
RepCodeGenerator(QIODevice *outputDevice, const AST &ast);
void generate(Mode mode, QString fileName);
QByteArray classSignature(const ASTClass &ac);
private:
void generateHeader(Mode mode);
QString generateMetaTypeRegistration(const QSet<QString> &metaTypes);
QString generateMetaTypeRegistrationForPending(const QSet<QString> &metaTypes);
void generateSimpleSetter(const ASTProperty &property, bool generateOverride = true);
void generatePOD(const POD &pod);
void generateEnumGadget(const ASTEnum &en, const QString &className);
void generateDeclarationsForEnums(const QList<ASTEnum> &enums, bool generateQENUM=true);
QString formatQPropertyDeclarations(const POD &pod);
QString formatConstructors(const POD &pod);
QString formatPropertyGettersAndSetters(const POD &pod);
QString formatSignals(const POD &pod);
QString formatDataMembers(const POD &pod);
QString formatDebugOperator(const POD &pod);
QString formatMarshallingOperators(const POD &pod);
QString typeForMode(const ASTProperty &property, Mode mode);
void generateClass(Mode mode, const ASTClass &astClasses,
const QString &metaTypeRegistrationCode);
void generateSourceAPI(const ASTClass &astClass);
private:
QTextStream m_stream;
AST m_ast;
};
QT_END_NAMESPACE
#endif
|