std::unique_ptr<Info> emitInfo(const RecordDecl *D, const FullComment *FC, int LineNumber, llvm::StringRef File, bool PublicOnly) { if (PublicOnly && !isPublic(D->getAccess(), D->getLinkageInternal())) return nullptr; auto I = llvm::make_unique<RecordInfo>(); populateSymbolInfo(*I, D, FC, LineNumber, File); I->TagType = D->getTagKind(); parseFields(*I, D, PublicOnly); if (const auto *C = dyn_cast<CXXRecordDecl>(D)) parseBases(*I, C); return std::unique_ptr<Info>{std::move(I)}; }
otl_subtable *caryll_gpos_mark_to_ligature_from_json(json_value *_subtable) { json_value *_marks = json_obj_get_type(_subtable, "marks", json_object); json_value *_bases = json_obj_get_type(_subtable, "bases", json_object); if (!_marks || !_bases) return NULL; otl_subtable *st; NEW(st); classname_hash *h = NULL; parseMarks(_marks, &(st->gpos_mark_to_ligature), &h); st->gpos_mark_to_ligature.classCount = HASH_COUNT(h); parseBases(_bases, &(st->gpos_mark_to_ligature), &h); classname_hash *s, *tmp; HASH_ITER(hh, h, s, tmp) { HASH_DEL(h, s); sdsfree(s->className); free(s); }