15 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_BITCODEWRITER_H 16 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_BITCODEWRITER_H 19 #include "clang/AST/AST.h" 20 #include "llvm/ADT/DenseMap.h" 21 #include "llvm/ADT/SmallVector.h" 22 #include "llvm/ADT/StringRef.h" 23 #include "llvm/Bitstream/BitstreamWriter.h" 24 #include <initializer_list> 47 static constexpr
unsigned char Signature[4] = {
'D',
'O',
'C',
'S'};
135 emitBlockInfoBlock();
140 bool dispatchInfoForWrite(
Info *I);
154 class AbbreviationMap {
155 llvm::DenseMap<unsigned, unsigned> Abbrevs;
158 AbbreviationMap() : Abbrevs(RecordIdCount) {}
160 void add(
RecordId RID,
unsigned AbbrevID);
164 class StreamSubBlockGuard {
165 llvm::BitstreamWriter &Stream;
168 StreamSubBlockGuard(llvm::BitstreamWriter &Stream_,
BlockId ID)
175 StreamSubBlockGuard(
const StreamSubBlockGuard &) =
delete;
176 StreamSubBlockGuard &operator=(
const StreamSubBlockGuard &) =
delete;
178 ~StreamSubBlockGuard() { Stream.ExitBlock(); }
183 void emitVersionBlock();
186 void emitBlockInfoBlock();
187 void emitBlockInfo(
BlockId BID,
const std::vector<RecordId> &RIDs);
190 void emitRecord(StringRef Str,
RecordId ID);
194 void emitRecord(
bool Value,
RecordId ID);
195 void emitRecord(
int Value,
RecordId ID);
196 void emitRecord(
unsigned Value,
RecordId ID);
197 bool prepRecordData(
RecordId ID,
bool ShouldEmit =
true);
204 SmallVector<uint32_t, BitCodeConstants::RecordSize>
Record;
205 llvm::BitstreamWriter &Stream;
206 AbbreviationMap Abbrevs;
212 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_BITCODEWRITER_H SourceLocation Loc
'#' location in the include directive
static constexpr unsigned SignatureBitSize
static const unsigned VersionNumber
static constexpr unsigned SubblockIDSize
static constexpr unsigned BlockIdCount
static constexpr unsigned char Signature[4]
ClangDocBitcodeWriter(llvm::BitstreamWriter &Stream)
llvm::SmallVector< uint64_t, 1024 > Record
static constexpr unsigned BoolSize
static constexpr unsigned LineNumberSize
static constexpr unsigned RecordSize
static constexpr int USRHashSize
static constexpr unsigned ReferenceTypeSize
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
static constexpr unsigned IntSize
static constexpr unsigned USRBitLengthSize
static constexpr unsigned USRLengthSize
static constexpr unsigned StringLengthSize
std::array< uint8_t, 20 > SymbolID
static constexpr unsigned FilenameLengthSize
static constexpr unsigned RecordIdCount