Пример #1
0
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)};
}
Пример #2
0
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);
	}