================
@@ -458,6 +460,45 @@ void JSONGenerator::serializeCommonAttributes(const Info
&I,
generateContext(I, Obj);
}
+static auto SerializeTemplateParam = [](const TemplateParamInfo &Param,
+ Object &JsonObj) {
+ JsonObj["Param"] = Param.Contents;
+};
+
+static void serializeTemplateSpecialization(TemplateInfo Template,
+ Object &TemplateObj) {
+ json::Value TemplateSpecializationVal = Object();
+ auto &TemplateSpecializationObj = *TemplateSpecializationVal.getAsObject();
+ TemplateSpecializationObj["SpecializationOf"] =
+ toHex(toStringRef(Template.Specialization->SpecializationOf));
+ if (!Template.Specialization->Params.empty()) {
+ bool VerticalDisplay =
+ Template.Specialization->Params.size() > getMaxParamWrapLimit();
+ serializeArray(Template.Specialization->Params, TemplateSpecializationObj,
+ "Parameters", SerializeTemplateParam, "SpecParamEnd",
+ [VerticalDisplay](Object &JsonObj) {
+ JsonObj["VerticalDisplay"] = VerticalDisplay;
+ });
+ }
+ TemplateObj["Specialization"] = TemplateSpecializationVal;
+}
+
+void JSONGenerator::serializeClassSpecializations(SymbolID ClassUSR,
+ Object &ReferenceObj) {
+ if (!Infos)
+ return;
+ auto ClassIt = Infos->find(toStringRef(toHex(ClassUSR)));
----------------
ilovepi wrote:
would using `lookup()` make this nicer? structured binding would be a likely
improvement if not, since you could avoid the call to `second`.
https://github.com/llvm/llvm-project/pull/191252
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits