source: git/Singular/dyn_modules/python/ring_wrap.cc @ a3f0fea

spielwiese
Last change on this file since a3f0fea was a3f0fea, checked in by Reimer Behrends <behrends@…>, 5 years ago
Modify variable declarions for pSingular.
  • Property mode set to 100644
File size: 1.0 KB
Line 
1#include "kernel/mod2.h"
2#ifdef HAVE_PYTHON_MOD
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}
15void ring_set(Ring & R)
16{
17    ring r=R.pimpl.get();
18    idhdl h=rFindHdl(r,NULL);
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}
32void export_ring()
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
Note: See TracBrowser for help on using the repository browser.