1#ifndef __FACADE_UTILITY_HPP
2#define __FACADE_UTILITY_HPP
26 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
27 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
28 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
29 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
30 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
31 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
32 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
33 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
34 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
35 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
36 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
37 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
38 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
39 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
40 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
41 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
42 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
43 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
44 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
45 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
46 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
47 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
48 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
49 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
50 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
51 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
52 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
53 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
54 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
55 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
56 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
57 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
58 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
59 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
60 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
61 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
62 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
63 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
64 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
65 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
66 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
67 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
68 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
69 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
70 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
71 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
72 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
73 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
74 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
75 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
76 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
77 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
78 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
79 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
80 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
81 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
82 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
83 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
84 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
85 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
86 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
87 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
88 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
89 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
94 "abcdefghijklmnopqrstuvwxyz"
122 EXPORT std::uint32_t
crc32(
const void *ptr, std::size_t size, std::uint32_t init_crc=0);
135 EXPORT std::vector<std::uint8_t>
compress(
const void *ptr, std::size_t size,
int level);
143 EXPORT std::vector<std::uint8_t>
compress(
const std::vector<std::uint8_t> &vec,
int level);
150 EXPORT std::vector<std::uint8_t>
decompress(
const void *ptr, std::size_t size);
157 EXPORT std::vector<std::uint8_t>
decompress(
const std::vector<std::uint8_t> &vec);
187 EXPORT std::vector<std::uint8_t>
read_file(
const std::string &filename);
194 EXPORT void write_file(
const std::string &filename,
const void *ptr, std::size_t size);
200 EXPORT void write_file(
const std::string &filename,
const std::vector<std::uint8_t> &vec);
Definition: exception.hpp:14
EXPORT std::string base64_encode(const void *ptr, std::size_t size)
Base64 encode the given buffer data.
Definition: utility.cpp:121
const std::uint32_t CRC32_TABLE[256]
The table used for calculating a CRC32 value.
Definition: utility.hpp:25
EXPORT std::vector< std::uint8_t > read_file(const std::string &filename)
Read a file into a byte vector.
Definition: utility.cpp:216
EXPORT void write_file(const std::string &filename, const void *ptr, std::size_t size)
Write a given buffer to the given filename.
Definition: utility.cpp:229
const std::string BASE64_ALPHA
The alphabet of base64 data.
Definition: utility.hpp:93
EXPORT std::uint32_t endian_swap_32(std::uint32_t value)
Swap the endianness of a 32-bit value.
Definition: utility.cpp:12
EXPORT std::uint16_t endian_swap_16(std::uint16_t value)
Swap the endianness of a 16-bit value.
Definition: utility.cpp:5
EXPORT std::uint32_t crc32(const void *ptr, std::size_t size, std::uint32_t init_crc=0)
Calculate the CRC32 value of a given buffer.
Definition: utility.cpp:20
EXPORT std::vector< std::uint8_t > base64_decode(const std::string &data)
Base64-decode the given string into a byte vector.
Definition: utility.cpp:169
EXPORT bool is_base64_string(const std::string &base64)
Determine if the string is a base64 string.
Definition: utility.cpp:105
EXPORT std::vector< std::uint8_t > compress(const void *ptr, std::size_t size, int level)
Compress the given data buffer with the given compression level.
Definition: utility.cpp:30
EXPORT std::vector< std::uint8_t > decompress(const void *ptr, std::size_t size)
Decompress the given data buffer with zlib's inflate algorithm.
Definition: utility.cpp:67