14 const QByteArray contents = device->readAll();
15 if (contents.isEmpty()) {
16 fprintf(stderr,
"%s:0: metatypes input file is empty\n", qPrintable(device->fileName()));
20 QJsonParseError error {};
21 QJsonDocument metaObjects = QJsonDocument::fromJson(contents, &error);
22 if (error.error != QJsonParseError::NoError) {
23 fprintf(stderr,
"%s:%d: %s\n", qPrintable(device->fileName()), error.offset,
24 qPrintable(error.errorString()));
28 allMetaObjects->append(metaObjects.object());
32int collectJson(
const QStringList &jsonFiles,
const QString &outputFile,
bool skipStdIn)
34 QHashSeed::setDeterministicGlobalSeed();
37 if (outputFile.isEmpty()) {
38 if (!output.open(stdout, QIODevice::WriteOnly)) {
39 fprintf(stderr,
"Error opening stdout for writing: %s\n",
40 qPrintable(output.errorString()));
44 output.setFileName(outputFile);
45 if (!output.open(QIODevice::WriteOnly)) {
46 fprintf(stderr,
"%s: Cannot open file for writing: %s\n", qPrintable(outputFile),
47 qPrintable(output.errorString()));
52 QJsonArray allMetaObjects;
53 if (jsonFiles.isEmpty() && !skipStdIn) {
55 if (!f.open(stdin, QIODevice::ReadOnly)) {
56 fprintf(stderr,
"Error opening stdin for reading: %s\n", qPrintable(f.errorString()));
60 if (!readFromFile(&f, &allMetaObjects))
64 QStringList jsonFilesSorted = jsonFiles;
65 jsonFilesSorted.sort();
66 for (
const QString &jsonFile : std::as_const(jsonFilesSorted)) {
68 if (!f.open(QIODevice::ReadOnly)) {
69 fprintf(stderr,
"%s: Cannot open file for reading: %s\n", qPrintable(jsonFile),
70 qPrintable(f.errorString()));
74 if (!readFromFile(&f, &allMetaObjects))
79 output.write(doc.toJson());