annotate SDL3/SDL_test_crc32.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * CRC32 functions of SDL test framework.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * This code is a part of the SDL test library, not the main SDL library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 Implements CRC32 calculations (default output is Perl String::CRC32 compatible).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 #ifndef SDL_test_crc32_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #define SDL_test_crc32_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 /* ------------ Definitions --------- */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 /* Definition shared by all CRC routines */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 #ifndef CrcUint32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 #define CrcUint32 unsigned int
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 #ifndef CrcUint8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 #define CrcUint8 unsigned char
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 #ifdef ORIGINAL_METHOD
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 #define CRC32_POLY 0x04c11db7 /* AUTODIN II, Ethernet, & FDDI */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 #define CRC32_POLY 0xEDB88320 /* Perl String::CRC32 compatible */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 * Data structure for CRC32 (checksum) computation
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 typedef struct SDLTest_Crc32Context {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 CrcUint32 crc32_table[256]; /* CRC table */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 } SDLTest_Crc32Context;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 /* ---------- Function Prototypes ------------- */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 * Initialize the CRC context
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 * Note: The function initializes the crc table required for all crc calculations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 * \param crcContext pointer to context variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 * \returns true on success or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 bool SDLCALL SDLTest_Crc32Init(SDLTest_Crc32Context *crcContext);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * calculate a crc32 from a data block
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * \param crcContext pointer to context variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 * \param inBuf input buffer to checksum
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 * \param inLen length of input buffer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 * \param crc32 pointer to Uint32 to store the final CRC into
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 * \returns true on success or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 bool SDLCALL SDLTest_Crc32Calc(SDLTest_Crc32Context *crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 /* Same routine broken down into three steps */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 bool SDLCALL SDLTest_Crc32CalcStart(SDLTest_Crc32Context *crcContext, CrcUint32 *crc32);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 bool SDLCALL SDLTest_Crc32CalcEnd(SDLTest_Crc32Context *crcContext, CrcUint32 *crc32);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 bool SDLCALL SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context *crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 * clean up CRC context
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * \param crcContext pointer to context variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 * \returns true on success or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 bool SDLCALL SDLTest_Crc32Done(SDLTest_Crc32Context *crcContext);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 #endif /* SDL_test_crc32_h_ */