103 json[
"isModule"_L1] = isModule;
104 json[
"isQmlModule"_L1] = isQmlModule;
105 json[
"isGroup"_L1] = isGroup;
106 json[
"isConcept"_L1] = isConcept;
107 json[
"noAutoList"_L1] = noAutoList;
109 if (!logicalModuleName.isEmpty())
110 json[
"logicalModuleName"_L1] = logicalModuleName;
111 if (!logicalModuleVersion.isEmpty())
112 json[
"logicalModuleVersion"_L1] = logicalModuleVersion;
113 if (!state.isEmpty())
114 json[
"state"_L1] = state;
116 if (!qtVariable.isEmpty())
117 json[
"qtVariable"_L1] = qtVariable;
118 if (!cmakePackage.isEmpty())
119 json[
"cmakePackage"_L1] = cmakePackage;
120 if (!cmakeComponent.isEmpty())
121 json[
"cmakeComponent"_L1] = cmakeComponent;
122 if (!cmakeTargetItem.isEmpty())
123 json[
"cmakeTargetItem"_L1] = cmakeTargetItem;
125 json[
"namespaces"_L1] = memberEntriesToJson(namespaces);
126 json[
"classes"_L1] = memberEntriesToJson(classes);
127 json[
"members"_L1] = memberEntriesToJson(members);
144 if (!headerInclude.isEmpty())
145 json[
"headerInclude"_L1] = headerInclude;
146 if (!cmakeFindPackage.isEmpty())
147 json[
"cmakeFindPackage"_L1] = cmakeFindPackage;
148 if (!cmakeTargetLinkLibraries.isEmpty())
149 json[
"cmakeTargetLinkLibraries"_L1] = cmakeTargetLinkLibraries;
150 if (!qmakeVariable.isEmpty())
151 json[
"qmakeVariable"_L1] = qmakeVariable;
152 if (!statusText.isEmpty())
153 json[
"statusText"_L1] = statusText;
154 if (!statusCssClass.isEmpty())
155 json[
"statusCssClass"_L1] = statusCssClass;
159 obj[
"name"_L1] = qmlNativeType->name;
160 obj[
"href"_L1] = qmlNativeType->href;
161 json[
"qmlNativeType"_L1] = obj;
164 QJsonArray baseClassesArr;
165 for (
const auto &entry : baseClasses) {
167 obj[
"name"_L1] = entry.name;
168 obj[
"href"_L1] = entry.href;
169 obj[
"access"_L1] = accessToJson(entry.access);
170 baseClassesArr.append(obj);
172 json[
"baseClasses"_L1] = baseClassesArr;
174 QJsonArray derivedClassesArr;
175 for (
const auto &entry : derivedClasses) {
177 obj[
"name"_L1] = entry.name;
178 obj[
"href"_L1] = entry.href;
179 derivedClassesArr.append(obj);
181 json[
"derivedClasses"_L1] = derivedClassesArr;
183 json[
"suppressInheritance"_L1] = suppressInheritance;
185 QJsonArray templateDeclArr;
186 for (
const auto &span : templateDeclSpans)
187 templateDeclArr.append(span.toJson());
188 json[
"templateDeclSpans"_L1] = templateDeclArr;
190 QJsonArray refConceptsArr;
191 for (
const QString &name : referencedConcepts)
192 refConceptsArr.append(name);
193 json[
"referencedConcepts"_L1] = refConceptsArr;
195 json[
"isInnerClass"_L1] = isInnerClass;
196 json[
"isNamespace"_L1] = isNamespace;
197 json[
"isHeader"_L1] = isHeader;
199 json[
"isPartialNamespace"_L1] = isPartialNamespace;
200 if (!fullNamespaceHref.isEmpty())
201 json[
"fullNamespaceHref"_L1] = fullNamespaceHref;
202 if (!fullNamespaceModuleName.isEmpty())
203 json[
"fullNamespaceModuleName"_L1] = fullNamespaceModuleName;
205 json[
"typeWord"_L1] = typeWord;
207 QJsonArray ancestorNamesArr;
208 for (
const auto &name : ancestorNames)
209 ancestorNamesArr.append(name);
210 json[
"ancestorNames"_L1] = ancestorNamesArr;
212 if (!selfComparisonCategory.isEmpty())
213 json[
"selfComparisonCategory"_L1] = selfComparisonCategory;
215 QJsonArray comparisonArr;
216 for (
const auto &entry : comparisonEntries) {
218 obj[
"category"_L1] = entry.category;
220 for (
const auto &t : entry.comparableTypes)
222 obj[
"comparableTypes"_L1] = typesArr;
223 obj[
"description"_L1] = entry.description;
224 comparisonArr.append(obj);
226 json[
"comparisonEntries"_L1] = comparisonArr;
230 tsObj[
"level"_L1] = threadSafety->level;
232 auto exceptionListToJson = [](
const QList<ThreadSafetyExceptionEntry> &entries) {
234 for (
const auto &entry : entries) {
236 obj[
"name"_L1] = entry.name;
237 obj[
"href"_L1] = entry.href;
243 tsObj[
"reentrantExceptions"_L1] = exceptionListToJson(threadSafety->reentrantExceptions);
244 tsObj[
"threadSafeExceptions"_L1] = exceptionListToJson(threadSafety->threadSafeExceptions);
245 tsObj[
"nonReentrantExceptions"_L1] = exceptionListToJson(threadSafety->nonReentrantExceptions);
246 json[
"threadSafety"_L1] = tsObj;
249 if (!threadSafetyAdmonition.isEmpty()) {
250 QJsonArray admonitionArr;
251 for (
const auto &block : threadSafetyAdmonition)
252 admonitionArr.append(block.toJson());
253 json[
"threadSafetyAdmonition"_L1] = admonitionArr;
256 QJsonArray groupsArr;
257 for (
const auto &entry : groups) {
259 obj[
"name"_L1] = entry.name;
260 obj[
"href"_L1] = entry.href;
261 groupsArr.append(obj);
263 json[
"groups"_L1] = groupsArr;
265 json[
"hasObsoleteMembers"_L1] = hasObsoleteMembers;
266 if (!obsoleteMembersUrl.isEmpty())
267 json[
"obsoleteMembersUrl"_L1] = obsoleteMembersUrl;
369 if (
const auto t = nodeTypeToJson(nodeType))
370 json[
"nodeType"_L1] = *t;
371 if (
const auto g = genusToJson(genus))
372 json[
"genus"_L1] = *g;
373 json[
"status"_L1] = statusToJson(status);
374 json[
"access"_L1] = accessToJson(access);
377 json[
"title"_L1] = title;
378 json[
"fullTitle"_L1] = fullTitle;
379 json[
"url"_L1] = url;
380 if (!since.isEmpty())
381 json[
"since"_L1] = since;
382 if (!deprecatedSince.isEmpty())
383 json[
"deprecatedSince"_L1] = deprecatedSince;
384 if (!brief.isEmpty())
385 json[
"brief"_L1] = brief;
387 Q_ASSERT(!contentJson.contains(
"blocks"_L1));
388 QJsonObject content = contentJson;
391 for (
const auto &block : body)
392 blocks.append(block.toJson());
393 content[
"blocks"_L1] = blocks;
395 json[
"content"_L1] = content;
398 json[
"hasQmlType"_L1] = qmlTypeInfo.has_value();
400 json[
"qmlType"_L1] = qmlTypeInfo->toJson();
403 json[
"hasCollection"_L1] = collectionInfo.has_value();
405 json[
"collection"_L1] = collectionInfo->toJson();
408 json[
"hasCppRef"_L1] = cppReferenceInfo.has_value();
409 if (cppReferenceInfo)
410 json[
"cppRef"_L1] = cppReferenceInfo->toJson();
413 json[
"hasNavigation"_L1] = navigationInfo.has_value();
415 json[
"navigation"_L1] = navigationInfo->toJson();
419 json[
"membersPageUrl"_L1] = membersPageUrl;
424 QJsonArray sectionsArray;
425 for (
const auto §ion : summarySections)
426 sectionsArray.append(section.toJson());
427 json[
"sections"_L1] = sectionsArray;
429 QJsonArray detailSectionsArray;
430 for (
const auto §ion : detailSections)
431 detailSectionsArray.append(section.toJson());
432 json[
"detailSections"_L1] = detailSectionsArray;