Page 1 of 1

Алиасы/переименование символов библиотек

Posted: Fri Dec 31, 2021 1:17 pm
by Coldy
При адаптации CLAYER для динамического связывания столкнулся с некоторыми проблемами:

1. Библиотека box_lib.obj имеет функцию рисования edit_box. В CLAYER и в обертках других языков edit_box - это структура, а для рисования edit_box используется алиас edit_box_draw. Если это пытаться переопределять, то появляется конфликт со структурой edit_box. Нужно править код приложений.
Создатели box_lib, очевидно, ошиблись с наименованием этой функции т.к. она действительно должна называться edit_box_draw. Но т.к. предыдущее имя используют много приложений, предлагаю в box_lib добавить алиас edit_box_draw.

2. Библиотека rasterworks.obj имеет функцию cntUTF-8, это не соответствует стандарту имен языка С (и производных от него). В CLAYER используется алиас countUTF8Z, предлагаю также добавить соответствующий символ в rasterworks.obj

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

Re: Алиасы/переименование символов библиотек

Posted: Sun Jan 02, 2022 8:37 pm
by IgorA
rev #9568
Переименовал функцию edit_box в edit_box_draw. Многие ассемблерные приложения обновил, но возможно что где-то остались программы использующие функцию edit_box для рисования. Потому для обратной совместимости в экспорте библиотеки box_lib сделал 2 функции edit_box_draw и edit_box.

Re: Алиасы/переименование символов библиотек

Posted: Fri Jan 14, 2022 6:48 am
by akron1
Coldy wrote:2. Библиотека rasterworks.obj имеет функцию cntUTF-8, это не соответствует стандарту имен языка С (и производных от него). В CLAYER используется алиас countUTF8Z, предлагаю также добавить соответствующий символ в rasterworks.obj
Сделано (r9631).

Re: Алиасы/переименование символов библиотек

Posted: Fri Jan 14, 2022 9:24 am
by turbocat
Может быть я не шарю... Но зачем ещё одна метка? Мне кажется этого достаточно....

Code: Select all

@EXPORT:
export  drawText,   'drawText', \
        countUTF8Z,  'cntUTF-8', \  ;old function name
        countUTF8Z,  'countUTF8Z', \
        charsFit,       'charsFit', \
        stringWidth,  'strWidth'

Re: Алиасы/переименование символов библиотек

Posted: Fri Jan 14, 2022 10:27 am
by akron1
turbocat wrote:Может быть я не шарю... Но зачем ещё одна метка? Мне кажется этого достаточно....
Да я сам не шарю. Но Fasm говорит: "символ уже определен" и не компилирует.

Re: Алиасы/переименование символов библиотек

Posted: Fri Jan 14, 2022 10:43 am
by turbocat
Да действительно. Видимо макрос кривой

Re: Алиасы/переименование символов библиотек

Posted: Fri Jan 14, 2022 3:32 pm
by ProMiNick
Fasm говорит: "символ уже определен" и не компилирует.
делов то...
вместо

Code: Select all

macro export [name,sname]
{ common local ..export
  ;align 16
  ..export:
  public ..export as 'EXPORTS'
  forward
    dd __#name#_export_name__,name
  common
    dd 0
  forward
    ;align 4
    __#name#_export_name__ db sname,0
}
вот это

Code: Select all

macro export [name,sname]
{ common local ..export
  ;align 16
  ..export:
  public ..export as 'EXPORTS'
  forward
    local ..expname
    dd ..expname,name
  common
    dd 0
  forward
    ;align 4
    ..expname db sname,0
}

Re: Алиасы/переименование символов библиотек

Posted: Sat Jan 15, 2022 9:14 am
by akron1
ProMiNick
Я в этих макросах ничего не понимаю и вообще впервые правлю программу на fasm'е в SVN. Но: новое имя функции добавлено (и уже использовано), старое сохранено. Исправлен только один файл, ничего больше не затронуто. Библиотека работает. Задача решена. Если кто-то может сделать лучше, то пожалуйста, я, конечно, не возражаю, тем более это не моя программа.

Re: Алиасы/переименование символов библиотек

Posted: Sat Jan 15, 2022 11:27 am
by Coldy
akron1, все правильно сделал. Старое имя пока нужно, т.к. оно используется в других программах (например, видел в с--). Если везде переименовать, то старое имя можно будет удалить.