const RecordMap<MacroDefinitionRecord> &getMacros() const { return Macros; }
const RecordMap<TypedefRecord> &getTypedefs() const { return Typedefs; }
- /// Get the APIRecord associated with the USR if it's defined in the
- /// current product.
- ///
- /// \returns a APIRecord pointer to the stored symbol record if it exists.
- APIRecord *getSymbolForUSR(StringRef USR) const;
-
/// Generate and store the USR of declaration \p D.
///
/// Note: The USR string is stored in and owned by Allocator.
Comment, Declaration, SubHeading, UnderlyingType);
}
-template <class RecordMap>
-static APIRecord *getSymbolInRecordMapForUSR(StringRef USR,
- const RecordMap &Records) {
- auto It = Records.find(USR);
- return (It != Records.end() ? It->second.get() : nullptr);
-}
-
-APIRecord *APISet::getSymbolForUSR(StringRef USR) const {
- if (USR.empty())
- return nullptr;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, ObjCProtocols))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, ObjCInterfaces))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, ObjCCategories))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, ObjCCategories))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, Structs))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, Enums))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, Typedefs))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, GlobalFunctions))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, GlobalVariables))
- return Record;
- if (auto *Record = getSymbolInRecordMapForUSR(USR, Macros))
- return Record;
- return nullptr;
-}
-
StringRef APISet::recordUSR(const Decl *D) {
SmallString<128> USR;
index::generateUSRForDecl(D, USR);
Object Relationship;
Relationship["source"] = Source.USR;
Relationship["target"] = Target.USR;
- // Emit a fallback if the target is not a symbol that will be part of this
- // symbol graph.
- if (API.getSymbolForUSR(Target.USR) == nullptr)
- Relationship["targetFallback"] = Target.Name;
+ Relationship["targetFallback"] = Target.Name;
Relationship["kind"] = getRelationshipString(Kind);
Relationships.emplace_back(std::move(Relationship));
{
"kind": "memberOf",
"source": "c:@S@Vehicle@E@input.h@64@Bicycle",
- "target": "c:@S@Vehicle@E@input.h@64"
+ "target": "c:@S@Vehicle@E@input.h@64",
+ "targetFallback": "Vehicle::enum (unnamed)"
},
{
"kind": "memberOf",
"source": "c:@S@Vehicle@E@input.h@64@Car",
- "target": "c:@S@Vehicle@E@input.h@64"
+ "target": "c:@S@Vehicle@E@input.h@64",
+ "targetFallback": "Vehicle::enum (unnamed)"
},
{
"kind": "memberOf",
"source": "c:@S@Vehicle@FI@type",
- "target": "c:@S@Vehicle"
+ "target": "c:@S@Vehicle",
+ "targetFallback": "Vehicle"
},
{
"kind": "memberOf",
"source": "c:@S@Vehicle@FI@information",
- "target": "c:@S@Vehicle"
+ "target": "c:@S@Vehicle",
+ "targetFallback": "Vehicle"
}
],
"symbols": [
{
"kind": "memberOf",
"source": "c:@E@Vehicle@Bicycle",
- "target": "c:@E@Vehicle"
+ "target": "c:@E@Vehicle",
+ "targetFallback": "Vehicle"
},
{
"kind": "memberOf",
"source": "c:@E@Vehicle@Car",
- "target": "c:@E@Vehicle"
+ "target": "c:@E@Vehicle",
+ "targetFallback": "Vehicle"
},
{
"kind": "memberOf",
"source": "c:@E@Vehicle@Train",
- "target": "c:@E@Vehicle"
+ "target": "c:@E@Vehicle",
+ "targetFallback": "Vehicle"
},
{
"kind": "memberOf",
"source": "c:@E@Vehicle@Ship",
- "target": "c:@E@Vehicle"
+ "target": "c:@E@Vehicle",
+ "targetFallback": "Vehicle"
},
{
"kind": "memberOf",
"source": "c:@E@Vehicle@Airplane",
- "target": "c:@E@Vehicle"
+ "target": "c:@E@Vehicle",
+ "targetFallback": "Vehicle"
},
{
"kind": "memberOf",
"source": "c:@E@Direction@North",
- "target": "c:@E@Direction"
+ "target": "c:@E@Direction",
+ "targetFallback": "Direction"
},
{
"kind": "memberOf",
"source": "c:@E@Direction@East",
- "target": "c:@E@Direction"
+ "target": "c:@E@Direction",
+ "targetFallback": "Direction"
},
{
"kind": "memberOf",
"source": "c:@E@Direction@South",
- "target": "c:@E@Direction"
+ "target": "c:@E@Direction",
+ "targetFallback": "Direction"
},
{
"kind": "memberOf",
"source": "c:@E@Direction@West",
- "target": "c:@E@Direction"
+ "target": "c:@E@Direction",
+ "targetFallback": "Direction"
},
{
"kind": "memberOf",
"source": "c:@Ea@Constant@Constant",
- "target": "c:@Ea@Constant"
+ "target": "c:@Ea@Constant",
+ "targetFallback": "enum (unnamed)"
},
{
"kind": "memberOf",
"source": "c:@Ea@OtherConstant@OtherConstant",
- "target": "c:@Ea@OtherConstant"
+ "target": "c:@Ea@OtherConstant",
+ "targetFallback": "enum (unnamed)"
}
],
"symbols": [
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(im)InstanceMethod",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(cm)ClassMethod",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(py)Property",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "conformsTo",
{
"kind": "memberOf",
"source": "c:objc(cs)Super(cm)getWithProperty:",
- "target": "c:objc(cs)Super"
+ "target": "c:objc(cs)Super",
+ "targetFallback": "Super"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Super(im)setProperty:andOtherThing:",
- "target": "c:objc(cs)Super"
+ "target": "c:objc(cs)Super",
+ "targetFallback": "Super"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Super(py)Property",
- "target": "c:objc(cs)Super"
+ "target": "c:objc(cs)Super",
+ "targetFallback": "Super"
},
{
"kind": "conformsTo",
{
"kind": "memberOf",
"source": "c:objc(cs)Derived@Ivar",
- "target": "c:objc(cs)Derived"
+ "target": "c:objc(cs)Derived",
+ "targetFallback": "Derived"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Derived(im)getIvar",
- "target": "c:objc(cs)Derived"
+ "target": "c:objc(cs)Derived",
+ "targetFallback": "Derived"
},
{
"kind": "inheritsFrom",
"source": "c:objc(cs)Derived",
- "target": "c:objc(cs)Super"
+ "target": "c:objc(cs)Super",
+ "targetFallback": "Super"
}
],
"symbols": [
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(cpy)myInterfaceTypeProp",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(py)myInterfaceInstanceProp",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(cpy)myCategoryTypeProp",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "memberOf",
"source": "c:objc(cs)Interface(py)myCategoryInstanceProp",
- "target": "c:objc(cs)Interface"
+ "target": "c:objc(cs)Interface",
+ "targetFallback": "Interface"
},
{
"kind": "conformsTo",
"source": "c:objc(cs)Interface",
- "target": "c:objc(pl)Protocol"
+ "target": "c:objc(pl)Protocol",
+ "targetFallback": "Protocol"
},
{
"kind": "memberOf",
"source": "c:objc(pl)Protocol(cpy)myProtocolTypeProp",
- "target": "c:objc(pl)Protocol"
+ "target": "c:objc(pl)Protocol",
+ "targetFallback": "Protocol"
},
{
"kind": "memberOf",
"source": "c:objc(pl)Protocol(py)myProtocolInstanceProp",
- "target": "c:objc(pl)Protocol"
+ "target": "c:objc(pl)Protocol",
+ "targetFallback": "Protocol"
}
],
"symbols": [
{
"kind": "conformsTo",
"source": "c:objc(pl)AnotherProtocol",
- "target": "c:objc(pl)Protocol"
+ "target": "c:objc(pl)Protocol",
+ "targetFallback": "Protocol"
}
],
"symbols": [
{
"kind": "memberOf",
"source": "c:@S@Color@FI@Red",
- "target": "c:@S@Color"
+ "target": "c:@S@Color",
+ "targetFallback": "Color"
},
{
"kind": "memberOf",
"source": "c:@S@Color@FI@Green",
- "target": "c:@S@Color"
+ "target": "c:@S@Color",
+ "targetFallback": "Color"
},
{
"kind": "memberOf",
"source": "c:@S@Color@FI@Blue",
- "target": "c:@S@Color"
+ "target": "c:@S@Color",
+ "targetFallback": "Color"
},
{
"kind": "memberOf",
"source": "c:@S@Color@FI@Alpha",
- "target": "c:@S@Color"
+ "target": "c:@S@Color",
+ "targetFallback": "Color"
}
],
"symbols": [
{
"kind": "memberOf",
"source": "c:@S@ExposedRecord@FI@a",
- "target": "c:@S@ExposedRecord"
+ "target": "c:@S@ExposedRecord",
+ "targetFallback": "ExposedRecord"
}
],
"symbols": [