Lines Matching defs:APIRecord
10 /// This file defines the APIRecord-based structs and the APISet class.
160 struct APIRecord;
171 // A Pointer to the APIRecord for this reference if known
172 const APIRecord *Record = nullptr;
177 SymbolReference(const APIRecord *R);
187 // Concrete classes deriving from APIRecord need to have a construct with first
192 struct APIRecord {
276 mutable APIRecord *NextInContext = nullptr;
279 APIRecord *getNextInContext() const { return NextInContext; }
284 static APIRecord *castFromRecordContext(const RecordContext *Ctx);
285 static RecordContext *castToRecordContext(const APIRecord *Record);
287 APIRecord() = delete;
289 APIRecord(RecordKind Kind, StringRef USR, StringRef Name,
301 APIRecord(RecordKind Kind, StringRef USR, StringRef Name)
304 // Pure virtual destructor to make APIRecord abstract
305 virtual ~APIRecord() = 0;
306 static bool classof(const APIRecord *Record) { return true; }
315 static bool classof(const APIRecord *Record) {
318 static bool classofKind(APIRecord::RecordKind K) {
319 return K > APIRecord::RK_FirstRecordContext &&
320 K < APIRecord::RK_LastRecordContext;
325 RecordContext(APIRecord::RecordKind Kind) : Kind(Kind) {}
331 APIRecord::RecordKind getKind() const { return Kind; }
335 APIRecord *Current = nullptr;
338 using value_type = APIRecord *;
377 APIRecord::RecordKind Kind;
378 mutable APIRecord *First = nullptr;
379 mutable APIRecord *Last = nullptr;
384 void addToRecordChain(APIRecord *) const;
387 struct NamespaceRecord : APIRecord, RecordContext {
393 : APIRecord(RK_Namespace, USR, Name, Parent, Loc, std::move(Availability),
398 static bool classof(const APIRecord *Record) {
405 struct GlobalFunctionRecord : APIRecord {
414 : APIRecord(RK_GlobalFunction, USR, Name, Parent, Loc,
426 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
431 static bool classof(const APIRecord *Record) {
457 static bool classof(const APIRecord *Record) {
477 static bool classof(const APIRecord *Record) {
486 struct GlobalVariableRecord : APIRecord, RecordContext {
492 : APIRecord(RK_GlobalVariable, USR, Name, Parent, Loc,
503 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
508 static bool classof(const APIRecord *Record) {
536 static bool classof(const APIRecord *Record) {
555 static bool classof(const APIRecord *Record) {
579 static bool classof(const APIRecord *Record) {
588 struct EnumConstantRecord : APIRecord {
594 : APIRecord(RK_EnumConstant, USR, Name, Parent, Loc,
598 static bool classof(const APIRecord *Record) {
607 struct TagRecord : APIRecord, RecordContext {
614 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
620 static bool classof(const APIRecord *Record) {
644 static bool classof(const APIRecord *Record) {
655 struct RecordFieldRecord : APIRecord, RecordContext {
661 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
666 static bool classof(const APIRecord *Record) {
689 static bool classof(const APIRecord *Record) {
710 static bool classof(const APIRecord *Record) {
729 static bool classof(const APIRecord *Record) {
747 static bool classof(const APIRecord *Record) {
766 static bool classof(const APIRecord *Record) {
775 struct CXXFieldRecord : APIRecord, RecordContext {
781 : APIRecord(RK_CXXField, USR, Name, Parent, Loc, std::move(Availability),
792 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
797 static bool classof(const APIRecord *Record) {
822 static bool classof(const APIRecord *Record) {
828 struct CXXMethodRecord : APIRecord {
839 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
859 static bool classof(const APIRecord *Record) {
880 static bool classof(const APIRecord *Record) {
901 static bool classof(const APIRecord *Record) {
923 static bool classof(const APIRecord *Record) {
948 static bool classof(const APIRecord *Record) {
966 static bool classof(const APIRecord *Record) {
975 struct ObjCPropertyRecord : APIRecord {
995 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
1019 static bool classof(const APIRecord *Record) {
1042 static bool classof(const APIRecord *Record) {
1052 struct ObjCInstanceVariableRecord : APIRecord {
1060 : APIRecord(RK_ObjCIvar, USR, Name, Parent, Loc, std::move(Availability),
1064 static bool classof(const APIRecord *Record) {
1074 struct ObjCMethodRecord : APIRecord {
1085 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
1104 static bool classof(const APIRecord *Record) {
1124 static bool classof(const APIRecord *Record) {
1144 static bool classof(const APIRecord *Record) {
1152 struct ObjCContainerRecord : APIRecord, RecordContext {
1163 : APIRecord(Kind, USR, Name, Parent, Loc, std::move(Availability),
1184 static bool classof(const APIRecord *Record) {
1211 static bool classof(const APIRecord *Record) {
1227 static bool classof(const APIRecord *Record) {
1248 static bool classof(const APIRecord *Record) {
1256 struct ConceptRecord : APIRecord {
1264 : APIRecord(RK_Concept, USR, Name, Parent, Loc, std::move(Availability),
1269 static bool classof(const APIRecord *Record) {
1291 static bool classof(const APIRecord *Record) {
1323 static bool classof(const APIRecord *Record) {
1344 static bool classof(const APIRecord *Record) {
1354 struct MacroDefinitionRecord : APIRecord {
1359 : APIRecord(RK_MacroDefinition, USR, Name, Parent, Loc,
1363 static bool classof(const APIRecord *Record) {
1377 struct TypedefRecord : APIRecord {
1385 : APIRecord(RK_Typedef, USR, Name, Parent, Loc, std::move(Availability),
1390 static bool classof(const APIRecord *Record) {
1408 /// Finds the APIRecord for a given USR.
1410 /// \returns a pointer to the APIRecord associated with that USR or nullptr.
1411 APIRecord *findRecordForUSR(StringRef USR) const;
1421 /// Create a subclass of \p APIRecord and store it in the APISet.
1426 typename std::enable_if_t<std::is_base_of_v<APIRecord, RecordTy>, RecordTy> *
1429 ArrayRef<const APIRecord *> getTopLevelRecords() const {
1451 void operator()(APIRecord *Record) { Record->~APIRecord(); }
1457 using APIRecordStoredPtr = std::unique_ptr<APIRecord, APIRecordDeleter>;
1459 std::vector<const APIRecord *> TopLevelRecords;
1466 typename std::enable_if_t<std::is_base_of_v<APIRecord, RecordTy>, RecordTy> *
1498 static_assert(std::is_base_of_v<APIRecord, FromTy>,
1499 "Can only cast APIRecord and derived classes to RecordContext");
1504 return APIRecord::castToRecordContext(From);
1510 static_assert(std::is_base_of_v<APIRecord, FromTy>,
1511 "Can only cast APIRecord and derived classes to RecordContext");
1524 std::is_base_of_v<APIRecord, ToTy>,
1525 "Can only class RecordContext to APIRecord and derived classes");
1532 return APIRecord::castFromRecordContext(Ctx);
1539 std::is_base_of_v<APIRecord, ToTy>,
1540 "Can only class RecordContext to APIRecord and derived classes");
1552 // Implement APIRecord (and derived classes) to and from RecordContext