[LyX/master] Use crc32 calculation from zlib instead of boost
Yuriy Skalko
yuriy.skalko at gmail.com
Mon Dec 28 19:33:11 UTC 2020
commit 197ea63631d36aa3b781a61a3b70cff193788d29
Author: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Sat Dec 26 21:23:44 2020 +0200
Use crc32 calculation from zlib instead of boost
---
src/support/FileName.cpp | 4 ++--
src/support/checksum.cpp | 25 +++++++++++++------------
src/support/checksum.h | 2 +-
3 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/src/support/FileName.cpp b/src/support/FileName.cpp
index 3d31c7d..5295741 100644
--- a/src/support/FileName.cpp
+++ b/src/support/FileName.cpp
@@ -608,8 +608,8 @@ unsigned long FileName::checksum() const
return 0;
}
- char * beg = static_cast<char*>(mm);
- char * end = beg + info.st_size;
+ unsigned char * beg = static_cast<unsigned char*>(mm);
+ unsigned char * end = beg + info.st_size;
result = support::checksum(beg, end);
diff --git a/src/support/checksum.cpp b/src/support/checksum.cpp
index 79ef955..2249ad1 100644
--- a/src/support/checksum.cpp
+++ b/src/support/checksum.cpp
@@ -9,9 +9,10 @@
* Full author contact details are available in file CREDITS.
*/
+#include <config.h>
#include "support/checksum.h"
-#include "boost/crc.hpp"
-#include <algorithm>
+
+#include <zlib.h>
namespace lyx {
@@ -19,9 +20,8 @@ namespace support {
unsigned long checksum(std::string const & s)
{
- boost::crc_32_type crc;
- crc.process_bytes(s.c_str(), s.size());
- return crc.checksum();
+ auto p = reinterpret_cast<unsigned char const *>(s.c_str());
+ return crc32(0, p, s.size());
}
unsigned long checksum(std::ifstream & ifs)
@@ -29,16 +29,17 @@ unsigned long checksum(std::ifstream & ifs)
std::istreambuf_iterator<char> beg(ifs);
std::istreambuf_iterator<char> end;
- boost::crc_32_type crc;
- crc = for_each(beg, end, crc);
- return crc.checksum();
+ unsigned long sum = 0;
+ for (auto & it = beg; beg != end; ++it) {
+ unsigned char c = *it;
+ sum = crc32(sum, &c, 1);
+ }
+ return sum;
}
-unsigned long checksum(char const * beg, char const * end)
+unsigned long checksum(unsigned char const * beg, unsigned char const * end)
{
- boost::crc_32_type crc;
- crc.process_block(beg, end);
- return crc.checksum();
+ return crc32(0, beg, end - beg);
}
} // namespace support
diff --git a/src/support/checksum.h b/src/support/checksum.h
index ab14339..0533c57 100644
--- a/src/support/checksum.h
+++ b/src/support/checksum.h
@@ -21,7 +21,7 @@ namespace support {
unsigned long checksum(std::string const & s);
unsigned long checksum(std::ifstream & ifs);
-unsigned long checksum(char const * beg, char const * end);
+unsigned long checksum(unsigned char const * beg, unsigned char const * end);
} // namespace support
More information about the lyx-cvs
mailing list