2023-01-29 11:48:18 -06:00
|
|
|
#include "storm/Big.hpp"
|
|
|
|
|
#include "storm/big/Ops.hpp"
|
|
|
|
|
#include "storm/Memory.hpp"
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
2023-01-29 22:12:59 -06:00
|
|
|
void SBigAdd(BigData* a, BigData* b, BigData* c) {
|
|
|
|
|
Add(a->Primary(), b->Primary(), c->Primary());
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-29 20:14:01 -06:00
|
|
|
void SBigDel(BigData* num) {
|
|
|
|
|
delete num;
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-29 20:37:09 -06:00
|
|
|
void SBigFromBinary(BigData* num, const void* data, uint32_t bytes) {
|
|
|
|
|
FromBinary(num->Primary(), data, bytes);
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-29 11:48:18 -06:00
|
|
|
void SBigFromUnsigned(BigData* num, uint32_t val) {
|
|
|
|
|
FromUnsigned(num->Primary(), val);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SBigNew(BigData** num) {
|
|
|
|
|
auto m = SMemAlloc(sizeof(BigData), __FILE__, __LINE__, 0x0);
|
|
|
|
|
*num = new (m) BigData();
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-30 00:10:52 -06:00
|
|
|
void SBigMul(BigData* a, BigData* b, BigData* c) {
|
|
|
|
|
Mul(a->Primary(), b->Primary(), c->Primary(), a->Stack());
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-29 11:48:18 -06:00
|
|
|
void SBigToBinaryBuffer(BigData* num, uint8_t* data, uint32_t maxBytes, uint32_t* bytes) {
|
|
|
|
|
auto& output = num->Output();
|
|
|
|
|
ToBinary(output, num->Primary());
|
|
|
|
|
|
|
|
|
|
uint32_t n = output.Count() < maxBytes ? output.Count() : maxBytes;
|
|
|
|
|
memcpy(data, output.Ptr(), n);
|
|
|
|
|
|
|
|
|
|
if (bytes) {
|
|
|
|
|
*bytes = n;
|
|
|
|
|
}
|
|
|
|
|
}
|