From f42a6741de5eda904a7c7b02731f0b019bbe0c5c Mon Sep 17 00:00:00 2001 From: Sean Silva Date: Wed, 3 Oct 2012 21:29:18 +0000 Subject: [PATCH] tblgen: Put new TableGenMain API in place. In order to avoid rev-lock with Clang when moving to the new API, also preserve the current API temporarily and insert a shim to implement the new API in terms of the old. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165165 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/TableGen/Main.h | 8 ++++++++ lib/TableGen/Main.cpp | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/llvm/TableGen/Main.h b/include/llvm/TableGen/Main.h index deaef4a9908..663779f176c 100644 --- a/include/llvm/TableGen/Main.h +++ b/include/llvm/TableGen/Main.h @@ -21,6 +21,14 @@ class TableGenAction; /// Run the table generator, performing the specified Action on parsed records. int TableGenMain(char *argv0, TableGenAction &Action); +class RecordKeeper; +class raw_ostream; +typedef bool TableGenMainFn(raw_ostream &OS, RecordKeeper &Records); + +/// Perform the action using Records, and write output to OS. +/// \returns true on error, false otherwise +int TableGenMain(char *argv0, TableGenMainFn *MainFn); + } #endif diff --git a/lib/TableGen/Main.cpp b/lib/TableGen/Main.cpp index 7aeef563b85..83bc66f4608 100644 --- a/lib/TableGen/Main.cpp +++ b/lib/TableGen/Main.cpp @@ -22,6 +22,7 @@ #include "llvm/Support/ToolOutputFile.h" #include "llvm/Support/system_error.h" #include "llvm/TableGen/Error.h" +#include "llvm/TableGen/Main.h" #include "llvm/TableGen/Record.h" #include "llvm/TableGen/TableGenAction.h" #include @@ -47,8 +48,26 @@ namespace { cl::value_desc("directory"), cl::Prefix); } +namespace { +// XXX: this is a crutch for transitioning to the new TableGenMain API +// (with a TableGenMainFn* instead of a pointless class). +class StubTransitionalTableGenAction : public TableGenAction { + TableGenMainFn *MainFn; +public: + StubTransitionalTableGenAction(TableGenMainFn *M) : MainFn(M) {} + bool operator()(raw_ostream &OS, RecordKeeper &Records) { + return MainFn(OS, Records); + } +}; +} + namespace llvm { +int TableGenMain(char *argv0, TableGenMainFn *MainFn) { + StubTransitionalTableGenAction Action(MainFn); + return TableGenMain(argv0, Action); +} + int TableGenMain(char *argv0, TableGenAction &Action) { RecordKeeper Records; -- 2.34.1