# Підтримка маршалінгу даних

Ці процедури дозволяють коду C працювати з серіалізованими об’єктами, використовуючи той самий формат даних, що й модуль `marshal`. Існують функції для запису даних у формат серіалізації та додаткові функції, які можна використовувати для зворотного читання даних. Файли, які використовуються для зберігання маршалованих даних, необхідно відкривати в двійковому режимі.

Числові значення зберігаються з молодшим байтом першим.

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)

  Marshal a `long` integer, value, to file. This will only write the least-significant 32 bits of value; regardless of the size of the native `long` type. version indicates the file format.

  This function can fail, in which case it sets the error indicator. Use `PyErr_Occurred()` to check for that.

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

  Маршал об’єкта Python, значення, до файлу. версія вказує на формат файлу.

  This function can fail, in which case it sets the error indicator. Use `PyErr_Occurred()` to check for that.

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

  Повертає об’єкт bytes, що містить упорядковане представлення value. версія вказує на формат файлу.

Наступні функції дозволяють зчитувати упорядковані значення.

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`.

  У разі помилки встановлює відповідний виняток (`EOFError`) і повертає `-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`.

  У разі помилки встановлює відповідний виняток (`EOFError`) і повертає `-1`.

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

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

  У разі помилки встановлює відповідний виняток (`EOFError`, `ValueError` або `TypeError`) і повертає `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.

  У разі помилки встановлює відповідний виняток (`EOFError`, `ValueError` або `TypeError`) і повертає `NULL`.

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

  Повертає об’єкт Python із потоку даних у байтовий буфер, що містить len байти, на які вказує data.

  У разі помилки встановлює відповідний виняток (`EOFError`, `ValueError` або `TypeError`) і повертає `NULL`.