1349cc55cSDimitry Andric //===- GOFFAsmParser.cpp - GOFF Assembly Parser ---------------------------===// 2349cc55cSDimitry Andric // 3349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6349cc55cSDimitry Andric // 7349cc55cSDimitry Andric //===----------------------------------------------------------------------===// 8349cc55cSDimitry Andric 9349cc55cSDimitry Andric #include "llvm/MC/MCParser/MCAsmParserExtension.h" 10349cc55cSDimitry Andric 11349cc55cSDimitry Andric using namespace llvm; 12349cc55cSDimitry Andric 13349cc55cSDimitry Andric namespace { 14349cc55cSDimitry Andric 15349cc55cSDimitry Andric class GOFFAsmParser : public MCAsmParserExtension { 16349cc55cSDimitry Andric template <bool (GOFFAsmParser::*HandlerMethod)(StringRef, SMLoc)> addDirectiveHandler(StringRef Directive)17349cc55cSDimitry Andric void addDirectiveHandler(StringRef Directive) { 18349cc55cSDimitry Andric MCAsmParser::ExtensionDirectiveHandler Handler = 19349cc55cSDimitry Andric std::make_pair(this, HandleDirective<GOFFAsmParser, HandlerMethod>); 20349cc55cSDimitry Andric 21349cc55cSDimitry Andric getParser().addDirectiveHandler(Directive, Handler); 22349cc55cSDimitry Andric } 23349cc55cSDimitry Andric 24349cc55cSDimitry Andric public: 25*81ad6265SDimitry Andric GOFFAsmParser() = default; 26349cc55cSDimitry Andric Initialize(MCAsmParser & Parser)27349cc55cSDimitry Andric void Initialize(MCAsmParser &Parser) override { 28349cc55cSDimitry Andric // Call the base implementation. 29349cc55cSDimitry Andric this->MCAsmParserExtension::Initialize(Parser); 30349cc55cSDimitry Andric } 31349cc55cSDimitry Andric }; 32349cc55cSDimitry Andric 33349cc55cSDimitry Andric } // namespace 34349cc55cSDimitry Andric 35349cc55cSDimitry Andric namespace llvm { 36349cc55cSDimitry Andric createGOFFAsmParser()37349cc55cSDimitry AndricMCAsmParserExtension *createGOFFAsmParser() { return new GOFFAsmParser; } 38349cc55cSDimitry Andric 39349cc55cSDimitry Andric } // namespace llvm 40