Reduce code stink (#1818)

CRC32.cpp:
Make table initialization compile time

DSi_NAND.cpp:
Fix file close / unmount / disk close on error
~L427: Remove redundant calls, as they are immediately rendered useless by `rem` being overwritten

NDS.cpp / FreeBIOS.h:
Remove unneeded size values in header
Remove unneeded memset's as they are initialized anyway

sha1.c / sha1.h:
Fix useless warning

Wifi.cpp:
Remove unneeded includes

DSi.cpp:
Reduce ugly casts
Deduplicate code

qt_sdl/main.cpp:
silence clang switch statement warning

qt_sdl/main.h:
fix override warnings

dolphin/BitSet.h:
use msvc extensions only when appropriate, fix broken bit set count under _WIN32
This commit is contained in:
jdp_
2023-08-28 14:01:15 -04:00
committed by GitHub
parent b4aa7fafc9
commit 2a3a071216
18 changed files with 177 additions and 173 deletions

View File

@ -20,10 +20,7 @@
// http://www.codeproject.com/KB/recipes/crc32_large.aspx
u32 crctable[256];
bool tableinited = false;
u32 _reflect(u32 refl, char ch)
constexpr u32 _reflect(u32 refl, char ch)
{
u32 value = 0;
@ -37,33 +34,31 @@ u32 _reflect(u32 refl, char ch)
return value;
}
void _inittable()
constexpr auto GetCRC32Table()
{
std::array<u32, 256> Crc32Table { 0 };
u32 polynomial = 0x04C11DB7;
for (int i = 0; i < 0x100; i++)
{
crctable[i] = _reflect(i, 8) << 24;
Crc32Table[i] = _reflect(i, 8) << 24;
for (int j = 0; j < 8; j++)
crctable[i] = (crctable[i] << 1) ^ (crctable[i] & (1 << 31) ? polynomial : 0);
Crc32Table[i] = (Crc32Table[i] << 1) ^ (Crc32Table[i] & (1 << 31) ? polynomial : 0);
crctable[i] = _reflect(crctable[i], 32);
Crc32Table[i] = _reflect(Crc32Table[i], 32);
}
return Crc32Table;
}
u32 CRC32(const u8 *data, int len, u32 start)
{
if (!tableinited)
{
_inittable();
tableinited = true;
}
auto Crc32Table = GetCRC32Table();
u32 crc = start ^ 0xFFFFFFFF;
while (len--)
crc = (crc >> 8) ^ crctable[(crc & 0xFF) ^ *data++];
crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *data++];
return (crc ^ 0xFFFFFFFF);
}