Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2015-12-28 13:02:10 ЛС | профиль | цитата


#hws
//================
// В главном компоненте
//================

func doStart()
gvar(BLK_GLOBALS, BLK_FUNC, BLK_MAIN, BLK_LOCALS) // Глобальные переменные


BLK_GLOBALS = block.reggen() // Блок глоб. переменных целевого языка
BLK_FUNC = block.reggen() // Блок функций целевого языка
BLK_MAIN = block.reggen() // Блок для точки входа


//--------------------------
fvar(tmp_locals, tmp_func)

tmp_func = block.reggen() // Создали временный блок для тела точки входа
tmp_locals = block.reggen() // Создали временный блок для локальных переменных

BLK_LOCALS = tmp_locals // В глобальную переменную BLK_LOCALS занесли имя текущего блока локальных переменных
// Теперь любой компонент, вызвавший block.select(BLK_LOCALS) сможет писать в этот блок локальных переменных

block.select(tmp_func) // Установили текущим временный блок. Все компоненты после события onStart пишут код сюда
event(onStart)

// Выводим содержимое временного блока в блок точки входа
block.select(BLK_MAIN)
block.copyhere(tmp_locals) // Выводим содержимое локальных переменных
block.delete(tmp_locals) // Удаляем блок - мы его вывели куда нужно, больше он не понадобится (без удаления будет выведен в конец файла)
block.copyhere(tmp_func) // Выводим содержимое тела функции
block.delete(tmp_func) // Удаляем
//--------------------------
end


//================
// В других компонентах
//================

func doMyMethod(_data)
fvar(old, tmp_func, tmp_locals)


//--------------------------
tmp_func = block.reggen() // Создали временный блок для тела функции
tmp_locals = block.reggen() // Создали временный блок для локальных переменных


BLK_LOCALS = tmp_locals // В глобальную переменную BLK_LOCALS занесли имя текущего блока локальных переменных
// Теперь любой компонент, вызвавший block.select(BLK_LOCALS) сможет писать в этот блок локальных переменных

old = block.select(tmp_func) // Установили текущим временный блок функции. Все компоненты после события onMyEvent пишут код сюда
event(onMyEvent) // Вызвали событие. Компоненты отработали.

// Выводим содержимое созданной функции в блок функций BLK_FUNC
block.select(BLK_FUNC)
println('function MyFunc takes nothing returns nothing')
block.copyhere(tmp_locals) // Выводим содержимое локальных переменных
block.delete(tmp_locals) // Удаляем блок - мы его вывели куда нужно, больше он не понадобится (без удаления будет выведен в конец файла)
block.copyhere(tmp_func) // Выводим содержимое тела функции
block.delete(tmp_func) // Удаляем
println('endfunction')

//--------------------------


block.select(old)
end
[offtop]И веди себя по-приличнее. Желания помогать нет никакого. Рейтинг свой не зря заработал.[/offtop]
карма: 26

1
Голосовали:Hart