Skip to content

Commit 099eb92

Browse files
usiemsmrbean-bremen
authored andcommitted
Make number of classes per generated file configurable
1 parent 4ae718a commit 099eb92

File tree

7 files changed

+33
-15
lines changed

7 files changed

+33
-15
lines changed

generator/generatorsetqtscript.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,22 @@ QString GeneratorSetQtScript::usage() {
5555
QString usage =
5656
"QtScript:\n"
5757
" --nothing-to-report-yet \n";
58+
" --max-classes-per-file=<n> \n";
5859

5960
return usage;
6061
}
6162

6263
bool GeneratorSetQtScript::readParameters(const QMap<QString, QString> args) {
64+
if (args.contains("max-classes-per-file")) {
65+
bool ok;
66+
int n = args.value("max-classes-per-file").toInt(&ok);
67+
if (ok && n > 0) {
68+
maxClassesPerFile = n;
69+
}
70+
else {
71+
printf("Invalid value for option --max-classes-per-file (must be number > 0)\n");
72+
}
73+
}
6374
return GeneratorSet::readParameters(args);
6475
}
6576

@@ -78,10 +89,10 @@ QString GeneratorSetQtScript::generate() {
7889
AbstractMetaClassList classes = builder.classesTopologicalSorted();
7990
QSet<QString> declaredTypeNames = builder.qtMetaTypeDeclaredTypeNames();
8091

81-
PriGenerator priGenerator;
92+
PriGenerator priGenerator(maxClassesPerFile);
8293
priGenerator.setOutputDirectory(outDir);
8394

84-
SetupGenerator setupGenerator;
95+
SetupGenerator setupGenerator(maxClassesPerFile);
8596
setupGenerator.setOutputDirectory(outDir);
8697
setupGenerator.setQtMetaTypeDeclaredTypeNames(declaredTypeNames);
8798
setupGenerator.setClasses(classes);
@@ -102,10 +113,10 @@ QString GeneratorSetQtScript::generate() {
102113

103114
return QString("Classes in typesystem: %1\n"
104115
"Generated:\n"
105-
" - header....: %4 (%5)\n"
106-
" - impl......: %6 (%7)\n"
107-
" - modules...: %8 (%9)\n"
108-
" - pri.......: %10 (%11)\n"
116+
" - header....: %2 (%3)\n"
117+
" - impl......: %4 (%5)\n"
118+
" - modules...: %6 (%7)\n"
119+
" - pri.......: %8 (%9)\n"
109120
)
110121
.arg(builder.classes().size())
111122

generator/generatorsetqtscript.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class GeneratorSetQtScript : public GeneratorSet
6262

6363
private:
6464
MetaQtScriptBuilder builder;
65+
int maxClassesPerFile{30};
6566

6667
};
6768

generator/prigenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ static QString combineIncludes(const QString& text) {
9393
return result;
9494
}
9595

96-
static QStringList compactFiles(const QStringList& list, const QString& ext, const QString& dir, const QString& prefix) {
96+
QStringList PriGenerator::compactFiles(const QStringList& list, const QString& ext, const QString& dir, const QString& prefix) {
9797
QStringList outList;
9898
int count = list.count();
9999
int fileNum = 0;
@@ -110,7 +110,7 @@ static QStringList compactFiles(const QStringList& list, const QString& ext, con
110110
outList << outFileName;
111111
QString allText;
112112
QTextStream ts(&allText);
113-
for (int i = 0; i<MAX_CLASSES_PER_FILE && count>0; i++) {
113+
for (int i = 0; i< maxClassesPerFile && count>0; i++) {
114114
collectAndRemoveFile(ts, srcDir + "/" + list.at(list.count()-count));
115115
count--;
116116
}

generator/prigenerator.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,17 @@ class PriGenerator : public Generator
5858
Q_OBJECT
5959

6060
public:
61+
PriGenerator(int classesPerFile) : maxClassesPerFile(classesPerFile) {}
6162
virtual void generate();
6263

6364
void addHeader(const QString &folder, const QString &header);
6465
void addSource(const QString &folder, const QString &source);
6566

6667
private:
68+
QStringList compactFiles(const QStringList& list, const QString& ext, const QString& dir, const QString& prefix);
69+
6770
QHash<QString, Pri> priHash;
71+
int maxClassesPerFile;
6872

6973
};
7074
#endif // PRIGENERATOR_H

generator/setupgenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ void SetupGenerator::generate()
285285
s << "#include <PythonQt.h>" << endl;
286286
s << "#include <PythonQtConversion.h>" << endl;
287287

288-
for (int i=0; i<(list.count()+MAX_CLASSES_PER_FILE-1) / MAX_CLASSES_PER_FILE; i++) {
288+
for (int i=0; i<(list.count()+ maxClassesPerFile -1) / maxClassesPerFile; i++) {
289289
s << "#include \"" << packKey << QString::number(i) << ".h\"" << endl;
290290
}
291291
s << endl;

generator/setupgenerator.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,23 @@ class SetupGenerator : public Generator
5050
Q_OBJECT
5151

5252
public:
53-
virtual void generate();
53+
SetupGenerator(int classesPerFile) : maxClassesPerFile(classesPerFile) {}
5454

55-
void addClass(const QString& package, const AbstractMetaClass *cls);
55+
virtual void generate();
5656

57-
static void writeInclude(QTextStream &stream, const Include &inc);
57+
void addClass(const QString& package, const AbstractMetaClass *cls);
58+
59+
static void writeInclude(QTextStream &stream, const Include &inc);
5860

59-
static bool isSpecialStreamingOperator(const AbstractMetaFunction *fun);
61+
static bool isSpecialStreamingOperator(const AbstractMetaFunction *fun);
6062

6163
private:
6264
QStringList writePolymorphicHandler(QTextStream &s, const QString &package,
6365
const AbstractMetaClassList &polyBaseClasses, QList<const AbstractMetaClass*>& allClasses);
6466

6567
QHash<QString, QList<const AbstractMetaClass*> > packHash;
68+
69+
int maxClassesPerFile;
6670
};
6771
#endif // SETUPGENERATOR_H
6872

generator/shellgenerator.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646
#include "metaqtscript.h"
4747
#include "prigenerator.h"
4848

49-
#define MAX_CLASSES_PER_FILE 30
50-
5149
class ShellGenerator : public Generator
5250
{
5351
Q_OBJECT

0 commit comments

Comments
 (0)