|
Clingo
|
An arbitrary precision integer. More...
#include <number.hh>
Public Member Functions | |
| Number (int32_t value) noexcept | |
| Construct a number from an integer. | |
| Number (char const *str, Base base=Base::dec) | |
| Construct a number from a string. | |
| Number (std::string_view str, Base base=Base::dec) | |
| Construct a number from a string. | |
| Number (Number const &other) | |
| Copy construct a number. | |
| Number (Number &&other) noexcept | |
| Move construct a number. | |
| auto | operator= (Number const &other) -> Number & |
| Copy assign a number. | |
| auto | operator= (Number &&other) noexcept -> Number & |
| Move assign a number. | |
| ~Number () noexcept | |
| Destroy the number freeing associated memory. | |
| auto | as_int () const -> std::optional< int32_t > |
| Convert the number to an integer if possible. | |
| auto | as_string () const -> std::string |
| Convert the number into a string. | |
| void | swap (Number &other) noexcept |
| Swap two numbers. | |
| auto | hash () const noexcept -> size_t |
| Get a hash code of the number suitable for unordered containers. | |
Static Public Member Functions | |
| static auto | from_repr (uint64_t repr) -> Number |
| Construct a number from the given representation. | |
| static auto | to_repr (Number const &num) -> uint64_t |
| Get the internal representation of the number. | |
| static auto | release (Number &num) -> uint64_t |
| Get the internal representation of the number and set it to zero. | |
Friends | |
| class | Impl |
| auto | compare (Number const &a, Number const &b) -> int |
| Compare to numbers returning a comparator. | |
| auto | compare (Number const &a, int32_t b) -> int |
| Compare to numbers returning a comparator. | |
| auto | compare (int32_t a, Number const &b) -> int |
| Compare to numbers returning a comparator. | |
| auto | operator== (Number const &a, Number const &b) |
| Equality compare two numbers. | |
| auto | operator== (int32_t a, Number const &b) -> bool |
| Equality compare two numbers. | |
| auto | operator== (Number const &a, int32_t b) -> bool |
| Equality compare two numbers. | |
| auto | operator<=> (Number const &a, Number const &b) |
| Compare two numbers. | |
| auto | operator<=> (int32_t a, Number const &b) |
| Compare two numbers. | |
| auto | operator<=> (Number const &a, int32_t b) |
| Compare two numbers. | |
| auto | operator+ (Number const &a, Number const &b) -> Number |
| Sum up two numbers. | |
| auto | operator+ (Number &&a, Number const &b) -> Number |
| Sum up two numbers. | |
| auto | operator+ (Number const &a, Number &&b) -> Number |
| Sum up two numbers. | |
| auto | operator+ (Number &&a, Number &&b) -> Number |
| Sum up two numbers. | |
| auto | operator+= (Number &a, Number const &b) -> Number & |
| In place add the given number. | |
| auto | operator+= (Number &a, Number &&b) -> Number & |
| In place add the given number. | |
| auto | operator- (Number const &a, Number const &b) -> Number |
| Subtract two numbers. | |
| auto | operator- (Number &&a, Number const &b) -> Number |
| Subtract two numbers. | |
| auto | operator- (Number const &a, Number &&b) -> Number |
| Subtract two numbers. | |
| auto | operator- (Number &&a, Number &&b) -> Number |
| Subtract two numbers. | |
| auto | operator-= (Number &a, Number const &b) -> Number & |
| In place subtract the given number. | |
| auto | operator-= (Number &a, Number &&b) -> Number & |
| In place subtract the given number. | |
| auto | operator* (Number const &a, Number const &b) -> Number |
| Multiply two numbers. | |
| auto | operator* (Number &&a, Number const &b) -> Number |
| Multiply two numbers. | |
| auto | operator* (Number const &a, Number &&b) -> Number |
| Multiply two numbers. | |
| auto | operator* (Number &&a, Number &&b) -> Number |
| Multiply two numbers. | |
| auto | operator*= (Number &a, Number const &b) -> Number & |
| In place multiply the given number. | |
| auto | operator*= (Number &a, Number &&b) -> Number & |
| In place multiply the given number. | |
| auto | operator/ (Number const &a, Number const &b) -> Number |
| Divide two numbers. | |
| auto | operator/ (Number &&a, Number const &b) -> Number |
| Divide two numbers. | |
| auto | operator/ (Number const &a, Number &&b) -> Number |
| Divide two numbers. | |
| auto | operator/ (Number &&a, Number &&b) -> Number |
| Divide two numbers. | |
| auto | operator/= (Number &a, Number const &b) -> Number & |
| In place divide the given number. | |
| auto | operator/= (Number &a, Number &&b) -> Number & |
| In place divide the given number. | |
| auto | operator% (Number const &a, Number const &b) -> Number |
| Modulo of two numbers. | |
| auto | operator% (Number &&a, Number const &b) -> Number |
| Modulo of two numbers. | |
| auto | operator% (Number const &a, Number &&b) -> Number |
| Modulo of two numbers. | |
| auto | operator% (Number &&a, Number &&b) -> Number |
| Modulo of two numbers. | |
| auto | operator%= (Number &a, Number const &b) -> Number & |
| In place modulo the given number. | |
| auto | operator%= (Number &a, Number &&b) -> Number & |
| In place modulo the given number. | |
| auto | operator- (Number const &a) -> Number |
| Negate the number. | |
| auto | operator- (Number &&a) -> Number |
| Negate the number. | |
| auto | operator~ (Number const &a) -> Number |
| Binary complement of the number. | |
| auto | operator~ (Number &&a) -> Number |
| Binary complement of the number. | |
| auto | operator& (Number const &a, Number const &b) -> Number |
| Binary and of the two numbers. | |
| auto | operator& (Number &&a, Number const &b) -> Number |
| Binary and of the two numbers. | |
| auto | operator& (Number const &a, Number &&b) -> Number |
| Binary and of the two numbers. | |
| auto | operator& (Number &&a, Number &&b) -> Number |
| Binary and of the two numbers. | |
| auto | operator&= (Number &a, Number const &b) -> Number & |
| In place binary and the given number. | |
| auto | operator&= (Number &a, Number &&b) -> Number & |
| In place binary and the given number. | |
| auto | operator| (Number const &a, Number const &b) -> Number |
| Binary or of two numbers. | |
| auto | operator| (Number &&a, Number const &b) -> Number |
| Binary or of two numbers. | |
| auto | operator| (Number const &a, Number &&b) -> Number |
| Binary or of two numbers. | |
| auto | operator| (Number &&a, Number &&b) -> Number |
| Binary or of two numbers. | |
| auto | operator|= (Number &a, Number const &b) -> Number & |
| In place binary or the given number. | |
| auto | operator|= (Number &a, Number &&b) -> Number & |
| In place binary or the given number. | |
| auto | operator^ (Number const &a, Number const &b) -> Number |
| Binary xor of two numbers. | |
| auto | operator^ (Number &&a, Number const &b) -> Number |
| Binary xor of two numbers. | |
| auto | operator^ (Number const &a, Number &&b) -> Number |
| Binary xor of two numbers. | |
| auto | operator^ (Number &&a, Number &&b) -> Number |
| Binary xor of two numbers. | |
| auto | operator^= (Number &a, Number const &b) -> Number & |
| In place binary xor the given number. | |
| auto | operator^= (Number &a, Number &&b) -> Number & |
| In place binary xor the given number. | |
| auto | pow (Number const &a, Number const &b) -> Number |
| Exponentiation of two numbers. | |
| auto | pow (Number &&a, Number const &b) -> Number |
| Exponentiation of two numbers. | |
| auto | pow (Number const &a, Number &&b) -> Number |
| Exponentiation of two numbers. | |
| auto | pow (Number &&a, Number &&b) -> Number |
| Exponentiation of two numbers. | |
| auto | abs (Number const &a) -> Number |
| Get absolute of the given number. | |
| auto | abs (Number &&a) -> Number |
| Get absolute of the given number. | |
| auto | get_sign (Number const &a) -> int |
| Get the sign of the given number. | |
| auto | operator<< (std::ostream &out, Number const &num) -> std::ostream & |
| Output the given number. | |
| auto | operator<< (Util::OutputBuffer &out, Number const &num) -> Util::OutputBuffer & |
| Output the given number. | |
| void | append (Util::OutputBuffer &out, Number const &num, int base) |
| Output the given number with the given base. | |
An arbitrary precision integer.
Directly stores a 32bit integer if possible and otherwise a pointer to an arbitrary size integer.
|
inlinestatic |
Get the internal representation of the number and set it to zero.
A new number can be constructed from the given representation.
|
inlinestatic |
Get the internal representation of the number.
Can be used with release() below.