clang 18.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
clang::extractapi::SymbolGraphSerializer Class Reference

The visitor that organizes API information in the Symbol Graph format. More...

#include "clang/ExtractAPI/Serialization/SymbolGraphSerializer.h"

Inheritance diagram for clang::extractapi::SymbolGraphSerializer:
Inheritance graph
[legend]

Public Types

enum  RelationshipKind { MemberOf , InheritsFrom , ConformsTo , ExtensionTo }
 The kind of a relationship between two symbols. More...
 
enum  ConstraintKind { Conformance , ConditionalConformance }
 

Public Member Functions

Object serialize ()
 Serialize the APIs in APISet in the Symbol Graph format.
 
void serialize (raw_ostream &os)
 Wrap serialize(void) and write out the serialized JSON object to os.
 
void visitNamespaceRecord (const NamespaceRecord &Record)
 
void visitGlobalFunctionRecord (const GlobalFunctionRecord &Record)
 Visit a global function record.
 
void visitGlobalVariableRecord (const GlobalVariableRecord &Record)
 Visit a global variable record.
 
void visitEnumRecord (const EnumRecord &Record)
 Visit an enum record.
 
void visitStructRecord (const StructRecord &Record)
 Visit a struct record.
 
void visitStaticFieldRecord (const StaticFieldRecord &Record)
 
void visitCXXClassRecord (const CXXClassRecord &Record)
 
void visitClassTemplateRecord (const ClassTemplateRecord &Record)
 
void visitClassTemplateSpecializationRecord (const ClassTemplateSpecializationRecord &Record)
 
void visitClassTemplatePartialSpecializationRecord (const ClassTemplatePartialSpecializationRecord &Record)
 
void visitCXXInstanceMethodRecord (const CXXInstanceMethodRecord &Record)
 
void visitCXXStaticMethodRecord (const CXXStaticMethodRecord &Record)
 
void visitMethodTemplateRecord (const CXXMethodTemplateRecord &Record)
 
void visitMethodTemplateSpecializationRecord (const CXXMethodTemplateSpecializationRecord &Record)
 
void visitCXXFieldRecord (const CXXFieldRecord &Record)
 
void visitCXXFieldTemplateRecord (const CXXFieldTemplateRecord &Record)
 
void visitConceptRecord (const ConceptRecord &Record)
 
void visitGlobalVariableTemplateRecord (const GlobalVariableTemplateRecord &Record)
 
void visitGlobalVariableTemplateSpecializationRecord (const GlobalVariableTemplateSpecializationRecord &Record)
 
void visitGlobalVariableTemplatePartialSpecializationRecord (const GlobalVariableTemplatePartialSpecializationRecord &Record)
 
void visitGlobalFunctionTemplateRecord (const GlobalFunctionTemplateRecord &Record)
 
void visitGlobalFunctionTemplateSpecializationRecord (const GlobalFunctionTemplateSpecializationRecord &Record)
 
void visitObjCContainerRecord (const ObjCContainerRecord &Record)
 Visit an Objective-C container record.
 
void visitObjCCategoryRecord (const ObjCCategoryRecord &Record)
 Visit an Objective-C category record.
 
void visitMacroDefinitionRecord (const MacroDefinitionRecord &Record)
 Visit a macro definition record.
 
void visitTypedefRecord (const TypedefRecord &Record)
 Visit a typedef record.
 
void serializeSingleRecord (const APIRecord *Record)
 Serialize a single record.
 
 SymbolGraphSerializer (const APISet &API, const APIIgnoresList &IgnoresList, SymbolGraphSerializerOption Options={}, bool ShouldRecurse=true)
 
- Public Member Functions inherited from clang::extractapi::APISetVisitor< SymbolGraphSerializer >
void traverseAPISet ()
 
void traverseNamespaces ()
 
void traverseGlobalFunctionRecords ()
 
void traverseGlobalVariableRecords ()
 
void traverseEnumRecords ()
 
void traverseStructRecords ()
 
