Hello Robert, > 1) Do you have any priorities for features you'd like to see sooner > rather than later? > > 2) What would be *your* preferred syntax for declaring a templated, > operator-overloading class in C++?
I just wanted to mention, how easily C++ classes could be wrapped using boost::python. Operator overloading works out-of-the-box and other member functions could be declared very easily. Also, constructors and destructors are handled automatically. The latter is very important for wrapping one OO languange by another. For maintainance reasons such a kind of wrapping mechanism would be a necessary condition for the PolyBoRi Team to switch upstream from boost::python the Cython. Best regards, Alexander PS: Here's a small excerpt from PolyBoRi's original python wrapper: boost::python::class_<BoolePolynomial>("Polynomial", "Construct a BoolePolynomial object\ in the given Boolean polynomial ring.") .def(init<>()) .def(init<const BoolePolynomial &>()) .def("__hash__", &BoolePolynomial::hash, "Fast hash code, based on the \ pointer to the underlying ZDD node. \nIt may vary from runtime to runtime.") .def("__len__", &BoolePolynomial::length, "Number of terms") .def("terms", range(&BoolePolynomial::orderedBegin, &BoolePolynomial::orderedEnd)) .def("__pow__",poly_power) .def(self*BooleMonomial()) .def(self+BooleVariable()) .def(self-BooleVariable()) .def(BooleVariable()+self) .def(BooleVariable()-self) .def(self+BooleMonomial()) .def(self-BooleMonomial()) .def(BooleMonomial()+self) .def(BooleMonomial()-self) .def(BooleMonomial()*self) .def(self*self) .def(self*BooleVariable()) .def(self/int()) .def(self/BooleMonomial()) .def(self/self) .def(self%BooleVariable()) .def(self%BooleMonomial()) .def(self%self) .def(int()+self) .def(int()-self) .def(self+int()) .def(self-int()) .def(self+BooleVariable()) .def(self-BooleVariable()) .def(self==self) .def(self!=int()) .def(self==int()) .def(self==bool()) .def(self!=self) .def(self!=bool()) .def(self+self) .def(self-self) .def("deg", &BoolePolynomial::deg, "Polynomial degree") .def("lead", &BoolePolynomial::lead, "Leading term with respect to current ordering") .def("set", set, "Convert to BooleSet") .def("ring", &BoolePolynomial::ring, "Get corresponding ring") .def("has_constant_part", &BoolePolynomial::hasConstantPart, "Check, whether Polynomials owns constant term") .def("__str__", streamable_as_str<BoolePolynomial>) .def("__repr__", streamable_as_str<BoolePolynomial>); --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---