My Project
Loading...
Searching...
No Matches
ring_wrap.cc
Go to the documentation of this file.
1#include "kernel/mod2.h"
2#ifdef HAVE_PYTHON
3#include <boost/python.hpp>
4#include "Singular/ipshell.h"
5#include "ring_wrap.h"
6#include "poly_wrap.h"
7static boost::python::object Ring_as_str(const Ring& r)
8{
9 using boost::python::str;
10 StringSetS("");
11 rWrite(r.pimpl.get());
12 char* out=StringEndS();
13 return boost::python::str(out,strlen(out));
14}
16{
17 ring r=R.pimpl.get();
19 if (h==NULL)
20 {
21 char name_buffer[100];
22 STATIC_VAR int ending=0;
23 ending++;
24 sprintf(name_buffer, "PYTHON_RING_VAR%d",ending);
25 h=enterid(name_buffer,0,RING_CMD,&IDROOT);
26 IDRING(h)=r;
27 r->ref++;
28 }
29 rSetHdl(h);
30 for(int i=myynest;i>=0;i--) iiLocalRing[i]=r;
31}
33{
34boost::python::class_<Ring>("Ring", "reference to a Singular ring")
35 .def("__str__", Ring_as_str)
36 .def("set", ring_set,"equivalent to the singular command setring, which is not mapped as it is a command")
37 .def(boost::python::init <>());
38}
39#endif
int i
Definition cfEzgcd.cc:132
intrusive_ptr< ip_sring > pimpl
Definition ring_wrap.h:23
VAR int myynest
Definition febase.cc:41
#define STATIC_VAR
Definition globaldefs.h:7
@ RING_CMD
Definition grammar.cc:282
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
Definition ipid.cc:256
#define IDROOT
Definition ipid.h:19
#define IDRING(a)
Definition ipid.h:127
VAR ring * iiLocalRing
Definition iplib.cc:482
idhdl rFindHdl(ring r, idhdl n)
Definition ipshell.cc:1695
void rSetHdl(idhdl h)
Definition ipshell.cc:5122
STATIC_VAR Poly * h
Definition janet.cc:971
#define NULL
Definition omList.c:12
void StringSetS(const char *st)
Definition reporter.cc:128
char * StringEndS()
Definition reporter.cc:151
void rWrite(ring r, BOOLEAN details)
Definition ring.cc:227
idrec * idhdl
Definition ring.h:22
void export_ring()
Definition ring_wrap.cc:32
void ring_set(Ring &R)
Definition ring_wrap.cc:15
static boost::python::object Ring_as_str(const Ring &r)
Definition ring_wrap.cc:7
#define R
Definition sirandom.c:27