X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fgmpint.h;h=6ed5303c546b29178a0373f13d0b24f044fe0d7b;hp=11b53c53981457cc31d56d995f3d3866467b6c72;hb=6dd539966821debd18e0b86ed126742cd81d7fc9;hpb=8c88a35a1fb0dfc9e542bb1a1c13c5f3e36eb3e5 diff --git a/src/gmpint.h b/src/gmpint.h index 11b53c5..6ed5303 100644 --- a/src/gmpint.h +++ b/src/gmpint.h @@ -15,12 +15,11 @@ class Gmpint Gmpint(int64_t i) {mpz_init_set_si(m_op, i);} Gmpint(const std::string & str, int base=10) {mpz_init_set_str(m_op, str.c_str(), base);} Gmpint(const Gmpint & cpy) {mpz_init(m_op); mpz_set(m_op, cpy.m_op);} - virtual ~Gmpint() {} //TODO: Do we need to delete m_op somehow? + virtual ~Gmpint() {mpz_clear(m_op);} - - operator int64_t() {return mpz_get_si(m_op);} - operator uint64_t() {return mpz_get_ui(m_op);} - operator double() {return mpz_get_d(m_op);} + operator int64_t() const {return mpz_get_si(m_op);} + operator uint64_t() const {return mpz_get_ui(m_op);} + operator double() const {return mpz_get_d(m_op);} std::string Str(int base = 10) const { //TODO: Make less hacky, if we care. @@ -40,8 +39,7 @@ class Gmpint Gmpint operator-(const Gmpint & sub) const {Gmpint a(*this); a -= sub; return a;} Gmpint operator*(const Gmpint & mul) const {Gmpint a(*this); a *= mul; return a;} Gmpint operator/(const Gmpint & div) const {Gmpint a(*this); a /= div; return a;} - Gmpint operator%(const Gmpint & div) const - {Gmpint a(*this); mpz_mod(a.m_op, a.m_op, div.m_op); return a;} + Gmpint operator%(const Gmpint & div) const {Gmpint a(*this); mpz_mod(a.m_op, a.m_op, div.m_op); return a;} Gmpint operator-() const {return (Gmpint(0L)-*this);} @@ -56,7 +54,6 @@ class Gmpint private: - Gmpint(const mpz_t & op) : m_op(op) {} mpz_t m_op; };