5.4 データ整列化 (data marshalling) のサポート
以下のルーチン群は、marshal モジュールと同じ形式を使った
整列化オブジェクトを C コードから使えるようにします。
整列化形式でデータを書き出す関数に加えて、データを読み戻す関数
もあります。整列化されたデータを記録するファイルはバイナリモードで
開かれていなければなりません。
数値は最小桁が先にくるように記録されます。
このモジュールでは、二つのバージョンのデータ形式をサポートしています。
バージョン 0 は従来のもので、(Python 2.4 で新たに追加された) バージョン 1
は intern 化された文字列をファイル内で共有し、逆マーシャル化の時にも
共有されるようにします。PY_MARSHAL_VERSION は現在のバージョン
(バージョン 1) を示します。
void PyMarshal_WriteLongToFile( | long value, FILE *file, int version) |
-
long 型の整数値 value を file へ整列化します。
この関数は value の下桁 32 ビットを書き込むだけです;
ネイティブの long 型サイズには関知しません。
バージョン 2.4 で 変更 された仕様:
ファイル形式を示すversion が追加されました
void PyMarshal_WriteObjectToFile( | PyObject *value,
FILE *file, int version) |
-
Python オブジェクトvalue を file へ整列化します。
バージョン 2.4 で 変更 された仕様:
ファイル形式を示すversion が追加されました
PyObject* PyMarshal_WriteObjectToString( | PyObject *value, int version) |
-
戻り値:
新たな参照.
value の整列化表現が入った文字列オブジェクトを返します。
バージョン 2.4 で 変更 された仕様:
ファイル形式を示すversion が追加されました
以下の関数を使うと、整列化された値を読み戻せます。
long PyMarshal_ReadLongFromFile( | FILE *file) |
-
読み出し用に開かれた FILE* 内のデータストリームから、
C の long 型データを読み出して返します。
この関数は、ネイティブの long のサイズに関係なく、
32 ビットの値だけを読み出せます。
int PyMarshal_ReadShortFromFile( | FILE *file) |
-
読み出し用に開かれた FILE* 内のデータストリームから、
C の short 型データを読み出して返します。
この関数は、ネイティブの short のサイズに関係なく、
16 ビットの値だけを読み出せます。
PyObject* PyMarshal_ReadObjectFromFile( | FILE *file) |
-
戻り値:
新たな参照.
読み出し用に開かれた FILE* 内のデータストリームから、
Python オブジェクトを読み出して返します。
エラーが生じた場合、適切な例外 (EOFError または
TypeError) を送出して NULLを返します。
PyObject* PyMarshal_ReadLastObjectFromFile( | FILE *file) |
-
戻り値:
新たな参照.
読み出し用に開かれた FILE* 内のデータストリームから、
Python オブジェクトを読み出して返します。
PyMarshal_ReadObjectFromFile() と違い、この関数は
ファイル中に後続のオブジェクトが存在しないと仮定し、ファイルから
メモリ上にファイルデータを一気にメモリにロードして、逆整列化機構が
ファイルから一バイトづつ読み出す代わりにメモリ上のデータを操作
できるようにします。対象のファイルから他に何も読み出さないと
分かっている場合にのみ、この関数を使ってください。
エラーが生じた場合、適切な例外 (EOFError または
TypeError) を送出して NULLを返します。
PyObject* PyMarshal_ReadObjectFromString( | char *string,
int len) |
-
戻り値:
新たな参照.
string が指しているlen バイトの文字列バッファに納められた
データストリームから Python オブジェクトを読み出して返します。
エラーが生じた場合、適切な例外 (EOFError または
TypeError) を送出して NULLを返します。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。