summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tools/moc/generator.cpp60
-rw-r--r--src/tools/moc/generator.h26
-rw-r--r--src/tools/moc/moc.cpp14
-rw-r--r--src/tools/moc/moc.h32
-rw-r--r--src/tools/moc/symbols.h2
5 files changed, 75 insertions, 59 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index 999f86963e..0d3a763a48 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -80,12 +80,19 @@ QT_FOR_EACH_STATIC_TYPE(RETURN_METATYPENAME_STRING)
return nullptr;
}
-Generator::Generator(ClassDef *classDef, const QVector<QByteArray> &metaTypes, const QHash<QByteArray, QByteArray> &knownQObjectClasses, const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile, bool requireCompleteTypes)
- : out(outfile), cdef(classDef), metaTypes(metaTypes), knownQObjectClasses(knownQObjectClasses)
- , knownGadgets(knownGadgets), requireCompleteTypes(requireCompleteTypes)
-{
- if (cdef->superclassList.size())
- purestSuperClass = cdef->superclassList.constFirst().first;
+ Generator::Generator(ClassDef *classDef, const QList<QByteArray> &metaTypes,
+ const QHash<QByteArray, QByteArray> &knownQObjectClasses,
+ const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile,
+ bool requireCompleteTypes)
+ : out(outfile),
+ cdef(classDef),
+ metaTypes(metaTypes),
+ knownQObjectClasses(knownQObjectClasses),
+ knownGadgets(knownGadgets),
+ requireCompleteTypes(requireCompleteTypes)
+ {
+ if (cdef->superclassList.size())
+ purestSuperClass = cdef->superclassList.constFirst().first;
}
static inline int lengthOfEscapeSequence(const QByteArray &s, int i)
@@ -127,7 +134,7 @@ int Generator::stridx(const QByteArray &s)
// Returns the sum of all parameters (including return type) for the given
// \a list of methods. This is needed for calculating the size of the methods'
// parameter type/name meta-data.
-static int aggregateParameterCount(const QVector<FunctionDef> &list)
+static int aggregateParameterCount(const QList<FunctionDef> &list)
{
int sum = 0;
for (int i = 0; i < list.count(); ++i)
@@ -150,22 +157,22 @@ bool Generator::registerableMetaType(const QByteArray &propertyType)
return true;
}
- static const QVector<QByteArray> smartPointers = QVector<QByteArray>()
+ static const QList<QByteArray> smartPointers = QList<QByteArray>()
#define STREAM_SMART_POINTER(SMART_POINTER) << #SMART_POINTER
- QT_FOR_EACH_AUTOMATIC_TEMPLATE_SMART_POINTER(STREAM_SMART_POINTER)
+ QT_FOR_EACH_AUTOMATIC_TEMPLATE_SMART_POINTER(STREAM_SMART_POINTER)
#undef STREAM_SMART_POINTER
- ;
+ ;
for (const QByteArray &smartPointer : smartPointers) {
if (propertyType.startsWith(smartPointer + "<") && !propertyType.endsWith("&"))
return knownQObjectClasses.contains(propertyType.mid(smartPointer.size() + 1, propertyType.size() - smartPointer.size() - 1 - 1));
}
- static const QVector<QByteArray> oneArgTemplates = QVector<QByteArray>()
+ static const QList<QByteArray> oneArgTemplates = QList<QByteArray>()
#define STREAM_1ARG_TEMPLATE(TEMPLATENAME) << #TEMPLATENAME
- QT_FOR_EACH_AUTOMATIC_TEMPLATE_1ARG(STREAM_1ARG_TEMPLATE)
+ QT_FOR_EACH_AUTOMATIC_TEMPLATE_1ARG(STREAM_1ARG_TEMPLATE)
#undef STREAM_1ARG_TEMPLATE
- ;
+ ;
for (const QByteArray &oneArgTemplateType : oneArgTemplates) {
if (propertyType.startsWith(oneArgTemplateType + "<") && propertyType.endsWith(">")) {
const int argumentSize = propertyType.size() - oneArgTemplateType.size() - 1
@@ -199,7 +206,7 @@ void Generator::generateCode()
// filter out undeclared enumerators and sets
{
- QVector<EnumDef> enumList;
+ QList<EnumDef> enumList;
for (int i = 0; i < cdef->enumList.count(); ++i) {
EnumDef def = cdef->enumList.at(i);
if (cdef->enumDeclarations.contains(def.name)) {
@@ -455,7 +462,7 @@ void Generator::generateCode()
//
// Build extra array
//
- QVector<QByteArray> extraList;
+ QList<QByteArray> extraList;
QMultiHash<QByteArray, QByteArray> knownExtraMetaObject = knownGadgets;
knownExtraMetaObject.unite(knownQObjectClasses);
@@ -574,7 +581,8 @@ void Generator::generateCode()
fprintf(out, "%s%s", needsComma ? ", " : "", p.type.data());
needsComma = true;
}
- for (const QVector<FunctionDef> &methodContainer: {cdef->signalList, cdef->slotList, cdef->methodList} ) {
+ for (const QList<FunctionDef> &methodContainer :
+ { cdef->signalList, cdef->slotList, cdef->methodList }) {
for (int i = 0; i< methodContainer.count(); ++i) {
const FunctionDef& fdef = methodContainer.at(i);
fprintf(out, "%s%s", needsComma ? ", " : "", fdef.type.name.data());
@@ -621,7 +629,7 @@ void Generator::generateCode()
cname, cname);
}
for (int i = 0; i < cdef->interfaceList.size(); ++i) {
- const QVector<ClassDef::Interface> &iface = cdef->interfaceList.at(i);
+ const QList<ClassDef::Interface> &iface = cdef->interfaceList.at(i);
for (int j = 0; j < iface.size(); ++j) {
fprintf(out, " if (!strcmp(_clname, %s))\n return ", iface.at(j).interfaceId.constData());
for (int k = j; k >= 0; --k)
@@ -695,7 +703,7 @@ void Generator::generateClassInfos()
}
}
-void Generator::registerFunctionStrings(const QVector<FunctionDef>& list)
+void Generator::registerFunctionStrings(const QList<FunctionDef> &list)
{
for (int i = 0; i < list.count(); ++i) {
const FunctionDef &f = list.at(i);
@@ -715,13 +723,14 @@ void Generator::registerFunctionStrings(const QVector<FunctionDef>& list)
}
}
-void Generator::registerByteArrayVector(const QVector<QByteArray> &list)
+void Generator::registerByteArrayVector(const QList<QByteArray> &list)
{
for (const QByteArray &ba : list)
strreg(ba);
}
-void Generator::generateFunctions(const QVector<FunctionDef>& list, const char *functype, int type, int &paramsIndex, int &initialMetatypeOffset)
+void Generator::generateFunctions(const QList<FunctionDef> &list, const char *functype, int type,
+ int &paramsIndex, int &initialMetatypeOffset)
{
if (list.isEmpty())
return;
@@ -769,7 +778,7 @@ void Generator::generateFunctions(const QVector<FunctionDef>& list, const char *
}
}
-void Generator::generateFunctionRevisions(const QVector<FunctionDef>& list, const char *functype)
+void Generator::generateFunctionRevisions(const QList<FunctionDef> &list, const char *functype)
{
if (list.count())
fprintf(out, "\n // %ss: revision\n", functype);
@@ -779,7 +788,7 @@ void Generator::generateFunctionRevisions(const QVector<FunctionDef>& list, cons
}
}
-void Generator::generateFunctionParameters(const QVector<FunctionDef>& list, const char *functype)
+void Generator::generateFunctionParameters(const QList<FunctionDef> &list, const char *functype)
{
if (list.isEmpty())
return;
@@ -968,7 +977,7 @@ void Generator::generateMetacall()
bool needElse = false;
- QVector<FunctionDef> methodList;
+ QList<FunctionDef> methodList;
methodList += cdef->signalList;
methodList += cdef->slotList;
methodList += cdef->methodList;
@@ -1031,7 +1040,8 @@ QMultiMap<QByteArray, int> Generator::automaticPropertyMetaTypesHelper()
return automaticPropertyMetaTypes;
}
-QMap<int, QMultiMap<QByteArray, int> > Generator::methodsWithAutomaticTypesHelper(const QVector<FunctionDef> &methodList)
+QMap<int, QMultiMap<QByteArray, int>>
+Generator::methodsWithAutomaticTypesHelper(const QList<FunctionDef> &methodList)
{
QMap<int, QMultiMap<QByteArray, int> > methodsWithAutomaticTypes;
for (int i = 0; i < methodList.size(); ++i) {
@@ -1085,7 +1095,7 @@ void Generator::generateStaticMetacall()
isUsed_a = true;
}
- QVector<FunctionDef> methodList;
+ QList<FunctionDef> methodList;
methodList += cdef->signalList;
methodList += cdef->slotList;
methodList += cdef->methodList;
diff --git a/src/tools/moc/generator.h b/src/tools/moc/generator.h
index f3d3b40349..a9bf229c71 100644
--- a/src/tools/moc/generator.h
+++ b/src/tools/moc/generator.h
@@ -37,19 +37,24 @@ class Generator
{
FILE *out;
ClassDef *cdef;
- QVector<uint> meta_data;
+ QList<uint> meta_data;
+
public:
- Generator(ClassDef *classDef, const QVector<QByteArray> &metaTypes, const QHash<QByteArray, QByteArray> &knownQObjectClasses, const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile = nullptr, bool requireCompleteTypes = false);
+ Generator(ClassDef *classDef, const QList<QByteArray> &metaTypes,
+ const QHash<QByteArray, QByteArray> &knownQObjectClasses,
+ const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile = nullptr,
+ bool requireCompleteTypes = false);
void generateCode();
private:
bool registerableMetaType(const QByteArray &propertyType);
void registerClassInfoStrings();
void generateClassInfos();
- void registerFunctionStrings(const QVector<FunctionDef> &list);
- void registerByteArrayVector(const QVector<QByteArray> &list);
- void generateFunctions(const QVector<FunctionDef> &list, const char *functype, int type, int &paramsIndex, int &initialMetatypeOffset);
- void generateFunctionRevisions(const QVector<FunctionDef> &list, const char *functype);
- void generateFunctionParameters(const QVector<FunctionDef> &list, const char *functype);
+ void registerFunctionStrings(const QList<FunctionDef> &list);
+ void registerByteArrayVector(const QList<QByteArray> &list);
+ void generateFunctions(const QList<FunctionDef> &list, const char *functype, int type,
+ int &paramsIndex, int &initialMetatypeOffset);
+ void generateFunctionRevisions(const QList<FunctionDef> &list, const char *functype);
+ void generateFunctionParameters(const QList<FunctionDef> &list, const char *functype);
void generateTypeInfo(const QByteArray &typeName, bool allowEmptyName = false);
void registerEnumStrings();
void generateEnums(int index);
@@ -61,13 +66,14 @@ private:
void generateQPropertyApi();
void generatePluginMetaData();
QMultiMap<QByteArray, int> automaticPropertyMetaTypesHelper();
- QMap<int, QMultiMap<QByteArray, int> > methodsWithAutomaticTypesHelper(const QVector<FunctionDef> &methodList);
+ QMap<int, QMultiMap<QByteArray, int>>
+ methodsWithAutomaticTypesHelper(const QList<FunctionDef> &methodList);
void strreg(const QByteArray &); // registers a string
int stridx(const QByteArray &); // returns a string's id
- QVector<QByteArray> strings;
+ QList<QByteArray> strings;
QByteArray purestSuperClass;
- QVector<QByteArray> metaTypes;
+ QList<QByteArray> metaTypes;
QHash<QByteArray, QByteArray> knownQObjectClasses;
QHash<QByteArray, QByteArray> knownGadgets;
bool requireCompleteTypes;
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 20ff739121..5a1f0afab6 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -607,7 +607,7 @@ bool Moc::parseMaybeQProperty(ClassDef *def)
void Moc::parse()
{
- QVector<NamespaceDef> namespaceList;
+ QList<NamespaceDef> namespaceList;
bool templateClass = false;
while (hasNext()) {
Token t = next();
@@ -1008,7 +1008,7 @@ void Moc::parse()
}
}
-static bool any_type_contains(const QVector<PropertyDef> &properties, const QByteArray &pattern)
+static bool any_type_contains(const QList<PropertyDef> &properties, const QByteArray &pattern)
{
for (const auto &p : properties) {
if (p.type.contains(pattern))
@@ -1017,7 +1017,7 @@ static bool any_type_contains(const QVector<PropertyDef> &properties, const QByt
return false;
}
-static bool any_arg_contains(const QVector<FunctionDef> &functions, const QByteArray &pattern)
+static bool any_arg_contains(const QList<FunctionDef> &functions, const QByteArray &pattern)
{
for (const auto &f : functions) {
for (const auto &arg : f.arguments) {
@@ -1042,7 +1042,7 @@ static QByteArrayList make_candidates()
return result;
}
-static QByteArrayList requiredQtContainers(const QVector<ClassDef> &classes)
+static QByteArrayList requiredQtContainers(const QList<ClassDef> &classes)
{
static const QByteArrayList candidates = make_candidates();
@@ -1608,7 +1608,7 @@ void Moc::parseInterfaces(ClassDef *def)
{
next(LPAREN);
while (test(IDENTIFIER)) {
- QVector<ClassDef::Interface> iface;
+ QList<ClassDef::Interface> iface;
iface += ClassDef::Interface(lexem());
while (test(SCOPE)) {
iface.last().className += lexem();
@@ -1966,7 +1966,7 @@ QJsonObject ClassDef::toJson() const
if (classInfos.size())
cls[QLatin1String("classInfos")] = classInfos;
- const auto appendFunctions = [&cls](const QString &type, const QVector<FunctionDef> &funcs) {
+ const auto appendFunctions = [&cls](const QString &type, const QList<FunctionDef> &funcs) {
QJsonArray jsonFuncs;
for (const FunctionDef &fdef: funcs)
@@ -2017,7 +2017,7 @@ QJsonObject ClassDef::toJson() const
cls[QLatin1String("enums")] = enums;
QJsonArray ifaces;
- for (const QVector<Interface> &ifaceList: interfaceList) {
+ for (const QList<Interface> &ifaceList : interfaceList) {
QJsonArray jsonList;
for (const Interface &iface: ifaceList) {
QJsonObject ifaceJson;
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index 0e1f33a804..0f05685327 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -67,7 +67,7 @@ struct EnumDef
{
QByteArray name;
QByteArray enumName;
- QVector<QByteArray> values;
+ QList<QByteArray> values;
bool isEnumClass; // c++11 enum class
EnumDef() : isEnumClass(false) {}
QJsonObject toJson(const ClassDef &cdef) const;
@@ -89,7 +89,7 @@ Q_DECLARE_TYPEINFO(ArgumentDef, Q_MOVABLE_TYPE);
struct FunctionDef
{
Type type;
- QVector<ArgumentDef> arguments;
+ QList<ArgumentDef> arguments;
QByteArray normalizedType;
QByteArray tag;
QByteArray name;
@@ -168,26 +168,26 @@ Q_DECLARE_TYPEINFO(ClassInfoDef, Q_MOVABLE_TYPE);
struct BaseDef {
QByteArray classname;
QByteArray qualified;
- QVector<ClassInfoDef> classInfoList;
+ QList<ClassInfoDef> classInfoList;
QMap<QByteArray, bool> enumDeclarations;
- QVector<EnumDef> enumList;
+ QList<EnumDef> enumList;
QMap<QByteArray, QByteArray> flagAliases;
int begin = 0;
int end = 0;
};
struct ClassDef : BaseDef {
- QVector<QPair<QByteArray, FunctionDef::Access> > superclassList;
+ QList<QPair<QByteArray, FunctionDef::Access>> superclassList;
struct Interface
{
- Interface() {} // for QVector, don't use
+ Interface() { } // for QList, don't use
inline explicit Interface(const QByteArray &_className)
: className(_className) {}
QByteArray className;
QByteArray interfaceId;
};
- QVector<QVector<Interface> >interfaceList;
+ QList<QList<Interface>> interfaceList;
struct PluginData {
QByteArray iid;
@@ -196,11 +196,11 @@ struct ClassDef : BaseDef {
QJsonDocument metaData;
} pluginData;
- QVector<FunctionDef> constructorList;
- QVector<FunctionDef> signalList, slotList, methodList, publicList;
- QVector<QByteArray> nonClassSignalList;
- QVector<PropertyDef> propertyList;
- QVector<PrivateQPropertyDef> privateQProperties;
+ QList<FunctionDef> constructorList;
+ QList<FunctionDef> signalList, slotList, methodList, publicList;
+ QList<QByteArray> nonClassSignalList;
+ QList<PropertyDef> propertyList;
+ QList<PrivateQPropertyDef> privateQProperties;
QHash<QByteArray, bool> qPropertyMembersMaybeWithNotifier;
int revisionedMethods = 0;
@@ -232,15 +232,15 @@ public:
bool mustIncludeQPluginH;
bool requireCompleteTypes;
QByteArray includePath;
- QVector<QByteArray> includeFiles;
- QVector<ClassDef> classList;
+ QList<QByteArray> includeFiles;
+ QList<ClassDef> classList;
QMap<QByteArray, QByteArray> interface2IdMap;
- QVector<QByteArray> metaTypes;
+ QList<QByteArray> metaTypes;
// map from class name to fully qualified name
QHash<QByteArray, QByteArray> knownQObjectClasses;
QHash<QByteArray, QByteArray> knownGadgets;
QMap<QString, QJsonArray> metaArgs;
- QVector<QString> parsedPluginMetadataFiles;
+ QList<QString> parsedPluginMetadataFiles;
void parse();
void generate(FILE *out, FILE *jsonOutput);
diff --git a/src/tools/moc/symbols.h b/src/tools/moc/symbols.h
index 4bcb640760..a28cad602f 100644
--- a/src/tools/moc/symbols.h
+++ b/src/tools/moc/symbols.h
@@ -120,7 +120,7 @@ struct Symbol
};
Q_DECLARE_TYPEINFO(Symbol, Q_MOVABLE_TYPE);
-typedef QVector<Symbol> Symbols;
+typedef QList<Symbol> Symbols;
struct SafeSymbols {
Symbols symbols;