Soporte de empaquetado (marshalling) de datos

Estas rutinas permiten que el código C funcione con objetos serializados utilizando el mismo formato de datos que el módulo marshal. Hay funciones para escribir datos en el formato de serialización y funciones adicionales que se pueden usar para volver a leer los datos. Los archivos utilizados para almacenar datos ordenados deben abrirse en modo binario.

Los valores numéricos se almacenan con el byte menos significativo primero.

El módulo admite dos versiones del formato de datos: la versión 0 es la versión histórica, la versión 1 comparte cadenas de caracteres internas en el archivo y al desempaquetar (unmarshalling). La versión 2 usa un formato binario para números de punto flotante. Py_MARSHAL_VERSION indica el formato de archivo actual (actualmente 2).

void PyMarshal_WriteLongToFile(long value, FILE *file, int version)

Empaqueta (marshal) un entero long, value, a un archivo file. Esto solo escribirá los 32 bits menos significativos de value; independientemente del tamaño del tipo nativo long. version indica el formato del archivo.

void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)

Empaqueta (marshal) un objeto Python, value, a un archivo file. version indica el formato del archivo.

PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
Return value: New reference.

Retorna un objeto de bytes que contiene la representación empaquetada (marshalled) de value. version indica el formato del archivo.

Las siguientes funciones permiten volver a leer los valores empaquetados (marshalled).

long PyMarshal_ReadLongFromFile(FILE *file)

Return a C long from the data stream in a FILE* opened for reading. Only a 32-bit value can be read in using this function, regardless of the native size of long.

En caso de error, establece la excepción apropiada (EOFError) y retorna -1.

int PyMarshal_ReadShortFromFile(FILE *file)

Return a C short from the data stream in a FILE* opened for reading. Only a 16-bit value can be read in using this function, regardless of the native size of short.

En caso de error, establece la excepción apropiada (EOFError) y retorna -1.

PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
Return value: New reference.

Return a Python object from the data stream in a FILE* opened for reading.

En caso de error, establece la excepción apropiada (EOFError, ValueError o TypeError) y retorna NULL.

PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
Return value: New reference.

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 these variant if you are certain that you won’t be reading anything else from the file.

En caso de error, establece la excepción apropiada (EOFError, ValueError o TypeError) y retorna NULL.

PyObject* PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)
Return value: New reference.

Retorna un objeto Python del flujo de datos en un búfer de bytes que contiene len bytes a los que apunta data.

En caso de error, establece la excepción apropiada (EOFError, ValueError o TypeError) y retorna NULL.