diff options
-rw-r--r-- | lib/wrappers/lua/lauxlib.nim | 185 | ||||
-rw-r--r-- | lib/wrappers/lua/lua.nim | 328 | ||||
-rw-r--r-- | lib/wrappers/lua/lualib.nim | 38 |
3 files changed, 242 insertions, 309 deletions
diff --git a/lib/wrappers/lua/lauxlib.nim b/lib/wrappers/lua/lauxlib.nim index bcb806f74..b985858d3 100644 --- a/lib/wrappers/lua/lauxlib.nim +++ b/lib/wrappers/lua/lauxlib.nim @@ -26,9 +26,9 @@ import proc pushstring*(L: PState, s: string) # compatibilty macros -proc getn*(L: PState, n: int): int +proc getn*(L: PState, n: cint): cint # calls lua_objlen -proc setn*(L: PState, t, n: int) +proc setn*(L: PState, t, n: cint) # does nothing! type Treg*{.final.} = object @@ -37,58 +37,45 @@ type Preg* = ptr Treg -proc openlib*(L: PState, libname: cstring, lr: Preg, nup: int){.cdecl, - dynlib: lua.LIB_NAME, importc: "luaL_openlib".} -proc register*(L: PState, libname: cstring, lr: Preg){.cdecl, - dynlib: lua.LIB_NAME, importc: "luaL_register".} -proc getmetafield*(L: PState, obj: int, e: cstring): int{.cdecl, - dynlib: lua.LIB_NAME, importc: "luaL_getmetafield".} -proc callmeta*(L: PState, obj: int, e: cstring): int{.cdecl, - dynlib: LIB_NAME, importc: "luaL_callmeta".} -proc typerror*(L: PState, narg: int, tname: cstring): int{.cdecl, - dynlib: LIB_NAME, importc: "luaL_typerror".} -proc argerror*(L: PState, numarg: int, extramsg: cstring): int{.cdecl, - dynlib: LIB_NAME, importc: "luaL_argerror".} -proc checklstring*(L: PState, numArg: int, len: ptr int): cstring{.cdecl, - dynlib: LIB_NAME, importc: "luaL_checklstring".} -proc optlstring*(L: PState, numArg: int, def: cstring, len: ptr int): cstring{. - cdecl, dynlib: LIB_NAME, importc: "luaL_optlstring".} -proc checknumber*(L: PState, numArg: int): Number{.cdecl, - dynlib: LIB_NAME, importc: "luaL_checknumber".} -proc optnumber*(L: PState, nArg: int, def: Number): Number{.cdecl, - dynlib: LIB_NAME, importc: "luaL_optnumber".} -proc checkinteger*(L: PState, numArg: int): Integer{.cdecl, - dynlib: LIB_NAME, importc: "luaL_checkinteger".} -proc optinteger*(L: PState, nArg: int, def: Integer): Integer{. - cdecl, dynlib: LIB_NAME, importc: "luaL_optinteger".} -proc checkstack*(L: PState, sz: int, msg: cstring){.cdecl, - dynlib: LIB_NAME, importc: "luaL_checkstack".} -proc checktype*(L: PState, narg, t: int){.cdecl, dynlib: LIB_NAME, - importc: "luaL_checktype".} -proc checkany*(L: PState, narg: int){.cdecl, dynlib: LIB_NAME, - importc: "luaL_checkany".} -proc newmetatable*(L: PState, tname: cstring): int{.cdecl, - dynlib: LIB_NAME, importc: "luaL_newmetatable".} -proc checkudata*(L: PState, ud: int, tname: cstring): Pointer{.cdecl, - dynlib: LIB_NAME, importc: "luaL_checkudata".} -proc where*(L: PState, lvl: int){.cdecl, dynlib: LIB_NAME, - importc: "luaL_where".} -proc error*(L: PState, fmt: cstring): int{.cdecl, varargs, - dynlib: LIB_NAME, importc: "luaL_error".} -proc checkoption*(L: PState, narg: int, def: cstring, lst: cstringArray): int{. - cdecl, dynlib: LIB_NAME, importc: "luaL_checkoption".} -proc reference*(L: PState, t: int): int{.cdecl, dynlib: LIB_NAME, - importc: "luaL_ref".} -proc unref*(L: PState, t, theref: int){.cdecl, dynlib: LIB_NAME, - importc: "luaL_unref".} -proc loadfile*(L: PState, filename: cstring): int{.cdecl, - dynlib: LIB_NAME, importc: "luaL_loadfile".} -proc loadbuffer*(L: PState, buff: cstring, size: int, name: cstring): int{. - cdecl, dynlib: LIB_NAME, importc: "luaL_loadbuffer".} -proc loadstring*(L: PState, s: cstring): int{.cdecl, dynlib: LIB_NAME, - importc: "luaL_loadstring".} -proc newstate*(): PState{.cdecl, dynlib: LIB_NAME, - importc: "luaL_newstate".} + +{.push callConv: cdecl, dynlib: lua.LIB_NAME.} +{.push importc: "luaL_$1".} + +proc openlib*(L: PState, libname: cstring, lr: Preg, nup: cint) +proc register*(L: PState, libname: cstring, lr: Preg) + +proc getmetafield*(L: PState, obj: cint, e: cstring): cint +proc callmeta*(L: PState, obj: cint, e: cstring): cint +proc typerror*(L: PState, narg: cint, tname: cstring): cint +proc argerror*(L: PState, numarg: cint, extramsg: cstring): cint +proc checklstring*(L: PState, numArg: cint, len: ptr int): cstring +proc optlstring*(L: PState, numArg: cint, def: cstring, len: ptr cint): cstring +proc checknumber*(L: PState, numArg: cint): Number +proc optnumber*(L: PState, nArg: cint, def: Number): Number +proc checkinteger*(L: PState, numArg: cint): Integer +proc optinteger*(L: PState, nArg: cint, def: Integer): Integer +proc checkstack*(L: PState, sz: cint, msg: cstring) +proc checktype*(L: PState, narg, t: cint) + +proc checkany*(L: PState, narg: cint) +proc newmetatable*(L: PState, tname: cstring): cint + +proc checkudata*(L: PState, ud: cint, tname: cstring): Pointer +proc where*(L: PState, lvl: cint) +proc error*(L: PState, fmt: cstring): cint{.varargs.} +proc checkoption*(L: PState, narg: cint, def: cstring, lst: cstringArray): cint + +proc unref*(L: PState, t, theref: cint) +proc loadfile*(L: PState, filename: cstring): cint +proc loadbuffer*(L: PState, buff: cstring, size: cint, name: cstring): cint +proc loadstring*(L: PState, s: cstring): cint +proc newstate*(): PState + +{.pop.} +proc reference*(L: PState, t: cint): cint{.importc: "luaL_ref".} + +{.pop.} + proc open*(): PState # compatibility; moved from unit lua to lauxlib because it needs luaL_newstate # @@ -96,18 +83,18 @@ proc open*(): PState #** some useful macros #** =============================================================== # -proc argcheck*(L: PState, cond: bool, numarg: int, extramsg: cstring) -proc checkstring*(L: PState, n: int): cstring -proc optstring*(L: PState, n: int, d: cstring): cstring -proc checkint*(L: PState, n: int): int -proc checklong*(L: PState, n: int): int32 -proc optint*(L: PState, n: int, d: float64): int -proc optlong*(L: PState, n: int, d: float64): int32 -proc dofile*(L: PState, filename: cstring): int -proc dostring*(L: PState, str: cstring): int +proc argcheck*(L: PState, cond: bool, numarg: cint, extramsg: cstring) +proc checkstring*(L: PState, n: cint): cstring +proc optstring*(L: PState, n: cint, d: cstring): cstring +proc checkint*(L: PState, n: cint): cint +proc checklong*(L: PState, n: cint): clong +proc optint*(L: PState, n: cint, d: float64): cint +proc optlong*(L: PState, n: cint, d: float64): clong +proc dofile*(L: PState, filename: cstring): cint +proc dostring*(L: PState, str: cstring): cint proc getmetatable*(L: PState, tname: cstring) # not translated: - # #define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + # #define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) # #** ======================================================= #** Generic Buffer manipulation @@ -119,7 +106,7 @@ const # note: this is just arbitrary, as it related to t type Buffer*{.final.} = object p*: cstring # current position in buffer - lvl*: int # number of strings in the stack (level) + lvl*: cint # number of strings in the stack (level) L*: PState buffer*: array[0..BUFFERSIZE - 1, Char] # warning: see note above about LUAL_BUFFERSIZE @@ -130,80 +117,76 @@ proc addchar*(B: PBuffer, c: Char) # compatibility only (alias for luaL_addchar) proc putchar*(B: PBuffer, c: Char) # warning: see note above about LUAL_BUFFERSIZE -proc addsize*(B: PBuffer, n: int) -proc buffinit*(L: PState, B: PBuffer){.cdecl, dynlib: LIB_NAME, - importc: "luaL_buffinit".} -proc prepbuffer*(B: PBuffer): cstring{.cdecl, dynlib: LIB_NAME, - importc: "luaL_prepbuffer".} -proc addlstring*(B: PBuffer, s: cstring, L: int){.cdecl, - dynlib: LIB_NAME, importc: "luaL_addlstring".} -proc addstring*(B: PBuffer, s: cstring){.cdecl, dynlib: LIB_NAME, - importc: "luaL_addstring".} -proc addvalue*(B: PBuffer){.cdecl, dynlib: LIB_NAME, - importc: "luaL_addvalue".} -proc pushresult*(B: PBuffer){.cdecl, dynlib: LIB_NAME, - importc: "luaL_pushresult".} -proc gsub*(L: PState, s, p, r: cstring): cstring{.cdecl, - dynlib: LIB_NAME, importc: "luaL_gsub".} -proc findtable*(L: PState, idx: int, fname: cstring, szhint: int): cstring{. - cdecl, dynlib: LIB_NAME, importc: "luaL_findtable".} +proc addsize*(B: PBuffer, n: cint) + +{.push callConv: cdecl, dynlib: lua.LIB_NAME, importc: "luaL_$1".} +proc buffinit*(L: PState, B: PBuffer) +proc prepbuffer*(B: PBuffer): cstring +proc addlstring*(B: PBuffer, s: cstring, L: cint) +proc addstring*(B: PBuffer, s: cstring) +proc addvalue*(B: PBuffer) +proc pushresult*(B: PBuffer) +proc gsub*(L: PState, s, p, r: cstring): cstring +proc findtable*(L: PState, idx: cint, fname: cstring, szhint: cint): cstring # compatibility with ref system # pre-defined references +{.pop.} + const NOREF* = - 2 REFNIL* = - 1 -proc unref*(L: PState, theref: int) -proc getref*(L: PState, theref: int) +proc unref*(L: PState, theref: cint) +proc getref*(L: PState, theref: cint) # #** Compatibility macros and functions # # implementation proc pushstring(L: PState, s: string) = - pushlstring(L, cstring(s), len(s)) + pushlstring(L, cstring(s), s.len.cint) -proc getn(L: PState, n: int): int = +proc getn(L: PState, n: cint): cint = Result = objlen(L, n) -proc setn(L: PState, t, n: int) = +proc setn(L: PState, t, n: cint) = # does nothing as this operation is deprecated nil proc open(): PState = Result = newstate() -proc dofile(L: PState, filename: cstring): int = +proc dofile(L: PState, filename: cstring): cint = Result = loadfile(L, filename) if Result == 0: Result = pcall(L, 0, MULTRET, 0) -proc dostring(L: PState, str: cstring): int = +proc dostring(L: PState, str: cstring): cint = Result = loadstring(L, str) if Result == 0: Result = pcall(L, 0, MULTRET, 0) proc getmetatable(L: PState, tname: cstring) = getfield(L, REGISTRYINDEX, tname) -proc argcheck(L: PState, cond: bool, numarg: int, extramsg: cstring) = +proc argcheck(L: PState, cond: bool, numarg: cint, extramsg: cstring) = if not cond: discard argerror(L, numarg, extramsg) -proc checkstring(L: PState, n: int): cstring = +proc checkstring(L: PState, n: cint): cstring = Result = checklstring(L, n, nil) -proc optstring(L: PState, n: int, d: cstring): cstring = +proc optstring(L: PState, n: cint, d: cstring): cstring = Result = optlstring(L, n, d, nil) -proc checkint(L: PState, n: int): int = - Result = toInt(checknumber(L, n)) +proc checkint(L: PState, n: cint): cint = + Result = cint(checknumber(L, n)) -proc checklong(L: PState, n: int): int32 = +proc checklong(L: PState, n: cint): clong = Result = int32(ToInt(checknumber(L, n))) -proc optint(L: PState, n: int, d: float64): int = - Result = int(ToInt(optnumber(L, n, d))) +proc optint(L: PState, n: cint, d: float64): cint = + Result = optnumber(L, n, d).cint -proc optlong(L: PState, n: int, d: float64): int32 = +proc optlong(L: PState, n: cint, d: float64): clong = Result = int32(ToInt(optnumber(L, n, d))) proc addchar(B: PBuffer, c: Char) = @@ -215,11 +198,11 @@ proc addchar(B: PBuffer, c: Char) = proc putchar(B: PBuffer, c: Char) = addchar(B, c) -proc addsize(B: PBuffer, n: int) = +proc addsize(B: PBuffer, n: cint) = B.p = cast[cstring](cast[int](B.p) + n) -proc unref(L: PState, theref: int) = +proc unref(L: PState, theref: cint) = unref(L, REGISTRYINDEX, theref) -proc getref(L: PState, theref: int) = +proc getref(L: PState, theref: cint) = rawgeti(L, REGISTRYINDEX, theref) diff --git a/lib/wrappers/lua/lua.nim b/lib/wrappers/lua/lua.nim index 0346c4285..153714cee 100644 --- a/lib/wrappers/lua/lua.nim +++ b/lib/wrappers/lua/lua.nim @@ -51,16 +51,16 @@ when defined(useLuajit): else: when defined(MACOSX): const - NAME* = "liblua(|5.2|5.1|5.0).dylib" - LIB_NAME* = "liblua(|5.2|5.1|5.0).dylib" + NAME* = "liblua(|5.1|5.0).dylib" + LIB_NAME* = "liblua(|5.1|5.0).dylib" elif defined(UNIX): const - NAME* = "liblua(|5.2|5.1|5.0).so(|.0)" - LIB_NAME* = "liblua(|5.2|5.1|5.0).so(|.0)" + NAME* = "liblua(|5.1|5.0).so(|.0)" + LIB_NAME* = "liblua(|5.1|5.0).so(|.0)" else: const - NAME* = "lua(|5.2|5.1|5.0).dll" - LIB_NAME* = "lua(|5.2|5.1|5.0).dll" + NAME* = "lua(|5.1|5.0).dll" + LIB_NAME* = "lua(|5.1|5.0).dll" const VERSION* = "Lua 5.1" @@ -76,7 +76,7 @@ const ENVIRONINDEX* = - 10001 GLOBALSINDEX* = - 10002 -proc upvalueindex*(I: int): int +proc upvalueindex*(I: cint): cint const # thread status; 0 is OK constYIELD* = 1 ERRRUN* = 2 @@ -86,16 +86,16 @@ const # thread status; 0 is OK type PState* = Pointer - CFunction* = proc (L: PState): int{.cdecl.} + CFunction* = proc (L: PState): cint{.cdecl.} # #** functions that read/write blocks when loading/dumping Lua chunks # type - Reader* = proc (L: PState, ud: Pointer, sz: ptr int): cstring{.cdecl.} - Writer* = proc (L: PState, p: Pointer, sz: int, ud: Pointer): int{.cdecl.} - Alloc* = proc (ud, theptr: Pointer, osize, nsize: int){.cdecl.} + Reader* = proc (L: PState, ud: Pointer, sz: ptr cint): cstring{.cdecl.} + Writer* = proc (L: PState, p: Pointer, sz: cint, ud: Pointer): cint{.cdecl.} + Alloc* = proc (ud, theptr: Pointer, osize, nsize: cint){.cdecl.} const TNONE* = - 1 @@ -112,130 +112,86 @@ const type # Type of Numbers in Lua Number* = float - Integer* = int - -proc newstate*(f: Alloc, ud: Pointer): PState{.cdecl, dynlib: NAME, - importc: "lua_newstate".} -proc close*(L: PState){.cdecl, dynlib: NAME, importc: "lua_close".} -proc newthread*(L: PState): PState{.cdecl, dynlib: NAME, - importc: "lua_newthread".} -proc atpanic*(L: PState, panicf: CFunction): CFunction{.cdecl, dynlib: NAME, - importc: "lua_atpanic".} -proc gettop*(L: PState): int{.cdecl, dynlib: NAME, importc: "lua_gettop".} -proc settop*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_settop".} -proc pushvalue*(L: PState, Idx: int){.cdecl, dynlib: NAME, - importc: "lua_pushvalue".} -proc remove*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_remove".} -proc insert*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_insert".} -proc replace*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_replace".} -proc checkstack*(L: PState, sz: int): cint{.cdecl, dynlib: NAME, - importc: "lua_checkstack".} -proc xmove*(`from`, `to`: PState, n: int){.cdecl, dynlib: NAME, - importc: "lua_xmove".} -proc isnumber*(L: PState, idx: int): cint{.cdecl, dynlib: NAME, - importc: "lua_isnumber".} -proc isstring*(L: PState, idx: int): cint{.cdecl, dynlib: NAME, - importc: "lua_isstring".} -proc iscfunction*(L: PState, idx: int): cint{.cdecl, dynlib: NAME, - importc: "lua_iscfunction".} -proc isuserdata*(L: PState, idx: int): cint{.cdecl, dynlib: NAME, - importc: "lua_isuserdata".} -proc luatype*(L: PState, idx: int): int{.cdecl, dynlib: NAME, importc: "lua_type".} -proc typename*(L: PState, tp: int): cstring{.cdecl, dynlib: NAME, - importc: "lua_typename".} -proc equal*(L: PState, idx1, idx2: int): cint{.cdecl, dynlib: NAME, - importc: "lua_equal".} -proc rawequal*(L: PState, idx1, idx2: int): cint{.cdecl, dynlib: NAME, - importc: "lua_rawequal".} -proc lessthan*(L: PState, idx1, idx2: int): cint{.cdecl, dynlib: NAME, - importc: "lua_lessthan".} -proc tonumber*(L: PState, idx: int): Number{.cdecl, dynlib: NAME, - importc: "lua_tonumber".} -proc tointeger*(L: PState, idx: int): Integer{.cdecl, dynlib: NAME, - importc: "lua_tointeger".} -proc toboolean*(L: PState, idx: int): cint{.cdecl, dynlib: NAME, - importc: "lua_toboolean".} -proc tolstring*(L: PState, idx: int, length: ptr int): cstring{.cdecl, - dynlib: NAME, importc: "lua_tolstring".} -proc objlen*(L: PState, idx: int): int{.cdecl, dynlib: NAME, - importc: "lua_objlen".} -proc tocfunction*(L: PState, idx: int): CFunction{.cdecl, dynlib: NAME, - importc: "lua_tocfunction".} -proc touserdata*(L: PState, idx: int): Pointer{.cdecl, dynlib: NAME, - importc: "lua_touserdata".} -proc tothread*(L: PState, idx: int): PState{.cdecl, dynlib: NAME, - importc: "lua_tothread".} -proc topointer*(L: PState, idx: int): Pointer{.cdecl, dynlib: NAME, - importc: "lua_topointer".} -proc pushnil*(L: PState){.cdecl, dynlib: NAME, importc: "lua_pushnil".} -proc pushnumber*(L: PState, n: Number){.cdecl, dynlib: NAME, - importc: "lua_pushnumber".} -proc pushinteger*(L: PState, n: Integer){.cdecl, dynlib: NAME, - importc: "lua_pushinteger".} -proc pushlstring*(L: PState, s: cstring, len: int){.cdecl, dynlib: NAME, - importc: "lua_pushlstring".} -proc pushstring*(L: PState, s: cstring){.cdecl, dynlib: NAME, - importc: "lua_pushstring".} -proc pushvfstring*(L: PState, fmt: cstring, argp: Pointer): cstring{.cdecl, - dynlib: NAME, importc: "lua_pushvfstring".} -proc pushfstring*(L: PState, fmt: cstring): cstring{.cdecl, varargs, - dynlib: NAME, importc: "lua_pushfstring".} -proc pushcclosure*(L: PState, fn: CFunction, n: int){.cdecl, dynlib: NAME, - importc: "lua_pushcclosure".} -proc pushboolean*(L: PState, b: cint){.cdecl, dynlib: NAME, - importc: "lua_pushboolean".} -proc pushlightuserdata*(L: PState, p: Pointer){.cdecl, dynlib: NAME, - importc: "lua_pushlightuserdata".} -proc pushthread*(L: PState){.cdecl, dynlib: NAME, importc: "lua_pushthread".} -proc gettable*(L: PState, idx: int){.cdecl, dynlib: NAME, - importc: "lua_gettable".} -proc getfield*(L: Pstate, idx: int, k: cstring){.cdecl, dynlib: NAME, - importc: "lua_getfield".} -proc rawget*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_rawget".} -proc rawgeti*(L: PState, idx, n: int){.cdecl, dynlib: NAME, - importc: "lua_rawgeti".} -proc createtable*(L: PState, narr, nrec: int){.cdecl, dynlib: NAME, - importc: "lua_createtable".} -proc newuserdata*(L: PState, sz: int): Pointer{.cdecl, dynlib: NAME, - importc: "lua_newuserdata".} -proc getmetatable*(L: PState, objindex: int): int{.cdecl, dynlib: NAME, - importc: "lua_getmetatable".} -proc getfenv*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_getfenv".} -proc settable*(L: PState, idx: int){.cdecl, dynlib: NAME, - importc: "lua_settable".} -proc setfield*(L: PState, idx: int, k: cstring){.cdecl, dynlib: NAME, - importc: "lua_setfield".} -proc rawset*(L: PState, idx: int){.cdecl, dynlib: NAME, importc: "lua_rawset".} -proc rawseti*(L: PState, idx, n: int){.cdecl, dynlib: NAME, - importc: "lua_rawseti".} -proc setmetatable*(L: PState, objindex: int): int{.cdecl, dynlib: NAME, - importc: "lua_setmetatable".} -proc setfenv*(L: PState, idx: int): int{.cdecl, dynlib: NAME, - importc: "lua_setfenv".} -proc call*(L: PState, nargs, nresults: int){.cdecl, dynlib: NAME, - importc: "lua_call".} -proc pcall*(L: PState, nargs, nresults, errf: int): int{.cdecl, dynlib: NAME, - importc: "lua_pcall".} -proc cpcall*(L: PState, func: CFunction, ud: Pointer): int{.cdecl, dynlib: NAME, - importc: "lua_cpcall".} -proc load*(L: PState, reader: Reader, dt: Pointer, chunkname: cstring): int{. - cdecl, dynlib: NAME, importc: "lua_load".} -proc dump*(L: PState, writer: Writer, data: Pointer): int{.cdecl, dynlib: NAME, - importc: "lua_dump".} -proc luayield*(L: PState, nresults: int): int{.cdecl, dynlib: NAME, - importc: "lua_yield".} -proc resume*(L: PState, narg: int): int{.cdecl, dynlib: NAME, - importc: "lua_resume".} -proc status*(L: PState): int{.cdecl, dynlib: NAME, importc: "lua_status".} -proc gc*(L: PState, what, data: int): int{.cdecl, dynlib: NAME, - importc: "lua_gc".} -proc error*(L: PState): int{.cdecl, dynlib: NAME, importc: "lua_error".} -proc next*(L: PState, idx: int): int{.cdecl, dynlib: NAME, importc: "lua_next".} -proc concat*(L: PState, n: int){.cdecl, dynlib: NAME, importc: "lua_concat".} -proc getallocf*(L: PState, ud: ptr Pointer): Alloc{.cdecl, dynlib: NAME, - importc: "lua_getallocf".} -proc setallocf*(L: PState, f: Alloc, ud: Pointer){.cdecl, dynlib: NAME, - importc: "lua_setallocf".} + Integer* = cint + +{.pragma: ilua, importc: "lua_$1".} + +{.push callConv: cdecl, dynlib: LibName.} +#{.push importc: "lua_$1".} + +proc newstate*(f: Alloc, ud: Pointer): PState {.ilua.} + +proc close*(L: PState){.ilua.} +proc newthread*(L: PState): PState{.ilua.} +proc atpanic*(L: PState, panicf: CFunction): CFunction{.ilua.} + +proc gettop*(L: PState): cint{.ilua.} +proc settop*(L: PState, idx: cint){.ilua.} +proc pushvalue*(L: PState, Idx: cint){.ilua.} +proc remove*(L: PState, idx: cint){.ilua.} +proc insert*(L: PState, idx: cint){.ilua.} +proc replace*(L: PState, idx: cint){.ilua.} +proc checkstack*(L: PState, sz: cint): cint{.ilua.} +proc xmove*(`from`, `to`: PState, n: cint){.ilua.} +proc isnumber*(L: PState, idx: cint): cint{.ilua.} +proc isstring*(L: PState, idx: cint): cint{.ilua.} +proc iscfunction*(L: PState, idx: cint): cint{.ilua.} +proc isuserdata*(L: PState, idx: cint): cint{.ilua.} +proc luatype*(L: PState, idx: cint): cint{.importc: "lua_type".} +proc typename*(L: PState, tp: cint): cstring{.ilua.} +proc equal*(L: PState, idx1, idx2: cint): cint{.ilua.} +proc rawequal*(L: PState, idx1, idx2: cint): cint{.ilua.} +proc lessthan*(L: PState, idx1, idx2: cint): cint{.ilua.} +proc tonumber*(L: PState, idx: cint): Number{.ilua.} +proc tointeger*(L: PState, idx: cint): Integer{.ilua.} +proc toboolean*(L: PState, idx: cint): cint{.ilua.} +proc tolstring*(L: PState, idx: cint, length: ptr cint): cstring{.ilua.} +proc objlen*(L: PState, idx: cint): cint{.ilua.} +proc tocfunction*(L: PState, idx: cint): CFunction{.ilua.} +proc touserdata*(L: PState, idx: cint): Pointer{.ilua.} +proc tothread*(L: PState, idx: cint): PState{.ilua.} +proc topointer*(L: PState, idx: cint): Pointer{.ilua.} +proc pushnil*(L: PState){.ilua.} +proc pushnumber*(L: PState, n: Number){.ilua.} +proc pushinteger*(L: PState, n: Integer){.ilua.} +proc pushlstring*(L: PState, s: cstring, len: cint){.ilua.} +proc pushstring*(L: PState, s: cstring){.ilua.} +proc pushvfstring*(L: PState, fmt: cstring, argp: Pointer): cstring{.ilua.} +proc pushfstring*(L: PState, fmt: cstring): cstring{.varargs,ilua.} +proc pushcclosure*(L: PState, fn: CFunction, n: cint){.ilua.} +proc pushboolean*(L: PState, b: cint){.ilua.} +proc pushlightuserdata*(L: PState, p: Pointer){.ilua.} +proc pushthread*(L: PState){.ilua.} +proc gettable*(L: PState, idx: cint){.ilua.} +proc getfield*(L: Pstate, idx: cint, k: cstring){.ilua.} +proc rawget*(L: PState, idx: cint){.ilua.} +proc rawgeti*(L: PState, idx, n: cint){.ilua.} +proc createtable*(L: PState, narr, nrec: cint){.ilua.} +proc newuserdata*(L: PState, sz: cint): Pointer{.ilua.} +proc getmetatable*(L: PState, objindex: cint): cint{.ilua.} +proc getfenv*(L: PState, idx: cint){.ilua.} +proc settable*(L: PState, idx: cint){.ilua.} +proc setfield*(L: PState, idx: cint, k: cstring){.ilua.} +proc rawset*(L: PState, idx: cint){.ilua.} +proc rawseti*(L: PState, idx, n: cint){.ilua.} +proc setmetatable*(L: PState, objindex: cint): cint{.ilua.} +proc setfenv*(L: PState, idx: cint): cint{.ilua.} +proc call*(L: PState, nargs, nresults: cint){.ilua.} +proc pcall*(L: PState, nargs, nresults, errf: cint): cint{.ilua.} +proc cpcall*(L: PState, func: CFunction, ud: Pointer): cint{.ilua.} +proc load*(L: PState, reader: Reader, dt: Pointer, chunkname: cstring): cint{.ilua.} +proc dump*(L: PState, writer: Writer, data: Pointer): cint{.ilua.} +proc luayield*(L: PState, nresults: cint): cint{.importc: "lua_yield".} +proc resume*(L: PState, narg: cint): cint{.ilua.} +proc status*(L: PState): cint{.ilua.} +proc gc*(L: PState, what, data: cint): cint{.ilua.} +proc error*(L: PState): cint{.ilua.} +proc next*(L: PState, idx: cint): cint{.ilua.} +proc concat*(L: PState, n: cint){.ilua.} +proc getallocf*(L: PState, ud: ptr Pointer): Alloc{.ilua.} +proc setallocf*(L: PState, f: Alloc, ud: Pointer){.ilua.} +{.pop.} + # #** Garbage-collection functions and options # @@ -256,29 +212,29 @@ const #** =============================================================== # -proc pop*(L: PState, n: int) +proc pop*(L: PState, n: cint) proc newtable*(L: Pstate) proc register*(L: PState, n: cstring, f: CFunction) proc pushcfunction*(L: PState, f: CFunction) -proc strlen*(L: Pstate, i: int): int -proc isfunction*(L: PState, n: int): bool -proc istable*(L: PState, n: int): bool -proc islightuserdata*(L: PState, n: int): bool -proc isnil*(L: PState, n: int): bool -proc isboolean*(L: PState, n: int): bool -proc isthread*(L: PState, n: int): bool -proc isnone*(L: PState, n: int): bool -proc isnoneornil*(L: PState, n: int): bool +proc strlen*(L: Pstate, i: cint): cint +proc isfunction*(L: PState, n: cint): bool +proc istable*(L: PState, n: cint): bool +proc islightuserdata*(L: PState, n: cint): bool +proc isnil*(L: PState, n: cint): bool +proc isboolean*(L: PState, n: cint): bool +proc isthread*(L: PState, n: cint): bool +proc isnone*(L: PState, n: cint): bool +proc isnoneornil*(L: PState, n: cint): bool proc pushliteral*(L: PState, s: cstring) proc setglobal*(L: PState, s: cstring) proc getglobal*(L: PState, s: cstring) -proc tostring*(L: PState, i: int): cstring +proc tostring*(L: PState, i: cint): cstring # #** compatibility macros and functions # proc getregistry*(L: PState) -proc getgccount*(L: PState): int +proc getgccount*(L: PState): cint type Chunkreader* = Reader Chunkwriter* = Writer @@ -307,18 +263,18 @@ const type TDebug*{.final.} = object # activation record - event*: int + event*: cint name*: cstring # (n) namewhat*: cstring # (n) `global', `local', `field', `method' what*: cstring # (S) `Lua', `C', `main', `tail' source*: cstring # (S) - currentline*: int # (l) - nups*: int # (u) number of upvalues - linedefined*: int # (S) - lastlinedefined*: int # (S) - short_src*: array[0..IDSIZE - 1, Char] # (S) - # private part - i_ci*: int # active function + currentline*: cint # (l) + nups*: cint # (u) number of upvalues + linedefined*: cint # (S) + lastlinedefined*: cint # (S) + short_src*: array[0.. <IDSIZE, Char] # (S) \ + # private part + i_ci*: cint # active function PDebug* = ptr TDebug Hook* = proc (L: PState, ar: PDebug){.cdecl.} @@ -329,31 +285,27 @@ type #** ====================================================================== # -proc getstack*(L: PState, level: int, ar: PDebug): int{.cdecl, dynlib: NAME, - importc: "lua_getstack".} -proc getinfo*(L: PState, what: cstring, ar: PDebug): int{.cdecl, dynlib: NAME, - importc: "lua_getinfo".} -proc getlocal*(L: PState, ar: PDebug, n: int): cstring{.cdecl, dynlib: NAME, - importc: "lua_getlocal".} -proc setlocal*(L: PState, ar: PDebug, n: int): cstring{.cdecl, dynlib: NAME, - importc: "lua_setlocal".} -proc getupvalue*(L: PState, funcindex: int, n: int): cstring{.cdecl, - dynlib: NAME, importc: "lua_getupvalue".} -proc setupvalue*(L: PState, funcindex: int, n: int): cstring{.cdecl, - dynlib: NAME, importc: "lua_setupvalue".} -proc sethook*(L: PState, func: Hook, mask: int, count: int): int{.cdecl, - dynlib: NAME, importc: "lua_sethook".} -proc gethook*(L: PState): Hook{.cdecl, dynlib: NAME, importc: "lua_gethook".} -proc gethookmask*(L: PState): int{.cdecl, dynlib: NAME, - importc: "lua_gethookmask".} -proc gethookcount*(L: PState): int{.cdecl, dynlib: NAME, - importc: "lua_gethookcount".} +{.push callConv: cdecl, dynlib: lua.LIB_NAME.} + +proc getstack*(L: PState, level: cint, ar: PDebug): cint{.ilua.} +proc getinfo*(L: PState, what: cstring, ar: PDebug): cint{.ilua.} +proc getlocal*(L: PState, ar: PDebug, n: cint): cstring{.ilua.} +proc setlocal*(L: PState, ar: PDebug, n: cint): cstring{.ilua.} +proc getupvalue*(L: PState, funcindex: cint, n: cint): cstring{.ilua.} +proc setupvalue*(L: PState, funcindex: cint, n: cint): cstring{.ilua.} +proc sethook*(L: PState, func: Hook, mask: cint, count: cint): cint{.ilua.} +proc gethook*(L: PState): Hook{.ilua.} +proc gethookmask*(L: PState): cint{.ilua.} +proc gethookcount*(L: PState): cint{.ilua.} + +{.pop.} + # implementation -proc upvalueindex(I: int): int = +proc upvalueindex(I: cint): cint = Result = GLOBALSINDEX - i -proc pop(L: PState, n: int) = +proc pop(L: PState, n: cint) = settop(L, - n - 1) proc newtable(L: PState) = @@ -366,35 +318,35 @@ proc register(L: PState, n: cstring, f: CFunction) = proc pushcfunction(L: PState, f: CFunction) = pushcclosure(L, f, 0) -proc strlen(L: PState, i: int): int = +proc strlen(L: PState, i: cint): cint = Result = objlen(L, i) -proc isfunction(L: PState, n: int): bool = +proc isfunction(L: PState, n: cint): bool = Result = luatype(L, n) == TFUNCTION -proc istable(L: PState, n: int): bool = +proc istable(L: PState, n: cint): bool = Result = luatype(L, n) == TTABLE -proc islightuserdata(L: PState, n: int): bool = +proc islightuserdata(L: PState, n: cint): bool = Result = luatype(L, n) == TLIGHTUSERDATA -proc isnil(L: PState, n: int): bool = +proc isnil(L: PState, n: cint): bool = Result = luatype(L, n) == TNIL -proc isboolean(L: PState, n: int): bool = +proc isboolean(L: PState, n: cint): bool = Result = luatype(L, n) == TBOOLEAN -proc isthread(L: PState, n: int): bool = +proc isthread(L: PState, n: cint): bool = Result = luatype(L, n) == TTHREAD -proc isnone(L: PState, n: int): bool = +proc isnone(L: PState, n: cint): bool = Result = luatype(L, n) == TNONE -proc isnoneornil(L: PState, n: int): bool = +proc isnoneornil(L: PState, n: cint): bool = Result = luatype(L, n) <= 0 proc pushliteral(L: PState, s: cstring) = - pushlstring(L, s, len(s)) + pushlstring(L, s, s.len.cint) proc setglobal(L: PState, s: cstring) = setfield(L, GLOBALSINDEX, s) @@ -402,11 +354,11 @@ proc setglobal(L: PState, s: cstring) = proc getglobal(L: PState, s: cstring) = getfield(L, GLOBALSINDEX, s) -proc tostring(L: PState, i: int): cstring = +proc tostring(L: PState, i: cint): cstring = Result = tolstring(L, i, nil) proc getregistry(L: PState) = pushvalue(L, REGISTRYINDEX) -proc getgccount(L: PState): int = +proc getgccount(L: PState): cint = Result = gc(L, GCCOUNT, 0) diff --git a/lib/wrappers/lua/lualib.nim b/lib/wrappers/lua/lualib.nim index 94f08a1f1..8c1237dde 100644 --- a/lib/wrappers/lua/lualib.nim +++ b/lib/wrappers/lua/lualib.nim @@ -32,35 +32,33 @@ const DBLIBNAME* = "debug" LOADLIBNAME* = "package" -proc open_base*(L: PState): cint{.cdecl, dynlib: LIB_NAME, - importc: "luaopen_base".} -proc open_table*(L: PState): cint{.cdecl, dynlib: LIB_NAME, - importc: "luaopen_table".} -proc open_io*(L: PState): cint{.cdecl, dynlib: LIB_NAME, importc: "luaopen_io".} -proc open_string*(L: PState): cint{.cdecl, dynlib: LIB_NAME, - importc: "luaopen_string".} -proc open_math*(L: PState): cint{.cdecl, dynlib: LIB_NAME, - importc: "luaopen_math".} -proc open_debug*(L: PState): cint{.cdecl, dynlib: LIB_NAME, - importc: "luaopen_debug".} -proc open_package*(L: PState): cint{.cdecl, dynlib: LIB_NAME, - importc: "luaopen_package".} -proc openlibs*(L: PState){.cdecl, dynlib: LIB_NAME, importc: "luaL_openlibs".} +{.pragma: ilua, importc: "lua$1".} + +{.push callConv: cdecl, dynlib: lua.LIB_NAME.} +proc open_base*(L: PState): cint{.ilua.} +proc open_table*(L: PState): cint{.ilua.} +proc open_io*(L: PState): cint{.ilua.} +proc open_string*(L: PState): cint{.ilua.} +proc open_math*(L: PState): cint{.ilua.} +proc open_debug*(L: PState): cint{.ilua.} +proc open_package*(L: PState): cint{.ilua.} +proc openlibs*(L: PState){.importc: "luaL_openlibs".} +{.pop.} proc baselibopen*(L: PState): Bool = - Result = open_base(L) != 0'i32 + open_base(L) != 0'i32 proc tablibopen*(L: PState): Bool = - Result = open_table(L) != 0'i32 + open_table(L) != 0'i32 proc iolibopen*(L: PState): Bool = - Result = open_io(L) != 0'i32 + open_io(L) != 0'i32 proc strlibopen*(L: PState): Bool = - Result = open_string(L) != 0'i32 + open_string(L) != 0'i32 proc mathlibopen*(L: PState): Bool = - Result = open_math(L) != 0'i32 + open_math(L) != 0'i32 proc dblibopen*(L: PState): Bool = - Result = open_debug(L) != 0'i32 + open_debug(L) != 0'i32 |