+
+/* **************************** Public C interface *************************** */
+
+const char* sg_link_get_name(const_sg_link_t link)
+{
+ return link->get_cname();
+}
+
+sg_link_t sg_link_by_name(const char* name)
+{
+ return simgrid::s4u::Link::by_name(name);
+}
+
+int sg_link_is_shared(const_sg_link_t link)
+{
+ return link->is_shared();
+}
+
+double sg_link_get_bandwidth(const_sg_link_t link)
+{
+ return link->get_bandwidth();
+}
+
+void sg_link_set_bandwidth(sg_link_t link, double value)
+{
+ link->set_bandwidth(value);
+}
+
+double sg_link_get_latency(const_sg_link_t link)
+{
+ return link->get_latency();
+}
+
+void sg_link_set_latency(sg_link_t link, double value)
+{
+ link->set_latency(value);
+}
+
+void* sg_link_get_data(const_sg_link_t link)
+{
+ return link->get_data<void>();
+}
+
+void sg_link_set_data(sg_link_t link, void* data)
+{
+ link->set_data(data);
+}
+
+size_t sg_link_count()
+{
+ return simgrid::s4u::Engine::get_instance()->get_link_count();
+}
+
+sg_link_t* sg_link_list()
+{
+ std::vector<simgrid::s4u::Link*> links = simgrid::s4u::Engine::get_instance()->get_all_links();
+
+ auto* res = xbt_new(sg_link_t, links.size());
+ std::copy(begin(links), end(links), res);
+
+ return res;
+}