# 낡은 버퍼 프로토콜

버전 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)
  Part of the Stable ABI.

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

int `PyObject_AsReadBuffer`(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
  Part of the Stable ABI.

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

int `PyObject_CheckReadBuffer`(PyObject *o)
  Part of the Stable ABI.

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

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

int `PyObject_AsWriteBuffer`(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
  Part of the Stable ABI.

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