blob: aa68b497ef230b594315e4d62bffd314c307975e [file] [log] [blame]
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +00001//===- RemarkSerializer.cpp -----------------------------------------------===//
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 tools for serializing remarks.
10//
11//===----------------------------------------------------------------------===//
12
13#include "llvm/Remarks/RemarkSerializer.h"
14#include "llvm/Remarks/YAMLRemarkSerializer.h"
15
16using namespace llvm;
17using namespace llvm::remarks;
18
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000019Expected<std::unique_ptr<RemarkSerializer>>
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000020remarks::createRemarkSerializer(Format RemarksFormat, raw_ostream &OS) {
21 switch (RemarksFormat) {
22 case Format::Unknown:
23 return createStringError(std::errc::invalid_argument,
24 "Unknown remark serializer format.");
25 case Format::YAML:
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000026 return llvm::make_unique<YAMLRemarkSerializer>(OS);
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000027 case Format::YAMLStrTab:
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000028 return llvm::make_unique<YAMLStrTabRemarkSerializer>(OS);
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000029 }
30 llvm_unreachable("Unknown remarks::Format enum");
31}
32
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000033Expected<std::unique_ptr<RemarkSerializer>>
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000034remarks::createRemarkSerializer(Format RemarksFormat, raw_ostream &OS,
35 remarks::StringTable StrTab) {
36 switch (RemarksFormat) {
37 case Format::Unknown:
38 return createStringError(std::errc::invalid_argument,
39 "Unknown remark serializer format.");
40 case Format::YAML:
41 return createStringError(std::errc::invalid_argument,
42 "Unable to use a string table with the yaml "
43 "format. Use 'yaml-strtab' instead.");
44 case Format::YAMLStrTab:
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000045 return llvm::make_unique<YAMLStrTabRemarkSerializer>(OS, std::move(StrTab));
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000046 }
47 llvm_unreachable("Unknown remarks::Format enum");
48}