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