diff options
author | Chris Lattner <sabre@nondot.org> | 2003-06-03 04:56:29 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-06-03 04:56:29 +0000 |
commit | bc52013e30f69655f941313c3fa1a2c18de5b7ab (patch) | |
tree | cbc075d5e95379eeed75cc213ee63791c650e3e9 /support | |
parent | dc844fa31af0dd8bb33629afa7772f474a08e2e5 (diff) | |
download | external_llvm-bc52013e30f69655f941313c3fa1a2c18de5b7ab.zip external_llvm-bc52013e30f69655f941313c3fa1a2c18de5b7ab.tar.gz external_llvm-bc52013e30f69655f941313c3fa1a2c18de5b7ab.tar.bz2 |
Make tablegen use more structured command line options
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6570 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'support')
-rw-r--r-- | support/tools/TableGen/TableGen.cpp | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/support/tools/TableGen/TableGen.cpp b/support/tools/TableGen/TableGen.cpp index 5eb5a7c..b6d1810 100644 --- a/support/tools/TableGen/TableGen.cpp +++ b/support/tools/TableGen/TableGen.cpp @@ -3,9 +3,30 @@ #include "CodeEmitterGen.h" #include <algorithm> -static cl::opt<std::string> Class("class", cl::desc("Print Enum list for this class")); -static cl::opt<bool> Parse("parse"); -static cl::opt<bool> GenEmitter("gen-emitter"); +enum ActionType { + PrintRecords, + GenEmitter, + PrintEnums, + Parse, +}; + +namespace { + cl::opt<ActionType> + Action(cl::desc("Action to perform:"), + cl::values(clEnumValN(PrintRecords, "print-records", + "Print all records to stdout"), + clEnumValN(GenEmitter, "gen-emitter", + "Generate machine code emitter"), + clEnumValN(PrintEnums, "print-enums", + "Print enum values for a class"), + clEnumValN(Parse, "parse", + "Interpret machine code (testing only)"), + 0)); + + cl::opt<std::string> + Class("class", cl::desc("Print Enum list for this class")); +} + void ParseFile(); @@ -353,20 +374,15 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv); ParseFile(); - if (Parse) { - ParseMachineCode(); - return 0; - } - - if (GenEmitter) { - CodeEmitterGen CEG(Records); - CEG.createEmitter(std::cout); - return 0; - } - - if (Class == "") { + switch (Action) { + case Parse: ParseMachineCode(); break; + case GenEmitter: + CodeEmitterGen(Records).createEmitter(std::cout); + break; + case PrintRecords: std::cout << Records; // No argument, dump all contents - } else { + break; + case PrintEnums: Record *R = Records.getClass(Class); if (R == 0) { std::cerr << "Cannot find class '" << Class << "'!\n"; @@ -381,6 +397,7 @@ int main(int argc, char **argv) { } } std::cout << "\n"; + break; } return 0; } |