<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/Common/NandPaths.cpp, branch master</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>WiiSaveBanner: fall back to $userdir/Load/WiiBanners</title>
<updated>2025-07-04T22:15:50+00:00</updated>
<author>
<name>Tillmann Karras</name>
<email>tilkax@gmail.com</email>
</author>
<published>2025-06-15T10:13:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=fe6fd2279c195517094538fff8667332049823ad'/>
<id>fe6fd2279c195517094538fff8667332049823ad</id>
<content type='text'>
Unlike custom banners which work as an override, this mechanism works as
a fallback. The use case is if you have games you don't really play but
want to keep around for testing purposes without filling up your NAND
with lots of saves. For ease of use, the directory structure is the same
but only title/$title_hi/$title_lo/data/banner.bin files are
relevant.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unlike custom banners which work as an override, this mechanism works as
a fallback. The use case is if you have games you don't really play but
want to keep around for testing purposes without filling up your NAND
with lots of saves. For ease of use, the directory structure is the same
but only title/$title_hi/$title_lo/data/banner.bin files are
relevant.
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify `std::find` with `Common::Contains`</title>
<updated>2025-01-01T17:52:03+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-21T05:17:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=110d32729ecbe5b19df9b2cc76de630334410589'/>
<id>110d32729ecbe5b19df9b2cc76de630334410589</id>
<content type='text'>
In NandPaths.cpp, the `std::initializer_list&lt;char&gt;` of illegal characters has been turned into a `char[]` (similar to the one in GameList.cpp).

The reverse iteration in ResourcePack.cpp seemed to provide no benefits, and doing without it it seemed to have no ill effects.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In NandPaths.cpp, the `std::initializer_list&lt;char&gt;` of illegal characters has been turned into a `char[]` (similar to the one in GameList.cpp).

The reverse iteration in ResourcePack.cpp seemed to provide no benefits, and doing without it it seemed to have no ill effects.
</pre>
</div>
</content>
</entry>
<entry>
<title>Modernize `std::none_of` with ranges</title>
<updated>2024-12-16T03:54:17+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-30T22:05:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=2b0cd16c8c266bc1e298e49d4009eab8c9c23f99'/>
<id>2b0cd16c8c266bc1e298e49d4009eab8c9c23f99</id>
<content type='text'>
In JitRegCache.cpp, the lambda predicate were replaced by a pointer to member function because ranges algorithms are able to invoke those.

In ConvertDialog.cpp, the `std::mem_fn` helper was removed because ranges algorithms are able to handle pointers to member functions as predicates.

In BoundingBox.cpp, the lambda predicate was returning the bool element unchanged, so `std::identity` was a better fit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In JitRegCache.cpp, the lambda predicate were replaced by a pointer to member function because ranges algorithms are able to invoke those.

In ConvertDialog.cpp, the `std::mem_fn` helper was removed because ranges algorithms are able to handle pointers to member functions as predicates.

In BoundingBox.cpp, the lambda predicate was returning the bool element unchanged, so `std::identity` was a better fit.
</pre>
</div>
</content>
</entry>
<entry>
<title>Modernize `std::all_of` with ranges</title>
<updated>2024-12-16T03:50:34+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-29T18:43:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=860e6cf5cb7d96499aecf6f6067783bdb71c29ad'/>
<id>860e6cf5cb7d96499aecf6f6067783bdb71c29ad</id>
<content type='text'>
In DITSpecification.cpp, MaterialAsset.cpp, and ShaderAsset.cpp, lambda predicates were replaced by pointers to member functions because ranges algorithms are able invoke those.

In NetPlayClient.cpp, the non-trivial `NetPlay::Player` elements were being passed by value in `NetPlayClient::DoAllPlayersHaveGame()`. This has been fixed.

