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.

llvm-svn: 165165
This commit is contained in:
Sean Silva 2012-10-03 21:29:18 +00:00
parent 1c72ca83da
commit 60e882ca52
2 changed files with 27 additions and 0 deletions

View File

@ -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

View File

@ -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 <algorithm>
@ -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;