Batch #850 by ragnarok-clanker: 0 byte-identical, 10 confirmed by peer review. - fn_00142 CRC32::CRC32: logic confirmed by peer review - fn_00143 CRC32::~CRC32: logic confirmed by peer review - fn_00144 CRC32::Update: logic confirmed by peer review - fn_00145 CRC32::UpdateFile: logic confirmed by peer review - fn_00146 CRC32::Calculate: logic confirmed by peer review - fn_00147 CRC32::Calculate: logic confirmed by peer review - fn_00148 CRC32::CalculateLowercase: logic confirmed by peer review - fn_00149 CRC32::CalculateLowercase: logic confirmed by peer review - fn_00150 CRC32::Calculate: logic confirmed by peer review - fn_00151 CRC32::CalculateFile: logic confirmed by peer review Reviewed-by: ragnarok-clanker Adds to the build: Source/Utility/CRC32.cpp
36 lines
952 B
C++
36 lines
952 B
C++
#ifndef RAGNAROK_SOURCE_UTILITY_CRC32_H
|
|
#define RAGNAROK_SOURCE_UTILITY_CRC32_H
|
|
|
|
#include <cstddef>
|
|
#include <windows.h>
|
|
|
|
class CRC32 {
|
|
public:
|
|
enum Error : DWORD {
|
|
InvalidArgument = 1,
|
|
FileOpenFailed = 2,
|
|
FileReadFailed = 3,
|
|
FileSeekFailed = 4
|
|
};
|
|
|
|
/* 0000 */ DWORD m_table[256];
|
|
/* 0400 */ DWORD m_error;
|
|
|
|
CRC32();
|
|
~CRC32();
|
|
|
|
bool Update(const BYTE* data, int length, DWORD* checksum);
|
|
bool UpdateFile(const WCHAR* filename, LONG offset, DWORD length, DWORD* checksum);
|
|
DWORD Calculate(const char* text);
|
|
DWORD Calculate(const WCHAR* text);
|
|
DWORD CalculateLowercase(const char* text);
|
|
DWORD CalculateLowercase(const WCHAR* text);
|
|
bool Calculate(const BYTE* data, int length, DWORD* checksum);
|
|
bool CalculateFile(const WCHAR* filename, DWORD* checksum);
|
|
};
|
|
|
|
static_assert(offsetof(CRC32, m_table) == 0x0000);
|
|
static_assert(offsetof(CRC32, m_error) == 0x0400);
|
|
static_assert(sizeof(CRC32) == 0x0404);
|
|
|
|
#endif
|