낡은 버퍼 프로토콜

버전 3.0부터 폐지.

이 함수는 파이썬 2에서 “낡은 버퍼 프로토콜” API 일부분이었습니다. 파이썬 3에서는 이 프로토콜이 더는 존재하지 않지만 2.x 코드 이식을 쉽게 하도록 함수들은 여전히 노출됩니다. 이들은 새 버퍼 프로토콜를 둘러싼 호환성 래퍼 역할을 하지만, 버퍼를 제공할 때 얻은 자원의 수명을 제어할 수는 없습니다.

따라서, PyObject_GetBuffer()(또는 y*w* 포맷 코드를 사용하는 PyArg_ParseTuple() 계열의 함수)를 호출하여 개체에 대한 버퍼 뷰를 가져오고, 버퍼 뷰를 해제할 수 있을 때 PyBuffer_Release()를 호출하는 것이 좋습니다.

int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)

문자 기반 입력으로 사용할 수 있는 읽기 전용 메모리 위치에 대한 포인터를 반환합니다. obj 인자는 단일 세그먼트 문자 버퍼 인터페이스를 지원해야 합니다. 성공하면, 0을 반환하고, buffer를 메모리 위치로 설정하고, buffer_len을 버퍼 길이로 설정합니다. 에러 시에, -1을 반환하고, TypeError를 설정합니다.

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)

임의의 데이터를 포함하는 읽기 전용 메모리 위치에 대한 포인터를 반환합니다. obj 인자는 단일 세그먼트 읽기 가능 버퍼 인터페이스를 지원해야 합니다. 성공하면, 0을 반환하고, buffer를 메모리 위치로 설정하고, buffer_len을 버퍼 길이로 설정합니다. 에러 시에, -1을 반환하고, TypeError를 설정합니다.

int PyObject_CheckReadBuffer(PyObject *o)

o가 단일 세그먼트 읽기 가능 버퍼 인터페이스를 지원하면 1을 반환합니다. 그렇지 않으면, 0을 반환합니다. 이 함수는 항상 성공합니다.

이 함수는 버퍼를 가져오고 해제하려고 하며, 해당 함수를 호출하는 동안 발생하는 예외는 억제됨에 유의하십시오. 에러 보고를 받으려면 대신 PyObject_GetBuffer()를 사용하십시오.

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)

쓰기 가능한 메모리 위치에 대한 포인터를 반환합니다. obj 인자는 단일 세그먼트, 문자 버퍼 인터페이스를 지원해야 합니다. 성공하면, 0을 반환하고, buffer를 메모리 위치로 설정하고, buffer_len을 버퍼 길이로 설정합니다. 에러 시에, -1을 반환하고, TypeError를 설정합니다.