mirror of https://github.com/python/cpython
Reformat prior to editing.
This commit is contained in:
parent
9e03cee97c
commit
a4c03abb9e
|
@ -5,25 +5,26 @@
|
|||
Data marshalling support
|
||||
========================
|
||||
|
||||
These routines allow C code to work with serialized objects using the same data
|
||||
format as the :mod:`marshal` module. There are functions to write data into the
|
||||
serialization format, and additional functions that can be used to read the data
|
||||
back. Files used to store marshalled data must be opened in binary mode.
|
||||
These routines allow C code to work with serialized objects using the same
|
||||
data format as the :mod:`marshal` module. There are functions to write data
|
||||
into the serialization format, and additional functions that can be used to
|
||||
read the data back. Files used to store marshalled data must be opened in
|
||||
binary mode.
|
||||
|
||||
Numeric values are stored with the least significant byte first.
|
||||
|
||||
The module supports two versions of the data format: version 0 is the historical
|
||||
version, version 1 (new in Python 2.4) shares interned strings in the file, and
|
||||
upon unmarshalling. Version 2 (new in Python 2.5) uses a binary format for
|
||||
floating point numbers.
|
||||
*Py_MARSHAL_VERSION* indicates the current file format (currently 2).
|
||||
The module supports two versions of the data format: version 0 is the
|
||||
historical version, version 1 (new in Python 2.4) shares interned strings in
|
||||
the file, and upon unmarshalling. Version 2 (new in Python 2.5) uses a binary
|
||||
format for floating point numbers. *Py_MARSHAL_VERSION* indicates the current
|
||||
file format (currently 2).
|
||||
|
||||
|
||||
.. cfunction:: void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
|
||||
|
||||
Marshal a :ctype:`long` integer, *value*, to *file*. This will only write the
|
||||
least-significant 32 bits of *value*; regardless of the size of the native
|
||||
:ctype:`long` type.
|
||||
Marshal a :ctype:`long` integer, *value*, to *file*. This will only write
|
||||
the least-significant 32 bits of *value*; regardless of the size of the
|
||||
native :ctype:`long` type.
|
||||
|
||||
.. versionchanged:: 2.4
|
||||
*version* indicates the file format.
|
||||
|
@ -48,24 +49,24 @@ floating point numbers.
|
|||
The following functions allow marshalled values to be read back in.
|
||||
|
||||
XXX What about error detection? It appears that reading past the end of the
|
||||
file will always result in a negative numeric value (where that's relevant), but
|
||||
it's not clear that negative values won't be handled properly when there's no
|
||||
error. What's the right way to tell? Should only non-negative values be written
|
||||
using these routines?
|
||||
file will always result in a negative numeric value (where that's relevant),
|
||||
but it's not clear that negative values won't be handled properly when there's
|
||||
no error. What's the right way to tell? Should only non-negative values be
|
||||
written using these routines?
|
||||
|
||||
|
||||
.. cfunction:: long PyMarshal_ReadLongFromFile(FILE *file)
|
||||
|
||||
Return a C :ctype:`long` from the data stream in a :ctype:`FILE\*` opened for
|
||||
reading. Only a 32-bit value can be read in using this function, regardless of
|
||||
the native size of :ctype:`long`.
|
||||
Return a C :ctype:`long` from the data stream in a :ctype:`FILE\*` opened
|
||||
for reading. Only a 32-bit value can be read in using this function,
|
||||
regardless of the native size of :ctype:`long`.
|
||||
|
||||
|
||||
.. cfunction:: int PyMarshal_ReadShortFromFile(FILE *file)
|
||||
|
||||
Return a C :ctype:`short` from the data stream in a :ctype:`FILE\*` opened for
|
||||
reading. Only a 16-bit value can be read in using this function, regardless of
|
||||
the native size of :ctype:`short`.
|
||||
Return a C :ctype:`short` from the data stream in a :ctype:`FILE\*` opened
|
||||
for reading. Only a 16-bit value can be read in using this function,
|
||||
regardless of the native size of :ctype:`short`.
|
||||
|
||||
|
||||
.. cfunction:: PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
|
||||
|
@ -78,17 +79,18 @@ using these routines?
|
|||
.. cfunction:: PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
|
||||
|
||||
Return a Python object from the data stream in a :ctype:`FILE\*` opened for
|
||||
reading. Unlike :cfunc:`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 these
|
||||
variant if you are certain that you won't be reading anything else from the
|
||||
file. On error, sets the appropriate exception (:exc:`EOFError` or
|
||||
:exc:`TypeError`) and returns *NULL*.
|
||||
reading. Unlike :cfunc:`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 these variant if you are certain that you won't be reading
|
||||
anything else from the file. On error, sets the appropriate exception
|
||||
(:exc:`EOFError` or :exc:`TypeError`) and returns *NULL*.
|
||||
|
||||
|
||||
.. cfunction:: PyObject* PyMarshal_ReadObjectFromString(char *string, Py_ssize_t len)
|
||||
|
||||
Return a Python object from the data stream in a character buffer containing
|
||||
*len* bytes pointed to by *string*. On error, sets the appropriate exception
|
||||
(:exc:`EOFError` or :exc:`TypeError`) and returns *NULL*.
|
||||
Return a Python object from the data stream in a character buffer
|
||||
containing *len* bytes pointed to by *string*. On error, sets the
|
||||
appropriate exception (:exc:`EOFError` or :exc:`TypeError`) and returns
|
||||
*NULL*.
|
||||
|
|
Loading…
Reference in New Issue