From b2cbc021898c863aa8cd28599d5af81f614e1413 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Tue, 31 Jan 2023 22:07:33 -0600 Subject: [PATCH] feat(big): add SetOne --- storm/big/Ops.cpp | 5 +++++ storm/big/Ops.hpp | 2 ++ test/Big.cpp | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/storm/big/Ops.cpp b/storm/big/Ops.cpp index f9e8fe6..4df9cb6 100644 --- a/storm/big/Ops.cpp +++ b/storm/big/Ops.cpp @@ -82,6 +82,11 @@ void Mul(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, BigStack& stack) stack.UnmakeDistinct(a, aa); } +void SetOne(BigBuffer& buffer) { + buffer.SetCount(1); + buffer[0] = 1; +} + void SetZero(BigBuffer& buffer) { buffer.Clear(); } diff --git a/storm/big/Ops.hpp b/storm/big/Ops.hpp index b39353f..404c61b 100644 --- a/storm/big/Ops.hpp +++ b/storm/big/Ops.hpp @@ -21,6 +21,8 @@ void Mul(BigBuffer& a, const BigBuffer& b, uint64_t c); void Mul(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, BigStack& stack); +void SetOne(BigBuffer& buffer); + void SetZero(BigBuffer& buffer); void ToBinary(TSGrowableArray& output, const BigBuffer& buffer); diff --git a/test/Big.cpp b/test/Big.cpp index 4571c37..7afbbe0 100644 --- a/test/Big.cpp +++ b/test/Big.cpp @@ -421,6 +421,24 @@ TEST_CASE("SBigToBinaryBuffer", "[big]") { } } +TEST_CASE("SetOne", "[big]") { + SECTION("sets buffer to one") { + BigData* num; + SBigNew(&num); + uint64_t data = 0x123456789ABCDEF0; + SBigFromBinary(num, reinterpret_cast(&data), sizeof(data)); + + CHECK(num->Primary().Count() == 2); + + SetOne(num->Primary()); + + CHECK(num->Primary().Count() == 1); + CHECK(num->Primary()[0] == 1); + + SBigDel(num); + } +} + TEST_CASE("SetZero", "[big]") { SECTION("sets buffer to zero") { BigData* num;