emmylua_code_analysis 0.23.2

A library for analyzing lua code.
Documentation
--- Copy from Lua Sumneko Lua

--- @meta ffi
--- @version JIT

--- @class ffi.namespace*: table
--- @field [string] function

--- @class ffi.ctype*: userdata
--- @overload fun(init?: any, ...): ffi.cdata*
--- @overload fun(nelem?: integer, init?: any, ...): ffi.cdata*
local ctype

--- @class ffi.cdecl*: string
--- @class ffi.cdata*: userdata
--- @alias ffi.ct* ffi.ctype* | ffi.cdecl* | ffi.cdata*
--- @class ffi.cb*: ffi.cdata*
local cb
--- @class ffi.VLA*: userdata
--- @class ffi.VLS*: userdata

--- @version JIT
--- @class ffilib
--- @field C    ffi.namespace*
--- @field os   string
--- @field arch string
local ffi = {}

--- @param def     string
--- @param params? any
function ffi.cdef(def, params, ...) end

--- @param name    string
--- @param global? boolean
--- @return ffi.namespace* clib
--- @nodiscard
function ffi.load(name, global) end

--- @overload fun(ct: ffi.ct*, init: any, ...): ffi.cdata*
--- @param ct     ffi.ct*
--- @param nelem? integer
--- @param init?  any
--- @return ffi.cdata* cdata
--- @nodiscard
function ffi.new(ct, nelem, init, ...) end

--- @param ct      ffi.ct*
--- @param params? any
--- @return ffi.ctype* ctype
--- @nodiscard
function ffi.typeof(ct, params, ...) end

--- @param ct   ffi.ct*
--- @param init any
--- @return ffi.cdata* cdata
--- @nodiscard
function ffi.cast(ct, init) end

--- @param ct        ffi.ct*
--- @param metatable table
--- @return ffi.ctype* ctype
function ffi.metatype(ct, metatable) end

--- @param cdata      ffi.cdata*
--- @param finalizer? function
--- @return ffi.cdata* cdata
function ffi.gc(cdata, finalizer) end

--- @param ct     ffi.ct*
--- @param nelem? integer
--- @return integer|nil size
--- @nodiscard
function ffi.sizeof(ct, nelem) end

--- @param ct ffi.ct*
--- @return integer align
--- @nodiscard
function ffi.alignof(ct) end

--- @param ct    ffi.ct*
--- @param field string
--- @return integer ofs
--- @return integer? bpos
--- @return integer? bsize
--- @nodiscard
function ffi.offsetof(ct, field) end

--- @param ct  ffi.ct*
--- @param obj any
--- @return boolean status
--- @nodiscard
function ffi.istype(ct, obj) end

--- @param newerr? integer
--- @return integer err
--- @nodiscard
function ffi.errno(newerr) end

--- @param ptr  any
--- @param len? integer
--- @return string str
function ffi.string(ptr, len) end

--- @overload fun(dst: any, str: string)
--- @param dst any
--- @param src any
--- @param len integer
function ffi.copy(dst, src, len) end

--- @param dst any
--- @param len integer
--- @param c?  any
function ffi.fill(dst, len, c) end

--- @param param string
--- @return boolean status
function ffi.abi(param) end

function cb:free() end

--- @param func function
function cb:set(func) end

return ffi