Поддержка сортировки данных

Данные процедуры позволяют C коду работать с сериализованными объектами, используя тот же формат данных, что и модуль marshal. Существуют функции для записи данных в формат сериализации и дополнительные функции, которые можно использовать для обратного чтения данных. Файлы, используемые для хранения упорядоченных данных, должны открываться в двоичном режиме.

Числовые значения сохраняются с наименьшим значащим байтом первым.

Модуль поддерживает две версии формата данных: версия 0 — историческая версия, версия 1 разделяет интернированные строки в файле и после демаршалинга. Версия 2 использует двоичный формат для чисел с плавающей запятой. Py_MARSHAL_VERSION указывает текущий формат файла (в настоящее время 2).

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

Маршалировать целое число long, value, на file. Она записывает только младшие 32 бита value; вне зависимости от размера родного типа long. version указывает формат файла.

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

Маршалировать объект Python с value до file. version указывает формат файла.

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

Возвращает объект байтов, содержащий упорядоченное представление value. version указывает формат файла.

Следующие функции позволяют считывать упорядоченные значения.

long PyMarshal_ReadLongFromFile(FILE *file)

Возвращает C long из потока данных в FILE*, открытом для чтения. При использовании этой функции можно прочитать только 32-битное значение, независимо от собственного размера long.

В случае ошибки устанавливает соответствующее исключение (EOFError) и возвращает -1.

int PyMarshal_ReadShortFromFile(FILE *file)

Возвращает C short из потока данных в FILE*, открытый для чтения. При использовании этой функции можно прочитать только 16-битное значение, независимо от собственного размера short.

В случае ошибки устанавливает соответствующее исключение (EOFError) и возвращает -1.

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

Возвращает объект Python из потока данных в FILE*, открытом для чтения.

При ошибке устанавливает соответствующее исключение (EOFError, ValueError или TypeError) и возвращает NULL.

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

Возвращает объект Python из потока данных в FILE*, открытом для чтения. В отличие от PyMarshal_ReadObjectFromFile(), эта функция предполагает, что никакие другие объекты не будут считываться из файла, что позволяет ей агрессивно загружать данные файла в память, чтобы десериализация могла работать с данными в памяти, а не считывать по байту из файла. Использовать данный вариант только в том случае, если вы уверены, что больше ничего не читаете из файла.

При ошибке устанавливает соответствующее исключение (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.