| 2377 | PYBIND11_OBJECT_DEFAULT(buffer, object, PyObject_CheckBuffer) |
| 2378 | |
| 2379 | buffer_info request(bool writable = false) const { |
| 2380 | int flags = PyBUF_STRIDES | PyBUF_FORMAT; |
| 2381 | if (writable) { |
| 2382 | flags |= PyBUF_WRITABLE; |
| 2383 | } |
| 2384 | auto *view = new Py_buffer(); |
| 2385 | if (PyObject_GetBuffer(m_ptr, view, flags) != 0) { |
| 2386 | delete view; |
| 2387 | throw error_already_set(); |
| 2388 | } |
| 2389 | return buffer_info(view); |
| 2390 | } |
| 2391 | }; |
| 2392 | |
| 2393 | class memoryview : public object { |