+
+void sg_platf_open() { /* Do nothing: just for symmetry of user code */ }
+
+void sg_platf_close() {
+ unsigned int iterator;
+ void_f_void_t fun;
+ xbt_dynar_foreach(sg_platf_postparse_cb_list, iterator, fun) {
+ (*fun) ();
+ }
+}
+
+void sg_platf_new_AS_open(const char *id, const char *routing) {
+ unsigned int iterator;
+ sg_platf_ASopen_cb_t fun;
+ xbt_dynar_foreach(sg_platf_ASopen_cb_list, iterator, fun) {
+ (*fun) (id,routing);
+ }
+}
+
+void sg_platf_new_AS_close() {
+ unsigned int iterator;
+ void_f_void_t fun;
+ xbt_dynar_foreach(sg_platf_ASclose_cb_list, iterator, fun) {
+ (*fun) ();
+ }
+}
+
+
+void sg_platf_host_add_cb(sg_platf_host_cb_t fct) {
+ xbt_dynar_push(sg_platf_host_cb_list, &fct);
+}
+void sg_platf_link_add_cb(sg_platf_link_cb_t fct) {
+ xbt_dynar_push(sg_platf_link_cb_list, &fct);
+}
+void sg_platf_router_add_cb(sg_platf_router_cb_t fct) {
+ xbt_dynar_push(sg_platf_router_cb_list, &fct);
+}
+void sg_platf_peer_add_cb(sg_platf_peer_cb_t fct) {
+ xbt_dynar_push(sg_platf_peer_cb_list, &fct);
+}
+void sg_platf_postparse_add_cb(void_f_void_t fct) {
+ xbt_dynar_push(sg_platf_postparse_cb_list, &fct);
+}
+void sg_platf_ASopen_add_cb(sg_platf_ASopen_cb_t fct) {
+ xbt_dynar_push(sg_platf_ASopen_cb_list, &fct);
+}
+void sg_platf_ASclose_add_cb(void_f_void_t fct) {
+ xbt_dynar_push(sg_platf_ASclose_cb_list, &fct);
+}
+