diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-05-12 17:10:03 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-05-12 17:40:34 -0400 |
| commit | f7bc75ae6d626ba3b6c9253cc1c96b9898e8a80e (patch) | |
| tree | e5dc38ba45fa57669c66bd08731a59dcc5d9fca5 /Source/Core/AudioCommon/WASAPIStream.cpp | |
| parent | f91b729b61e86c0782f57a4a5539da6b4dd842b1 (diff) | |
Boot: Make BootExecutableReader's constructor take a std::vector by value
This allows avoiding two copies of the executable data being created in
the following scenario (using pseudocode):
some_function()
{
std::vector<u8> data = ...;
DolReader reader{data};
...
}
In this scenario, if we only use the data for passing it to DolReader,
then we have to perform a copy, as the constructor takes the std::vector
as a constant reference -- you cannot move from a constant reference,
and so we copy data into the DolReader, and perform another copy in the
constructor itself when assigning the data to the m_bytes member
variable. However, we can do better.
Now, the following is allowable as well:
some_function()
{
std::vector<u8> data = ...;
DolReader reader{std::move(data)};
...
}
and now we perform no copy at any point in the reader's construction, as
we just std::move the data all the way through to m_bytes.
In the case where we *do* want to keep the executable data around after
constructing the reader, then we can just pass the vector without
std::move-ing it, and we only perform a copy once (as we'll std::move
said copy into m_bytes). Therefore, we get a more flexible interface
resource-wise out of it.
Diffstat (limited to 'Source/Core/AudioCommon/WASAPIStream.cpp')
0 files changed, 0 insertions, 0 deletions
