summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Remarks/RemarkParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Remarks/RemarkParser.cpp')
-rw-r--r--llvm/lib/Remarks/RemarkParser.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/llvm/lib/Remarks/RemarkParser.cpp b/llvm/lib/Remarks/RemarkParser.cpp
index 1e14ca8a697..8bd2b94d73a 100644
--- a/llvm/lib/Remarks/RemarkParser.cpp
+++ b/llvm/lib/Remarks/RemarkParser.cpp
@@ -20,10 +20,29 @@
using namespace llvm;
using namespace llvm::remarks;
-Parser::Parser(StringRef Buf) : Impl(llvm::make_unique<YAMLParserImpl>(Buf)) {}
+static std::unique_ptr<ParserImpl> formatToParserImpl(ParserFormat Format,
+ StringRef Buf) {
+ switch (Format) {
+ case ParserFormat::YAML:
+ return llvm::make_unique<YAMLParserImpl>(Buf);
+ };
+}
+
+static std::unique_ptr<ParserImpl>
+formatToParserImpl(ParserFormat Format, StringRef Buf,
+ const ParsedStringTable &StrTab) {
+ switch (Format) {
+ case ParserFormat::YAML:
+ return llvm::make_unique<YAMLParserImpl>(Buf, &StrTab);
+ };
+}
+
+Parser::Parser(ParserFormat Format, StringRef Buf)
+ : Impl(formatToParserImpl(Format, Buf)) {}
-Parser::Parser(StringRef Buf, const ParsedStringTable &StrTab)
- : Impl(llvm::make_unique<YAMLParserImpl>(Buf, &StrTab)) {}
+Parser::Parser(ParserFormat Format, StringRef Buf,
+ const ParsedStringTable &StrTab)
+ : Impl(formatToParserImpl(Format, Buf, StrTab)) {}
Parser::~Parser() = default;
@@ -90,7 +109,8 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(remarks::Parser, LLVMRemarkParserRef)
extern "C" LLVMRemarkParserRef LLVMRemarkParserCreateYAML(const void *Buf,
uint64_t Size) {
return wrap(
- new remarks::Parser(StringRef(static_cast<const char *>(Buf), Size)));
+ new remarks::Parser(remarks::ParserFormat::YAML,
+ StringRef(static_cast<const char *>(Buf), Size)));
}
static void handleYAMLError(remarks::YAMLParserImpl &Impl, Error E) {
OpenPOWER on IntegriCloud