#include "../src/Random.hpp" #include "Core.hpp" /// @file /// @brief Constructs a random class. export ArbUt::Random* Arbutils_Random_Construct() { return new ArbUt::Random(); } /// @brief Constructs a random class with a specific seed. export ArbUt::Random* Arbutils_Random_ConstructWithSeed(uint_fast32_t seed) { return new ArbUt::Random(seed); } /// @brief Call the destructor on a random object. export void Arbutils_Random_Destruct(ArbUt::Random* p) { delete p; } /// @brief Returns a random float between 0.0 and 1.0 using a random object. export float Arbutils_Random_GetFloat(ArbUt::Random* p) { return p->GetFloat(); } /// @brief Returns a random double between 0.0 and 1.0 using a random object. export double Arbutils_Random_GetDouble(ArbUt::Random* p) { return p->GetDouble(); } /// @brief Returns a random a random 32 bit integer using a random object. export i32 Arbutils_Random_Get(ArbUt::Random* p) { return p->Get(); } /// @brief Gets a random 32 bit integer with a given max. Returns a status code where 0 is Ok, and passes the output to the out parameter. export u8 Arbutils_Random_GetWithMax(ArbUt::Random* p, i32 max, i32& out) { Try(out = p->Get(max);) } /// @brief Gets a random 32 bit integer with a given min and max. Returns a status code where 0 is Ok, and passes the output to the out parameter. export u8 Arbutils_Random_GetInLimits(ArbUt::Random* p, i32 min, i32 max, i32& out) { Try(out = p->Get(min, max);) } /// @brief Returns a random a random 32 bit unsigned integer using a random object. export u32 Arbutils_Random_GetUnsigned(ArbUt::Random* p) { return p->GetUnsigned(); } /// @brief Gets a random 32 bit unsigned integer with a given max. Returns a status code where 0 is Ok, and passes the output to the out parameter. export u8 Arbutils_Random_GetUnsignedWithMax(ArbUt::Random* p, u32 max, u32& out) { Try(out = p->GetUnsigned(max);) } /// @brief Gets a random 32 bit unsigned integer with a given min and max. Returns a status code where 0 is Ok, and passes the output to the out parameter. export u8 Arbutils_Random_GetUnsignedInLimits(ArbUt::Random* p, u32 min, u32 max, u32& out) { Try(out = p->GetUnsigned(min, max);) } /// @brief Returns the seed of the random object. export uint_fast32_t Arbutils_Random_GetSeed(ArbUt::Random* p) { return p->GetSeed(); }