/*
- * All the callback lists that can be overiden anywhere.
+ * All the callback lists that can be overridden anywhere.
* (this list should probably be reduced to the bare minimum to allow the models to work)
*/
xbt_dynar_t ETag_surfxml_bypassRoute_cb_list = NULL;
xbt_dynar_t STag_surfxml_include_cb_list = NULL;
xbt_dynar_t ETag_surfxml_include_cb_list = NULL;
+
xbt_dynar_t STag_surfxml_storage_cb_list = NULL;
xbt_dynar_t ETag_surfxml_storage_cb_list = NULL;
+xbt_dynar_t STag_surfxml_storage_type_cb_list = NULL;
+xbt_dynar_t ETag_surfxml_storage_type_cb_list = NULL;
+xbt_dynar_t STag_surfxml_mount_cb_list = NULL;
+xbt_dynar_t ETag_surfxml_mount_cb_list = NULL;
+xbt_dynar_t STag_surfxml_mstorage_cb_list = NULL;
+xbt_dynar_t ETag_surfxml_mstorage_cb_list = NULL;
/* The default current property receiver. Setup in the corresponding opening callbacks. */
xbt_dict_t current_property_set = NULL;
static void add_randomness(void);
/*
- * Stuff relative to the <storage> tag
+ * Stuff relative to storage
*/
void STag_surfxml_storage(void)
{
memset(&storage,0,sizeof(storage));
storage.id = A_surfxml_storage_id;
- storage.model = A_surfxml_storage_model;
- storage.properties = current_property_set;
- storage.content = A_surfxml_storage_content;
+ storage.type_id = A_surfxml_storage_typeId;
+ sg_platf_new_storage(&storage);
+}
+void STag_surfxml_storage_type(void)
+{
+ XBT_DEBUG("STag_surfxml_storage_type");
+ xbt_assert(current_property_set == NULL, "Someone forgot to reset the property set to NULL in its closing tag (or XML malformed)");
+}
+void ETag_surfxml_storage_type(void)
+{
+ s_sg_platf_storage_type_cbarg_t storage_type;
+ memset(&storage_type,0,sizeof(storage_type));
+
+ storage_type.content = A_surfxml_storage_type_content;
+ storage_type.id = A_surfxml_storage_type_id;
+ storage_type.model = A_surfxml_storage_type_model;
+ storage_type.properties = current_property_set;
+ sg_platf_new_storage_type(&storage_type);
current_property_set = NULL;
+}
+void STag_surfxml_mstorage(void)
+{
+ XBT_DEBUG("STag_surfxml_mstorage");
+}
+void ETag_surfxml_mstorage(void)
+{
+ s_sg_platf_mstorage_cbarg_t mstorage;
+ memset(&mstorage,0,sizeof(mstorage));
- sg_platf_new_storage(&storage);
+ mstorage.name = A_surfxml_mstorage_name;
+ mstorage.type_id = A_surfxml_mstorage_typeId;
+ sg_platf_new_mstorage(&mstorage);
+}
+void STag_surfxml_mount(void)
+{
+ XBT_DEBUG("STag_surfxml_mount");
+}
+void ETag_surfxml_mount(void)
+{
+ s_sg_platf_mount_cbarg_t mount;
+ memset(&mount,0,sizeof(mount));
+
+ mount.name = A_surfxml_mount_name;
+ mount.id = A_surfxml_mount_id;
+ sg_platf_new_mount(&mount);
}
/*
void STag_surfxml_include(void)
{
- XBT_INFO("STag_surfxml_include '%s'",A_surfxml_include_file);
+ XBT_DEBUG("STag_surfxml_include '%s'",A_surfxml_include_file);
xbt_dynar_push(surf_parsed_filename_stack,&surf_parsed_filename); // save old file name
surf_parsed_filename = xbt_strdup(A_surfxml_include_file);
int ETag_surfxml_include_state(void)
{
fflush(NULL);
- XBT_INFO("ETag_surfxml_include_state '%s'",A_surfxml_include_file);
+ XBT_DEBUG("ETag_surfxml_include_state '%s'",A_surfxml_include_file);
- if(!xbt_dynar_is_empty(surf_input_buffer_stack)) // nope, that's a true premature EOF. Let the parser die verbosely.
- return 1;
+ if(xbt_dynar_is_empty(surf_input_buffer_stack)) // nope, that's a true premature EOF. Let the parser die verbosely.
+ return 0;
// Yeah, we were in an <include> Restore state and proceed.
fclose(surf_file_to_parse);
xbt_dynar_pop(surf_file_to_parse_stack, &surf_file_to_parse);
surf_parse_pop_buffer_state();
- xbt_dynar_pop(surf_input_buffer_stack,surf_input_buffer);
+ xbt_dynar_pop(surf_input_buffer_stack,&surf_input_buffer);
// Restore the filename for error messages
free(surf_parsed_filename);
xbt_dynar_pop(surf_parsed_filename_stack,&surf_parsed_filename);
- return 0;
+ return 1;
}
xbt_dynar_new(sizeof(void_f_void_t), NULL);
ETag_surfxml_include_cb_list =
xbt_dynar_new(sizeof(void_f_void_t), NULL);
- STag_surfxml_storage_cb_list =
- xbt_dynar_new(sizeof(void_f_void_t), NULL);
- ETag_surfxml_storage_cb_list =
- xbt_dynar_new(sizeof(void_f_void_t), NULL);
+
+ STag_surfxml_storage_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ ETag_surfxml_storage_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ STag_surfxml_storage_type_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ ETag_surfxml_storage_type_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ STag_surfxml_mount_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ ETag_surfxml_mount_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ STag_surfxml_mstorage_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
+ ETag_surfxml_mstorage_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL);
}
void surf_parse_reset_callbacks(void)
xbt_dynar_free(&ETag_surfxml_peer_cb_list);
xbt_dynar_free(&STag_surfxml_include_cb_list);
xbt_dynar_free(&ETag_surfxml_include_cb_list);
+
xbt_dynar_free(&STag_surfxml_storage_cb_list);
xbt_dynar_free(&ETag_surfxml_storage_cb_list);
+ xbt_dynar_free(&STag_surfxml_mstorage_cb_list);
+ xbt_dynar_free(&ETag_surfxml_mstorage_cb_list);
+ xbt_dynar_free(&STag_surfxml_mount_cb_list);
+ xbt_dynar_free(&ETag_surfxml_mount_cb_list);
+ xbt_dynar_free(&STag_surfxml_storage_type_cb_list);
+ xbt_dynar_free(&ETag_surfxml_storage_type_cb_list);
}
/* Stag and Etag parse functions */
if (!surf_file_to_parse_stack)
surf_file_to_parse_stack = xbt_dynar_new(sizeof(FILE *), NULL);
- if (!surf_file_to_parse_stack)
- surf_parsed_filename_stack = xbt_dynar_new(sizeof(FILE *), xbt_free_f);
+ if (!surf_parsed_filename_stack)
+ surf_parsed_filename_stack = xbt_dynar_new(sizeof(char *), &xbt_free_ref);
surf_parsed_filename = xbt_strdup(file);
surf_file_to_parse = surf_fopen(file, "r");