forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   Универсальный конструктор обьектов LUA (http://forum.boolean.name/showthread.php?t=16907)

Черный крыс 15.06.2012 01:06

Универсальный конструктор обьектов LUA
 
Вобсчем задача была такая : создать функцию-конструктор BlitzMAX-обьектов для скриптового языка LUA.

Решение напрашивается само - реализовать используя описатель :

Код:

Function Create:Int(lua:Byte ptr)
    Local tid:TTypeId = TTypeId.ForName(lua_tostring(lua, 1))
    lua_pushobject(lua, tid.NewObject())
    Return True
End Function

Далее регистрируем функцию в LUA :

Код:

lua_pushcclosure(lua, Create, 0)
lua_setfield(lua, LUA_GLOBALSINDEX, "create")

Ну и пример использования :

Код:

--LUA
function test()
    local list = create('TList')
    list.AddLast('one')
    list.AddLast('two')
    list.AddLast('three')
    return list
end

Код:

'BMX
Local script:TScript = LoadScript("Test.lua")

Local list:TList = TList(script.Execute("test"))

For Local s:String = EachIn list
    DebugLog(s)
Next

Задача решена. =)


Часовой пояс GMT +4, время: 18:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot