1 /****************************************************************************** 2 3 CRC-32 generator, uses LZO's built-in CRC-32 calculator 4 5 Copyright: 6 Copyright (c) 2009-2016 dunnhumby Germany GmbH. 7 All rights reserved. 8 9 License: 10 Boost Software License Version 1.0. See LICENSE_BOOST.txt for details. 11 Alternatively, this file may be distributed under the terms of the Tango 12 3-Clause BSD License (see LICENSE_BSD.txt for details). 13 14 ******************************************************************************/ 15 16 module ocean.io.compress.lzo.LzoCrc; 17 18 19 import ocean.io.compress.lzo.c.lzoconf: lzo_crc32, lzo_crc32_init; 20 21 import ocean.meta.types.Qualifiers; 22 import ocean.core.TypeConvert; 23 24 /****************************************************************************** 25 26 LzoCrc structure; contains only static methods 27 28 ******************************************************************************/ 29 30 struct LzoCrc 31 { 32 static: 33 34 /************************************************************************** 35 36 Calculates a 32-bit CRC value from data. 37 38 Params: 39 crc32_in = initial 32-bit CRC value (for iteration) 40 data = data to calculate 32-bit CRC value of 41 42 Returns: 43 resulting 32-bit CRC value 44 45 **************************************************************************/ 46 47 uint crc32 ( uint crc32_in, in void[] data ) 48 { 49 return lzo_crc32(crc32_in, cast (const(ubyte)*) data.ptr, 50 castFrom!(size_t).to!(int)(data.length)); 51 } 52 53 /************************************************************************** 54 55 Calculates a 32-bit CRC value from data. 56 57 Params: 58 data = data to calculate 32-bit CRC value of 59 60 Returns: 61 resulting 32-bit CRC value 62 63 **************************************************************************/ 64 65 uint crc32 ( in void[] data ) 66 { 67 return crc32(lzo_crc32_init(), data); 68 } 69 }