2 %Exception std::out_of_range(SIP_IndexError) {
10 PyErr_SetString(PyExc_IndexError, sipExceptionRef.what());
15 template<T> class RealVector /NoDefaultCtors/ {
24 T operator[] (unsigned int i) throw (std::out_of_range);
27 size_t size = PyOS_snprintf(NULL, 0, "Vector [%f, %f, %f]", sipCpp->x, sipCpp->y, sipCpp->z);
29 PyOS_snprintf(str, size + 1, "Vector [%f, %f, %f]", sipCpp->x, sipCpp->y, sipCpp->z);
31 return PyUnicode_FromString(str);
35 template<T, Adaptor, Inner> class Array /NoDefaultCtors/ {
41 Adaptor operator[] (unsigned int i) throw (std::out_of_range);
42 SIP_SSIZE_T __len__();
44 sipRes = sipCpp->len();
48 class Matrix /NoDefaultCtors/ {
54 py_rvec __getitem__(int) throw (std::out_of_range);
57 sipRes = new py_rvec(sipCpp->get(a0));
58 } catch (const std::out_of_range &e) {
61 PyErr_SetString(PyExc_IndexError, e.what());
65 double __getitem__(SIP_PYTUPLE) throw (std::out_of_range);
68 if (PyArg_ParseTuple(a0, "nn", &i, &j))
70 sipRes = sipCpp->get(i, j);
71 } catch (const std::out_of_range &e) {
74 PyErr_SetString(PyExc_IndexError, e.what());
84 typedef double** matrix;
85 typedef double** tensor;
87 typedef int** imatrix;
89 typedef RealVector<double> py_rvec;
90 typedef Array<double, py_rvec, rvec> rvecs;