//===-- BitstreamRemarkSerializer.h - Bitstream serializer ------*- 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 provides an implementation of the serializer using the LLVM // Bitstream format. // //===----------------------------------------------------------------------===// #ifndef LLVM_REMARKS_BITSTREAMREMARKSERIALIZER_H #define LLVM_REMARKS_BITSTREAMREMARKSERIALIZER_H #include "llvm/Bitstream/BitstreamWriter.h" #include "llvm/Remarks/BitstreamRemarkContainer.h" #include "llvm/Remarks/RemarkSerializer.h" #include <optional> namespace llvm { namespace remarks { struct Remarks; /// Serialize the remarks to LLVM bitstream. /// This class provides ways to emit remarks in the LLVM bitstream format and /// its associated metadata. /// /// * The separate model: /// Separate meta: | Container info /// | String table /// | External file /// /// Separate remarks: | Container info /// | Remark version /// | Remark0 /// | Remark1 /// | Remark2 /// | ... /// /// * The standalone model: | Container info /// | String table /// | Remark version /// | Remark0 /// | Remark1 /// | Remark2 /// | ... /// struct BitstreamRemarkSerializerHelper { … }; /// Implementation of the remark serializer using LLVM bitstream. struct BitstreamRemarkSerializer : public RemarkSerializer { … }; /// Serializer of metadata for bitstream remarks. struct BitstreamMetaSerializer : public MetaSerializer { … }; } // end namespace remarks } // end namespace llvm #endif // LLVM_REMARKS_BITSTREAMREMARKSERIALIZER_H