#include "surf.hpp"
+#include <float.h>
#ifndef NETWORK_ROUTING_HPP_
#define NETWORK_ROUTING_HPP_
void routing_model_create( void *loopback);
+/* ************************************************************************** */
+/* ************************* GRAPH EXPORTING FUNCTIONS ********************** */
+xbt_node_t new_xbt_graph_node (xbt_graph_t graph, const char *name, xbt_dict_t nodes);
+xbt_edge_t new_xbt_graph_edge (xbt_graph_t graph, xbt_node_t s, xbt_node_t d, xbt_dict_t edges);
+
/***********
* Classes *
***********/
-class As;
+struct As;
typedef As *AsPtr;
class RoutingModelDescription;
typedef RoutingModelDescription *RoutingModelDescriptionPtr;
-class RoutingEdge;
+struct RoutingEdge;
typedef RoutingEdge *RoutingEdgePtr;
class Onelink;
void end(AsPtr as);
};*/
-class As {
+struct As {
public:
xbt_dynar_t p_indexNetworkElm;
xbt_dict_t p_bypassRoutes; /* store bypass routes */
xbt_dynar_t p_linkUpDownList;
As(){};
- ~As(){};
+ virtual ~As(){};
virtual void getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t into, double *latency)=0;
virtual xbt_dynar_t getOneLinkRoutes()=0;
virtual void parseBypassroute(sg_platf_route_cbarg_t e_route)=0;
};
-class RoutingEdge {
+struct RoutingEdge {
public:
AsPtr p_rcComponent;
e_surf_network_element_type_t p_rcType;
*/
class Onelink {
public:
+ Onelink(void *link, RoutingEdgePtr src, RoutingEdgePtr dst)
+ : p_src(src), p_dst(dst), p_link(link) {};
RoutingEdgePtr p_src;
RoutingEdgePtr p_dst;
- void *p_linkPtr;
+ void *p_link;
};
class RoutingPlatf {