낡은 버퍼 프로토콜
******************

버전 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"를 설정합
   니다.
