2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-22 05:22:45 +00:00

Check indices passed to __getitem__, __setitem__, __delitem__

[SVN r10009]
This commit is contained in:
Ralf W. Grosse-Kunstleve
2001-05-05 01:06:33 +00:00
parent fb8d9edfdf
commit 00b4f09e8a
3 changed files with 14 additions and 1 deletions

View File

@@ -30,16 +30,24 @@ namespace { // Avoid cluttering the global namespace.
}
};
void raise_vector_IndexError() {
PyErr_SetString(PyExc_IndexError, "IndexError: vector index out of range");
throw python::error_already_set();
}
double getitem(const std::vector<double>& vd, std::size_t key) {
if (key < 0 || key >= vd.size()) raise_vector_IndexError();
return vd[key];
}
void setitem(std::vector<double>& vd, std::size_t key, double d) {
if (key < 0 || key >= vd.size()) raise_vector_IndexError();
std::vector<double>::iterator vditer = vd.begin();
vditer[key] = d;
}
void delitem(std::vector<double>& vd, std::size_t key) {
if (key < 0 || key >= vd.size()) raise_vector_IndexError();
std::vector<double>::iterator vditer = vd.begin();
vd.erase(&vditer[key]);
}