codec レジストリとサポート関数
******************************

int PyCodec_Register(PyObject *search_function)
    * 次に属します: Stable ABI.*

   新しい codec 検索関数を登録します。

   副作用として、"encodings" パッケージをまだロードしていなければロー
   ドを試みます。 これにより、検索関数のリストでこのパッケージの検索関
   数が常に先頭になるようにします。

int PyCodec_Unregister(PyObject *search_function)
    * 次に属します: Stable ABI (バージョン 3.10 より).*

   コーデック検索関数の登録を解除し、レジストリのキャッシュをクリアし
   ます。 検索関数が登録されていない場合は何もしません。 成功したら0を
   返します。 エラーの場合は例外を送出させ、-1を返します。

   Added in version 3.10.

int PyCodec_KnownEncoding(const char *encoding)
    * 次に属します: Stable ABI.*

   *encoding* のための登録された codec が存在するかどうかに応じて "1"
   か "0" を返します。 この関数は常に成功します。

PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   汎用の codec ベースの encode API.

   *encoding* に応じて見つかったエンコーダ関数に対して *object* を渡し
   ます。 エラーハンドリングメソッドは *errors* で指定します。
   *errors* は "NULL" でもよく、その場合はその codec のデフォルトのメ
   ソッドが利用されます。 エンコーダが見つからなかった場合は
   "LookupError" を発生させます。

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   汎用の codec ベースのデコード API.

   *encoding* に対応するデコーダ関数に *object* を渡し、*errors* で指
   定したエラー処理方法を使います。 *errors* は "NULL" でも構わず、そ
   の場合はコーデックが定めるデフォルトの方法を使います。 デコーダが見
   つからなければ "LookupError" を送出します。


コーデック検索API
=================

以下の関数では、文字列 *encoding* をすべて小文字に変換してから検索しま
す。 このため、この仕組みによるエンコーディングの検索では、実質的に大
文字と小文字を区別しません。 コーデックが見つからなければ "KeyError"
を設定して "NULL" を返します。

PyObject *PyCodec_Encoder(const char *encoding)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   与えられた *encoding* のエンコーダ関数を返します。

PyObject *PyCodec_Decoder(const char *encoding)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   与えられた *encoding* のデコーダ関数を返します。

PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   与えられた *encoding* の "IncrementalEncoder" オブジェクトを返しま
   す。

PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   与えられた *encoding* の "IncrementalDecoder" オブジェクトを返しま
   す。

PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   与えられた *encoding* の "StreamReader" ファクトリ関数を返します。

PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   与えられた *encoding* の "StreamWriter" ファクトリ関数を返します。


Unicode エラーハンドラ用レジストリ API
======================================

int PyCodec_RegisterError(const char *name, PyObject *error)
    * 次に属します: Stable ABI.*

   エラーハンドルのためのコールバック関数 *error* を *name* で登録しま
   す。このコールバック関数は、コーデックがエンコードできない文字/デコ
   ードできないバイトに遭遇した時に、そのエンコード/デコード関数の呼び
   出しで *name* が指定されていたら呼び出されます。

   コールバックは1つの引数として、 "UnicodeEncodeError",
   "UnicodeDecodeError", "UnicodeTranslateError" のどれかのインスタン
   スを受け取ります。このインスタンスは問題のある文字列やバイト列に関
   する情報と、その元の文字列中のオフセットを持っています。(その情報を
   取得するための関数については Unicode 例外オブジェクト を参照してく
   ださい。) コールバックは渡された例外を発生させるか、2要素のタプルに
   問題のシーケンスの代替と、 encode/decode を再開する元の文字列中のオ
   フセットとなる整数を格納して返します。

   成功したら "0" を、エラー時は "-1" を返します。

PyObject *PyCodec_LookupError(const char *name)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   *name* で登録されたエラーハンドリングコールバック関数を検索します。
   特別な場合として、"NULL" が渡された場合、"strict" のエラーハンドリ
   ングコールバック関数を返します。

PyObject *PyCodec_StrictErrors(PyObject *exc)
    *戻り値: 常に NULL 。** 次に属します: Stable ABI.*

   *exc* を例外として発生させます。

PyObject *PyCodec_IgnoreErrors(PyObject *exc)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   unicode エラーを無視し、問題の入力をスキップします。

PyObject *PyCodec_ReplaceErrors(PyObject *exc)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   unicode エラーを "?" か "U+FFFD" で置き換えます。

PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   unicode encode エラーを XML文字参照で置き換えます。

PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   unicode encode エラーをバックスラッシュエスケープ ("\x", "\u",
   "\U") で置き換えます。

PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
    *戻り値: 新しい参照。** 次に属します: Stable ABI (バージョン 3.7
   より).*

   unicode encode エラーを "\N{...}" で置き換えます。

   Added in version 3.5.


コーデックのユーティリティ変数
==============================

const char *Py_hexdigits

   小文字の 16 進数字を含む文字列定数 ""0123456789abcdef""。

   Added in version 3.3.
