003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/include/llvm/Remarks
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
include
/
llvm
/
Remarks
/
📁
..
📄
BitstreamRemarkContainer.h
(3.79 KB)
📄
BitstreamRemarkParser.h
(4.21 KB)
📄
BitstreamRemarkSerializer.h
(7.97 KB)
📄
Remark.h
(5.65 KB)
📄
RemarkFormat.h
(1.15 KB)
📄
RemarkLinker.h
(3.5 KB)
📄
RemarkParser.h
(3.14 KB)
📄
RemarkSerializer.h
(3.16 KB)
📄
RemarkStreamer.h
(2.92 KB)
📄
RemarkStringTable.h
(2.58 KB)
📄
YAMLRemarkSerializer.h
(3.73 KB)
Editing: RemarkStringTable.h
//===-- RemarkStringTable.h - Serializing string table ----------*- 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 class is used to deduplicate and serialize a string table used for // generating remarks. // // For parsing a string table, use ParsedStringTable in RemarkParser.h // //===----------------------------------------------------------------------===// #ifndef LLVM_REMARKS_REMARK_STRING_TABLE_H #define LLVM_REMARKS_REMARK_STRING_TABLE_H #include "llvm/ADT/StringMap.h" #include "llvm/Support/Allocator.h" #include <vector> namespace llvm { class raw_ostream; class StringRef; namespace remarks { struct ParsedStringTable; struct Remark; /// The string table used for serializing remarks. /// This table can be for example serialized in a section to be consumed after /// the compilation. struct StringTable { /// The string table containing all the unique strings used in the output. /// It maps a string to an unique ID. StringMap<unsigned, BumpPtrAllocator> StrTab; /// Total size of the string table when serialized. size_t SerializedSize = 0; StringTable() = default; /// Disable copy. StringTable(const StringTable &) = delete; StringTable &operator=(const StringTable &) = delete; /// Should be movable. StringTable(StringTable &&) = default; StringTable &operator=(StringTable &&) = default; /// Construct a string table from a ParsedStringTable. StringTable(const ParsedStringTable &Other); /// Add a string to the table. It returns an unique ID of the string. std::pair<unsigned, StringRef> add(StringRef Str); /// Modify \p R to use strings from this string table. If the string table /// does not contain the strings, it adds them. void internalize(Remark &R); /// Serialize the string table to a stream. It is serialized as a little /// endian uint64 (the size of the table in bytes) followed by a sequence of /// NULL-terminated strings, where the N-th string is the string with the ID N /// in the StrTab map. void serialize(raw_ostream &OS) const; /// Serialize the string table to a vector. This allows users to do the actual /// writing to file/memory/other. /// The string with the ID == N should be the N-th element in the vector. std::vector<StringRef> serialize() const; }; } // end namespace remarks } // end namespace llvm #endif /* LLVM_REMARKS_REMARK_STRING_TABLE_H */
Upload File
Create Folder