routing_component_t model_dijkstra_both_create(int cached)
{
- routing_component_dijkstra_t new_component =
- xbt_new0(s_routing_component_dijkstra_t, 1);
- new_component->generic_routing.set_processing_unit =
- generic_set_processing_unit;
- new_component->generic_routing.set_autonomous_system =
- generic_set_autonomous_system;
+ routing_component_dijkstra_t new_component = (routing_component_dijkstra_t)
+ routmod_generic_create(sizeof(s_routing_component_dijkstra_t));
+
new_component->generic_routing.set_route = model_dijkstra_both_set_route;
new_component->generic_routing.set_ASroute = model_dijkstra_both_set_route;
- new_component->generic_routing.set_bypassroute = generic_set_bypassroute;
new_component->generic_routing.get_route = dijkstra_get_route;
- new_component->generic_routing.get_latency = generic_get_link_latency;
new_component->generic_routing.get_onelink_routes =
dijkstra_get_onelink_routes;
- new_component->generic_routing.get_bypass_route =
- generic_get_bypassroute;
new_component->generic_routing.finalize = dijkstra_finalize;
new_component->cached = cached;
- new_component->generic_routing.to_index = xbt_dict_new();
- new_component->generic_routing.bypassRoutes = xbt_dict_new();
- new_component->generic_routing.get_network_element_type = get_network_element_type;
+
return (routing_component_t)new_component;
}
routing_component_t model_floyd_create(void)
{
- routing_component_floyd_t new_component =
- xbt_new0(s_routing_component_floyd_t, 1);
- new_component->generic_routing.set_processing_unit =
- generic_set_processing_unit;
- new_component->generic_routing.set_autonomous_system =
- generic_set_autonomous_system;
+ routing_component_floyd_t new_component = (routing_component_floyd_t)routmod_generic_create(sizeof(s_routing_component_floyd_t));
new_component->generic_routing.set_route = model_floyd_set_route;
new_component->generic_routing.set_ASroute = model_floyd_set_route;
- new_component->generic_routing.set_bypassroute = generic_set_bypassroute;
new_component->generic_routing.get_route = floyd_get_route;
- new_component->generic_routing.get_latency = generic_get_link_latency;
new_component->generic_routing.get_onelink_routes =
floyd_get_onelink_routes;
- new_component->generic_routing.get_bypass_route =
- generic_get_bypassroute;
new_component->generic_routing.finalize = floyd_finalize;
- new_component->generic_routing.to_index = xbt_dict_new();
- new_component->generic_routing.bypassRoutes = xbt_dict_new();
- new_component->generic_routing.get_network_element_type = get_network_element_type;
return (routing_component_t)new_component;
}
routing_component_t model_full_create(void)
{
- routing_component_full_t new_component =
- xbt_new0(s_routing_component_full_t, 1);
- new_component->generic_routing.set_processing_unit =
- generic_set_processing_unit;
- new_component->generic_routing.set_autonomous_system =
- generic_set_autonomous_system;
+ routing_component_full_t new_component = (routing_component_full_t)
+ routmod_generic_create(sizeof(s_routing_component_full_t));
+
new_component->generic_routing.set_route = model_full_set_route;
new_component->generic_routing.set_ASroute = model_full_set_route;
- new_component->generic_routing.set_bypassroute = generic_set_bypassroute;
new_component->generic_routing.get_route = full_get_route;
- new_component->generic_routing.get_latency = generic_get_link_latency;
new_component->generic_routing.get_onelink_routes =
full_get_onelink_routes;
- new_component->generic_routing.get_bypass_route =
- generic_get_bypassroute;
new_component->generic_routing.finalize = full_finalize;
- new_component->generic_routing.to_index = xbt_dict_new();
- new_component->generic_routing.bypassRoutes = xbt_dict_new();
- new_component->generic_routing.get_network_element_type = get_network_element_type;
+
return (routing_component_t) new_component;
}
extern routing_component_t current_routing;
+routing_component_t routmod_generic_create(size_t childsize) {
+ routing_component_t new_component = xbt_malloc0(childsize);
+
+ new_component->set_processing_unit = generic_set_processing_unit;
+ new_component->set_autonomous_system = generic_set_autonomous_system;
+ new_component->set_route = NULL;
+ new_component->set_ASroute = NULL;
+ new_component->set_bypassroute = generic_set_bypassroute;
+ new_component->get_route = NULL;
+ new_component->get_latency = generic_get_link_latency;
+ new_component->get_onelink_routes = NULL;
+ new_component->get_bypass_route =
+ generic_get_bypassroute;
+ new_component->finalize = NULL;
+ new_component->to_index = xbt_dict_new();
+ new_component->bypassRoutes = xbt_dict_new();
+ new_component->get_network_element_type = get_network_element_type;
+
+ return new_component;
+}
+
void generic_set_processing_unit(routing_component_t rc, const char *name)
{
/* ************************************************************************** */
/* ***************** GENERIC PARSE FUNCTIONS (declarations) ***************** */
+routing_component_t routmod_generic_create(size_t childsize);
void generic_set_processing_unit(routing_component_t rc,
const char *name);
}
/* Creation routing model functions */
-routing_component_t model_rulebased_create(void)
-{
- routing_component_rulebased_t new_component =
- xbt_new0(s_routing_component_rulebased_t, 1);
+routing_component_t model_rulebased_create(void) {
+
+ routing_component_rulebased_t new_component = (routing_component_rulebased_t)
+ routmod_generic_create(sizeof(s_routing_component_rulebased_t));
+
new_component->generic_routing.set_processing_unit =
model_rulebased_set_processing_unit;
new_component->generic_routing.set_autonomous_system =
new_component->generic_routing.set_bypassroute = model_rulebased_set_bypassroute;
new_component->generic_routing.get_onelink_routes = rulebased_get_onelink_routes;
new_component->generic_routing.get_route = rulebased_get_route;
- new_component->generic_routing.get_latency = generic_get_link_latency;
new_component->generic_routing.get_bypass_route = rulebased_get_bypass_route;
new_component->generic_routing.finalize = rulebased_finalize;
- new_component->generic_routing.get_network_element_type = get_network_element_type;
/* initialization of internal structures */
new_component->dict_processing_units = xbt_dict_new();
new_component->dict_autonomous_systems = xbt_dict_new();
new_component->list_ASroute =
xbt_dynar_new(sizeof(rule_route_extended_t),
&rule_route_extended_free);
+
return (routing_component_t) new_component;
}