データ整列化 (data marshalling) のサポート¶
以下のルーチン群は、 marshal モジュールと同じ形式を使った整列化オブジェクトを C コードから使えるようにします。整列化形式でデータを書き出す関数に加えて、データを読み戻す関数もあります。整列化されたデータを記録するファイルはバイナリモードで開かれていなければなりません。
数値は最小桁が先にくるように記録されます。
The module supports two versions of the data format: version 0 is the
historical version, version 1 shares interned strings in the file, and upon
unmarshalling. Version 2 uses a binary format for floating-point numbers.
Py_MARSHAL_VERSION indicates the current file format (currently 2).
-
void PyMarshal_WriteLongToFile(long value, FILE *file, int version)¶
long 型の整数値 value を file へ整列化します。この関数は value の下桁 32 ビットを書き込むだけです; ネイティブの long 型サイズには関知しません。 version はファイルフォーマットを示します。
この関数は失敗することがあり、その場合はエラー指示子を設定します。それを確認するために
PyErr_Occurred()を使います。
-
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)¶
Python オブジェクト value を file へ整列化します。version はファイルフォーマットを示します。
この関数は失敗することがあり、その場合はエラー指示子を設定します。それを確認するために
PyErr_Occurred()を使います。
-
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)¶
- 戻り値: 新しい参照。
value の整列化表現が入ったバイト列オブジェクトを返します。version はファイルフォーマットを示します。
以下の関数を使うと、整列化された値を読み戻せます。
-
long PyMarshal_ReadLongFromFile(FILE *file)¶
読み出し用に開かれた FILE* 内のデータストリームから、 C の long 型データを読み出して返します。この関数は、ネイティブの long のサイズに関係なく、 32 ビットの値だけを読み出せます。
エラーの場合、適切な例外 (
EOFError) を設定し-1を返します。
-
int PyMarshal_ReadShortFromFile(FILE *file)¶
読み出し用に開かれた FILE* 内のデータストリームから、 C の short 型データを読み出して返します。この関数は、ネイティブの short のサイズに関係なく、 16 ビットの値だけを読み出せます。
エラーの場合、適切な例外 (
EOFError) を設定し-1を返します。
-
PyObject *PyMarshal_ReadObjectFromFile(FILE *file)¶
- 戻り値: 新しい参照。
読み出し用に開かれた FILE* 内のデータストリームから Python オブジェクトを返します。
エラーの場合、適切な例外 (
EOFError,ValueError,TypeError) を設定しNULLを返します。
-
PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)¶
- 戻り値: 新しい参照。
Return a Python object from the data stream in a FILE* opened for reading. Unlike
PyMarshal_ReadObjectFromFile(), this function assumes that no further objects will be read from the file, allowing it to aggressively load file data into memory so that the de-serialization can operate from data in memory rather than reading a byte at a time from the file. Only use this variant if you are certain that you won't be reading anything else from the file.エラーの場合、適切な例外 (
EOFError,ValueError,TypeError) を設定しNULLを返します。
-
PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)¶
- 戻り値: 新しい参照。
data が指す len バイトのバイト列バッファ内のデータストリームから Python オブジェクトを返します。
エラーの場合、適切な例外 (
EOFError,ValueError,TypeError) を設定しNULLを返します。