1 #ifndef CCRING_WRAP_HEADER 2 #define CCRING_WRAP_HEADER 3 #include <polys/monomials/ring.h> 4 #include <kernel/grammar.h> 5 #include <kernel/subexpr.h> 6 #include <kernel/ipid.h> 7 class Ring{ 8 public: 9 ring pimpl; pimpl(r)10 Ring(ring r=currRing): pimpl(r){ 11 if (r!=NULL) 12 ++(r->ref); 13 } Ring(const Ring & r2)14 Ring(const Ring& r2):pimpl(r2.pimpl){ 15 pimpl->ref++; 16 } ~Ring()17 ~Ring(){ 18 if (pimpl!=NULL) 19 --(pimpl->ref); 20 } 21 Ring & operator=(const Ring& r2){ 22 r2.pimpl->ref++; 23 pimpl->ref--; 24 pimpl=r2.pimpl; 25 } 26 Ring & operator=(ring r2){ 27 r2->ref++; 28 pimpl->ref--; 29 pimpl=r2; 30 } 31 32 }; 33 #endif 34