Обрезка и зависимости

Публичный макрос выбораМакрос реализацииПрямые зависимости
XRT_MODULE_JSONL_COREXRT_FEATURE_JSONL_COREcore
XRT_MODULE_JSONL_READXRT_FEATURE_JSONL_READjsonl_core, json_read
XRT_MODULE_JSONL_WRITEXRT_FEATURE_JSONL_WRITEjsonl_core, json_write
XRT_MODULE_JSONL_FILEXRT_FEATURE_JSONL_FILEjsonl_read, jsonl_write, file_whole
XRT_MODULE_JSONLXRT_FEATURE_JSONLjsonl_file

Заголовочный файл — <xrt/jsonl.h>, его можно подключить и через зонтичный <xrt.h>. Выбор только чтения или только записи не подключает файловый модуль.

Стабильный контракт

  • По умолчанию пустые строки игнорируются: пустые строки и строки только из ASCII-пробелов, табуляций и CR. Принимаются LF, CRLF и их сочетания; одиночный CR не является разделителем записей. Символы Юникода никогда не превращают строку в пустую.
  • Пустой ввод и ввод из одних пустых строк возвращают пустой Array. Строгий режим пустых строк по-прежнему принимает ввод нулевой длины и один завершающий перевод строки после последней записи; лишние пустые строки — ошибка.
  • Строка должна содержать ровно одно полное значение; последней полной записи разрешено не иметь завершающего перевода строки. Значения на нескольких строках, несколько корневых значений в одной строке, BOM, некорректный UTF-8 и оборванная последняя запись — всё это ошибки.
  • Экранированный перевод строки внутри строки не разделяет записи. Записи-массивы сохраняют вложенность: текст []\n даёт Array с одним пустым массивом.
  • Десериализация передаёт владение Array только после успеха всех записей; при ошибке возвращается C NULL и освобождаются все частичные результаты.
  • Корнем сериализации должен быть XVALUE_ARRAY; null, пустая строка и пустые контейнеры — настоящие записи. Стратегия SKIP не может пропустить всю запись, она действует только внутри одного корневого значения.
  • Вывод компактный, к каждой записи добавляется LF, пустой Array даёт ноль байт. Конфигурация PRETTY отвергается. Конфигурация снимается по значению; изменение исходной конфигурации в обратном вызове не влияет на текущий вызов.
  • Valid повторяет синтаксическую проверку JSON без построения DOM: пустые строки игнорируются, проверяются накопительные бюджеты по умолчанию, политика повторных ключей DOM не участвует.
  • Файловая запись сначала полностью сериализует в памяти, затем атомарно заменяет файл; при ошибке сериализации цель не изменяется. Синхронный вывод через обратный вызов может успеть зафиксировать часть записей до ошибки; эти байты нельзя откатить.
  • Однострочные комментарии и висячие запятые — расширения совместимости, включаемые только внутри Record; они не могут продолжаться между физическими строками.

Потоки и владение: API не содержит неявных блокировок; каждый вызов владеет независимым рабочим пространством, совместный изменяемый ввод синхронизирует вызывающий. Запись выполняется по снимку backing внешнего Array, поэтому во время обратных вызовов действуют правила владения поддеревом Value. Текст ввода и конфигурация заимствуются до возврата вызова; результирующий Array освобождается через xrtValueRelease, результирующая строка — через xrtFree. Выходной обратный вызов потребляет байты до возврата.

Константы

КонстантаЗначениеСмысл
XJSONL_READ_REJECT_EMPTY_LINESUINT32_C(0x00000001)Пустые строки становятся ошибкой; по умолчанию выключено.

Конфигурация обязана быть инициализирована через Init; все бюджеты ненулевые. Значения Record по умолчанию задают существующие функции инициализации JSON. Общий ввод/вывод по умолчанию 64 МиБ; количество записей и синтаксических значений — 1000000.

xjsonlerrorтип

Ошибки получаются через xrtGetError() с доменом формата xrt.jsonl; ошибки аргументов и нижележащий OOM могут напрямую возвращаться как ошибки Core. Обёртки RECORD/OUTPUT/IO сохраняют Kind причины. Если выделение памяти для самой обёртки не удалось, сохраняется исходная ошибка-причина; данные о позиции не гарантируются.

