XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_parse, surf,
"Logging specific to the SURF parsing module");
#undef CLEANUP
+int ETag_surfxml_include_state(void);
+
#include "simgrid_dtd.c"
char *platform_filename;
void STag_surfxml_include(void)
{
XBT_INFO("STag_surfxml_include '%s'",A_surfxml_include_file);
- xbt_dynar_push(surf_file_to_parse_stack, &surf_file_to_parse);
+ xbt_dynar_push(surf_file_to_parse_stack, &surf_file_to_parse); //save old filename
- surf_file_to_parse = surf_fopen(A_surfxml_include_file, "r");
+ surf_file_to_parse = surf_fopen(A_surfxml_include_file, "r"); // read new filename
xbt_assert((surf_file_to_parse), "Unable to open \"%s\"\n",
A_surfxml_include_file);
- xbt_dynar_push_as(surf_input_buffer_stack,YY_BUFFER_STATE,surf_input_buffer);
+ xbt_dynar_push(surf_input_buffer_stack,&surf_input_buffer);
surf_input_buffer = surf_parse__create_buffer(surf_file_to_parse, YY_BUF_SIZE);
surf_parse_push_buffer_state(surf_input_buffer);
fflush(NULL);
}
void ETag_surfxml_include(void)
+{
+// XBT_INFO("ETag_surfxml_include '%s'",A_surfxml_include_file);
+// fflush(NULL);
+// fclose(surf_file_to_parse);
+// xbt_dynar_pop(surf_file_to_parse_stack, &surf_file_to_parse); // restore old filename
+// surf_parse_pop_buffer_state();
+// xbt_dynar_pop(surf_input_buffer_stack,&surf_input_buffer);
+}
+
+/*
+ * Return 1 if tag include is opened
+ */
+int ETag_surfxml_include_state(void)
{
fflush(NULL);
+ XBT_INFO("ETag_surfxml_include_state '%s'",A_surfxml_include_file);
+ if(xbt_dynar_length(surf_input_buffer_stack)!= 0)
+ return 1;
fclose(surf_file_to_parse);
xbt_dynar_pop(surf_file_to_parse_stack, &surf_file_to_parse);
surf_parse_pop_buffer_state();
- surf_input_buffer = xbt_dynar_pop_as(surf_input_buffer_stack,YY_BUFFER_STATE);
- XBT_INFO("ETag_surfxml_include '%s'",A_surfxml_include_file);
+ xbt_dynar_pop(surf_input_buffer_stack,surf_input_buffer);
+ return 0;
}
-/*
- * This function return 0 or 1 if callbacks are empty or not.
- */
-int surf_parse_no_callbacks(void)
-{
- return xbt_dynar_is_empty(STag_surfxml_platform_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_platform_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_host_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_host_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_router_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_router_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_link_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_link_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_route_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_route_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_link_ctn_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_link_ctn_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_process_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_process_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_argument_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_argument_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_prop_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_prop_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_trace_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_trace_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_trace_connect_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_trace_connect_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_random_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_random_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_AS_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_AS_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_ASroute_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_ASroute_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_bypassRoute_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_bypassRoute_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_cluster_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_cluster_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_peer_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_peer_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_config_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_config_cb_list) &&
- xbt_dynar_is_empty(STag_surfxml_include_cb_list) &&
- xbt_dynar_is_empty(ETag_surfxml_include_cb_list);
-}
void surf_parse_init_callbacks(void)
{