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 <vector>
14
15namespace llvm {
16namespace codeview {
17class FieldListRecord;
18
19class SimpleTypeSerializer {
20 std::vector<uint8_t> ScratchBuffer;
21
22public:
23 SimpleTypeSerializer();
24 ~SimpleTypeSerializer();
25
26 // This template is explicitly instantiated in the implementation file for all
27 // supported types. The method itself is ugly, so inlining it into the header
28 // file clutters an otherwise straightforward interface.
29 template <typename T> ArrayRef<uint8_t> serialize(T &Record);
30
31 // Don't allow serialization of field list records using this interface.
32 ArrayRef<uint8_t> serialize(const FieldListRecord &Record) = delete;
33};
34
35} // end namespace codeview
36} // end namespace llvm
37
38#endif // LLVM_DEBUGINFO_CODEVIEW_SIMPLETYPESERIALIZER_H
39

source code of llvm/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h