summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2012-02-16 21:53:30 +0000
committer Aaron Giles <aaron@aarongiles.com>2012-02-16 21:53:30 +0000
commite055a551c19a2f5e67472faaf16e1131fa36a6ce (patch)
treec610667dbedc663684ee2e763f1942c056c108db /src/lib
parenta825e9730d32de2f78a6ebdd39e5956898ca150e (diff)
Remove redundant hashing code, use hashing.h instead.
Remove overabstraction in hash.h; it's ok to hard code the two types of hashes we have. Even adding another one would not be very difficult. ;)
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/util/hashing.c44
-rw-r--r--src/lib/util/hashing.h24
2 files changed, 46 insertions, 22 deletions
diff --git a/src/lib/util/hashing.c b/src/lib/util/hashing.c
index 97afb184156..866cec8fc0d 100644
--- a/src/lib/util/hashing.c
+++ b/src/lib/util/hashing.c
@@ -38,6 +38,7 @@
***************************************************************************/
#include "hashing.h"
+#include "zlib.h"
//**************************************************************************
@@ -81,10 +82,12 @@ inline int char_to_hex(char c)
// from_string - convert from a string
//-------------------------------------------------
-bool sha1_t::from_string(const char *string)
+bool sha1_t::from_string(const char *string, int length)
{
// must be at least long enough to hold everything
- if (strlen(string) < 2 * sizeof(m_raw))
+ if (length == -1)
+ length = strlen(string);
+ if (length < 2 * sizeof(m_raw))
return false;
// iterate through our raw buffer
@@ -104,7 +107,7 @@ bool sha1_t::from_string(const char *string)
// as_string - convert to a string
//-------------------------------------------------
-const char *sha1_t::as_string(astring &buffer)
+const char *sha1_t::as_string(astring &buffer) const
{
buffer.reset();
for (int i = 0; i < ARRAY_LENGTH(m_raw); i++)
@@ -121,10 +124,12 @@ const char *sha1_t::as_string(astring &buffer)
// from_string - convert from a string
//-------------------------------------------------
-bool md5_t::from_string(const char *string)
+bool md5_t::from_string(const char *string, int length)
{
// must be at least long enough to hold everything
- if (strlen(string) < 2 * sizeof(m_raw))
+ if (length == -1)
+ length = strlen(string);
+ if (length < 2 * sizeof(m_raw))
return false;
// iterate through our raw buffer
@@ -144,7 +149,7 @@ bool md5_t::from_string(const char *string)
// as_string - convert to a string
//-------------------------------------------------
-const char *md5_t::as_string(astring &buffer)
+const char *md5_t::as_string(astring &buffer) const
{
buffer.reset();
for (int i = 0; i < ARRAY_LENGTH(m_raw); i++)
@@ -162,10 +167,12 @@ const char *md5_t::as_string(astring &buffer)
// from_string - convert from a string
//-------------------------------------------------
-bool crc32_t::from_string(const char *string)
+bool crc32_t::from_string(const char *string, int length)
{
// must be at least long enough to hold everything
- if (strlen(string) < 2 * sizeof(m_raw))
+ if (length == -1)
+ length = strlen(string);
+ if (length < 2 * sizeof(m_raw))
return false;
// iterate through our raw buffer
@@ -185,12 +192,23 @@ bool crc32_t::from_string(const char *string)
// as_string - convert to a string
//-------------------------------------------------
-const char *crc32_t::as_string(astring &buffer)
+const char *crc32_t::as_string(astring &buffer) const
{
return buffer.format("%08x", m_raw);
}
+//-------------------------------------------------
+// append - hash a block of data, appending to
+// the currently-accumulated value
+//-------------------------------------------------
+
+void crc32_creator::append(const void *data, UINT32 length)
+{
+ m_accum.m_raw = crc32(m_accum, reinterpret_cast<const Bytef *>(data), length);
+}
+
+
//**************************************************************************
// CRC-16 HELPERS
@@ -200,10 +218,12 @@ const char *crc32_t::as_string(astring &buffer)
// from_string - convert from a string
//-------------------------------------------------
-bool crc16_t::from_string(const char *string)
+bool crc16_t::from_string(const char *string, int length)
{
// must be at least long enough to hold everything
- if (strlen(string) < 2 * sizeof(m_raw))
+ if (length == -1)
+ length = strlen(string);
+ if (length < 2 * sizeof(m_raw))
return false;
// iterate through our raw buffer
@@ -223,7 +243,7 @@ bool crc16_t::from_string(const char *string)
// as_string - convert to a string
//-------------------------------------------------
-const char *crc16_t::as_string(astring &buffer)
+const char *crc16_t::as_string(astring &buffer) const
{
return buffer.format("%04x", m_raw);
}
diff --git a/src/lib/util/hashing.h b/src/lib/util/hashing.h
index 8bb59b9c5cc..08aeec5ac60 100644
--- a/src/lib/util/hashing.h
+++ b/src/lib/util/hashing.h
@@ -44,7 +44,7 @@
#include "osdcore.h"
#include "astring.h"
-#include "zlib.h"
+//#include "zlib.h"
#include "md5.h"
#include "sha1.h"
@@ -62,8 +62,8 @@ struct sha1_t
bool operator==(const sha1_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) == 0; }
bool operator!=(const sha1_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; }
operator UINT8 *() { return m_raw; }
- const char *as_string(astring &buffer);
- bool from_string(const char *string);
+ bool from_string(const char *string, int length = -1);
+ const char *as_string(astring &buffer) const;
UINT8 m_raw[20];
static const sha1_t null;
};
@@ -113,8 +113,8 @@ struct md5_t
bool operator==(const md5_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) == 0; }
bool operator!=(const md5_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; }
operator UINT8 *() { return m_raw; }
- const char *as_string(astring &buffer);
- bool from_string(const char *string);
+ bool from_string(const char *string, int length = -1);
+ const char *as_string(astring &buffer) const;
UINT8 m_raw[16];
static const md5_t null;
};
@@ -161,9 +161,11 @@ protected:
struct crc32_t
{
bool operator==(const crc32_t &rhs) const { return m_raw == rhs.m_raw; }
+ bool operator!=(const crc32_t &rhs) const { return m_raw != rhs.m_raw; }
+ crc32_t &operator=(const UINT32 crc) { m_raw = crc; return *this; }
operator UINT32() const { return m_raw; }
- const char *as_string(astring &buffer);
- bool from_string(const char *string);
+ bool from_string(const char *string, int length = -1);
+ const char *as_string(astring &buffer) const;
UINT32 m_raw;
static const crc32_t null;
};
@@ -179,7 +181,7 @@ public:
void reset() { m_accum.m_raw = 0; }
// append data
- void append(const void *data, UINT32 length) { m_accum.m_raw = crc32(m_accum, reinterpret_cast<const Bytef *>(data), length); }
+ void append(const void *data, UINT32 length);
// finalize and compute the final digest
crc32_t finish() { return m_accum; }
@@ -205,9 +207,11 @@ protected:
struct crc16_t
{
bool operator==(const crc16_t &rhs) const { return m_raw == rhs.m_raw; }
+ bool operator!=(const crc16_t &rhs) const { return m_raw != rhs.m_raw; }
+ crc16_t &operator=(const UINT16 crc) { m_raw = crc; return *this; }
operator UINT16() const { return m_raw; }
- const char *as_string(astring &buffer);
- bool from_string(const char *string);
+ bool from_string(const char *string, int length = -1);
+ const char *as_string(astring &buffer) const;
UINT16 m_raw;
static const crc16_t null;
};