131 json[
"isModule"_L1] = isModule;
132 json[
"isQmlModule"_L1] = isQmlModule;
133 json[
"isGroup"_L1] = isGroup;
134 json[
"isConcept"_L1] = isConcept;
135 json[
"noAutoList"_L1] = noAutoList;
137 if (!logicalModuleName.isEmpty())
138 json[
"logicalModuleName"_L1] = logicalModuleName;
139 if (!logicalModuleVersion.isEmpty())
140 json[
"logicalModuleVersion"_L1] = logicalModuleVersion;
141 if (!state.isEmpty())
142 json[
"state"_L1] = state;
144 if (!qtVariable.isEmpty())
145 json[
"qtVariable"_L1] = qtVariable;
146 if (!cmakePackage.isEmpty())
147 json[
"cmakePackage"_L1] = cmakePackage;
148 if (!cmakeComponent.isEmpty())
149 json[
"cmakeComponent"_L1] = cmakeComponent;
150 if (!cmakeTargetItem.isEmpty())
151 json[
"cmakeTargetItem"_L1] = cmakeTargetItem;
153 json[
"namespaces"_L1] = memberEntriesToJson(namespaces);
154 json[
"classes"_L1] = memberEntriesToJson(classes);
155 json[
"members"_L1] = memberEntriesToJson(members);
172 if (!headerInclude.isEmpty())
173 json[
"headerInclude"_L1] = headerInclude;
174 if (!cmakeFindPackage.isEmpty())
175 json[
"cmakeFindPackage"_L1] = cmakeFindPackage;
176 if (!cmakeTargetLinkLibraries.isEmpty())
177 json[
"cmakeTargetLinkLibraries"_L1] = cmakeTargetLinkLibraries;
178 if (!qmakeVariable.isEmpty())
179 json[
"qmakeVariable"_L1] = qmakeVariable;
180 if (!statusText.isEmpty())
181 json[
"statusText"_L1] = statusText;
182 if (!statusCssClass.isEmpty())
183 json[
"statusCssClass"_L1] = statusCssClass;
187 obj[
"name"_L1] = qmlNativeType->name;
188 obj[
"href"_L1] = qmlNativeType->href;
189 json[
"qmlNativeType"_L1] = obj;
192 QJsonArray baseClassesArr;
193 for (
const auto &entry : baseClasses) {
195 obj[
"name"_L1] = entry.name;
196 obj[
"href"_L1] = entry.href;
197 obj[
"access"_L1] = accessToJson(entry.access);
198 baseClassesArr.append(obj);
200 json[
"baseClasses"_L1] = baseClassesArr;
202 QJsonArray derivedClassesArr;
203 for (
const auto &entry : derivedClasses) {
205 obj[
"name"_L1] = entry.name;
206 obj[
"href"_L1] = entry.href;
207 derivedClassesArr.append(obj);
209 json[
"derivedClasses"_L1] = derivedClassesArr;
211 json[
"suppressInheritance"_L1] = suppressInheritance;
213 QJsonArray templateDeclArr;
214 for (
const auto &span : templateDeclSpans)
215 templateDeclArr.append(span.toJson());
216 json[
"templateDeclSpans"_L1] = templateDeclArr;
218 QJsonArray refConceptsArr;
219 for (
const QString &name : referencedConcepts)
220 refConceptsArr.append(name);
221 json[
"referencedConcepts"_L1] = refConceptsArr;
223 json[
"isInnerClass"_L1] = isInnerClass;
224 json[
"isNamespace"_L1] = isNamespace;
225 json[
"isHeader"_L1] = isHeader;
227 json[
"isPartialNamespace"_L1] = isPartialNamespace;
228 if (!fullNamespaceHref.isEmpty())
229 json[
"fullNamespaceHref"_L1] = fullNamespaceHref;
230 if (!fullNamespaceModuleName.isEmpty())
231 json[
"fullNamespaceModuleName"_L1] = fullNamespaceModuleName;
233 json[
"typeWord"_L1] = typeWord;
235 QJsonArray ancestorNamesArr;
236 for (
const auto &name : ancestorNames)
237 ancestorNamesArr.append(name);
238 json[
"ancestorNames"_L1] = ancestorNamesArr;
240 if (!selfComparisonCategory.isEmpty())
241 json[
"selfComparisonCategory"_L1] = selfComparisonCategory;
243 QJsonArray comparisonArr;
244 for (
const auto &entry : comparisonEntries) {
246 obj[
"category"_L1] = entry.category;
248 for (
const auto &t : entry.comparableTypes)
250 obj[
"comparableTypes"_L1] = typesArr;
251 obj[
"description"_L1] = entry.description;
252 comparisonArr.append(obj);
254 json[
"comparisonEntries"_L1] = comparisonArr;
258 tsObj[
"level"_L1] = threadSafety->level;
260 auto exceptionListToJson = [](
const QList<ThreadSafetyExceptionEntry> &entries) {
262 for (
const auto &entry : entries) {
264 obj[
"name"_L1] = entry.name;
265 obj[
"href"_L1] = entry.href;
271 tsObj[
"reentrantExceptions"_L1] = exceptionListToJson(threadSafety->reentrantExceptions);
272 tsObj[
"threadSafeExceptions"_L1] = exceptionListToJson(threadSafety->threadSafeExceptions);
273 tsObj[
"nonReentrantExceptions"_L1] = exceptionListToJson(threadSafety->nonReentrantExceptions);
274 json[
"threadSafety"_L1] = tsObj;
277 if (!threadSafetyAdmonition.isEmpty()) {
278 QJsonArray admonitionArr;
279 for (
const auto &block : threadSafetyAdmonition)
280 admonitionArr.append(block.toJson());
281 json[
"threadSafetyAdmonition"_L1] = admonitionArr;
284 QJsonArray groupsArr;
285 for (
const auto &entry : groups) {
287 obj[
"name"_L1] = entry.name;
288 obj[
"href"_L1] = entry.href;
289 groupsArr.append(obj);
291 json[
"groups"_L1] = groupsArr;
293 json[
"hasObsoleteMembers"_L1] = hasObsoleteMembers;
294 if (!obsoleteMembersUrl.isEmpty())
295 json[
"obsoleteMembersUrl"_L1] = obsoleteMembersUrl;
397 if (
const auto t = nodeTypeToJson(nodeType))
398 json[
"nodeType"_L1] = *t;
399 if (
const auto g = genusToJson(genus))
400 json[
"genus"_L1] = *g;
401 json[
"status"_L1] = statusToJson(status);
402 json[
"access"_L1] = accessToJson(access);
405 json[
"title"_L1] = title;
406 json[
"fullTitle"_L1] = fullTitle;
407 json[
"url"_L1] = url;
408 if (!since.isEmpty())
409 json[
"since"_L1] = since;
410 if (!deprecatedSince.isEmpty())
411 json[
"deprecatedSince"_L1] = deprecatedSince;
412 if (!typeNoun.isEmpty())
413 json[
"typeNoun"_L1] = typeNoun;
414 if (!deprecatedSinceQualified.isEmpty())
415 json[
"deprecatedSinceQualified"_L1] = deprecatedSinceQualified;
416 if (!brief.isEmpty())
417 json[
"brief"_L1] = brief;
419 Q_ASSERT(!contentJson.contains(
"blocks"_L1));
420 QJsonObject content = contentJson;
423 for (
const auto &block : body)
424 blocks.append(block.toJson());
425 content[
"blocks"_L1] = blocks;
427 json[
"content"_L1] = content;
430 json[
"hasQmlType"_L1] = qmlTypeInfo.has_value();
432 json[
"qmlType"_L1] = qmlTypeInfo->toJson();
435 json[
"hasCollection"_L1] = collectionInfo.has_value();
437 json[
"collection"_L1] = collectionInfo->toJson();
440 json[
"hasCppRef"_L1] = cppReferenceInfo.has_value();
441 if (cppReferenceInfo)
442 json[
"cppRef"_L1] = cppReferenceInfo->toJson();
445 json[
"hasNavigation"_L1] = navigationInfo.has_value();
447 json[
"navigation"_L1] = navigationInfo->toJson();
451 json[
"membersPageUrl"_L1] = membersPageUrl;
456 QJsonArray sectionsArray;
457 for (
const auto §ion : summarySections)
458 sectionsArray.append(section.toJson());
459 json[
"sections"_L1] = sectionsArray;
461 QJsonArray detailSectionsArray;
462 for (
const auto §ion : detailSections)
463 detailSectionsArray.append(section.toJson());
464 json[
"detailSections"_L1] = detailSectionsArray;