Lines Matching refs:self
179 mmap_close_method(mmap_object *self, PyObject *unused)
181 if (self->exports > 0) {
194 HANDLE map_handle = self->map_handle;
195 HANDLE file_handle = self->file_handle;
196 char *data = self->data;
197 self->map_handle = NULL;
198 self->file_handle = INVALID_HANDLE_VALUE;
199 self->data = NULL;
214 int fd = self->fd;
215 char *data = self->data;
216 self->fd = -1;
217 self->data = NULL;
222 munmap(data, self->size);
233 if (self->map_handle == NULL) { \
240 if (self->map_handle == NULL) { \
251 if (self->data == NULL) { \
258 if (self->data == NULL) { \
267 mmap_read_byte_method(mmap_object *self,
271 if (self->pos >= self->size) {
275 return PyLong_FromLong((unsigned char)self->data[self->pos++]);
279 mmap_read_line_method(mmap_object *self,
288 remaining = (self->pos < self->size) ? self->size - self->pos : 0;
291 start = self->data + self->pos;
294 eol = self->data + self->size;
298 self->pos += (eol - start);
303 mmap_read_method(mmap_object *self,
315 remaining = (self->pos < self->size) ? self->size - self->pos : 0;
318 result = PyBytes_FromStringAndSize(&self->data[self->pos], num_bytes);
319 self->pos += num_bytes;
324 mmap_gfind(mmap_object *self,
328 Py_ssize_t start = self->pos;
329 Py_ssize_t end = self->size;
339 start += self->size;
342 else if (start > self->size)
343 start = self->size;
346 end += self->size;
349 else if (end > self->size)
350 end = self->size;
356 self->data + start, end - start,
361 self->data + start, end - start,
370 mmap_find_method(mmap_object *self,
373 return mmap_gfind(self, args, 0);
377 mmap_rfind_method(mmap_object *self,
380 return mmap_gfind(self, args, 1);
384 is_writable(mmap_object *self)
386 if (self->access != ACCESS_READ)
393 is_resizeable(mmap_object *self)
395 if (self->exports > 0) {
400 if ((self->access == ACCESS_WRITE) || (self->access == ACCESS_DEFAULT))
410 mmap_write_method(mmap_object *self,
419 if (!is_writable(self)) {
424 if (self->pos > self->size || self->size - self->pos < data.len) {
431 memcpy(&self->data[self->pos], data.buf, data.len);
432 self->pos += data.len;
438 mmap_write_byte_method(mmap_object *self,
447 if (!is_writable(self))
451 if (self->pos < self->size) {
452 self->data[self->pos++] = value;
462 mmap_size_method(mmap_object *self,
468 if (self->file_handle != INVALID_HANDLE_VALUE) {
471 low = GetFileSize(self->file_handle, &high);
484 return PyLong_FromSsize_t(self->size);
491 if (_Py_fstat(self->fd, &status) == -1)
512 mmap_resize_method(mmap_object *self,
518 !is_resizeable(self)) {
521 if (new_size < 0 || PY_SSIZE_T_MAX - new_size < self->offset) {
529 char* old_data = self->data;
531 offset.QuadPart = self->offset;
532 max_size.QuadPart = self->offset + new_size;
534 CloseHandle(self->map_handle);
536 if (self->tagname) {
537 self->map_handle = OpenFileMapping(FILE_MAP_WRITE, FALSE,
538 self->tagname);
539 if (self->map_handle) {
544 self->map_handle = NULL;
548 if (self->file_handle != INVALID_HANDLE_VALUE) {
549 if (!UnmapViewOfFile(self->data)) {
552 self->data = NULL;
554 if (!SetFilePointerEx(self->file_handle, max_size, NULL,
556 !SetEndOfFile(self->file_handle)) {
559 max_size.QuadPart = self->size;
560 new_size = self->size;
566 self->map_handle = CreateFileMapping(
567 self->file_handle,
572 self->tagname);
581 CloseHandle(self->map_handle);
582 self->map_handle = NULL;
584 else if (self->map_handle != NULL) {
585 self->data = MapViewOfFile(self->map_handle,
590 if (self->data != NULL) {
592 if (self->file_handle == INVALID_HANDLE_VALUE) {
593 memcpy(self->data, old_data,
594 self->size < new_size ? self->size : new_size);
599 self->size = new_size;
603 CloseHandle(self->map_handle);
604 self->map_handle = NULL;
632 if (self->fd != -1 && ftruncate(self->fd, self->offset + new_size) == -1) {
638 newmap = mremap(self->data, self->size, new_size, MREMAP_MAYMOVE);
641 newmap = mremap(self->data, self->size, self->data, new_size, 0);
643 newmap = mremap(self->data, self->size, new_size, 0);
651 self->data = newmap;
652 self->size = new_size;
660 mmap_tell_method(mmap_object *self, PyObject *unused)
663 return PyLong_FromSize_t(self->pos);
667 mmap_flush_method(mmap_object *self, PyObject *args)
670 Py_ssize_t size = self->size;
674 if (size < 0 || offset < 0 || self->size - offset < size) {
679 if (self->access == ACCESS_READ || self->access == ACCESS_COPY)
683 if (!FlushViewOfFile(self->data+offset, size)) {
690 if (-1 == msync(self->data + offset, size, MS_SYNC)) {
702 mmap_seek_method(mmap_object *self, PyObject *args)
716 if (PY_SSIZE_T_MAX - self->pos < dist)
718 where = self->pos + dist;
721 if (PY_SSIZE_T_MAX - self->size < dist)
723 where = self->size + dist;
729 if (where > self->size || where < 0)
731 self->pos = where;
741 mmap_move_method(mmap_object *self, PyObject *args)
746 !is_writable(self)) {
752 if (self->size - dest < cnt || self->size - src < cnt)
756 memmove(&self->data[dest], &self->data[src], cnt);
768 mmap_closed_get(mmap_object *self, void *Py_UNUSED(ignored))
771 return PyBool_FromLong(self->map_handle == NULL ? 1 : 0);
773 return PyBool_FromLong(self->data == NULL ? 1 : 0);
778 mmap__enter__method(mmap_object *self, PyObject *args)
782 Py_INCREF(self);
783 return (PyObject *)self;
787 mmap__exit__method(PyObject *self, PyObject *args)
789 return mmap_close_method((mmap_object *)self, NULL);
793 mmap__repr__method(PyObject *self)
795 mmap_object *mobj = (mmap_object *)self;
809 return PyUnicode_FromFormat("<%s closed=True>", Py_TYPE(self)->tp_name);
832 Py_TYPE(self)->tp_name, access_str,
839 mmap__sizeof__method(mmap_object *self, void *unused)
843 res = _PyObject_SIZE(Py_TYPE(self));
844 if (self->tagname)
845 res += strlen(self->tagname) + 1;
852 mmap_madvise_method(mmap_object *self, PyObject *args)
858 length = self->size;
864 if (start < 0 || start >= self->size) {
877 if (start + length > self->size) {
878 length = self->size - start;
882 if (madvise(self->data + start, length, option) != 0) {
931 mmap_buffer_getbuf(mmap_object *self, Py_buffer *view, int flags)
934 if (PyBuffer_FillInfo(view, (PyObject*)self, self->data, self->size,
935 (self->access == ACCESS_READ), flags) < 0)
937 self->exports++;
942 mmap_buffer_releasebuf(mmap_object *self, Py_buffer *view)
944 self->exports--;
948 mmap_length(mmap_object *self)
951 return self->size;
955 mmap_item(mmap_object *self, Py_ssize_t i)
958 if (i < 0 || i >= self->size) {
962 return PyBytes_FromStringAndSize(self->data + i, 1);
966 mmap_subscript(mmap_object *self, PyObject *item)
974 i += self->size;
975 if (i < 0 || i >= self->size) {
981 return PyLong_FromLong(Py_CHARMASK(self->data[i]));
989 slicelen = PySlice_AdjustIndices(self->size, &start, &stop, step);
995 return PyBytes_FromStringAndSize(self->data + start,
1008 result_buf[i] = self->data[cur];
1024 mmap_ass_item(mmap_object *self, Py_ssize_t i, PyObject *v)
1029 if (i < 0 || i >= self->size) {
1043 if (!is_writable(self))
1046 self->data[i] = buf[0];
1051 mmap_ass_subscript(mmap_object *self, PyObject *item, PyObject *value)
1055 if (!is_writable(self))
1065 i += self->size;
1066 if (i < 0 || i >= self->size) {
1091 self->data[i] = (char) v;
1101 slicelen = PySlice_AdjustIndices(self->size, &start, &stop, step);
1120 memcpy(self->data + start, vbuf.buf, slicelen);
1130 self->data[cur] = ((char *)vbuf.buf)[i];