X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5e0b70c4585952ce9b329721b6ef17bf35cab3a1..a91f50abdce08089b633bb5496b3f0c92a4b7c2e:/src/surf/xml/surfxml_sax_cb.cpp diff --git a/src/surf/xml/surfxml_sax_cb.cpp b/src/surf/xml/surfxml_sax_cb.cpp index cbca3d7461..f747566778 100644 --- a/src/surf/xml/surfxml_sax_cb.cpp +++ b/src/surf/xml/surfxml_sax_cb.cpp @@ -377,23 +377,23 @@ void ETag_surfxml_mount() /* * Stuff relative to the tag */ -static xbt_dynar_t surf_input_buffer_stack = nullptr; -static xbt_dynar_t surf_file_to_parse_stack = nullptr; -static xbt_dynar_t surf_parsed_filename_stack = nullptr; +static std::vector surf_input_buffer_stack; +static std::vector surf_file_to_parse_stack; +static std::vector surf_parsed_filename_stack; void STag_surfxml_include() { parse_after_config(); 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_stack.push_back(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_stack.push_back(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_stack.push_back(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); @@ -421,18 +421,21 @@ int ETag_surfxml_include_state() fflush(nullptr); 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. + if (surf_input_buffer_stack.empty()) // nope, that's a true premature EOF. Let the parser die verbosely. return 0; // Yeah, we were in an Restore state and proceed. fclose(surf_file_to_parse); - xbt_dynar_pop(surf_file_to_parse_stack, &surf_file_to_parse); + surf_file_to_parse = surf_file_to_parse_stack.back(); + surf_file_to_parse_stack.pop_back(); surf_parse_pop_buffer_state(); - xbt_dynar_pop(surf_input_buffer_stack,&surf_input_buffer); + surf_input_buffer = surf_input_buffer_stack.back(); + surf_input_buffer_stack.pop_back(); // Restore the filename for error messages free(surf_parsed_filename); - xbt_dynar_pop(surf_parsed_filename_stack,&surf_parsed_filename); + surf_parsed_filename = surf_parsed_filename_stack.back(); + surf_parsed_filename_stack.pop_back(); return 1; } @@ -1005,14 +1008,6 @@ void surf_parse_open(const char *file) { xbt_assert(file, "Cannot parse the nullptr file. Bypassing the parser is strongly deprecated nowadays."); - if (!surf_input_buffer_stack) - surf_input_buffer_stack = xbt_dynar_new(sizeof(YY_BUFFER_STATE), nullptr); - if (!surf_file_to_parse_stack) - surf_file_to_parse_stack = xbt_dynar_new(sizeof(FILE *), nullptr); - - if (!surf_parsed_filename_stack) - surf_parsed_filename_stack = xbt_dynar_new(sizeof(char *), &xbt_free_ref); - surf_parsed_filename = xbt_strdup(file); char *dir = xbt_dirname(file); xbt_dynar_push(surf_path, &dir); @@ -1026,9 +1021,6 @@ void surf_parse_open(const char *file) void surf_parse_close() { - xbt_dynar_free(&surf_input_buffer_stack); - xbt_dynar_free(&surf_file_to_parse_stack); - xbt_dynar_free(&surf_parsed_filename_stack); if (surf_parsed_filename) { char *dir = nullptr; xbt_dynar_pop(surf_path, &dir);