#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
Ответов: 4630
Рейтинг: 749
|
|||
|
|||
карма: 26 |
| ||
Голосовали: | Hart |