Prefer swap() member function to std::swap. We were hitting the

inefficient generic std::swap for some derived types.
This commit is contained in:
ridiculousfish 2014-03-25 12:44:21 -07:00
parent a4cafaad2e
commit b520a03c57
4 changed files with 6 additions and 7 deletions

View File

@ -235,9 +235,8 @@ static int builtin_set_color(parser_t &parser, wchar_t **argv)
output_set_writer(saved_writer_func);
/* Output the collected string */
std::string local_output;
std::swap(builtin_set_color_output, local_output);
stdout_buffer.append(str2wcstring(local_output));
stdout_buffer.append(str2wcstring(builtin_set_color_output));
builtin_set_color_output.clear();
return STATUS_BUILTIN_OK;
}

View File

@ -350,7 +350,7 @@ bool plain_statement_get_expanded_command(const wcstring &src, const parse_node_
if (expand_one(cmd, EXPAND_SKIP_CMDSUBST | EXPAND_SKIP_VARIABLES | EXPAND_SKIP_JOBS))
{
/* Success, return the expanded string by reference */
std::swap(cmd, *out_cmd);
out_cmd->swap(cmd);
result = true;
}
}

View File

@ -1090,7 +1090,7 @@ bool parse_execution_context_t::determine_io_chain(const parse_node_t &statement
if (out_chain && ! errored)
{
std::swap(*out_chain, result);
out_chain->swap(result);
}
return ! errored;
}

View File

@ -687,13 +687,13 @@ void parse_ll_t::acquire_output(parse_node_tree_t *output, parse_error_list_t *e
{
if (output != NULL)
{
std::swap(*output, this->nodes);
output->swap(this->nodes);
}
this->nodes.clear();
if (errors != NULL)
{
std::swap(*errors, this->errors);
errors->swap(this->errors);
}
this->errors.clear();
this->symbol_stack.clear();