3#include <clingo/util/print.hh>
49 [[nodiscard]] auto
as_int() const -> std::optional<int32_t>;
52 [[nodiscard]] auto
as_string() const -> std::
string;
60 [[nodiscard]] auto
hash() const noexcept ->
size_t;
269 auto repr = num.repr_;
An arbitrary precision integer.
Definition number.hh:27
static auto release(Number &num) -> uint64_t
Get the internal representation of the number and set it to zero.
Definition number.hh:268
friend auto operator%=(Number &a, Number &&b) -> Number &
In place modulo the given number.
auto as_int() const -> std::optional< int32_t >
Convert the number to an integer if possible.
static auto from_repr(uint64_t repr) -> Number
Construct a number from the given representation.
Definition number.hh:258
Number(char const *str, Base base=Base::dec)
Construct a number from a string.
friend auto abs(Number const &a) -> Number
Get absolute of the given number.
friend auto pow(Number const &a, Number const &b) -> Number
Exponentiation of two numbers.
static auto to_repr(Number const &num) -> uint64_t
Get the internal representation of the number.
Definition number.hh:263
friend auto abs(Number &&a) -> Number
Get absolute of the given number.
auto operator=(Number const &other) -> Number &
Copy assign a number.
friend auto operator-=(Number &a, Number const &b) -> Number &
In place subtract the given number.
friend auto operator|(Number &&a, Number &&b) -> Number
Binary or of two numbers.
friend auto operator&=(Number &a, Number &&b) -> Number &
In place binary and the given number.
friend auto operator<<(std::ostream &out, Number const &num) -> std::ostream &
Output the given number.
Number(Number const &other)
Copy construct a number.
friend auto operator&(Number const &a, Number &&b) -> Number
Binary and of the two numbers.
friend auto operator+=(Number &a, Number &&b) -> Number &
In place add the given number.
friend auto pow(Number const &a, Number &&b) -> Number
Exponentiation of two numbers.
friend auto operator^(Number &&a, Number const &b) -> Number
Binary xor of two numbers.
friend auto operator~(Number &&a) -> Number
Binary complement of the number.
friend auto operator<=>(Number const &a, Number const &b)
Compare two numbers.
Definition number.hh:77
Number(int32_t value) noexcept
Construct a number from an integer.
friend auto operator+(Number const &a, Number &&b) -> Number
Sum up two numbers.
friend auto pow(Number &&a, Number const &b) -> Number
Exponentiation of two numbers.
friend auto operator+(Number &&a, Number &&b) -> Number
Sum up two numbers.
friend auto operator~(Number const &a) -> Number
Binary complement of the number.
friend auto operator<=>(Number const &a, int32_t b)
Compare two numbers.
Definition number.hh:81
friend auto operator-=(Number &a, Number &&b) -> Number &
In place subtract the given number.
Number(Number &&other) noexcept
Move construct a number.
friend auto operator-(Number &&a, Number const &b) -> Number
Subtract two numbers.
friend auto operator<=>(int32_t a, Number const &b)
Compare two numbers.
Definition number.hh:79
friend auto operator+=(Number &a, Number const &b) -> Number &
In place add the given number.
friend auto operator|(Number &&a, Number const &b) -> Number
Binary or of two numbers.
auto hash() const noexcept -> size_t
Get a hash code of the number suitable for unordered containers.
friend auto operator^(Number &&a, Number &&b) -> Number
Binary xor of two numbers.
friend auto operator^=(Number &a, Number const &b) -> Number &
In place binary xor the given number.
friend auto operator%(Number const &a, Number &&b) -> Number
Modulo of two numbers.
auto as_string() const -> std::string
Convert the number into a string.
friend auto operator^=(Number &a, Number &&b) -> Number &
In place binary xor the given number.
friend auto operator-(Number const &a, Number &&b) -> Number
Subtract two numbers.
friend auto operator^(Number const &a, Number const &b) -> Number
Binary xor of two numbers.
friend auto operator-(Number &&a, Number &&b) -> Number
Subtract two numbers.
friend auto operator&=(Number &a, Number const &b) -> Number &
In place binary and the given number.
friend auto operator/=(Number &a, Number const &b) -> Number &
In place divide the given number.
friend auto operator/(Number &&a, Number &&b) -> Number
Divide two numbers.
friend auto operator|=(Number &a, Number &&b) -> Number &
In place binary or the given number.
friend auto operator^(Number const &a, Number &&b) -> Number
Binary xor of two numbers.
auto operator=(Number &&other) noexcept -> Number &
Move assign a number.
friend auto operator*(Number &&a, Number const &b) -> Number
Multiply two numbers.
friend auto operator-(Number const &a) -> Number
Negate the number.
friend auto operator==(Number const &a, int32_t b) -> bool
Equality compare two numbers.
Definition number.hh:74
friend auto operator&(Number &&a, Number &&b) -> Number
Binary and of the two numbers.
friend auto operator*(Number const &a, Number const &b) -> Number
Multiply two numbers.
friend auto operator%=(Number &a, Number const &b) -> Number &
In place modulo the given number.
friend auto operator|(Number const &a, Number &&b) -> Number
Binary or of two numbers.
friend auto operator/(Number const &a, Number const &b) -> Number
Divide two numbers.
friend auto operator<<(Util::OutputBuffer &out, Number const &num) -> Util::OutputBuffer &
Output the given number.
friend auto operator|(Number const &a, Number const &b) -> Number
Binary or of two numbers.
friend auto operator*=(Number &a, Number const &b) -> Number &
In place multiply the given number.
friend auto operator+(Number &&a, Number const &b) -> Number
Sum up two numbers.
friend auto operator%(Number &&a, Number const &b) -> Number
Modulo of two numbers.
friend auto operator|=(Number &a, Number const &b) -> Number &
In place binary or the given number.
friend auto operator*(Number &&a, Number &&b) -> Number
Multiply two numbers.
friend auto operator&(Number const &a, Number const &b) -> Number
Binary and of the two numbers.
void swap(Number &other) noexcept
Swap two numbers.
Number(std::string_view str, Base base=Base::dec)
Construct a number from a string.
~Number() noexcept
Destroy the number freeing associated memory.
friend auto operator+(Number const &a, Number const &b) -> Number
Sum up two numbers.
friend auto operator%(Number const &a, Number const &b) -> Number
Modulo of two numbers.
friend auto operator*(Number const &a, Number &&b) -> Number
Multiply two numbers.
friend auto get_sign(Number const &a) -> int
Get the sign of the given number.
friend auto operator&(Number &&a, Number const &b) -> Number
Binary and of the two numbers.
friend auto operator-(Number const &a, Number const &b) -> Number
Subtract two numbers.
friend auto compare(Number const &a, Number const &b) -> int
Compare to numbers returning a comparator.
friend auto operator/=(Number &a, Number &&b) -> Number &
In place divide the given number.
friend auto operator/(Number const &a, Number &&b) -> Number
Divide two numbers.
friend auto operator%(Number &&a, Number &&b) -> Number
Modulo of two numbers.
friend auto operator==(int32_t a, Number const &b) -> bool
Equality compare two numbers.
Definition number.hh:72
friend auto operator-(Number &&a) -> Number
Negate the number.
friend auto operator/(Number &&a, Number const &b) -> Number
Divide two numbers.
friend auto operator*=(Number &a, Number &&b) -> Number &
In place multiply the given number.
friend auto pow(Number &&a, Number &&b) -> Number
Exponentiation of two numbers.
Create an output buffer that bears some similarities with C++'s iostreams.
Definition print.hh:24
Base
The base of a number.
Definition number.hh:17
std::span< Number const > NumberSpan
A span of numbers.
Definition number.hh:285