source: git/modules/wrapper.h @ 6440b9

fieker-DuValspielwiese
Last change on this file since 6440b9 was 6440b9, checked in by Michael Brickenstein <bricken@…>, 19 years ago
*bricken: mult->add git-svn-id: file:///usr/local/Singular/svn/trunk@8312 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 1.3 KB
Line 
1#include "mod2.h"
2#include "numbers.h"
3#include "febase.h"
4#include <Python.h>
5#include <boost/python.hpp>
6
7using namespace boost::python;
8class Number{
9 
10public:
11    friend Number operator+(Number& n1, Number& n2);
12  Number& operator+=(const Number & n2){
13    if (r!=n2.r){
14      Werror("not the same ring");
15      return *this;
16    }
17    number nv=n_Add(n,n2.n,r);
18    n_Delete(&n,r);
19    n=nv;
20    return *this;
21  }
22  Number(){
23    r=currRing;
24    n=n_Init(0,r);
25  }
26  Number(const Number & n){
27    r=n.r;
28    this->n=n_Copy(n.n,r);
29  }
30  Number(number n, ring r){
31    this->n=n_Copy(n,r);
32    this->r=r;
33  }
34  Number(int n, ring r){
35    this->n=n_Init(n,r);
36    this->r=r;
37  }
38  Number(int n){
39    r=currRing;
40    this->n=n_Init(n,r);
41  }
42  void write(){
43    n_Write(n,r);
44  }
45  virtual ~Number(){
46    n_Delete(&n,r);
47  }
48
49protected:
50  number n;
51  ring r;
52
53};
54static boost::python::object as_str(Number n)
55{
56  using boost::python::str;
57  StringSetS("");
58  n.write();
59  char* out=StringAppendS("");
60  return boost::python::str(out,strlen(out));
61}
62Number operator+(const Number &n1, const Number& n2){
63  Number erg(n1);
64  erg+=n2;
65  return erg;
66}
67BOOST_PYTHON_MODULE(Singular){
68  boost::python::class_<Number>("number")
69    .def(boost::python::init <int>())
70    .def("__str__", as_str)
71    .def(self+self);
72}
Note: See TracBrowser for help on using the repository browser.