//===-- BitcodeWriter.h - ClangDoc Bitcode Writer --------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements a writer for serializing the clang-doc internal // representation to LLVM bitcode. The writer takes in a stream and emits the // generated bitcode to that stream. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_BITCODEWRITER_H #define LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_BITCODEWRITER_H #include "Representation.h" #include "clang/AST/AST.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" #include "llvm/Bitstream/BitstreamWriter.h" #include <initializer_list> #include <vector> namespace clang { namespace doc { // Current version number of clang-doc bitcode. // Should be bumped when removing or changing BlockIds, RecordIds, or // BitCodeConstants, though they can be added without breaking it. static const unsigned VersionNumber = …; struct BitCodeConstants { … }; // New Ids need to be added to both the enum here and the relevant IdNameMap in // the implementation file. enum BlockId { … }; // New Ids need to be added to the enum here, and to the relevant IdNameMap and // initialization list in the implementation file. enum RecordId { … }; static constexpr unsigned BlockIdCount = …; static constexpr unsigned RecordIdCount = …; // Identifiers for differentiating between subblocks enum class FieldId { … }; class ClangDocBitcodeWriter { … }; } // namespace doc } // namespace clang #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_BITCODEWRITER_H