+ extend number protocol

This commit is contained in:
wmayer 2014-02-14 12:46:30 +01:00
parent 5b9f076c53
commit 98bab1ebbe
5 changed files with 798 additions and 13 deletions

View File

@ -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;
}

View File

@ -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<QuantityPy*>(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;
}

View File

@ -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;
}

View File

@ -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<VectorPy*>(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;
}

View File

@ -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;
}
-