util: Add stub unit tests for the call types in the m5 utility.
[gem5.git] / util / m5 / src / m5.cc
index 283dada3f9579f9572e3a11e7dcafd9b93d50e6c..0e86817e18ce1c2b3672abc1c5a6dd412bfb9103 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <cstdlib>
-#include <cstring>
-
 #include "args.hh"
 #include "call_type.hh"
-#include "commands.hh"
+#include "command.hh"
 #include "usage.hh"
 
 int
 main(int argc, const char *argv[])
 {
-    Args args = { argc, argv };
-
-    if (!args.argc)
-        usage();
-
-    progname = pop_arg(&args);
+    Args args(argc, argv);
 
-    const DispatchTable &dt = CallType::detect(args).getDispatch();
+    progname = args.pop("{progname}");
 
-    const char *command = pop_arg(&args);
-
-    if (!command)
+    if (!args.size())
         usage();
 
-    for (int i = 0; i < num_commands; ++i) {
-        if (strcmp(command, command_table[i].name) != 0)
-            continue;
+    CallType *ct = CallType::detect(args);
+    if (!ct)
+        usage();
 
-        command_table[i].func(dt, &args);
-        exit(0);
-    }
+    if (!Command::run(ct->getDispatch(), args))
+        usage();
 
-    usage();
+    exit(0);
 }