In WIABlob.cpp, the second example's predicate was returning the `std::optional` by value instead of implicitly converting it to a bool. This has been fixed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In DITSpecification.cpp, MaterialAsset.cpp, and ShaderAsset.cpp, lambda predicates were replaced by pointers to member functions because ranges algorithms are able invoke those.

In NetPlayClient.cpp, the non-trivial `NetPlay::Player` elements were being passed by value in `NetPlayClient::DoAllPlayersHaveGame()`. This has been fixed.

In WIABlob.cpp, the second example's predicate was returning the `std::optional` by value instead of implicitly converting it to a bool. This has been fixed.
</pre>
</div>
</content>
</entry>
<entry>
<title>StringUtil: Remove `JoinStrings`</title>
<updated>2024-09-23T04:09:36+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-22T07:24:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5f906736863f35a7018aaa11a7cac408229c21cf'/>
<id>5f906736863f35a7018aaa11a7cac408229c21cf</id>
<content type='text'>
With 12 uses of `JoinStrings` in the codebase vs 36 uses of `fmt::join`, fmtlib's range adapter for string concatenation with delimiters is clearly the preferred option.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With 12 uses of `JoinStrings` in the codebase vs 36 uses of `fmt::join`, fmtlib's range adapter for string concatenation with delimiters is clearly the preferred option.
</pre>
</div>
</content>
</entry>
<entry>
<title>NandPaths: Use initializer_list instead of unordered_set</title>
<updated>2023-08-12T21:00:41+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2023-08-12T20:55:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=9ad0d9ca6adbe94c9f60b85042789432950395ce'/>
<id>9ad0d9ca6adbe94c9f60b85042789432950395ce</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>NandPaths: Resolve Android tautological comparison warning</title>
<updated>2023-08-12T21:00:41+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2023-08-12T19:53:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=9955a06dbd7effb451a67e09720222fac8ba9601'/>
<id>9955a06dbd7effb451a67e09720222fac8ba9601</id>
<content type='text'>
Android interprets char as unsigned char, so comparing with 0 triggers a
tautological-unsigned-char-zero-compare warning.

Casting c to an unsigned char and removing the comparison with 0
resolves the warning while needing one less comparison on all platforms.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Android interprets char as unsigned char, so comparing with 0 triggers a
tautological-unsigned-char-zero-compare warning.

Casting c to an unsigned char and removing the comparison with 0
resolves the warning while needing one less comparison on all platforms.
</pre>
</div>
</content>
</entry>
<entry>
<title>Kill AsciiToHex</title>
<updated>2023-06-22T05:06:50+00:00</updated>
<author>
<name>get</name>
<email>45425365+Minty-Meeo@users.noreply.github.com</email>
</author>
<published>2023-06-10T12:56:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=445bf8d2c69bf176ed1b7899c814fc9354058b0e'/>
<id>445bf8d2c69bf176ed1b7899c814fc9354058b0e</id>
<content type='text'>
Now superseded by Common::FromChars
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now superseded by Common::FromChars
</pre>
</div>
</content>
</entry>
<entry>
<title>Common: Convert FromWhichRoot to enum class</title>
<updated>2023-06-13T20:25:22+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2023-06-13T20:22:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=7ff7c9e84fa485503c39be22a3562cebb4d3d42a'/>
<id>7ff7c9e84fa485503c39be22a3562cebb4d3d42a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Common: Replace StringBeginsWith/StringEndsWith with std equivalents</title>
<updated>2023-01-24T19:58:20+00:00</updated>
<author>
<name>Lioncash</name>
<email>mai.iam2048@gmail.com</email>
</author>
<published>2023-01-24T19:25:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e5b91f00b0688d5cba6870da6d6ad3300097b07f'/>
<id>e5b91f00b0688d5cba6870da6d6ad3300097b07f</id>
<content type='text'>
Obsoletes these functions in favor of the standard member functions
added in C++20.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Obsoletes these functions in favor of the standard member functions
added in C++20.
</pre>
</div>
</content>
</entry>
</feed>