void traverseStaticFieldRecords ()
 
void traverseCXXClassRecords ()
 
void traverseCXXMethodTemplates ()
 
void traverseCXXMethodTemplateSpecializations ()
 
void traverseClassTemplateRecords ()
 
void traverseClassTemplateSpecializationRecords ()
 
void traverseClassTemplatePartialSpecializationRecords ()
 
void traverseCXXInstanceMethods ()
 
void traverseCXXStaticMethods ()
 
void traverseCXXFields ()
 
void traverseCXXFieldTemplates ()
 
void traverseGlobalVariableTemplateRecords ()
 
void traverseGlobalVariableTemplateSpecializationRecords ()
 
void traverseGlobalVariableTemplatePartialSpecializationRecords ()
 
void traverseGlobalFunctionTemplateRecords ()
 
void traverseGlobalFunctionTemplateSpecializationRecords ()
 
void traverseConcepts ()
 
void traverseObjCInterfaces ()
 
void traverseObjCProtocols ()
 
void traverseObjCCategories ()
 
void traverseMacroDefinitionRecords ()
 
void traverseTypedefRecords ()
 
void visitNamespaceRecord (const NamespaceRecord &Record)
 
void visitGlobalFunctionRecord (const GlobalFunctionRecord &Record)
 Visit a global function record.
 
void visitGlobalVariableRecord (const GlobalVariableRecord &Record)
 Visit a global variable record.
 
void visitEnumRecord (const EnumRecord &Record)
 Visit an enum record.
 
void visitStructRecord (const StructRecord &Record)
 Visit a struct record.
 
void visitStaticFieldRecord (const StaticFieldRecord &Record)
 
void visitCXXClassRecord (const CXXClassRecord &Record)
 
void visitClassTemplateRecord (const ClassTemplateRecord &Record)
 
void visitClassTemplateSpecializationRecord (const ClassTemplateSpecializationRecord &Record)
 
void visitClassTemplatePartialSpecializationRecord (const ClassTemplatePartialSpecializationRecord &Record)
 
void visitCXXInstanceRecord (const CXXInstanceMethodRecord &Record)
 
void visitCXXStaticRecord (const CXXStaticMethodRecord &Record)
 
void visitMethodTemplateRecord (const CXXMethodTemplateRecord &Record)
 
void visitMethodTemplateSpecializationRecord (const CXXMethodTemplateSpecializationRecord &Record)
 
void visitCXXFieldTemplateRecord (const CXXFieldTemplateRecord &Record)
 
void visitGlobalVariableTemplateRecord (const GlobalVariableTemplateRecord &Record)
 
void visitGlobalVariableTemplateSpecializationRecord (const GlobalVariableTemplateSpecializationRecord &Record)
 
void visitGlobalVariableTemplatePartialSpecializationRecord (const GlobalVariableTemplatePartialSpecializationRecord &Record)
 
void visitGlobalFunctionTemplateRecord (const GlobalFunctionTemplateRecord &Record)
 
void visitGlobalFunctionTemplateSpecializationRecord (const GlobalFunctionTemplateSpecializationRecord &Record)
 
void visitObjCContainerRecord (const ObjCContainerRecord &Record)
 Visit an Objective-C container record.
 
void visitObjCCategoryRecord (const ObjCCategoryRecord &Record)
 Visit an Objective-C category record.
 
void visitMacroDefinitionRecord (const MacroDefinitionRecord &Record)
 Visit a macro definition record.
 
void visitTypedefRecord (const TypedefRecord &Record)
 Visit a typedef record.
 
 APISetVisitor ()=delete
 
 APISetVisitor (const APISetVisitor &)=delete
 
 APISetVisitor (APISetVisitor &&)=delete
 
APISetVisitoroperator= (const APISetVisitor &)=delete
 
APISetVisitoroperator= (APISetVisitor &&)=delete
 

Static Public Member Functions

static std::optional< Object > serializeSingleSymbolSGF (StringRef USR, const APISet &API)
 Serialize a single symbol SGF.
 
