diff --git a/src/Base/MatrixPyImp.cpp b/src/Base/MatrixPyImp.cpp index f30ed7799..1d3bf76c4 100644 --- a/src/Base/MatrixPyImp.cpp +++ b/src/Base/MatrixPyImp.cpp @@ -695,3 +695,123 @@ int MatrixPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { return 0; } + +PyObject * MatrixPy::number_divide_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_remainder_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_divmod_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_power_handler (PyObject *self, PyObject *other, PyObject *arg) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_negative_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_positive_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_absolute_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int MatrixPy::number_nonzero_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_invert_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_lshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_rshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_and_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_xor_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_or_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int MatrixPy::number_coerce_handler (PyObject **self, PyObject **other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_int_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_long_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_float_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_oct_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * MatrixPy::number_hex_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} diff --git a/src/Base/QuantityPyImp.cpp b/src/Base/QuantityPyImp.cpp index a00405b36..1e63ea698 100644 --- a/src/Base/QuantityPyImp.cpp +++ b/src/Base/QuantityPyImp.cpp @@ -14,11 +14,11 @@ using namespace Base; // returns a string which represents the object e.g. when printed in python std::string QuantityPy::representation(void) const { - std::stringstream ret; - ret << getQuantityPtr()->getValue() << " "; - ret << getQuantityPtr()->getUnit().getString().toLatin1().constData(); + std::stringstream ret; + ret << getQuantityPtr()->getValue() << " "; + ret << getQuantityPtr()->getUnit().getString().toLatin1().constData(); - return ret.str(); + return ret.str(); } PyObject *QuantityPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper @@ -78,7 +78,6 @@ int QuantityPy::PyInit(PyObject* args, PyObject* kwd) return -1; } - PyObject* QuantityPy::pow(PyObject * args) { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); @@ -192,6 +191,11 @@ PyObject* QuantityPy::number_multiply_handler(PyObject *self, PyObject *other) double b = PyFloat_AsDouble(other); return new QuantityPy(new Quantity(*a*b) ); } + else if (PyInt_Check(other)) { + Base::Quantity *a = static_cast(self) ->getQuantityPtr(); + double b = (double)PyInt_AsLong(other); + return new QuantityPy(new Quantity(*a*b) ); + } else { PyErr_SetString(PyExc_TypeError, "A Quantity can only be multiplied by Quantity or number"); return 0; @@ -286,8 +290,122 @@ int QuantityPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) return 0; } +PyObject * QuantityPy::number_divide_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} +PyObject * QuantityPy::number_remainder_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} +PyObject * QuantityPy::number_divmod_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} +PyObject * QuantityPy::number_power_handler (PyObject *self, PyObject *other, PyObject *arg) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} +PyObject * QuantityPy::number_negative_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} +PyObject * QuantityPy::number_positive_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_absolute_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int QuantityPy::number_nonzero_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_invert_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_lshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_rshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_and_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_xor_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_or_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int QuantityPy::number_coerce_handler (PyObject **self, PyObject **other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_int_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_long_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_float_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_oct_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * QuantityPy::number_hex_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} diff --git a/src/Base/UnitPyImp.cpp b/src/Base/UnitPyImp.cpp index 7125a34d4..7695e90fa 100644 --- a/src/Base/UnitPyImp.cpp +++ b/src/Base/UnitPyImp.cpp @@ -193,4 +193,124 @@ int UnitPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) return 0; } +PyObject * UnitPy::number_divide_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_remainder_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_divmod_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_power_handler (PyObject *self, PyObject *other, PyObject *arg) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_negative_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_positive_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_absolute_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int UnitPy::number_nonzero_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_invert_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_lshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_rshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_and_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_xor_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_or_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int UnitPy::number_coerce_handler (PyObject **self, PyObject **other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_int_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_long_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_float_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_oct_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * UnitPy::number_hex_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + diff --git a/src/Base/VectorPyImp.cpp b/src/Base/VectorPyImp.cpp index c86902c68..6ba2666e8 100644 --- a/src/Base/VectorPyImp.cpp +++ b/src/Base/VectorPyImp.cpp @@ -136,6 +136,11 @@ PyObject* VectorPy::number_multiply_handler(PyObject *self, PyObject *other) double b = PyFloat_AsDouble(other); return new VectorPy(a * b); } + else if (PyInt_Check(other)) { + Base::Vector3d a = static_cast(self) ->value(); + long b = PyInt_AsLong(other); + return new VectorPy(a * (double)b); + } else { PyErr_SetString(PyExc_TypeError, "A Vector can only be multiplied by Vector or number"); return 0; @@ -545,4 +550,122 @@ int VectorPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) return 0; } +PyObject * VectorPy::number_divide_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} +PyObject * VectorPy::number_remainder_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_divmod_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_power_handler (PyObject *self, PyObject *other, PyObject *arg) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_negative_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_positive_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_absolute_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int VectorPy::number_nonzero_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_invert_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_lshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_rshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_and_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_xor_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_or_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int VectorPy::number_coerce_handler (PyObject **self, PyObject **other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_int_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_long_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_float_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_oct_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * VectorPy::number_hex_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} diff --git a/src/Tools/generateTemplates/templateClassPyExport.py b/src/Tools/generateTemplates/templateClassPyExport.py index 63359f40c..c890223c6 100644 --- a/src/Tools/generateTemplates/templateClassPyExport.py +++ b/src/Tools/generateTemplates/templateClassPyExport.py @@ -101,6 +101,46 @@ public: static PyObject * number_subtract_handler (PyObject *self, PyObject *other); /// callback for the number_multiply_handler static PyObject * number_multiply_handler (PyObject *self, PyObject *other); + /// callback for the number_divide_handler + static PyObject * number_divide_handler (PyObject *self, PyObject *other); + /// callback for the number_remainder_handler + static PyObject * number_remainder_handler (PyObject *self, PyObject *other); + /// callback for the number_divmod_handler + static PyObject * number_divmod_handler (PyObject *self, PyObject *other); + /// callback for the number_power_handler + static PyObject * number_power_handler (PyObject *self, PyObject *other, PyObject *modulo); + /// callback for the number_negative_handler + static PyObject * number_negative_handler (PyObject *self); + /// callback for the number_positive_handler + static PyObject * number_positive_handler (PyObject *self); + /// callback for the number_absolute_handler + static PyObject * number_absolute_handler (PyObject *self); + /// callback for the number_nonzero_handler + static int number_nonzero_handler (PyObject *self); + /// callback for the number_invert_handler + static PyObject * number_invert_handler (PyObject *self); + /// callback for the number_lshift_handler + static PyObject * number_lshift_handler (PyObject *self, PyObject *other); + /// callback for the number_rshift_handler + static PyObject * number_rshift_handler (PyObject *self, PyObject *other); + /// callback for the number_and_handler + static PyObject * number_and_handler (PyObject *self, PyObject *other); + /// callback for the number_xor_handler + static PyObject * number_xor_handler (PyObject *self, PyObject *other); + /// callback for the number_or_handler + static PyObject * number_or_handler (PyObject *self, PyObject *other); + /// callback for the number_coerce_handler + static int number_coerce_handler (PyObject **self, PyObject **other); + /// callback for the number_int_handler + static PyObject * number_int_handler (PyObject *self); + /// callback for the number_long_handler + static PyObject * number_long_handler (PyObject *self); + /// callback for the number_float_handler + static PyObject * number_float_handler (PyObject *self); + /// callback for the number_oct_handler + static PyObject * number_oct_handler (PyObject *self); + /// callback for the number_hex_handler + static PyObject * number_hex_handler (PyObject *self); //@} - + if (self.export.Sequence): @@ -236,8 +276,12 @@ PyTypeObject @self.export.Name@::Type = { /* --- Functions to access object as input/output buffer ---------*/ 0, /* tp_as_buffer */ /* --- Flags to define presence of optional/expanded features */ -+ if (self.export.RichCompare): ++ if (self.export.RichCompare and self.export.NumberProtocol): + Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_CLASS|Py_TPFLAGS_HAVE_RICHCOMPARE|Py_TPFLAGS_CHECKTYPES, /*tp_flags */ += elif (self.export.RichCompare): Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_CLASS|Py_TPFLAGS_HAVE_RICHCOMPARE, /*tp_flags */ += elif (self.export.NumberProtocol): + Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_CLASS|Py_TPFLAGS_CHECKTYPES, /*tp_flags */ = else: Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_CLASS, /*tp_flags */ - @@ -294,6 +338,26 @@ PyNumberMethods @self.export.Name@::Number[] = { { number_add_handler, number_subtract_handler, number_multiply_handler, + number_divide_handler, + number_remainder_handler, + number_divmod_handler, + number_power_handler, + number_negative_handler, + number_positive_handler, + number_absolute_handler, + number_nonzero_handler, + number_invert_handler, + number_lshift_handler, + number_rshift_handler, + number_and_handler, + number_xor_handler, + number_or_handler, + number_coerce_handler, + number_int_handler, + number_long_handler, + number_float_handler, + number_oct_handler, + number_hex_handler, NULL } }; - @@ -752,19 +816,139 @@ PyObject* @self.export.Name@::@i.Name@(PyObject *args) + if (self.export.NumberProtocol): PyObject* @self.export.Name@::number_add_handler(PyObject *self, PyObject *other) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return 0; } PyObject* @self.export.Name@::number_subtract_handler(PyObject *self, PyObject *other) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return 0; } PyObject* @self.export.Name@::number_multiply_handler(PyObject *self, PyObject *other) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_divide_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_remainder_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_divmod_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_power_handler (PyObject *self, PyObject *other, PyObject *modulo) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_negative_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_positive_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_absolute_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int @self.export.Name@::number_nonzero_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_invert_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_lshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_rshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_and_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_xor_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_or_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int @self.export.Name@::number_coerce_handler (PyObject **self, PyObject **other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_int_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_long_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_float_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_oct_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_hex_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return 0; } - @@ -773,7 +957,7 @@ PyObject* @self.export.Name@::number_multiply_handler(PyObject *self, PyObject * Py_ssize_t @self.export.Name@::sequence_length(PyObject *) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return -1; } - @@ -939,19 +1123,139 @@ PyObject* @self.export.Name@::@i.Name@(PyObject * /*args*/) + if (self.export.NumberProtocol): PyObject* @self.export.Name@::number_add_handler(PyObject *self, PyObject *other) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return 0; } PyObject* @self.export.Name@::number_subtract_handler(PyObject *self, PyObject *other) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return 0; } PyObject* @self.export.Name@::number_multiply_handler(PyObject *self, PyObject *other) { - PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_divide_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_remainder_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_divmod_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_power_handler (PyObject *self, PyObject *other, PyObject *modulo) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_negative_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_positive_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_absolute_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int @self.export.Name@::number_nonzero_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_invert_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_lshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_rshift_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_and_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_xor_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_or_handler (PyObject *self, PyObject *other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +int @self.export.Name@::number_coerce_handler (PyObject **self, PyObject **other) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_int_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_long_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_float_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_oct_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); + return 0; +} + +PyObject * @self.export.Name@::number_hex_handler (PyObject *self) +{ + PyErr_SetString(PyExc_NotImplementedError, "Not implemented"); return 0; } -