| /*[clinic input] |
| preserve |
| [clinic start generated code]*/ |
| |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # include "pycore_gc.h" // PyGC_Head |
| # include "pycore_runtime.h" // _Py_ID() |
| #endif |
| #include "pycore_abstract.h" // _PyNumber_Index() |
| #include "pycore_critical_section.h"// Py_BEGIN_CRITICAL_SECTION() |
| #include "pycore_modsupport.h" // _PyArg_CheckPositional() |
| |
| PyDoc_STRVAR(mmap_mmap_close__doc__, |
| "close($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_CLOSE_METHODDEF \ |
| {"close", (PyCFunction)mmap_mmap_close, METH_NOARGS, mmap_mmap_close__doc__}, |
| |
| static PyObject * |
| mmap_mmap_close_impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap_close(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_close_impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_read_byte__doc__, |
| "read_byte($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_READ_BYTE_METHODDEF \ |
| {"read_byte", (PyCFunction)mmap_mmap_read_byte, METH_NOARGS, mmap_mmap_read_byte__doc__}, |
| |
| static PyObject * |
| mmap_mmap_read_byte_impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap_read_byte(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_read_byte_impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_readline__doc__, |
| "readline($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_READLINE_METHODDEF \ |
| {"readline", (PyCFunction)mmap_mmap_readline, METH_NOARGS, mmap_mmap_readline__doc__}, |
| |
| static PyObject * |
| mmap_mmap_readline_impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap_readline(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_readline_impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_read__doc__, |
| "read($self, n=None, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_READ_METHODDEF \ |
| {"read", _PyCFunction_CAST(mmap_mmap_read), METH_FASTCALL, mmap_mmap_read__doc__}, |
| |
| static PyObject * |
| mmap_mmap_read_impl(mmap_object *self, Py_ssize_t num_bytes); |
| |
| static PyObject * |
| mmap_mmap_read(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t num_bytes = PY_SSIZE_T_MAX; |
| |
| if (!_PyArg_CheckPositional("read", nargs, 0, 1)) { |
| goto exit; |
| } |
| if (nargs < 1) { |
| goto skip_optional; |
| } |
| if (!_Py_convert_optional_to_ssize_t(args[0], &num_bytes)) { |
| goto exit; |
| } |
| skip_optional: |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_read_impl((mmap_object *)self, num_bytes); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_find__doc__, |
| "find($self, view, start=None, end=None, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_FIND_METHODDEF \ |
| {"find", _PyCFunction_CAST(mmap_mmap_find), METH_FASTCALL, mmap_mmap_find__doc__}, |
| |
| static PyObject * |
| mmap_mmap_find_impl(mmap_object *self, Py_buffer *view, PyObject *start, |
| PyObject *end); |
| |
| static PyObject * |
| mmap_mmap_find(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| Py_buffer view = {NULL, NULL}; |
| PyObject *start = Py_None; |
| PyObject *end = Py_None; |
| |
| if (!_PyArg_CheckPositional("find", nargs, 1, 3)) { |
| goto exit; |
| } |
| if (PyObject_GetBuffer(args[0], &view, PyBUF_SIMPLE) != 0) { |
| goto exit; |
| } |
| if (nargs < 2) { |
| goto skip_optional; |
| } |
| start = args[1]; |
| if (nargs < 3) { |
| goto skip_optional; |
| } |
| end = args[2]; |
| skip_optional: |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_find_impl((mmap_object *)self, &view, start, end); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| /* Cleanup for view */ |
| if (view.obj) { |
| PyBuffer_Release(&view); |
| } |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_rfind__doc__, |
| "rfind($self, view, start=None, end=None, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_RFIND_METHODDEF \ |
| {"rfind", _PyCFunction_CAST(mmap_mmap_rfind), METH_FASTCALL, mmap_mmap_rfind__doc__}, |
| |
| static PyObject * |
| mmap_mmap_rfind_impl(mmap_object *self, Py_buffer *view, PyObject *start, |
| PyObject *end); |
| |
| static PyObject * |
| mmap_mmap_rfind(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| Py_buffer view = {NULL, NULL}; |
| PyObject *start = Py_None; |
| PyObject *end = Py_None; |
| |
| if (!_PyArg_CheckPositional("rfind", nargs, 1, 3)) { |
| goto exit; |
| } |
| if (PyObject_GetBuffer(args[0], &view, PyBUF_SIMPLE) != 0) { |
| goto exit; |
| } |
| if (nargs < 2) { |
| goto skip_optional; |
| } |
| start = args[1]; |
| if (nargs < 3) { |
| goto skip_optional; |
| } |
| end = args[2]; |
| skip_optional: |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_rfind_impl((mmap_object *)self, &view, start, end); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| /* Cleanup for view */ |
| if (view.obj) { |
| PyBuffer_Release(&view); |
| } |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_write__doc__, |
| "write($self, bytes, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_WRITE_METHODDEF \ |
| {"write", (PyCFunction)mmap_mmap_write, METH_O, mmap_mmap_write__doc__}, |
| |
| static PyObject * |
| mmap_mmap_write_impl(mmap_object *self, Py_buffer *data); |
| |
| static PyObject * |
| mmap_mmap_write(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| Py_buffer data = {NULL, NULL}; |
| |
| if (PyObject_GetBuffer(arg, &data, PyBUF_SIMPLE) != 0) { |
| goto exit; |
| } |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_write_impl((mmap_object *)self, &data); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| /* Cleanup for data */ |
| if (data.obj) { |
| PyBuffer_Release(&data); |
| } |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_write_byte__doc__, |
| "write_byte($self, byte, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_WRITE_BYTE_METHODDEF \ |
| {"write_byte", (PyCFunction)mmap_mmap_write_byte, METH_O, mmap_mmap_write_byte__doc__}, |
| |
| static PyObject * |
| mmap_mmap_write_byte_impl(mmap_object *self, unsigned char value); |
| |
| static PyObject * |
| mmap_mmap_write_byte(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| unsigned char value; |
| |
| { |
| long ival = PyLong_AsLong(arg); |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| else if (ival < 0) { |
| PyErr_SetString(PyExc_OverflowError, |
| "unsigned byte integer is less than minimum"); |
| goto exit; |
| } |
| else if (ival > UCHAR_MAX) { |
| PyErr_SetString(PyExc_OverflowError, |
| "unsigned byte integer is greater than maximum"); |
| goto exit; |
| } |
| else { |
| value = (unsigned char) ival; |
| } |
| } |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_write_byte_impl((mmap_object *)self, value); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_size__doc__, |
| "size($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_SIZE_METHODDEF \ |
| {"size", (PyCFunction)mmap_mmap_size, METH_NOARGS, mmap_mmap_size__doc__}, |
| |
| static PyObject * |
| mmap_mmap_size_impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap_size(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_size_impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| #if (defined(MS_WINDOWS) || defined(HAVE_MREMAP)) |
| |
| PyDoc_STRVAR(mmap_mmap_resize__doc__, |
| "resize($self, newsize, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_RESIZE_METHODDEF \ |
| {"resize", (PyCFunction)mmap_mmap_resize, METH_O, mmap_mmap_resize__doc__}, |
| |
| static PyObject * |
| mmap_mmap_resize_impl(mmap_object *self, Py_ssize_t new_size); |
| |
| static PyObject * |
| mmap_mmap_resize(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t new_size; |
| |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(arg); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| new_size = ival; |
| } |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_resize_impl((mmap_object *)self, new_size); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* (defined(MS_WINDOWS) || defined(HAVE_MREMAP)) */ |
| |
| PyDoc_STRVAR(mmap_mmap_tell__doc__, |
| "tell($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_TELL_METHODDEF \ |
| {"tell", (PyCFunction)mmap_mmap_tell, METH_NOARGS, mmap_mmap_tell__doc__}, |
| |
| static PyObject * |
| mmap_mmap_tell_impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap_tell(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_tell_impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_flush__doc__, |
| "flush($self, offset=0, size=-1, /, *, flags=0)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_FLUSH_METHODDEF \ |
| {"flush", _PyCFunction_CAST(mmap_mmap_flush), METH_FASTCALL|METH_KEYWORDS, mmap_mmap_flush__doc__}, |
| |
| static PyObject * |
| mmap_mmap_flush_impl(mmap_object *self, Py_ssize_t offset, Py_ssize_t size, |
| int flags); |
| |
| static PyObject * |
| mmap_mmap_flush(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(flags), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"", "", "flags", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "flush", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[3]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| Py_ssize_t offset = 0; |
| Py_ssize_t size = -1; |
| int flags = 0; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (nargs < 1) { |
| goto skip_optional_posonly; |
| } |
| noptargs--; |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[0]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| offset = ival; |
| } |
| if (nargs < 2) { |
| goto skip_optional_posonly; |
| } |
| noptargs--; |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[1]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| size = ival; |
| } |
| skip_optional_posonly: |
| if (!noptargs) { |
| goto skip_optional_kwonly; |
| } |
| flags = PyLong_AsInt(args[2]); |
| if (flags == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| skip_optional_kwonly: |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_flush_impl((mmap_object *)self, offset, size, flags); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_seek__doc__, |
| "seek($self, pos, whence=0, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_SEEK_METHODDEF \ |
| {"seek", _PyCFunction_CAST(mmap_mmap_seek), METH_FASTCALL, mmap_mmap_seek__doc__}, |
| |
| static PyObject * |
| mmap_mmap_seek_impl(mmap_object *self, Py_ssize_t dist, int how); |
| |
| static PyObject * |
| mmap_mmap_seek(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t dist; |
| int how = 0; |
| |
| if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) { |
| goto exit; |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[0]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| dist = ival; |
| } |
| if (nargs < 2) { |
| goto skip_optional; |
| } |
| how = PyLong_AsInt(args[1]); |
| if (how == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| skip_optional: |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_seek_impl((mmap_object *)self, dist, how); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_set_name__doc__, |
| "set_name($self, name, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_SET_NAME_METHODDEF \ |
| {"set_name", (PyCFunction)mmap_mmap_set_name, METH_O, mmap_mmap_set_name__doc__}, |
| |
| static PyObject * |
| mmap_mmap_set_name_impl(mmap_object *self, const char *name); |
| |
| static PyObject * |
| mmap_mmap_set_name(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| const char *name; |
| |
| if (!PyUnicode_Check(arg)) { |
| _PyArg_BadArgument("set_name", "argument", "str", arg); |
| goto exit; |
| } |
| Py_ssize_t name_length; |
| name = PyUnicode_AsUTF8AndSize(arg, &name_length); |
| if (name == NULL) { |
| goto exit; |
| } |
| if (strlen(name) != (size_t)name_length) { |
| PyErr_SetString(PyExc_ValueError, "embedded null character"); |
| goto exit; |
| } |
| return_value = mmap_mmap_set_name_impl((mmap_object *)self, name); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_seekable__doc__, |
| "seekable($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_SEEKABLE_METHODDEF \ |
| {"seekable", (PyCFunction)mmap_mmap_seekable, METH_NOARGS, mmap_mmap_seekable__doc__}, |
| |
| static PyObject * |
| mmap_mmap_seekable_impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap_seekable(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return mmap_mmap_seekable_impl((mmap_object *)self); |
| } |
| |
| PyDoc_STRVAR(mmap_mmap_move__doc__, |
| "move($self, dest, src, count, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_MOVE_METHODDEF \ |
| {"move", _PyCFunction_CAST(mmap_mmap_move), METH_FASTCALL, mmap_mmap_move__doc__}, |
| |
| static PyObject * |
| mmap_mmap_move_impl(mmap_object *self, Py_ssize_t dest, Py_ssize_t src, |
| Py_ssize_t cnt); |
| |
| static PyObject * |
| mmap_mmap_move(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t dest; |
| Py_ssize_t src; |
| Py_ssize_t cnt; |
| |
| if (!_PyArg_CheckPositional("move", nargs, 3, 3)) { |
| goto exit; |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[0]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| dest = ival; |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[1]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| src = ival; |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[2]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| cnt = ival; |
| } |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_move_impl((mmap_object *)self, dest, src, cnt); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap___enter____doc__, |
| "__enter__($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP___ENTER___METHODDEF \ |
| {"__enter__", (PyCFunction)mmap_mmap___enter__, METH_NOARGS, mmap_mmap___enter____doc__}, |
| |
| static PyObject * |
| mmap_mmap___enter___impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap___enter__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap___enter___impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(mmap_mmap___exit____doc__, |
| "__exit__($self, exc_type, exc_value, traceback, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP___EXIT___METHODDEF \ |
| {"__exit__", _PyCFunction_CAST(mmap_mmap___exit__), METH_FASTCALL, mmap_mmap___exit____doc__}, |
| |
| static PyObject * |
| mmap_mmap___exit___impl(mmap_object *self, PyObject *exc_type, |
| PyObject *exc_value, PyObject *traceback); |
| |
| static PyObject * |
| mmap_mmap___exit__(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| PyObject *exc_type; |
| PyObject *exc_value; |
| PyObject *traceback; |
| |
| if (!_PyArg_CheckPositional("__exit__", nargs, 3, 3)) { |
| goto exit; |
| } |
| exc_type = args[0]; |
| exc_value = args[1]; |
| traceback = args[2]; |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap___exit___impl((mmap_object *)self, exc_type, exc_value, traceback); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| #if defined(MS_WINDOWS) |
| |
| PyDoc_STRVAR(mmap_mmap___sizeof____doc__, |
| "__sizeof__($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP___SIZEOF___METHODDEF \ |
| {"__sizeof__", (PyCFunction)mmap_mmap___sizeof__, METH_NOARGS, mmap_mmap___sizeof____doc__}, |
| |
| static PyObject * |
| mmap_mmap___sizeof___impl(mmap_object *self); |
| |
| static PyObject * |
| mmap_mmap___sizeof__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| PyObject *return_value = NULL; |
| |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap___sizeof___impl((mmap_object *)self); |
| Py_END_CRITICAL_SECTION(); |
| |
| return return_value; |
| } |
| |
| #endif /* defined(MS_WINDOWS) */ |
| |
| #if (defined(MS_WINDOWS) && defined(Py_DEBUG)) |
| |
| PyDoc_STRVAR(mmap_mmap__protect__doc__, |
| "_protect($self, flNewProtect, start, length, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP__PROTECT_METHODDEF \ |
| {"_protect", _PyCFunction_CAST(mmap_mmap__protect), METH_FASTCALL, mmap_mmap__protect__doc__}, |
| |
| static PyObject * |
| mmap_mmap__protect_impl(mmap_object *self, unsigned int flNewProtect, |
| Py_ssize_t start, Py_ssize_t length); |
| |
| static PyObject * |
| mmap_mmap__protect(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| unsigned int flNewProtect; |
| Py_ssize_t start; |
| Py_ssize_t length; |
| |
| if (!_PyArg_CheckPositional("_protect", nargs, 3, 3)) { |
| goto exit; |
| } |
| { |
| Py_ssize_t _bytes = PyLong_AsNativeBytes(args[0], &flNewProtect, sizeof(unsigned int), |
| Py_ASNATIVEBYTES_NATIVE_ENDIAN | |
| Py_ASNATIVEBYTES_ALLOW_INDEX | |
| Py_ASNATIVEBYTES_UNSIGNED_BUFFER); |
| if (_bytes < 0) { |
| goto exit; |
| } |
| if ((size_t)_bytes > sizeof(unsigned int)) { |
| if (PyErr_WarnEx(PyExc_DeprecationWarning, |
| "integer value out of range", 1) < 0) |
| { |
| goto exit; |
| } |
| } |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[1]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| start = ival; |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[2]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| length = ival; |
| } |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap__protect_impl((mmap_object *)self, flNewProtect, start, length); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* (defined(MS_WINDOWS) && defined(Py_DEBUG)) */ |
| |
| #if defined(HAVE_MADVISE) |
| |
| PyDoc_STRVAR(mmap_mmap_madvise__doc__, |
| "madvise($self, option, start=0, length=None, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define MMAP_MMAP_MADVISE_METHODDEF \ |
| {"madvise", _PyCFunction_CAST(mmap_mmap_madvise), METH_FASTCALL, mmap_mmap_madvise__doc__}, |
| |
| static PyObject * |
| mmap_mmap_madvise_impl(mmap_object *self, int option, Py_ssize_t start, |
| PyObject *length_obj); |
| |
| static PyObject * |
| mmap_mmap_madvise(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| int option; |
| Py_ssize_t start = 0; |
| PyObject *length_obj = Py_None; |
| |
| if (!_PyArg_CheckPositional("madvise", nargs, 1, 3)) { |
| goto exit; |
| } |
| option = PyLong_AsInt(args[0]); |
| if (option == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| if (nargs < 2) { |
| goto skip_optional; |
| } |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(args[1]); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| start = ival; |
| } |
| if (nargs < 3) { |
| goto skip_optional; |
| } |
| length_obj = args[2]; |
| skip_optional: |
| Py_BEGIN_CRITICAL_SECTION(self); |
| return_value = mmap_mmap_madvise_impl((mmap_object *)self, option, start, length_obj); |
| Py_END_CRITICAL_SECTION(); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* defined(HAVE_MADVISE) */ |
| |
| #ifndef MMAP_MMAP_RESIZE_METHODDEF |
| #define MMAP_MMAP_RESIZE_METHODDEF |
| #endif /* !defined(MMAP_MMAP_RESIZE_METHODDEF) */ |
| |
| #ifndef MMAP_MMAP___SIZEOF___METHODDEF |
| #define MMAP_MMAP___SIZEOF___METHODDEF |
| #endif /* !defined(MMAP_MMAP___SIZEOF___METHODDEF) */ |
| |
| #ifndef MMAP_MMAP__PROTECT_METHODDEF |
| #define MMAP_MMAP__PROTECT_METHODDEF |
| #endif /* !defined(MMAP_MMAP__PROTECT_METHODDEF) */ |
| |
| #ifndef MMAP_MMAP_MADVISE_METHODDEF |
| #define MMAP_MMAP_MADVISE_METHODDEF |
| #endif /* !defined(MMAP_MMAP_MADVISE_METHODDEF) */ |
| /*[clinic end generated code: output=8389e3c8e3db3a78 input=a9049054013a1b77]*/ |