static StringRef getRelationshipString (RelationshipKind Kind)
 Get the string representation of the relationship kind.
 
static StringRef getConstraintString (ConstraintKind Kind)
 

Protected Attributes

const APIIgnoresListIgnoresList
 The list of symbols to ignore.
 
SymbolGraphSerializerOption Options
 
llvm::StringSet visitedCategories
 
- Protected Attributes inherited from clang::extractapi::APISetVisitor< SymbolGraphSerializer >
const APISetAPI
 

Additional Inherited Members

- Protected Member Functions inherited from clang::extractapi::APISetVisitor< SymbolGraphSerializer >
 APISetVisitor (const APISet &API)
 
 ~APISetVisitor ()=default
 
SymbolGraphSerializergetDerived ()
 

Detailed Description

The visitor that organizes API information in the Symbol Graph format.

The Symbol Graph format (https://github.com/apple/swift-docc-symbolkit) models an API set as a directed graph, where nodes are symbol declarations, and edges are relationships between the connected symbols.

Definition at line 46 of file SymbolGraphSerializer.h.

Member Enumeration Documentation

◆ ConstraintKind

Enumerator
Conformance 
ConditionalConformance 

Definition at line 100 of file SymbolGraphSerializer.h.

◆ RelationshipKind

The kind of a relationship between two symbols.

Enumerator
MemberOf 

The source symbol is a member of the target symbol.

For example enum constants are members of the enum, class/instance methods are members of the class, etc.

InheritsFrom 

The source symbol is inherited from the target symbol.

ConformsTo 

The source symbol conforms to the target symbol.

For example Objective-C protocol conformances.

ExtensionTo 

The source symbol is an extension to the target symbol.

For example Objective-C categories extending an external type.

Definition at line 79 of file SymbolGraphSerializer.h.

Constructor & Destructor Documentation

◆ SymbolGraphSerializer()

clang::extractapi::SymbolGraphSerializer::SymbolGraphSerializer ( const APISet API,
const APIIgnoresList IgnoresList,
SymbolGraphSerializerOption  Options = {},
bool  ShouldRecurse = true 
)
inline

Definition at line 233 of file SymbolGraphSerializer.h.

Member Function Documentation

◆ getConstraintString()

StringRef SymbolGraphSerializer::getConstraintString ( ConstraintKind  Kind)
static

Definition at line 819 of file SymbolGraphSerializer.cpp.

References ConditionalConformance, and Conformance.

◆ getRelationshipString()

StringRef SymbolGraphSerializer::getRelationshipString ( RelationshipKind  Kind)
static

Get the string representation of the relationship kind.

Definition at line 805 of file SymbolGraphSerializer.cpp.

References ConformsTo, ExtensionTo, InheritsFrom, and MemberOf.

Referenced by visitObjCCategoryRecord().

◆ serialize() [1/2]

Object SymbolGraphSerializer::serialize ( void  )

Serialize the APIs in APISet in the Symbol Graph format.

Returns
a JSON object that contains the root of the formatted Symbol Graph.

Definition at line 1229 of file SymbolGraphSerializer.cpp.

References clang::extractapi::APISetVisitor< SymbolGraphSerializer >::traverseAPISet().

Referenced by clang::ExtractAPIActionBase::ImplEndSourceFileAction(), and serialize().

◆ serialize() [2/2]

void SymbolGraphSerializer::serialize ( raw_ostream &  os)

Wrap serialize(void) and write out the serialized JSON object to os.

Definition at line 1245 of file SymbolGraphSerializer.cpp.

References clang::extractapi::SymbolGraphSerializerOption::Compact, Options, and serialize().

◆ serializeSingleRecord()

void SymbolGraphSerializer::serializeSingleRecord ( const APIRecord Record)

◆ serializeSingleSymbolSGF()

std::optional< Object > SymbolGraphSerializer::serializeSingleSymbolSGF ( StringRef  USR,
const APISet API 
)
static

Serialize a single symbol SGF.

This is primarily used for libclang.

Returns
an optional JSON Object representing the payload that libclang expects for providing symbol information for a single symbol. If this is not a known symbol returns std::nullopt.

Definition at line 1254 of file SymbolGraphSerializer.cpp.

References clang::extractapi::APISetVisitor< SymbolGraphSerializer >::API, clang::extractapi::APISet::findRecordForUSR(), clang::PresumedLoc::getFilename(), clang::extractapi::APISet::getLanguage(), clang::extractapi::APIRecord::IsFromSystemHeader, clang::extractapi::APIRecord::Location, clang::extractapi::APISet::ProductName, serializeSingleRecord(), and clang::extractapi::APIRecord::USR.

◆ visitClassTemplatePartialSpecializationRecord()

void SymbolGraphSerializer::visitClassTemplatePartialSpecializationRecord ( const ClassTemplatePartialSpecializationRecord Record)

Definition at line 939 of file SymbolGraphSerializer.cpp.

References clang::Class, InheritsFrom, and MemberOf.

◆ visitClassTemplateRecord()

void SymbolGraphSerializer::visitClassTemplateRecord ( const ClassTemplateRecord Record)

Definition at line 910 of file SymbolGraphSerializer.cpp.

References clang::Class, InheritsFrom, and MemberOf.

◆ visitClassTemplateSpecializationRecord()

void SymbolGraphSerializer::visitClassTemplateSpecializationRecord ( const ClassTemplateSpecializationRecord Record)

Definition at line 924 of file SymbolGraphSerializer.cpp.

References clang::Class, InheritsFrom, and MemberOf.

◆ visitConceptRecord()

void SymbolGraphSerializer::visitConceptRecord ( const ConceptRecord Record)

Definition at line 1026 of file SymbolGraphSerializer.cpp.

◆ visitCXXClassRecord()

void SymbolGraphSerializer::visitCXXClassRecord ( const CXXClassRecord Record)

Definition at line 897 of file SymbolGraphSerializer.cpp.

References clang::Class, InheritsFrom, and MemberOf.

Referenced by serializeSingleRecord().

◆ visitCXXFieldRecord()

void SymbolGraphSerializer::visitCXXFieldRecord ( const CXXFieldRecord Record)

Definition at line 1002 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitCXXFieldTemplateRecord()

void SymbolGraphSerializer::visitCXXFieldTemplateRecord ( const CXXFieldTemplateRecord Record)

Definition at line 1013 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitCXXInstanceMethodRecord()

void SymbolGraphSerializer::visitCXXInstanceMethodRecord ( const CXXInstanceMethodRecord Record)

Definition at line 954 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitCXXStaticMethodRecord()

void SymbolGraphSerializer::visitCXXStaticMethodRecord ( const CXXStaticMethodRecord Record)

Definition at line 965 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitEnumRecord()

void SymbolGraphSerializer::visitEnumRecord ( const EnumRecord Record)

Visit an enum record.

Definition at line 870 of file SymbolGraphSerializer.cpp.

References clang::Enum.

Referenced by serializeSingleRecord().

◆ visitGlobalFunctionRecord()

void SymbolGraphSerializer::visitGlobalFunctionRecord ( const GlobalFunctionRecord Record)

Visit a global function record.

Definition at line 852 of file SymbolGraphSerializer.cpp.

Referenced by serializeSingleRecord().

◆ visitGlobalFunctionTemplateRecord()

void SymbolGraphSerializer::visitGlobalFunctionTemplateRecord ( const GlobalFunctionTemplateRecord Record)

Definition at line 1059 of file SymbolGraphSerializer.cpp.

◆ visitGlobalFunctionTemplateSpecializationRecord()

void SymbolGraphSerializer::visitGlobalFunctionTemplateSpecializationRecord ( const GlobalFunctionTemplateSpecializationRecord Record)

Definition at line 1067 of file SymbolGraphSerializer.cpp.

◆ visitGlobalVariableRecord()

void SymbolGraphSerializer::visitGlobalVariableRecord ( const GlobalVariableRecord Record)

Visit a global variable record.

Definition at line 861 of file SymbolGraphSerializer.cpp.

Referenced by serializeSingleRecord().

◆ visitGlobalVariableTemplatePartialSpecializationRecord()

void SymbolGraphSerializer::visitGlobalVariableTemplatePartialSpecializationRecord ( const GlobalVariableTemplatePartialSpecializationRecord Record)

Definition at line 1050 of file SymbolGraphSerializer.cpp.

◆ visitGlobalVariableTemplateRecord()

void SymbolGraphSerializer::visitGlobalVariableTemplateRecord ( const GlobalVariableTemplateRecord Record)

Definition at line 1034 of file SymbolGraphSerializer.cpp.

◆ visitGlobalVariableTemplateSpecializationRecord()

void SymbolGraphSerializer::visitGlobalVariableTemplateSpecializationRecord ( const GlobalVariableTemplateSpecializationRecord Record)

Definition at line 1042 of file SymbolGraphSerializer.cpp.

◆ visitMacroDefinitionRecord()

void SymbolGraphSerializer::visitMacroDefinitionRecord ( const MacroDefinitionRecord Record)

Visit a macro definition record.

Definition at line 1151 of file SymbolGraphSerializer.cpp.

Referenced by serializeSingleRecord().

◆ visitMethodTemplateRecord()

void SymbolGraphSerializer::visitMethodTemplateRecord ( const CXXMethodTemplateRecord Record)

Definition at line 976 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitMethodTemplateSpecializationRecord()

void SymbolGraphSerializer::visitMethodTemplateSpecializationRecord ( const CXXMethodTemplateSpecializationRecord Record)

Definition at line 989 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitNamespaceRecord()

void SymbolGraphSerializer::visitNamespaceRecord ( const NamespaceRecord Record)

Definition at line 841 of file SymbolGraphSerializer.cpp.

References MemberOf.

◆ visitObjCCategoryRecord()

void SymbolGraphSerializer::visitObjCCategoryRecord ( const ObjCCategoryRecord Record)

◆ visitObjCContainerRecord()

void SymbolGraphSerializer::visitObjCContainerRecord ( const ObjCContainerRecord Record)

Visit an Objective-C container record.

Definition at line 1075 of file SymbolGraphSerializer.cpp.

References Category, ConformsTo, and InheritsFrom.

Referenced by serializeSingleRecord().

◆ visitStaticFieldRecord()

void SymbolGraphSerializer::visitStaticFieldRecord ( const StaticFieldRecord Record)

Definition at line 888 of file SymbolGraphSerializer.cpp.

References MemberOf.

Referenced by serializeSingleRecord().

◆ visitStructRecord()

void SymbolGraphSerializer::visitStructRecord ( const StructRecord Record)

Visit a struct record.

Definition at line 879 of file SymbolGraphSerializer.cpp.

References clang::Struct.

Referenced by serializeSingleRecord().

◆ visitTypedefRecord()

void SymbolGraphSerializer::visitTypedefRecord ( const TypedefRecord Record)

Visit a typedef record.

Definition at line 1210 of file SymbolGraphSerializer.cpp.

Referenced by serializeSingleRecord().

Member Data Documentation

◆ IgnoresList

const APIIgnoresList& clang::extractapi::SymbolGraphSerializer::IgnoresList
protected

The list of symbols to ignore.

Note: This should be consulted before emitting a symbol.

Definition at line 155 of file SymbolGraphSerializer.h.

◆ Options

SymbolGraphSerializerOption clang::extractapi::SymbolGraphSerializer::Options
protected

Definition at line 157 of file SymbolGraphSerializer.h.

Referenced by serialize().

◆ visitedCategories

llvm::StringSet clang::extractapi::SymbolGraphSerializer::visitedCategories
protected

Definition at line 159 of file SymbolGraphSerializer.h.

Referenced by visitObjCCategoryRecord().


The documentation for this class was generated from the following files: