dataset = [
{
"name": "CompilerInstance",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1CompilerInstance.html",
"connections": [
{"name": "Invocation", "type": "CompilerInvocation", "kind": "shared"},
{"name": "Diagnostics", "type": "DiagnosticsEngine", "kind": "shared"},
{"name": "Target", "type": "TargetInfo", "kind": "shared"},
{"name": "AuxTarget", "type": "TargetInfo", "kind": "shared"},
{"name": "FileMgr", "type": "FileManager", "kind": "shared"},
{"name": "SourceMgr", "type": "SourceManager", "kind": "shared"},
{"name": "ModuleCache", "type": "InMemoryModuleCache", "kind": "shared"},
{"name": "PP", "type": "Preprocessor", "kind": "shared"},
{"name": "Context", "type": "ASTContext", "kind": "shared"},
{"name": "ExternalSemaSrc", "type": "ExternalSemaSource", "kind": "shared"},
{"name": "Consumer", "type": "ASTConsumer", "kind": "owns"},
{"name": "CompletionConsumer", "type": "CodeCompleteConsumer", "kind": "owns"},
{"name": "TheSema", "type": "Sema", "kind": "owns"},
{"name": "FrontendTimerGroup", "type": "TimerGroup", "kind": "owns"},
{"name": "FrontendTimer", "type": "Timer", "kind": "owns"},
{"name": "TheASTReader", "type": "ASTReader", "kind": "shared"},
{"name": "ModuleDepCollector", "type": "ModuleDependencyCollector", "kind": "shared"},
{"name": "ThePCHContainerOperations", "type": "PCHContainerOperations", "kind": "shared"},
{"name": "DependencyCollectors", "type": "DependencyCollector", "kind": "shared"},
{"name": "OwnedVerboseOutputStream", "type": "raw_ostream", "kind": "owns"},
{"name": "OutputStream", "type": "raw_pwrite_stream", "kind": "owns"},
],
},
{
"name": "CompilerInvocation",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1CompilerInvocation.html",
"connections": [
{"name": "LangOpts", "type": "LangOptions", "kind": "shared"},
{"name": "TargetOpts", "type": "TargetOptions", "kind": "shared"},
{"name": "DiagnosticOpts", "type": "DiagnosticOptions", "kind": "shared"},
{"name": "HeaderSearchOpts", "type": "HeaderSearchOptions", "kind": "shared"},
{"name": "PreprocessorOpts", "type": "PreprocessorOptions", "kind": "shared"},
{"name": "AnalyzerOpts", "type": "AnalyzerOptionsRef", "kind": "reference"},
{"name": "MigratorOpts", "type": "MigratorOptions", "kind": "copy"},
{"name": "CodeGenOpts", "type": "CodeGenOptions", "kind": "copy"},
{"name": "DependencyOutputOpts", "type": "DependencyOutputOptions", "kind": "copy"},
{"name": "FileSystemOpts", "type": "FileSystemOptions", "kind": "copy"},
{"name": "FrontendOpts", "type": "FrontendOptions", "kind": "copy"},
{"name": "PreprocessorOutputOpts", "type": "PreprocessorOutputOptions", "kind": "copy"},
],
},
{
"name": "DiagnosticsEngine",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1DiagnosticsEngine.html",
"connections": [
{"name": "Diags", "type": "DiagnosticIDs", "kind": "shared"},
{"name": "DiagOpts", "type": "DiagnosticOptions", "kind": "shared"},
{"name": "Client", "type": "DiagnosticConsumer", "kind": "reference"},
{"name": "Owner", "type": "DiagnosticConsumer", "kind": "owns"},
{"name": "SourceMgr", "type": "SourceManager", "kind": "reference"},
],
},
{
"name": "FileManager",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1FileManager.html",
"connections": [
{"name": "FS", "type": "FileSystem", "kind": "shared"},
{"name": "FileSystemOpts", "type": "FileSystemOptions", "kind": "copy"},
{"name": "StatCache", "type": "FileSystemStatCache", "kind": "owns"},
],
},
{
"name": "SourceManager",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1SourceManager.html",
"connections": [
{"name": "Diag", "type": "DiagnosticsEngine", "kind": "reference"},
{"name": "FileMgr", "type": "FileManager", "kind": "reference"},
{"name": "LineTable", "type": "LineTableInfo", "kind": "owns"},
],
},
{
"name": "Preprocessor",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1Preprocessor.html",
"connections": [
{"name": "PPOpts", "type": "PreprocessorOptions", "kind": "shared"},
{"name": "Diags", "type": "DiagnosticsEngine", "kind": "reference"},
{"name": "LangOpts", "type": "LangOptions", "kind": "reference"},
{"name": "Target", "type": "TargetInfo", "kind": "reference"},
{"name": "AuxTarget", "type": "TargetInfo", "kind": "reference"},
{"name": "FileMgr", "type": "FileManager", "kind": "reference"},
{"name": "SourceMgr", "type": "SourceManager", "kind": "reference"},
{"name": "ScratchBuf", "type": "ScratchBuffer", "kind": "owns"},
{"name": "HeaderInfo", "type": "HeaderSearch", "kind": "reference"},
{"name": "TheModuleLoader", "type": "ModuleLoader", "kind": "reference"},
{"name": "ExternalSource", "type": "ExternalPreprocessorSource", "kind": "reference"},
{"name": "Identifiers", "type": "IdentifierTable", "kind": "copy"},
{"name": "PragmaHandlers", "type": "PragmaNamespace", "kind": "owns"},
{"name": "PragmaHandlersBackup", "type": "PragmaNamespace", "kind": "owns"},
{"name": "CurLexer", "type": "Lexer", "kind": "owns"},
{"name": "CurPPLexer", "type": "PreprocessorLexer", "kind": "reference"},
{"name": "CurTokenLexer", "type": "TokenLexer", "kind": "owns"},
{"name": "Callbacks", "type": "PPCallbacks", "kind": "owns"},
{"name": "TokenLexerCache", "type": "TokenLexer", "kind": "owns"},
],
},
{
"name": "ASTContext",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1ASTContext.html",
"connections": [
{"name": "SourceMgr", "type": "SourceManager", "kind": "reference"},
{"name": "LangOpts", "type": "LangOptions", "kind": "reference"},
{"name": "NoSanitizeL", "type": "NoSanitizeList", "kind": "owns"},
{"name": "XRayFilter", "type": "XRayFunctionFilter", "kind": "owns"},
{"name": "ProfList", "type": "ProfileList", "kind": "owns"},
{"name": "ABI", "type": "CXXABI", "kind": "owns"},
{"name": "Target", "type": "TargetInfo", "kind": "reference"},
{"name": "AuxTarget", "type": "TargetInfo", "kind": "reference"},
{"name": "InterpContext", "type": "interp::Context", "kind": "owns"},
{"name": "ParentMapCtx", "type": "ParentMapContext", "kind": "owns"},
{"name": "Idents", "type": "IdentifierTable", "kind": "reference"},
{"name": "ExternalSource", "type": "ExternalASTSource", "kind": "shared"},
// ASTContext stores lots of other useful data but it's not interesting for our purposes.
],
},
{
"name": "Sema",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1Sema.html",
"connections": [
{"name": "ExternalSource", "type": "ExternalSemaSource", "kind": "reference"},
{"name": "LangOpts", "type": "LangOptions", "kind": "reference"},
{"name": "PP", "type": "Preprocessor", "kind": "reference"},
{"name": "Context", "type": "ASTContext", "kind": "reference"},
{"name": "Consumer", "type": "ASTConsumer", "kind": "reference"},
{"name": "Diags", "type": "DiagnosticsEngine", "kind": "reference"},
{"name": "SourceMgr", "type": "SourceManager", "kind": "reference"},
{"name": "SemaPPCallbackHandler", "type": "SemaPPCallbacks", "kind": "reference"},
// Sema stores lots of other useful data but it's not interesting for our purposes.
],
},
{
"name": "ASTReader",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1ASTReader.html",
"connections": [
{"name": "SourceMgr", "type": "SourceManager", "kind": "reference"},
{"name": "FileMgr", "type": "FileManager", "kind": "reference"},
{"name": "PCHContainerRdr", "type": "PCHContainerReader", "kind": "reference"},
{"name": "Diags", "type": "DiagnosticsEngine", "kind": "reference"},
{"name": "SemaObj", "type": "Sema", "kind": "reference"},
{"name": "PP", "type": "Preprocessor", "kind": "reference"},
{"name": "ContextObj", "type": "ASTContext", "kind": "reference"},
{"name": "Consumer", "type": "ASTConsumer", "kind": "reference"},
{"name": "ModuleMgr", "type": "ModuleManager", "kind": "copy"},
],
},
{
"name": "HeaderSearch",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1HeaderSearch.html",
"connections": [
{"name": "HSOpts", "type": "HeaderSearchOptions", "kind": "shared"},
{"name": "Diags", "type": "DiagnosticsEngine", "kind": "reference"},
{"name": "FileMgr", "type": "FileManager", "kind": "reference"},
{"name": "ModMap", "type": "ModuleMap", "kind": "copy"},
{"name": "ExternalLookup", "type": "ExternalPreprocessorSource", "kind": "reference"},
{"name": "ExternalSource", "type": "ExternalHeaderFileInfoSource", "kind": "reference"},
// HeaderSearch also stores other information but it's not useful for us now.
],
},
{
"name": "PreprocessorLexer",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1PreprocessorLexer.html",
"connections": [
{"name": "PP", "type": "Preprocessor", "kind": "reference"},
],
},
{
"name": "Lexer", // it is a PreprocessorLexer too but won't express that in dependencies yet, just copy PP field.
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1Lexer.html",
"connections": [
{"name": "PP", "type": "Preprocessor", "kind": "reference"},
{"name": "LangOpts", "type": "LangOptions", "kind": "reference"},
],
},
{
"name": "TokenLexer",
"doclink": "https://clang.llvm.org/doxygen/classclang_1_1TokenLexer.html",
"connections": [
{"name": "PP", "type": "Preprocessor", "kind": "reference"},
],
},
]