-typedef struct {
- const char* id;
- xbt_dynar_t speed_peak;
- int pstate;
- int core_amount;
- tmgr_trace_t speed_trace;
- tmgr_trace_t state_trace;
- const char* coord;
- xbt_dict_t properties;
-} s_sg_platf_host_cbarg_t, *sg_platf_host_cbarg_t;
-
-#define SG_PLATF_HOST_INITIALIZER { \
- NULL, 0, 1, 1, NULL, NULL, NULL, NULL \
-}
-
-typedef struct {
- const char* id;
- const char* link_up;
- const char* link_down;
-} s_sg_platf_host_link_cbarg_t, *sg_platf_host_link_cbarg_t;
-
-#define SG_PLATF_HOST_LINK_INITIALIZER {NULL,NULL,NULL}
-
-typedef struct {
- const char* id;
- const char* coord;
-} s_sg_platf_router_cbarg_t, *sg_platf_router_cbarg_t;
-
-#define SG_PLATF_ROUTER_INITIALIZER {NULL,NULL}
-
-typedef struct {
- const char* id;
- double bandwidth;
- tmgr_trace_t bandwidth_trace;
- double latency;
- tmgr_trace_t latency_trace;
- tmgr_trace_t state_trace;
- e_surf_link_sharing_policy_t policy;
- xbt_dict_t properties;
-} s_sg_platf_link_cbarg_t, *sg_platf_link_cbarg_t;
-
-#define SG_PLATF_LINK_INITIALIZER {\
- NULL, 0., NULL, 0., NULL, NULL, SURF_LINK_SHARED, NULL \
-}
-
-typedef struct s_sg_platf_peer_cbarg *sg_platf_peer_cbarg_t;
-typedef struct s_sg_platf_peer_cbarg {
- const char* id;
+struct s_sg_platf_host_cbarg_t {
+ const char* id = nullptr;
+ std::vector<double> speed_per_pstate;
+ int pstate = 0;
+ int core_amount = 0;
+ tmgr_trace_t speed_trace = nullptr;
+ tmgr_trace_t state_trace = nullptr;
+ const char* coord = nullptr;
+ std::map<std::string, std::string>* properties = nullptr;
+};
+typedef s_sg_platf_host_cbarg_t* sg_platf_host_cbarg_t;
+
+class HostLinkCreationArgs {
+public:
+ std::string id;
+ std::string link_up;
+ std::string link_down;
+};
+
+class LinkCreationArgs {
+public:
+ std::string id;
+ double bandwidth = 0;
+ tmgr_trace_t bandwidth_trace = nullptr;
+ double latency = 0;
+ tmgr_trace_t latency_trace = nullptr;
+ tmgr_trace_t state_trace = nullptr;
+ e_surf_link_sharing_policy_t policy = SURF_LINK_FATPIPE;
+ std::map<std::string, std::string>* properties = nullptr;
+};
+
+class PeerCreationArgs {
+public:
+ std::string id;