Перейти к содержанию
    

Передача указателя в качестве аргумента.

вы считаете что монструозная sprint это попроще? :)

Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас.

Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.

 

Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас.

Вы еще другие мои ф-ции не видели.

 

Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.

 

Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...

 

я пользовался minixml парсером. он конечно написан красиво. с полным функционалом. цена - 35К. он написан под GCC. перешел на IAR - в IAR не компилируется. вот решил написать свой велосипед.

 

а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас.

Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.

 

Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...

 

На любом языке не просто. Но можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек.

Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками.

Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует.

 

 

 

Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано).

 

Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/man

Маллоков нет, размер минимальный.

 

Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками.

Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует.

 

 

 

Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано).

 

Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/man

Маллоков нет, размер минимальный.

 

Я хотел работать с Yxml. он только парсит элементы. а мне нужно и добавлять.

к тому же

  #define BUFSIZE 4096
  void *buf = malloc(BUFSIZE);
  yxml_t x;
  yxml_init(&x, buf, BUFSIZE);

так и я умею :)

Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля.

Да как подточить. Там инклюдиться куча системных хедеров которых в IAR не существует.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...