MemoryView 객체
***************

"memoryview" 객체는 C 수준 버퍼 인터페이스를 다른 객체와 마찬가지로 전
달될 수 있는 파이썬 객체로 노출합니다.

PyObject *PyMemoryView_FromObject(PyObject *obj)
    *반환값: 새 참조.** Part of the 안정 ABI.*

   버퍼 인터페이스를 제공하는 객체에서 memoryview 객체를 만듭니다.
   *obj*가 쓰기 가능한 버퍼 제공을 지원하면, memoryview 객체는 읽기/쓰
   기가 되고, 그렇지 않으면 읽기 전용이거나 제공자의 재량에 따라 읽기/
   쓰기가 될 수 있습니다.

PyBUF_READ

   읽기 전용 버퍼를 요청하는 플래그

PyBUF_WRITE

   쓰기 가능한 버퍼를 요청하는 플래그

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
    *반환값: 새 참조.** Part of the 안정 ABI 버전 3.7 이후로.*

   *mem*를 하부 버퍼로 사용하여 memoryview 객체를 만듭니다. *flags*는
   "PyBUF_READ" 나 "PyBUF_WRITE" 중 하나일 수 있습니다.

   버전 3.3에 추가.

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)
    *반환값: 새 참조.** Part of the 안정 ABI 버전 3.11 이후로.*

   주어진 버퍼 구조체 *view*를 감싸는 memoryview 객체를 만듭니다. 간단
   한 바이트 버퍼의 경우는, "PyMemoryView_FromMemory()"가 선호되는 함
   수입니다.

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
    *반환값: 새 참조.** Part of the 안정 ABI.*

   버퍼 인터페이스를 정의하는 객체로부터 메모리의 *연속* 청크('C' 나
   'F'ortran *order*로)로 memoryview 객체를 만듭니다. 메모리가 연속적
   이면 memoryview 객체는 원래 메모리를 가리킵니다. 그렇지 않으면, 복
   사본이 만들어지고 memoryview는 새 바이트열 객체를 가리킵니다.

   *buffertype*은 "PyBUF_READ" 나 "PyBUF_WRITE" 중 하나일 수 있습니다.

int PyMemoryView_Check(PyObject *obj)

   객체 *obj*가 memoryview 객체면 참을 반환합니다. 현재는 "memoryview"
   의 서브 클래스를 만들 수 없습니다. 이 함수는 항상 성공합니다.

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

   제공자 버퍼의 memoryview의 비공개 복사본의 포인터를 돌려줍니다.
   *mview*는 **반드시** memoryview 인스턴스여야 합니다; 이 매크로는 형
   을 확인하지 않으므로 직접 검사해야 합니다, 그렇지 않으면 충돌 위험
   이 있습니다.

PyObject *PyMemoryView_GET_BASE(PyObject *mview)

   memoryview가 기반으로 하는 제공자 객체에 대한 포인터나 memoryview가
   "PyMemoryView_FromMemory()" 나 "PyMemoryView_FromBuffer()" 함수 중
   하나로 만들어졌으면 "NULL"을 반환합니다. *mview*는 **반드시**
   memoryview 인스턴스여야 합니다.
