]> AND Private Git Repository - loba.git/blob - parameters.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
307882b343af220a682b573935295e56583636ec
[loba.git] / parameters.cpp
1 #include <cstring>              // for strrchr()
2 #include <iostream>
3 #include <unistd.h>              // for getopt()
4 #include <xbt/log.h>
5 #include "parameters.h"
6 #include "misc.h"
7
8 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simu);
9
10 namespace param {
11
12     const char* program_name;
13
14     const char* platform_file;
15     const char* application_file;
16
17     int help_requested = 0;
18     bool version_requested = false;
19
20     int parse_args(int* argc, char* argv[])
21     {
22         program_name = strrchr(argv[0], '/');
23         program_name = (program_name ? program_name + 1 : argv[0]);
24
25         int c;
26         opterr = 0;
27         while ((c = getopt(*argc, argv, "hV")) != -1) {
28             switch (c) {
29             case 'h':
30                 help_requested++;
31                 break;
32             case 'V':
33                 version_requested = true;
34                 break;
35             case '?':
36                 WARN1("invalid option -- '%c'", optopt);
37                 break;
38             }
39         }
40         if (version_requested || help_requested)
41             return 1;
42
43         switch (*argc - optind) {
44         case 0:
45             ERROR0("missing parameter -- <plaform_file>");
46         case 1:
47             ERROR0("missing parameter -- <application_file>");
48             return 0;
49
50         default:
51             platform_file = argv[optind];
52             application_file = argv[optind + 1];
53             for (int i = optind + 2 ; i < *argc ; ++i)
54                 WARN1("unused parameter -- \"%s\"", argv[i]);
55             break;
56         }
57
58         return 1;
59     }
60     
61     void print()
62     {
63         INFO0(",----[ Simulation parameters ]");
64         INFO1("| platform_file.....: \"%s\"", platform_file);
65         INFO1("| application_file..: \"%s\"", application_file);
66         INFO0("`----");
67     }
68
69     void usage()
70     {
71         std::clog << "Usage: " << program_name << " [options] <platform_file> <application_file>\n";
72         std::clog << "    -h          print help and exit (use -hh or -hhh for extended help)\n";
73         if (help_requested < 1)
74             return;
75         std::clog << "    -V          print version and exit\n";
76     }
77
78 } // namespace param
79
80 // Local variables:
81 // mode: c++
82 // End: