summaryrefslogtreecommitdiff
path: root/src/cells/hll_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cells/hll_common.h')
-rw-r--r--src/cells/hll_common.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cells/hll_common.h b/src/cells/hll_common.h
new file mode 100644
index 0000000..b62530a
--- /dev/null
+++ b/src/cells/hll_common.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stdint.h>
+#include <sys/time.h>//gettimeofday
+#include <stddef.h>
+
+uint32_t *hll_create_register(int precision);
+void hll_free_register(uint32_t *registers);
+uint32_t *hll_duplicate(const uint32_t *registers, unsigned char precision);
+int hll_add_hash(uint32_t *registers, unsigned char precision, uint64_t hash);
+double hll_count(const uint32_t *registers, unsigned char precision, long long reset_idx, long long time_window_ms);
+size_t hll_size(unsigned char precision);
+double hll_error(unsigned char precision);
+int hll_should_slide(unsigned char precision, long long time_window_ms, struct timeval now, struct timeval reset_time);
+void hll_reset_registers(uint32_t *registers, unsigned char precision, long long offset, long long count);
+long long hll_get_reset_register_count(unsigned char precision, long long time_window_ms, struct timeval now, struct timeval *reset_time);
+void hll_advance_reset_index(long long *reset_idx, long long reset_reg_count, unsigned char precision);
+void hll_merge(uint32_t *dst_registers, const uint32_t *src_registers, unsigned char precision);
+void hll_encode_into_base64(const uint32_t *registers, unsigned char precision, char **blob, size_t *blob_sz);
+
+#ifdef __cplusplus
+}
+#endif \ No newline at end of file