summaryrefslogtreecommitdiff
path: root/ext/digest/digest.h
diff options
context:
space:
mode:
Diffstat (limited to 'ext/digest/digest.h')
-rw-r--r--ext/digest/digest.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/digest/digest.h b/ext/digest/digest.h
index 85848d5682c..30359ad3481 100644
--- a/ext/digest/digest.h
+++ b/ext/digest/digest.h
@@ -30,3 +30,22 @@ typedef struct {
rb_digest_hash_update_func_t update_func;
rb_digest_hash_finish_func_t finish_func;
} rb_digest_metadata_t;
+
+#define DEFINE_UPDATE_FUNC_FOR_UINT(name) \
+void \
+rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \
+{ \
+ const unsigned int stride = 16384; \
+ \
+ for (; size > stride; size -= stride, ptr += stride) { \
+ name##_Update(ctx, ptr, stride); \
+ } \
+ if (size > 0) name##_Update(ctx, ptr, size); \
+}
+
+#define DEFINE_FINISH_FUNC_FROM_FINAL(name) \
+int \
+rb_digest_##name##_finish(void *ctx, unsigned char *ptr) \
+{ \
+ return name##_Final(ptr, ctx); \
+}