ЗначениеСмысл
XJSONL_ERROR_CONFIGКонфигурация не инициализирована, ненулевые зарезервированные биты, нулевой бюджет или включён PRETTY.
XJSONL_ERROR_SYNTAXПустая строка в строгом режиме пустых строк.
XJSONL_ERROR_LIMITИсчерпан общий или одиночный бюджет.
XJSONL_ERROR_RECORDОшибка кодирования/декодирования одного значения или добавления его в Array; Cause сохраняет конкретную причину.
XJSONL_ERROR_TYPEКорень сериализации не Array.
XJSONL_ERROR_OUTPUTОшибка синхронного выходного обратного вызова.
XJSONL_ERROR_IOОшибка чтения файла с лимитом или атомарной замены файла.
XJSONL_ERROR_STATEЗарезервированный код ошибки состояния построчной обработки.
typedef enum xjsonlerror { XJSONL_ERROR_CONFIG = 1701, XJSONL_ERROR_SYNTAX, XJSONL_ERROR_LIMIT, XJSONL_ERROR_RECORD, XJSONL_ERROR_TYPE, XJSONL_ERROR_OUTPUT, XJSONL_ERROR_IO, XJSONL_ERROR_STATE } xjsonlerror;

xjsonllocationтип

ПолеТипСмысл
Offsetsize_tСмещение в байтах от нуля в исходном вводе.
Linesize_tОдноразовый физический номер строки, отсчитываемый с единицы по LF; CRLF считается одной строкой, игнорируемые пустые строки тоже считаются.
Columnsize_tНомер байта UTF-8 в текущей физической строке, с единицы; не в символах Юникода.
RecordIndexsize_tИндекс записи с нуля; пустые строки его не увеличивают, ошибка пустой строки указывает на индекс следующей ожидаемой записи.
typedef struct xjsonllocation { size_t Offset; size_t Line; size_t Column; size_t RecordIndex; } xjsonllocation;

xjsonlreadflagтип

