Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/python3.8/memoryobject.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* Memory view object. In Python this is available as "memoryview". */ | |
2 | |
3 #ifndef Py_MEMORYOBJECT_H | |
4 #define Py_MEMORYOBJECT_H | |
5 #ifdef __cplusplus | |
6 extern "C" { | |
7 #endif | |
8 | |
9 #ifndef Py_LIMITED_API | |
10 PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type; | |
11 #endif | |
12 PyAPI_DATA(PyTypeObject) PyMemoryView_Type; | |
13 | |
14 #define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type) | |
15 | |
16 #ifndef Py_LIMITED_API | |
17 /* Get a pointer to the memoryview's private copy of the exporter's buffer. */ | |
18 #define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view) | |
19 /* Get a pointer to the exporting object (this may be NULL!). */ | |
20 #define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj) | |
21 #endif | |
22 | |
23 PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base); | |
24 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | |
25 PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size, | |
26 int flags); | |
27 #endif | |
28 #ifndef Py_LIMITED_API | |
29 PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info); | |
30 #endif | |
31 PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, | |
32 int buffertype, | |
33 char order); | |
34 | |
35 | |
36 /* The structs are declared here so that macros can work, but they shouldn't | |
37 be considered public. Don't access their fields directly, use the macros | |
38 and functions instead! */ | |
39 #ifndef Py_LIMITED_API | |
40 #define _Py_MANAGED_BUFFER_RELEASED 0x001 /* access to exporter blocked */ | |
41 #define _Py_MANAGED_BUFFER_FREE_FORMAT 0x002 /* free format */ | |
42 typedef struct { | |
43 PyObject_HEAD | |
44 int flags; /* state flags */ | |
45 Py_ssize_t exports; /* number of direct memoryview exports */ | |
46 Py_buffer master; /* snapshot buffer obtained from the original exporter */ | |
47 } _PyManagedBufferObject; | |
48 | |
49 | |
50 /* memoryview state flags */ | |
51 #define _Py_MEMORYVIEW_RELEASED 0x001 /* access to master buffer blocked */ | |
52 #define _Py_MEMORYVIEW_C 0x002 /* C-contiguous layout */ | |
53 #define _Py_MEMORYVIEW_FORTRAN 0x004 /* Fortran contiguous layout */ | |
54 #define _Py_MEMORYVIEW_SCALAR 0x008 /* scalar: ndim = 0 */ | |
55 #define _Py_MEMORYVIEW_PIL 0x010 /* PIL-style layout */ | |
56 | |
57 typedef struct { | |
58 PyObject_VAR_HEAD | |
59 _PyManagedBufferObject *mbuf; /* managed buffer */ | |
60 Py_hash_t hash; /* hash value for read-only views */ | |
61 int flags; /* state flags */ | |
62 Py_ssize_t exports; /* number of buffer re-exports */ | |
63 Py_buffer view; /* private copy of the exporter's view */ | |
64 PyObject *weakreflist; | |
65 Py_ssize_t ob_array[1]; /* shape, strides, suboffsets */ | |
66 } PyMemoryViewObject; | |
67 #endif | |
68 | |
69 #ifdef __cplusplus | |
70 } | |
71 #endif | |
72 #endif /* !Py_MEMORYOBJECT_H */ |