LLVM 22.0.0git
RemarkParser.h
Go to the documentation of this file.
1//===-- llvm/Remarks/Remark.h - The remark type -----------------*- 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// This file provides an interface for parsing remarks in LLVM.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_REMARKS_REMARKPARSER_H
14#define LLVM_REMARKS_REMARKPARSER_H
15
16#include "llvm/ADT/StringRef.h"
19#include "llvm/Support/Error.h"
20#include <memory>
21#include <optional>
22
23namespace llvm {
24namespace remarks {
25
26struct Remark;
27
28class EndOfFileError : public ErrorInfo<EndOfFileError> {
29public:
30 LLVM_ABI static char ID;
31
32 EndOfFileError() = default;
33
34 void log(raw_ostream &OS) const override { OS << "End of file reached."; }
35 std::error_code convertToErrorCode() const override {
37 }
38};
39
40/// Parser used to parse a raw buffer to remarks::Remark objects.
42 /// The format of the parser.
44 /// Path to prepend when opening an external remark file.
46
48
49 /// If no error occurs, this returns a valid Remark object.
50 /// If an error of type EndOfFileError occurs, it is safe to recover from it
51 /// by stopping the parsing.
52 /// If any other error occurs, it should be propagated to the user.
53 /// The pointer should never be null.
55
56 virtual ~RemarkParser() = default;
57};
58
59/// In-memory representation of the string table parsed from a buffer (e.g. the
60/// remarks section).
62 /// The buffer mapped from the section contents.
64 /// This object has high changes to be std::move'd around, so don't use a
65 /// SmallVector for once.
66 std::vector<size_t> Offsets;
67
69 /// Disable copy.
72 /// Should be movable.
75
76 size_t size() const { return Offsets.size(); }
78};
79
81createRemarkParser(Format ParserFormat, StringRef Buf);
82
84 Format ParserFormat, StringRef Buf,
85 std::optional<StringRef> ExternalFilePrependPath = std::nullopt);
86
87} // end namespace remarks
88} // end namespace llvm
89
90#endif // LLVM_REMARKS_REMARKPARSER_H
#define LLVM_ABI
Definition: Compiler.h:213
uint32_t Index
raw_pwrite_stream & OS
Base class for user error types.
Definition: Error.h:354
Tagged union holding either a T or a Error.
Definition: Error.h:485
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:55
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition: raw_ostream.h:53
std::error_code convertToErrorCode() const override
Convert this error to a std::error_code.
Definition: RemarkParser.h:35
static LLVM_ABI char ID
Definition: RemarkParser.h:30
void log(raw_ostream &OS) const override
Print an error message to an output stream.
Definition: RemarkParser.h:34
Format
The format used for serializing/deserializing remarks.
Definition: RemarkFormat.h:26
LLVM_ABI Expected< std::unique_ptr< RemarkParser > > createRemarkParserFromMeta(Format ParserFormat, StringRef Buf, std::optional< StringRef > ExternalFilePrependPath=std::nullopt)
LLVM_ABI Expected< std::unique_ptr< RemarkParser > > createRemarkParser(Format ParserFormat, StringRef Buf)
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
LLVM_ABI std::error_code inconvertibleErrorCode()
The value returned by this function can be returned from convertToErrorCode for Error values where no...
Definition: Error.cpp:98
In-memory representation of the string table parsed from a buffer (e.g.
Definition: RemarkParser.h:61
LLVM_ABI Expected< StringRef > operator[](size_t Index) const
std::vector< size_t > Offsets
This object has high changes to be std::move'd around, so don't use a SmallVector for once.
Definition: RemarkParser.h:66
ParsedStringTable & operator=(ParsedStringTable &&)=default
ParsedStringTable(const ParsedStringTable &)=delete
Disable copy.
StringRef Buffer
The buffer mapped from the section contents.
Definition: RemarkParser.h:63
ParsedStringTable & operator=(const ParsedStringTable &)=delete
ParsedStringTable(ParsedStringTable &&)=default
Should be movable.
Parser used to parse a raw buffer to remarks::Remark objects.
Definition: RemarkParser.h:41
virtual ~RemarkParser()=default
std::string ExternalFilePrependPath
Path to prepend when opening an external remark file.
Definition: RemarkParser.h:45
RemarkParser(Format ParserFormat)
Definition: RemarkParser.h:47
Format ParserFormat
The format of the parser.
Definition: RemarkParser.h:43
virtual Expected< std::unique_ptr< Remark > > next()=0
If no error occurs, this returns a valid Remark object.