aboutsummaryrefslogtreecommitdiff
path: root/BigInt.h
diff options
context:
space:
mode:
Diffstat (limited to 'BigInt.h')
-rw-r--r--BigInt.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/BigInt.h b/BigInt.h
new file mode 100644
index 0000000..2324143
--- /dev/null
+++ b/BigInt.h
@@ -0,0 +1,32 @@
+#ifndef _BIGINT
+#define _BIGINT
+
+#include "MemoryManager.h"
+
+typedef void* BigInt;
+
+/* Create */
+
+BigInt B_new(MemoryManager *mm, int value);
+BigInt B_newstr(MemoryManager *mm, const char* str);
+BigInt B_dup(MemoryManager *mm, BigInt bigint);
+
+BigInt B_newsum(MemoryManager *mm, BigInt a, BigInt b);
+BigInt B_newsub(MemoryManager *mm, BigInt a, BigInt b);
+
+/* Free */
+
+Result B_free(BigInt *bigint);
+
+/* Modify */
+
+Result B_sum(BigInt *a, BigInt b);
+Result B_sub(BigInt *a, BigInt b);
+
+/* Get */
+
+usize B_bytes(BigInt x);
+usize B_bitwidth(BigInt x);
+char* B_tostr(MemoryManager *mm, BigInt x);
+
+#endif /* _BIGINT */