| 4258 | |
| 4259 | namespace swig { |
| 4260 | inline size_t |
| 4261 | check_index(ptrdiff_t i, size_t size, bool insert = false) { |
| 4262 | if ( i < 0 ) { |
| 4263 | if ((size_t) (-i) <= size) |
| 4264 | return (size_t) (i + size); |
| 4265 | } else if ( (size_t) i < size ) { |
| 4266 | return (size_t) i; |
| 4267 | } else if (insert && ((size_t) i == size)) { |
| 4268 | return size; |
| 4269 | } |
| 4270 | |
| 4271 | throw std::out_of_range("index out of range"); |
| 4272 | } |
| 4273 | |
| 4274 | inline size_t |
| 4275 | slice_index(ptrdiff_t i, size_t size) { |