//===- GenInfo.cpp - Generator info -----------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "mlir/TableGen/GenInfo.h" #include "mlir/TableGen/GenNameParser.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ManagedStatic.h" using namespace mlir; static llvm::ManagedStatic> generatorRegistry; GenRegistration::GenRegistration(StringRef arg, StringRef description, const GenFunction &function) { generatorRegistry->emplace_back(arg, description, function); } GenNameParser::GenNameParser(llvm::cl::Option &opt) : llvm::cl::parser(opt) { for (const auto &kv : *generatorRegistry) { addLiteralOption(kv.getGenArgument(), &kv, kv.getGenDescription()); } } void GenNameParser::printOptionInfo(const llvm::cl::Option &o, size_t globalWidth) const { GenNameParser *tp = const_cast(this); llvm::array_pod_sort(tp->Values.begin(), tp->Values.end(), [](const GenNameParser::OptionInfo *vT1, const GenNameParser::OptionInfo *vT2) { return vT1->Name.compare(vT2->Name); }); using llvm::cl::parser; parser::printOptionInfo(o, globalWidth); }