[Include] TDW CJump - переходы между функциями
#1

TDW CJump
Описание
Добавляет возможность нелокальных переходов. В Pawn есть оператор goto, который позволяет перейти абсолютно в любое место в функции, однако с помощью данного оператора невозможен переход между функциями.
Документация
setjmp - функция, устанавливающая точку возврата. Данная функция записывает все значения из регистров, чтобы при вызове longjmp вернуть всё в исходное положение.
Параметры:
  • env[JmpBuf] - массив для хранения указателей.
  • &retval - ссылка на переменную, в которую будет записано значение из функции longjmp.
longjmp - функция, переходящая на установленную точку: изменяет значения регистров на исходные.
Параметры:
  • env[JmpBuf] - массив для хранения указателей.
  • val - возвращаемое значение.
Пример использования функций:
PHP Code:
new jmp[JmpBuf];
main() {
    new 
ret;
    
setjmp(jmpret);
    if (
ret 10) {
        
somefunc(ret);
    }
}
somefunc(ret)
{
    
printf("%d"ret);
    
longjmp(jmp, ++ret);

Скачать
github
Установка
  1. Перейдите в репозиторий на github (ссылка выше).
  2. Для скачивания на открывшейся странице нажмите на кнопку "Clone or download" (зелёного цвета) и в открывшемся меню - "Download ZIP".
  3. Все файлы библиотеки перемести в папку '/pawno/includes/'.
  4. Скомпилировать изменённые вами скрипты.
Автор: VVWVV
Распространяется по лицензии zlib.
Reply
#2

Новый вид костылей.
Reply
#3

Quote:
Originally Posted by White_116
View Post
Новый вид костылей.
Старый) Это фича уже давно в Сях же есть.
Reply
#4

?? Que lingua estranha й essa??!
Reply
#5

У тебя не все регистры сохраняются. Например pri и alt.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)