mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
f7bc75ae6d
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. |
||
---|---|---|
.. | ||
Android | ||
Core | ||
DSPSpy | ||
DSPTool | ||
PCH | ||
UnitTests | ||
VSProps | ||
.clang-format | ||
CMakeLists.txt | ||
dolphin-emu.sln |