17#ifndef LLVM_CLANG_EXTRACTAPI_SERIALIZATION_SYMBOLGRAPHSERIALIZER_H
18#define LLVM_CLANG_EXTRACTAPI_SERIALIZATION_SYMBOLGRAPHSERIALIZER_H
24#include "llvm/ADT/DenseMap.h"
25#include "llvm/ADT/SmallString.h"
26#include "llvm/ADT/SmallVector.h"
27#include "llvm/ADT/StringMap.h"
28#include "llvm/ADT/StringRef.h"
29#include "llvm/ADT/StringSet.h"
30#include "llvm/ADT/Twine.h"
31#include "llvm/Support/JSON.h"
32#include "llvm/Support/VersionTuple.h"
33#include "llvm/Support/raw_ostream.h"
85 llvm::StringMap<ExtendedModule> ExtendedModules;
88 static const VersionTuple FormatVersion;
92 bool ForceEmitToMainModule;
103 const bool EmitSymbolLabelsForTesting =
false;
106 Object *CurrentSymbol =
nullptr;
118 raw_ostream &MainOutput,
const APISet &
API,
121 std::unique_ptr<llvm::raw_pwrite_stream>(llvm::Twine BaseFileName)>
135 enum RelationshipKind {
157 static StringRef getRelationshipString(RelationshipKind Kind);
159 void serializeRelationship(RelationshipKind Kind,
164 enum ConstraintKind { Conformance, ConditionalConformance };
166 static StringRef getConstraintString(ConstraintKind Kind);
176 void serializeGraphToStream(raw_ostream &OS,
184 Object serializeMetadata()
const;
192 Object serializeModuleObject(StringRef ModuleName)
const;
273 bool EmitSymbolLabelsForTesting =
false,
274 bool ForceEmitToMainModule =
false)
275 :
Base(
API), ForceEmitToMainModule(ForceEmitToMainModule),
276 IgnoresList(IgnoresList),
277 EmitSymbolLabelsForTesting(EmitSymbolLabelsForTesting) {}
This file defines the ExtractAPI APISetVisitor interface.
This file defines the APIRecord-based structs and the APISet class.
llvm::MachO::Target Target
llvm::MachO::Record Record
Defines the clang::Module class, which describes a module in the source code.
The JSON file list parser is used to communicate input to InstallAPI.