ЗначениеСмысл
XJSONL_READ_REJECT_EMPTY_LINESПревращает игнорируемые по умолчанию пустые строки в синтаксические ошибки.
typedef enum xjsonlreadflag { XJSONL_READ_REJECT_EMPTY_LINES = UINT32_C(0x00000001)

xjsonlreadconfigтип

ПолеТипСмысл
RecordxjsonreadconfigКонфигурация одной записи; MaxInputBytes/MaxOutputBytes не включают разделители CRLF/LF, глубина считается от корня каждой записи.
Flagsuint32По умолчанию 0; XJSONL_READ_REJECT_EMPTY_LINES включает ошибки пустых строк.
MaxInputBytessize_tПредел всего исходного ввода, включая игнорируемые пустые строки и все разделители; по умолчанию 64 МиБ.
MaxRecordssize_tПредел числа непустых записей, равен максимальному числу элементов результирующего Array; по умолчанию 1000000.
MaxTotalValuessize_tНакопительный предел синтаксических значений по всем записям, включая отброшенные политикой повторных ключей и исключая синтезируемый Array; по умолчанию 1000000.
Reserveduint32[4]Зарезервированное место; должно быть целиком нулевым.
typedef struct xjsonlreadconfig { xjsonreadconfig Record; uint32 Flags; size_t MaxInputBytes; size_t MaxRecords; size_t MaxTotalValues; uint32 Reserved[4]; } xjsonlreadconfig;

xjsonlwriteconfigтип

ПолеТипСмысл
RecordxjsonwriteconfigКонфигурация одной записи; MaxInputBytes/MaxOutputBytes не включают разделители CRLF/LF, глубина считается от корня каждой записи.
MaxOutputBytessize_tПредел всех выходных байт, включая каждый LF и исключая завершающий NUL результата; по умолчанию 64 МиБ.
MaxRecordssize_tПредел числа непустых записей, равен максимальному числу элементов результирующего Array; по умолчанию 1000000.
Reserveduint32[4]Зарезервированное место; должно быть целиком нулевым.
typedef struct xjsonlwriteconfig { xjsonwriteconfig Record; size_t MaxOutputBytes; size_t MaxRecords; uint32 Reserved[4]; } xjsonlwriteconfig;
Текст, конфигурация и файловые интерфейсы

xrtJsonlErrorLocationфункция

Читает глобальное байтовое смещение, физические строку/столбец с единицы и индекс записи с нуля; без позиции вывод не изменяется.

bool xrtJsonlErrorLocation(const xerror* pError, xjsonllocation* pLocation)

Параметры

ПараметрНаправлениеОграниченияОписание
pErrorвходдопускается null; заимствование только для чтенияЧитает позицию из ошибки этого формата; возвращает false при отсутствии позиции или чужом домене ошибки.
pLocationвыходне nullПри успехе заполняется глобальной позицией; при ошибке содержимое не изменяется.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
trueПозиция прочитана.—
falseНет позиции или неверный аргумент.Вывод позиции не изменён; само отсутствие позиции не устанавливает ошибку.
Ошибки
  • XERR_ARGUMENT — выход позиции равен null.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlErrorLocation в полной программе; при ошибке переход к единой очистке.

if ( !xrtJsonlErrorLocation(xrtGetError(), &Location) ) goto done;

xrtJsonlReadConfigInitфункция

Инициализирует пропуск пустых строк по умолчанию, строгий синтаксис одной записи и ограниченные накопительные бюджеты.

void xrtJsonlReadConfigInit(xjsonlreadconfig* pConfig)

Параметры

ПараметрНаправлениеОграниченияОписание
pConfigвыходне nullЗадаёт значения по умолчанию и обнуляет зарезервированные поля.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
voidИнициализация завершена.Нулевой указатель устанавливает ошибку аргумента.
Ошибки
  • XERR_ARGUMENT — выход конфигурации равен null.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlReadConfigInit в полной программе; при ошибке переход к единой очистке.

xrtJsonlReadConfigInit(&Read);

xrtJsonlParseфункция

Разбирает последовательность записей с конфигурацией по умолчанию; при успехе возвращает Array во владение, пустой ввод даёт пустой Array.

xvalue* xrtJsonlParse(xstrview Text)

Параметры

ПараметрНаправлениеОграниченияОписание
Textвходявная длина в байтах; NULL Data только при нулевой длинеВесь текст заимствуется до возврата вызова; ввод не обязан завершаться NUL.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
не nullArray во владение вызывающего.—
NULLОшибка аргументов, бюджета, синтаксиса или ресурсов.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_PROTOCOL — непустая строка не является одним полным корректным значением, либо в строгом режиме встречена пустая строка; ошибка одной записи сохраняет нижележащую цепочку причин.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlParse в полной программе; при ошибке переход к единой очистке.

pArray = xrtJsonlParse(XRT_STR_LITERAL("{\"id\":1}\n\n[2,3]\r\nnull\n"));
if ( pArray == NULL ) goto done;

xrtJsonlReadфункция

Разбирает все записи по конфигурации; при ошибке освобождает частичные результаты и возвращает NULL. Результат освобождается через xrtValueRelease.

xvalue* xrtJsonlRead(xstrview Text, const xjsonlreadconfig* pConfig)

Параметры

ПараметрНаправлениеОграниченияОписание
Textвходявная длина в байтах; NULL Data только при нулевой длинеВесь текст заимствуется до возврата вызова; ввод не обязан завершаться NUL.
pConfigвходне null; должен быть инициализированКонфигурация одной записи и накопительные бюджеты; источник не изменяется данным вызовом.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
не nullArray во владение вызывающего.—
NULLОшибка аргументов, бюджета, синтаксиса или ресурсов.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_PROTOCOL — непустая строка не является одним полным корректным значением, либо в строгом режиме встречена пустая строка; ошибка одной записи сохраняет нижележащую цепочку причин.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlRead в полной программе; при ошибке переход к единой очистке.

pRead = xrtJsonlRead((xstrview){ Text, Size }, &Read);
if ( pRead == NULL ) goto done;

xrtJsonlValidфункция

По умолчанию игнорирует пустые строки и проверяет построчный синтаксис и накопительные бюджеты без построения DOM Value; политика повторных ключей не участвует.

bool xrtJsonlValid(xstrview Text)

Параметры

ПараметрНаправлениеОграниченияОписание
Textвходявная длина в байтах; NULL Data только при нулевой длинеВесь текст заимствуется до возврата вызова; ввод не обязан завершаться NUL.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
trueВсе непустые строки прошли проверку синтаксиса и бюджетов по умолчанию.—
falseОперация не выполнена.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_PROTOCOL — непустая строка не является одним полным корректным значением, либо в строгом режиме встречена пустая строка; ошибка одной записи сохраняет нижележащую цепочку причин.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlValid в полной программе; при ошибке переход к единой очистке.

if ( !xrtJsonlValid((xstrview){ Text, Size }) ) goto done;

xrtJsonlWriteConfigInitфункция

Инициализирует компактный построчный вывод, разделение LF и ограниченные накопительные бюджеты; конфигурация PRETTY недопустима.

void xrtJsonlWriteConfigInit(xjsonlwriteconfig* pConfig)

Параметры

ПараметрНаправлениеОграниченияОписание
pConfigвыходне nullЗадаёт значения по умолчанию и обнуляет зарезервированные поля.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
voidИнициализация завершена.Нулевой указатель устанавливает ошибку аргумента.
Ошибки
  • XERR_ARGUMENT — выход конфигурации равен null.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlWriteConfigInit в полной программе; при ошибке переход к единой очистке.

xrtJsonlWriteConfigInit(&Write);

xrtJsonlStringifyфункция

Записывает каждый элемент Array одной строкой; возвращает завершённый NUL текст, освобождаемый через xrtFree. При ошибке необязательный pSize не изменяется.

str xrtJsonlStringify(const xvalue* pArray, size_t* pSize)

Параметры

ПараметрНаправлениеОграниченияОписание
pArrayвходне null и имеет тип XVALUE_ARRAYСериализуемые элементы; вызов не потребляет владеющую ссылку вызывающего.
pSizeвыходдопускается nullПри успехе принимает число байт, включая LF и исключая NUL; при ошибке не изменяется.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
не nullЗавершённый NUL текст во владение; пустой вывод всё равно возвращает освобождаемую строку.—
NULLОшибка конфигурации, типа, кодирования или ресурсов.pSize не изменён; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_TYPE — корень сериализации не Array.
  • XERR_UNSUPPORTED — одно значение не кодируется выбранным форматом.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlStringify в полной программе; при ошибке переход к единой очистке.

Text = xrtJsonlStringify(pArray, &Size);
if ( Text == NULL ) goto done;

xrtJsonlWriteфункция

Выводит каждую запись и её LF в синхронный обратный вызов по кускам; заимствованные байты действительны только во время вызова, зафиксированные до ошибки байты откатить нельзя.

bool xrtJsonlWrite(const xvalue* pArray, const xjsonlwriteconfig* pConfig, xjsonwriteproc pWrite, ptr pUserData)

Параметры

ПараметрНаправлениеОграниченияОписание
pArrayвходне null и имеет тип XVALUE_ARRAYСериализуемые элементы; вызов не потребляет владеющую ссылку вызывающего.
pConfigвходне null; должен быть инициализированКонфигурация одной записи и накопительные бюджеты; источник не изменяется данным вызовом.
pWriteвходненулевой синхронный обратный вызовПотребляет заимствованные байты кусками; возврат false прерывает вывод.
pUserDataвходдопускается nullКак есть передаётся синхронному выходному обратному вызову.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
trueВесь вывод завершён.—
falseОперация не выполнена.Ссылки ввода остаются у вызывающего; зафиксированные байты откатить нельзя, ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_TYPE — корень сериализации не Array.
  • XERR_UNSUPPORTED — одно значение не кодируется выбранным форматом.
  • XERR_IO — файловая операция либо сбой выходного обратного вызова без конкретной ошибки; прочие Kind нижележащей причины сохраняются как есть.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlWrite в полной программе; при ошибке переход к единой очистке.

if ( !xrtJsonlWrite(pArray, &Write, discard, NULL) ) goto done;

xrtJsonlParseFileфункция

Читает файл с лимитом по умолчанию и возвращает Array во владение.

xvalue* xrtJsonlParseFile(cstr sPath)

Параметры

ПараметрНаправлениеОграниченияОписание
sPathвходненулевой путь, завершённый NULЧитаемый файл либо целевой файл атомарной замены.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
не nullArray во владение вызывающего.—
NULLОшибка аргументов, бюджета, синтаксиса или ресурсов.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_PROTOCOL — непустая строка не является одним полным корректным значением, либо в строгом режиме встречена пустая строка; ошибка одной записи сохраняет нижележащую цепочку причин.
  • XERR_IO — файловая операция либо сбой выходного обратного вызова без конкретной ошибки; прочие Kind нижележащей причины сохраняются как есть.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlParseFile в полной программе; при ошибке переход к единой очистке.

pRead = xrtJsonlParseFile(Path);
if ( pRead == NULL ) goto done;

xrtJsonlReadFileфункция

Читает файл с общим лимитом ввода и разбирает построчно; при ошибке частичный Array не возвращается.

xvalue* xrtJsonlReadFile(cstr sPath, const xjsonlreadconfig* pConfig)

Параметры

ПараметрНаправлениеОграниченияОписание
sPathвходненулевой путь, завершённый NULЧитаемый файл либо целевой файл атомарной замены.
pConfigвходне null; должен быть инициализированКонфигурация одной записи и накопительные бюджеты; источник не изменяется данным вызовом.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
не nullArray во владение вызывающего.—
NULLОшибка аргументов, бюджета, синтаксиса или ресурсов.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_PROTOCOL — непустая строка не является одним полным корректным значением, либо в строгом режиме встречена пустая строка; ошибка одной записи сохраняет нижележащую цепочку причин.
  • XERR_IO — файловая операция либо сбой выходного обратного вызова без конкретной ошибки; прочие Kind нижележащей причины сохраняются как есть.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlReadFile в полной программе; при ошибке переход к единой очистке.

pRead = xrtJsonlReadFile(Path, &Read);
if ( pRead == NULL ) goto done;

xrtJsonlStringifyFileфункция

Полностью сериализует Array с конфигурацией по умолчанию, затем атомарно заменяет файл.

bool xrtJsonlStringifyFile(cstr sPath, const xvalue* pArray)

Параметры

ПараметрНаправлениеОграниченияОписание
sPathвходненулевой путь, завершённый NULЧитаемый файл либо целевой файл атомарной замены.
pArrayвходне null и имеет тип XVALUE_ARRAYСериализуемые элементы; вызов не потребляет владеющую ссылку вызывающего.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
trueВесь вывод завершён.—
falseОперация не выполнена.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_TYPE — корень сериализации не Array.
  • XERR_UNSUPPORTED — одно значение не кодируется выбранным форматом.
  • XERR_IO — файловая операция либо сбой выходного обратного вызова без конкретной ошибки; прочие Kind нижележащей причины сохраняются как есть.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlStringifyFile в полной программе; при ошибке переход к единой очистке.

if ( !xrtJsonlStringifyFile(Path, pArray) ) goto done;

xrtJsonlWriteFileфункция

Полностью сериализует с расширенной конфигурацией, затем атомарно заменяет файл; при ошибке сериализации исходный файл сохраняется.

bool xrtJsonlWriteFile(cstr sPath, const xvalue* pArray, const xjsonlwriteconfig* pConfig)

Параметры

ПараметрНаправлениеОграниченияОписание
sPathвходненулевой путь, завершённый NULЧитаемый файл либо целевой файл атомарной замены.
pArrayвходне null и имеет тип XVALUE_ARRAYСериализуемые элементы; вызов не потребляет владеющую ссылку вызывающего.
pConfigвходне null; должен быть инициализированКонфигурация одной записи и накопительные бюджеты; источник не изменяется данным вызовом.
Возвращаемое значение
ВозвратСмыслСостояние при ошибке
trueВесь вывод завершён.—
falseОперация не выполнена.Частичный результат не возвращается; ошибка получается через xrtGetError().
Ошибки
  • XERR_ARGUMENT — обязательный указатель равен null, недопустимое поле конфигурации или зарезервированный бит.
  • XERR_MEMORY — не удалось выделить рабочую область, результат или структурную ошибку.
  • XERR_RANGE — исчерпан одиночный или накопительный бюджет.
  • XERR_TYPE — корень сериализации не Array.
  • XERR_UNSUPPORTED — одно значение не кодируется выбранным форматом.
  • XERR_IO — файловая операция либо сбой выходного обратного вызова без конкретной ошибки; прочие Kind нижележащей причины сохраняются как есть.

Прочие ошибки кодирования одной записи наследуют конкретные Kind и код их Cause.

ПримерПроверено компиляцией

jsonl · Вызов xrtJsonlWriteFile в полной программе; при ошибке переход к единой очистке.

if ( !xrtJsonlWriteFile(Path, pArray, &Write) ) goto done;

Индекс константконстанта

Следующие константы определены в заголовочном файле этой страницы; их смысл — в комментариях публичного заголовка.

КонстантаОписание
XJSONL_ERROR_CONFIGСм. комментарии в заголовке
XJSONL_ERROR_IOСм. комментарии в заголовке
XJSONL_ERROR_LIMITСм. комментарии в заголовке
XJSONL_ERROR_OUTPUTСм. комментарии в заголовке
XJSONL_ERROR_RECORDСм. комментарии в заголовке
XJSONL_ERROR_STATEСм. комментарии в заголовке
XJSONL_ERROR_SYNTAXСм. комментарии в заголовке
XJSONL_ERROR_TYPEСм. комментарии в заголовке
XJSONL_READ_REJECT_EMPTY_LINESСм. комментарии в заголовке