diff options
Diffstat (limited to 'llvm/lib/Remarks/RemarkParser.cpp')
| -rw-r--r-- | llvm/lib/Remarks/RemarkParser.cpp | 28 |
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) { |

