|
Передача указателя в качестве аргумента. |
|
|
|
Dec 21 2016, 09:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Jenya7 @ Dec 20 2016, 15:05)  вы считаете что монструозная sprint это попроще?  Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт. Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Dec 21 2016, 10:34
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(esaulenka @ Dec 21 2016, 15:37)  Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Вы еще другие мои ф-ции не видели. Цитата(esaulenka @ Dec 21 2016, 15:37)  Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.
Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си... я пользовался minixml парсером. он конечно написан красиво. с полным функционалом. цена - 35К. он написан под GCC. перешел на IAR - в IAR не компилируется. вот решил написать свой велосипед. а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек.
|
|
|
|
|
Dec 21 2016, 10:51
|

Профессионал
    
Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226

|
Цитата(esaulenka @ Dec 21 2016, 12:37)  Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.
Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си... На любом языке не просто. Но можно.
|
|
|
|
|
Dec 21 2016, 12:41
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Jenya7 @ Dec 21 2016, 13:34)  а что страшного в обрамлении строки кавычками. строку по любому придется грузить в стек. Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками. Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует. Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано). Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/manМаллоков нет, размер минимальный. Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Dec 21 2016, 14:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(esaulenka @ Dec 21 2016, 17:41)  Один раз или два? В текущем варианте сначала в стеке (или не в стеке, я уж не знаю, что там за пределами этой функции) оказывается вариант без кавычек, а потом в стек кладётся вариант с кавычками. Решение "найти '<', проверить, что сразу за ним нужная строка, проверить, что сразу за ним '/>' " никаких строк никуда не копирует. Но я за решение "не строить свои велосипеды". Особенно такие велосипеды, которые могут поворачивать только налево (направо не предусмотрено. или даже просто не оттестировано). Вот, к примеру, каркас для создания парсера: https://dev.yorhel.nl/yxml/manМаллоков нет, размер минимальный. Я хотел работать с Yxml. он только парсит элементы. а мне нужно и добавлять. к тому же Код #define BUFSIZE 4096 void *buf = malloc(BUFSIZE); yxml_t x; yxml_init(&x, buf, BUFSIZE); так и я умею  Цитата(esaulenka @ Dec 21 2016, 17:41)  Ну и mini-xml написан не под GCC, а на стандартном Си. Проще подточить под IAR, чем делать с нуля. Да как подточить. Там инклюдиться куча системных хедеров которых в IAR не существует.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|