]> AND Private Git Repository - loba.git/blobdiff - options.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Add automatic topology generators.
[loba.git] / options.h
index 8d89808be9ed759ddcb1398dcf794fe0046e1307..e751535bd8f0b3a3a1e9cb2ede251e57a8818103 100644 (file)
--- a/options.h
+++ b/options.h
@@ -3,20 +3,26 @@
 
 #include <string>
 #include "cost_func.h"
+#include "deployment.h"
+#include "named_object_list.h"
+#include "process.h"
 
 // Global parameters, shared by all the processes
 namespace opt {
 
+    // Global options
     extern std::string program_name;
-
-    extern std::string platform_file;
-    extern std::string deployment_file;
-
     extern int help_requested;
     extern bool version_requested;
 
+    // Simulation parameters
     extern unsigned log_rate;
 
+    // Platform and deployment
+    extern std::string platform_file;
+    extern std::string deployment_file;
+
+    // Automatic deployment
     namespace auto_depl {
         extern bool        enabled;
         extern std::string topology;
@@ -24,17 +30,28 @@ namespace opt {
         extern double      load;
     }
 
-    extern std::string topology;
-    extern double init_load;
+    // Load balancing algorithm
+    extern std::string loba_algo;
+    extern bool bookkeeping;
 
+    // Application parameters
+    extern cost_func comp_cost;
+    extern cost_func comm_cost;
     extern unsigned maxiter;
     extern bool exit_on_close;
 
-    extern bool bookkeeping;
+    // Named parameters lists
+    extern struct loba_algorithms_type:
+        public named_object_list2<process, int, char** > {
+            loba_algorithms_type();
+    } loba_algorithms;
 
-    extern cost_func comp_cost;
-    extern cost_func comm_cost;
+    extern struct topologies_type:
+        public named_object_list<deployment_generator> {
+            topologies_type();
+    } topologies;
 
+    // Utility functions
     int parse_args(int* argc, char* argv[]);
     void print();
     void usage();