mirror of
https://github.com/thunderbrewhq/squall.git
synced 2026-05-04 22:33:51 +00:00
feat: sync with Whoa implementation
This commit is contained in:
parent
12ab8f7721
commit
6928bf3f0c
46 changed files with 2980 additions and 441 deletions
|
|
@ -1,17 +1,18 @@
|
|||
#include "storm/Big.hpp"
|
||||
#include "storm/big/BigData.hpp"
|
||||
#include "storm/big/Ops.hpp"
|
||||
#include <bc/Memory.hpp>
|
||||
#include <cstring>
|
||||
|
||||
void SBigAdd(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigAdd(BigData* a, BigData* b, BigData* c) {
|
||||
Add(a->Primary(), b->Primary(), c->Primary());
|
||||
}
|
||||
|
||||
void SBigAnd(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigAnd(BigData* a, BigData* b, BigData* c) {
|
||||
And(a->Primary(), b->Primary(), c->Primary());
|
||||
}
|
||||
|
||||
void SBigBitLen(BigData* num, uint32_t* len) {
|
||||
void STORMAPI SBigBitLen(BigData* num, uint32_t* len) {
|
||||
auto& buffer = num->Primary();
|
||||
buffer.Trim();
|
||||
|
||||
|
|
@ -28,24 +29,23 @@ void SBigBitLen(BigData* num, uint32_t* len) {
|
|||
*len = (index * 32) + bitIndex + 1;
|
||||
}
|
||||
|
||||
int32_t SBigCompare(BigData* a, BigData* b) {
|
||||
int32_t STORMAPI SBigCompare(BigData* a, BigData* b) {
|
||||
return Compare(a->Primary(), b->Primary());
|
||||
}
|
||||
|
||||
void SBigCopy(BigData* a, BigData* b) {
|
||||
void STORMAPI SBigCopy(BigData* a, BigData* b) {
|
||||
a->m_primary = b->m_primary;
|
||||
}
|
||||
|
||||
void SBigDec(BigData* a, BigData* b) {
|
||||
void STORMAPI SBigDec(BigData* a, BigData* b) {
|
||||
Sub(a->m_primary, b->m_primary, 1);
|
||||
}
|
||||
|
||||
void SBigDel(BigData* num) {
|
||||
num->~BigData();
|
||||
SMemFree(num);
|
||||
void STORMAPI SBigDel(BigData* num) {
|
||||
delete num;
|
||||
}
|
||||
|
||||
void SBigDiv(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigDiv(BigData* a, BigData* b, BigData* c) {
|
||||
uint32_t allocCount = 0;
|
||||
BigBuffer& buf = a->Stack().Alloc(&allocCount);
|
||||
|
||||
|
|
@ -54,39 +54,39 @@ void SBigDiv(BigData* a, BigData* b, BigData* c) {
|
|||
a->Stack().Free(allocCount);
|
||||
}
|
||||
|
||||
void SBigFromBinary(BigData* num, const void* data, uint32_t bytes) {
|
||||
void STORMAPI SBigFromBinary(BigData* num, const void* data, uint32_t bytes) {
|
||||
FromBinary(num->Primary(), data, bytes);
|
||||
}
|
||||
|
||||
void SBigFromStr(BigData* num, const char *str) {
|
||||
void STORMAPI SBigFromStr(BigData* num, const char *str) {
|
||||
FromStr(num->Primary(), str);
|
||||
}
|
||||
|
||||
void SBigFromUnsigned(BigData* num, uint32_t val) {
|
||||
void STORMAPI SBigFromUnsigned(BigData* num, uint32_t val) {
|
||||
FromUnsigned(num->Primary(), val);
|
||||
}
|
||||
|
||||
void SBigInc(BigData* a, BigData* b) {
|
||||
void STORMAPI SBigInc(BigData* a, BigData* b) {
|
||||
Add(a->Primary(), b->Primary(), 1);
|
||||
}
|
||||
|
||||
int32_t SBigIsEven(BigData* a) {
|
||||
int32_t STORMAPI SBigIsEven(BigData* a) {
|
||||
return IsEven(a->Primary());
|
||||
}
|
||||
|
||||
int32_t SBigIsOdd(BigData* a) {
|
||||
int32_t STORMAPI SBigIsOdd(BigData* a) {
|
||||
return IsOdd(a->Primary());
|
||||
}
|
||||
|
||||
int32_t SBigIsOne(BigData* a) {
|
||||
int32_t STORMAPI SBigIsOne(BigData* a) {
|
||||
return IsOne(a->Primary());
|
||||
}
|
||||
|
||||
int32_t SBigIsZero(BigData* a) {
|
||||
int32_t STORMAPI SBigIsZero(BigData* a) {
|
||||
return IsZero(a->Primary());
|
||||
}
|
||||
|
||||
void SBigMod(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigMod(BigData* a, BigData* b, BigData* c) {
|
||||
uint32_t allocCount = 0;
|
||||
auto& scratch = a->Stack().Alloc(&allocCount);
|
||||
|
||||
|
|
@ -95,44 +95,43 @@ void SBigMod(BigData* a, BigData* b, BigData* c) {
|
|||
a->Stack().Free(allocCount);
|
||||
}
|
||||
|
||||
void SBigMul(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigMul(BigData* a, BigData* b, BigData* c) {
|
||||
Mul(a->Primary(), b->Primary(), c->Primary(), a->Stack());
|
||||
}
|
||||
|
||||
void SBigNew(BigData** num) {
|
||||
auto m = SMemAlloc(sizeof(BigData), __FILE__, __LINE__, 0x0);
|
||||
*num = new (m) BigData();
|
||||
void STORMAPI SBigNew(BigData** num) {
|
||||
*num = STORM_NEW(BigData);
|
||||
}
|
||||
|
||||
void SBigNot(BigData* a, BigData* b) {
|
||||
void STORMAPI SBigNot(BigData* a, BigData* b) {
|
||||
Not(a->Primary(), b->Primary());
|
||||
}
|
||||
|
||||
void SBigOr(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigOr(BigData* a, BigData* b, BigData* c) {
|
||||
Or(a->Primary(), b->Primary(), c->Primary());
|
||||
}
|
||||
|
||||
void SBigPowMod(BigData* a, BigData* b, BigData* c, BigData* d) {
|
||||
void STORMAPI SBigPowMod(BigData* a, BigData* b, BigData* c, BigData* d) {
|
||||
PowMod(a->Primary(), b->Primary(), c->Primary(), d->Primary(), a->Stack());
|
||||
}
|
||||
|
||||
void SBigShl(BigData* a, BigData* b, uint32_t shift) {
|
||||
void STORMAPI SBigShl(BigData* a, BigData* b, uint32_t shift) {
|
||||
Shl(a->Primary(), b->Primary(), shift);
|
||||
}
|
||||
|
||||
void SBigShr(BigData* a, BigData* b, uint32_t shift) {
|
||||
void STORMAPI SBigShr(BigData* a, BigData* b, uint32_t shift) {
|
||||
Shr(a->Primary(), b->Primary(), shift);
|
||||
}
|
||||
|
||||
void SBigSquare(BigData* a, BigData* b) {
|
||||
void STORMAPI SBigSquare(BigData* a, BigData* b) {
|
||||
Square(a->Primary(), b->Primary(), a->Stack());
|
||||
}
|
||||
|
||||
void SBigSub(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigSub(BigData* a, BigData* b, BigData* c) {
|
||||
Sub(a->Primary(), b->Primary(), c->Primary());
|
||||
}
|
||||
|
||||
void SBigToBinaryBuffer(BigData* num, uint8_t* data, uint32_t maxBytes, uint32_t* bytes) {
|
||||
void STORMAPI SBigToBinaryBuffer(BigData* num, uint8_t* data, uint32_t maxBytes, uint32_t* bytes) {
|
||||
auto& output = num->Output();
|
||||
ToBinary(output, num->Primary());
|
||||
|
||||
|
|
@ -144,6 +143,10 @@ void SBigToBinaryBuffer(BigData* num, uint8_t* data, uint32_t maxBytes, uint32_t
|
|||
}
|
||||
}
|
||||
|
||||
void SBigXor(BigData* a, BigData* b, BigData* c) {
|
||||
void STORMAPI SBigToUnsigned(BigData* num, uint32_t* val) {
|
||||
ToUnsigned(val, num->Primary());
|
||||
}
|
||||
|
||||
void STORMAPI SBigXor(BigData* a, BigData* b, BigData* c) {
|
||||
Xor(a->Primary(), b->Primary(), c->Primary());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue