xref: /freebsd/contrib/llvm-project/llvm/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
1 //===- SimpleTypeSerializer.h -----------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_DEBUGINFO_CODEVIEW_SIMPLETYPESERIALIZER_H
10 #define LLVM_DEBUGINFO_CODEVIEW_SIMPLETYPESERIALIZER_H
11 
12 #include "llvm/ADT/ArrayRef.h"
13 #include "llvm/Support/Compiler.h"
14 #include <vector>
15 
16 namespace llvm {
17 namespace codeview {
18 class FieldListRecord;
19 
20 class SimpleTypeSerializer {
21   std::vector<uint8_t> ScratchBuffer;
22 
23 public:
24   LLVM_ABI SimpleTypeSerializer();
25   LLVM_ABI ~SimpleTypeSerializer();
26 
27   // This template is explicitly instantiated in the implementation file for all
28   // supported types.  The method itself is ugly, so inlining it into the header
29   // file clutters an otherwise straightforward interface.
30   template <typename T> ArrayRef<uint8_t> serialize(T &Record);
31 
32   // Don't allow serialization of field list records using this interface.
33   ArrayRef<uint8_t> serialize(const FieldListRecord &Record) = delete;
34 };
35 
36 } // end namespace codeview
37 } // end namespace llvm
38 
39 #endif // LLVM_DEBUGINFO_CODEVIEW_SIMPLETYPESERIALIZER_H
40