103 json[
"isModule"_L1] = isModule;
104 json[
"isQmlModule"_L1] = isQmlModule;
105 json[
"isGroup"_L1] = isGroup;
106 json[
"noAutoList"_L1] = noAutoList;
108 if (!logicalModuleName.isEmpty())
109 json[
"logicalModuleName"_L1] = logicalModuleName;
110 if (!logicalModuleVersion.isEmpty())
111 json[
"logicalModuleVersion"_L1] = logicalModuleVersion;
112 if (!state.isEmpty())
113 json[
"state"_L1] = state;
115 if (!qtVariable.isEmpty())
116 json[
"qtVariable"_L1] = qtVariable;
117 if (!cmakePackage.isEmpty())
118 json[
"cmakePackage"_L1] = cmakePackage;
119 if (!cmakeComponent.isEmpty())
120 json[
"cmakeComponent"_L1] = cmakeComponent;
121 if (!cmakeTargetItem.isEmpty())
122 json[
"cmakeTargetItem"_L1] = cmakeTargetItem;
124 json[
"namespaces"_L1] = memberEntriesToJson(namespaces);
125 json[
"classes"_L1] = memberEntriesToJson(classes);
126 json[
"members"_L1] = memberEntriesToJson(members);
143 if (!headerInclude.isEmpty())
144 json[
"headerInclude"_L1] = headerInclude;
145 if (!cmakeFindPackage.isEmpty())
146 json[
"cmakeFindPackage"_L1] = cmakeFindPackage;
147 if (!cmakeTargetLinkLibraries.isEmpty())
148 json[
"cmakeTargetLinkLibraries"_L1] = cmakeTargetLinkLibraries;
149 if (!qmakeVariable.isEmpty())
150 json[
"qmakeVariable"_L1] = qmakeVariable;
151 if (!statusText.isEmpty())
152 json[
"statusText"_L1] = statusText;
153 if (!statusCssClass.isEmpty())
154 json[
"statusCssClass"_L1] = statusCssClass;
158 obj[
"name"_L1] = qmlNativeType->name;
159 obj[
"href"_L1] = qmlNativeType->href;
160 json[
"qmlNativeType"_L1] = obj;
163 QJsonArray baseClassesArr;
164 for (
const auto &entry : baseClasses) {
166 obj[
"name"_L1] = entry.name;
167 obj[
"href"_L1] = entry.href;
168 obj[
"access"_L1] = accessToJson(entry.access);
169 baseClassesArr.append(obj);
171 json[
"baseClasses"_L1] = baseClassesArr;
173 QJsonArray derivedClassesArr;
174 for (
const auto &entry : derivedClasses) {
176 obj[
"name"_L1] = entry.name;
177 obj[
"href"_L1] = entry.href;
178 derivedClassesArr.append(obj);
180 json[
"derivedClasses"_L1] = derivedClassesArr;
182 json[
"suppressInheritance"_L1] = suppressInheritance;
184 QJsonArray templateDeclArr;
185 for (
const auto &span : templateDeclSpans)
186 templateDeclArr.append(span.toJson());
187 json[
"templateDeclSpans"_L1] = templateDeclArr;
189 json[
"isInnerClass"_L1] = isInnerClass;
190 json[
"isNamespace"_L1] = isNamespace;
191 json[
"isHeader"_L1] = isHeader;
193 json[
"isPartialNamespace"_L1] = isPartialNamespace;
194 if (!fullNamespaceHref.isEmpty())
195 json[
"fullNamespaceHref"_L1] = fullNamespaceHref;
196 if (!fullNamespaceModuleName.isEmpty())
197 json[
"fullNamespaceModuleName"_L1] = fullNamespaceModuleName;
199 json[
"typeWord"_L1] = typeWord;
201 QJsonArray ancestorNamesArr;
202 for (
const auto &name : ancestorNames)
203 ancestorNamesArr.append(name);
204 json[
"ancestorNames"_L1] = ancestorNamesArr;
206 if (!selfComparisonCategory.isEmpty())
207 json[
"selfComparisonCategory"_L1] = selfComparisonCategory;
209 QJsonArray comparisonArr;
210 for (
const auto &entry : comparisonEntries) {
212 obj[
"category"_L1] = entry.category;
214 for (
const auto &t : entry.comparableTypes)
216 obj[
"comparableTypes"_L1] = typesArr;
217 obj[
"description"_L1] = entry.description;
218 comparisonArr.append(obj);
220 json[
"comparisonEntries"_L1] = comparisonArr;
224 tsObj[
"level"_L1] = threadSafety->level;
226 auto exceptionListToJson = [](
const QList<ThreadSafetyExceptionEntry> &entries) {
228 for (
const auto &entry : entries) {
230 obj[
"name"_L1] = entry.name;
231 obj[
"href"_L1] = entry.href;
237 tsObj[
"reentrantExceptions"_L1] = exceptionListToJson(threadSafety->reentrantExceptions);
238 tsObj[
"threadSafeExceptions"_L1] = exceptionListToJson(threadSafety->threadSafeExceptions);
239 tsObj[
"nonReentrantExceptions"_L1] = exceptionListToJson(threadSafety->nonReentrantExceptions);
240 json[
"threadSafety"_L1] = tsObj;
243 if (!threadSafetyAdmonition.isEmpty()) {
244 QJsonArray admonitionArr;
245 for (
const auto &block : threadSafetyAdmonition)
246 admonitionArr.append(block.toJson());
247 json[
"threadSafetyAdmonition"_L1] = admonitionArr;
250 QJsonArray groupsArr;
251 for (
const auto &entry : groups) {
253 obj[
"name"_L1] = entry.name;
254 obj[
"href"_L1] = entry.href;
255 groupsArr.append(obj);
257 json[
"groups"_L1] = groupsArr;
259 json[
"hasObsoleteMembers"_L1] = hasObsoleteMembers;
260 if (!obsoleteMembersUrl.isEmpty())
261 json[
"obsoleteMembersUrl"_L1] = obsoleteMembersUrl;
363 if (
const auto t = nodeTypeToJson(nodeType))
364 json[
"nodeType"_L1] = *t;
365 if (
const auto g = genusToJson(genus))
366 json[
"genus"_L1] = *g;
367 json[
"status"_L1] = statusToJson(status);
368 json[
"access"_L1] = accessToJson(access);
371 json[
"title"_L1] = title;
372 json[
"fullTitle"_L1] = fullTitle;
373 json[
"url"_L1] = url;
374 if (!since.isEmpty())
375 json[
"since"_L1] = since;
376 if (!deprecatedSince.isEmpty())
377 json[
"deprecatedSince"_L1] = deprecatedSince;
378 if (!brief.isEmpty())
379 json[
"brief"_L1] = brief;
381 Q_ASSERT(!contentJson.contains(
"blocks"_L1));
382 QJsonObject content = contentJson;
385 for (
const auto &block : body)
386 blocks.append(block.toJson());
387 content[
"blocks"_L1] = blocks;
389 json[
"content"_L1] = content;
392 json[
"hasQmlType"_L1] = qmlTypeInfo.has_value();
394 json[
"qmlType"_L1] = qmlTypeInfo->toJson();
397 json[
"hasCollection"_L1] = collectionInfo.has_value();
399 json[
"collection"_L1] = collectionInfo->toJson();
402 json[
"hasCppRef"_L1] = cppReferenceInfo.has_value();
403 if (cppReferenceInfo)
404 json[
"cppRef"_L1] = cppReferenceInfo->toJson();
407 json[
"hasNavigation"_L1] = navigationInfo.has_value();
409 json[
"navigation"_L1] = navigationInfo->toJson();
413 json[
"membersPageUrl"_L1] = membersPageUrl;
418 QJsonArray sectionsArray;
419 for (
const auto §ion : summarySections)
420 sectionsArray.append(section.toJson());
421 json[
"sections"_L1] = sectionsArray;
423 QJsonArray detailSectionsArray;
424 for (
const auto §ion : detailSections)
425 detailSectionsArray.append(section.toJson());
426 json[
"detailSections"_L1] = detailSectionsArray;