aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkMD5.h
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2016-04-22 10:40:49 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-22 10:40:49 -0700
commit272aa12c63e32c2845cbb5549660c08c31159282 (patch)
tree4cc02a60f425e974ff5e3148c3d24d4b42e1b84c /src/core/SkMD5.h
parent3361e6248b415bb3054b5af6462666f1608e0765 (diff)
SkMD5: cleanup header and minor refactor
Also: I now define a non-virtual function in terms of a final virtual function. This reduces the number of actual functions while adding no overhead. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1911363002 Review URL: https://codereview.chromium.org/1911363002
Diffstat (limited to 'src/core/SkMD5.h')
-rw-r--r--src/core/SkMD5.h37
1 files changed, 10 insertions, 27 deletions
diff --git a/src/core/SkMD5.h b/src/core/SkMD5.h
index ed557931c2..a6d9b9f3eb 100644
--- a/src/core/SkMD5.h
+++ b/src/core/SkMD5.h
@@ -8,54 +8,37 @@
#ifndef SkMD5_DEFINED
#define SkMD5_DEFINED
-#include "SkTypes.h"
-#include "SkEndian.h"
#include "SkStream.h"
-//The following macros can be defined to affect the MD5 code generated.
-//SK_MD5_CLEAR_DATA causes all intermediate state to be overwritten with 0's.
-//SK_CPU_LENDIAN allows 32 bit <=> 8 bit conversions without copies (if alligned).
-//SK_CPU_FAST_UNALIGNED_ACCESS allows 32 bit <=> 8 bit conversions without copies if SK_CPU_LENDIAN.
-
+/* Calculate a 128-bit MD5 message-digest of the bytes sent to this stream. */
class SkMD5 : public SkWStream {
public:
SkMD5();
/** Processes input, adding it to the digest.
- * Note that this treats the buffer as a series of uint8_t values.
- */
- bool write(const void* buffer, size_t size) override {
- this->update(reinterpret_cast<const uint8_t*>(buffer), size);
- return true;
- }
+ Calling this after finish is undefined. */
+ bool write(const void* buffer, size_t size) final;
- size_t bytesWritten() const override { return SkToSizeT(this->byteCount); }
+ size_t bytesWritten() const final { return SkToSizeT(this->byteCount); }
- /** Processes input, adding it to the digest. Calling this after finish is undefined. */
- void update(const uint8_t* input, size_t length);
+ /** Alias for write() */
+ void update(const uint8_t* b, size_t l) { (void)this->write(b, l); }
struct Digest {
uint8_t data[16];
bool operator ==(Digest const& other) const {
return 0 == memcmp(data, other.data, sizeof(data));
}
- bool operator !=(Digest const& other) const {
- return 0 != memcmp(data, other.data, sizeof(data));
- }
+ bool operator !=(Digest const& other) const { return !(*this == other); }
};
/** Computes and returns the digest. */
void finish(Digest& digest);
private:
- // number of bytes, modulo 2^64
- uint64_t byteCount;
-
- // state (ABCD)
- uint32_t state[4];
-
- // input buffer
- uint8_t buffer[64];
+ uint64_t byteCount; // number of bytes, modulo 2^64
+ uint32_t state[4]; // state (ABCD)
+ uint8_t buffer[64]; // input buffer
};
#endif