forked from OSchip/llvm-project
60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
//===-- The main header generation class ------------------------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIBC_UTILS_HDRGEN_GENERATOR_H
|
|
#define LLVM_LIBC_UTILS_HDRGEN_GENERATOR_H
|
|
|
|
#include "Command.h"
|
|
|
|
#include "llvm/ADT/SmallVector.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
namespace llvm {
|
|
|
|
class raw_ostream;
|
|
class RecordKeeper;
|
|
|
|
} // namespace llvm
|
|
|
|
namespace llvm_libc {
|
|
|
|
class Command;
|
|
|
|
class Generator {
|
|
llvm::StringRef HeaderDefFile;
|
|
const std::vector<std::string> &EntrypointNameList;
|
|
llvm::StringRef StdHeader;
|
|
std::unordered_map<std::string, std::string> &ArgMap;
|
|
|
|
std::unique_ptr<Command> IncludeFileCmd;
|
|
std::unique_ptr<Command> PublicAPICmd;
|
|
|
|
Command *getCommandHandler(llvm::StringRef CommandName);
|
|
|
|
void parseCommandArgs(llvm::StringRef ArgStr, ArgVector &Args);
|
|
|
|
void printError(llvm::StringRef Msg);
|
|
|
|
public:
|
|
Generator(const std::string &DefFile, const std::vector<std::string> &EN,
|
|
const std::string &Header,
|
|
std::unordered_map<std::string, std::string> &Map)
|
|
: HeaderDefFile(DefFile), EntrypointNameList(EN), StdHeader(Header),
|
|
ArgMap(Map) {}
|
|
|
|
void generate(llvm::raw_ostream &OS, llvm::RecordKeeper &Records);
|
|
};
|
|
|
|
} // namespace llvm_libc
|
|
|
|
#endif // LLVM_LIBC_UTILS_HDRGEN_GENERATOR_H
|