void surf_parse_open(const char *file) { xbt_assert(file, "Cannot parse the nullptr file. Bypassing the parser is strongly deprecated nowadays."); surf_parsed_filename = file; std::string dir = simgrid::xbt::Path(file).get_dir_name(); surf_path.push_back(dir); surf_file_to_parse = surf_fopen(file, "r"); if (surf_file_to_parse == nullptr) xbt_die("Unable to open '%s'\n", file); surf_input_buffer = surf_parse__create_buffer(surf_file_to_parse, YY_BUF_SIZE); surf_parse__switch_to_buffer(surf_input_buffer); surf_parse_lineno = 1; }
void STag_surfxml_include(void) { 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); xbt_dynar_push(surf_file_to_parse_stack, &surf_file_to_parse); //save old file descriptor surf_file_to_parse = surf_fopen(A_surfxml_include_file, "r"); // read new file descriptor xbt_assert((surf_file_to_parse), "Unable to open \"%s\"\n", A_surfxml_include_file); 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); }