{** $ ID: Lua.h, V 1.175B 2003/03/18 12:31:39 Roberto EXP $ ** Lua - An Extensible Extension Language ** Tecgraf: Computer Graphics Technology Group, Puc-Rio, Brazil ** http://www.lua.org mailto: info@lua.org ** See Copyright Notice at the end of this file} {this .h header file is translated by Melice}
Unit Lua; Interface
Const luadll = 'lualibdll.dll';
TYPE Lua_State = Pointer; INT = INTEGER; SIZE_T = INT;
VA_LIST = INT;
Const
Slua_version = 'Lua 5.0.2'; slua_copyright = 'CopyRight (C) 1994-2004 Tecgraf, puc-rio'; slua_authors = 'R. Ierusalimschy, L. H. de Figueiredo & W. Celes';
{OPTION for MULTIPLE RETURNS IN `Lua_pcall 'and` Lua_call'} Lua_Multret = -1;
{** pseudo-indeudes} Lua_registryIndex = -10000; Lua_GlobalSindex = -10001;
// #Define Lua_upvalueIndex (i) (Lua_GlobalSindex- (i))
{ERROR CODES for `Lua_Load 'and` Lua_pcall'} Lua_ERRRUN = 1; Lua_ERRFILE = 2; Lua_ERRSYNTAX = 3; Lua_ERRMEM = 4; Lua_ERRERR = 5;
// typedf struct Lua_State Lua_State;
TYPE Lua_cfunction = function (l: Lua_State): int;
{** Functions What Read / Write Blocks When Loading / DUMPING Lua Chunks} Lua_chunkReader = Function (l: Lua_State; UD: Pointer; SZ: SIZE_T): PCHAR;
Lua_chunkwriter = function (l: lua_state; p: pointer; sz: size_t; ud: pointer): int;
{** Basic Types} Const
Lua_Tnone = -1;
Lua_Tnil = 0; Lua_TBOOLEAN = 1; Lua_TlightUserData = 2; Lua_TNumber = 3; Lua_TString = 4; Lua_TTABLE = 5; Lua_TFunction = 6; Lua_TUSERDATA = 7; Lua_THREAD = 8;
{minimum Lua Stack Available to a c function} Lua_MinStack = 20; {** generic extra include file}
{TYPE OF NUMBERS IN Lua} Type Lua_Number = DOUBLE;
{** state manipulation} function lua_open: lua_State; stdcall; external Luadll; procedure lua_close (L: lua_State); stdcall; external Luadll; function lua_newthread (L: lua_State): lua_State; stdcall; external Luadll;
Function Lua_atpanic (L: Lua_State; Panicf: Lua_cfunction): Lua_CFunction; STDCALL; External Luadll;
{** basic stack manipulation} function lua_gettop (L: lua_State): int; stdcall; external Luadll; procedure lua_settop (L: lua_State; idx: int); stdcall; external Luadll; procedure lua_pushvalue (L: lua_State; idx: int) ; stdcall; external Luadll; procedure lua_remove (L: lua_State; idx: int); stdcall; external Luadll; procedure lua_insert (L: lua_State; idx: int); stdcall; external Luadll; procedure lua_replace (L: lua_State; idx: int ); stdcall; external luadll; function Lua_Checkstack (l: Lua_State; SZ: int): int; external luadll;
Procedure Lua_xmove (fromls: Lua_State; Tols: Lua_State; N: int); stdcall; external luadll;
{* Access functions (stack -> c)}
function lua_isnumber (L: lua_State; idx: int): int; stdcall; external Luadll; function lua_isstring (L: lua_State; idx: int): int; stdcall; external Luadll; function lua_iscfunction (L: lua_State; idx: int): int; stdcall; external Luadll; function lua_isuserdata (L: lua_State; idx: int): int; stdcall; external Luadll; function lua_type (L: lua_State; idx: int): int; stdcall; external Luadll; function lua_typename (L: Lua_State; Tp: int): pchar; stdcall; external luadll;
function lua_equal (L: lua_State; idx1: int; idx2: int): int; stdcall; externalLuadll; function lua_rawequal (L: lua_State; idx1: int; idx2: int): int; stdcall; externalLuadll; function lua_lessthan (L: lua_State ; idx1: int; idx2: int): int; stdcall; externalLuadll; function lua_tonumber (L: lua_State; idx: int): lua_Number; stdcall; externalLuadll; function lua_toboolean (L: lua_State; idx: int): int; stdcall; external Luadll; function lua_tostring (L: lua_State; idx: int): pchar; stdcall; external Luadll; function lua_strlen (L: lua_State; idx: int): size_t; stdcall; external Luadll; function lua_tocfunction (L: lua_State; idx: int): lua_CFunction; stdcall; external Luadll; procedure lua_touserdata (L: lua_State; idx: int); stdcall; external Luadll; function lua_tothread (L: lua_State; idx: int): lua_State; stdcall; externalLuadll; procedure lua_topointer (L: Lua_State; IDX: int); stdcall; external luadll;
{** push functions (C -> stack)} procedure lua_pushnil (L: lua_State); stdcall; external Luadll; procedure lua_pushnumber (L: lua_State; n: lua_Number); stdcall; external Luadll; procedure lua_pushlstring (L: lua_State; s : pchar; st: size_t); stdcall; externalLuadll; procedure lua_pushstring (L: lua_State; s: pchar); stdcall; external Luadll; function lua_pushvfstring (L: lua_State; fmt: pchar; argp: va_list): pchar; stdcall; external Luadll; function lua_pushfstring (L: lua_State; fmt: pchar): pchar; stdcall; externalLuadll; procedure lua_pushcclosure (L: lua_State; fn: lua_CFunction; n: int); stdcall; external Luadll; procedure lua_pushboolean (L: lua_State; b: Int; stdcall; external Luadll; Procedure Lua_pushlightUserData (l: Lua_State; P: Pointer); stdcall; ExternalUAdll;
{** get functions (Lua -> stack)} procedure lua_gettable (L: lua_State; idx: int); stdcall; external Luadll; procedure lua_rawget (L: lua_State; idx: int); stdcall; external Luadll; procedure lua_rawgeti (L : lua_State; idx: int; n: int); stdcall; external Luadll; procedure lua_newtable (L: lua_State); stdcall; external Luadll; procedure lua_newuserdata (L: lua_State; sz: size_t); stdcall; external Luadll; function lua_getmetatable ( L: lua_State; objindex: int): int; stdcall; externalLuadll; procedure lua_getfenv (L: lua_State; idx: int); stdcall; external Luadll; {** set functions (stack -> Lua)} procedure lua_settable (L: lua_State ; idx: int); stdcall; external Luadll; procedure lua_rawset (L: lua_State; idx: int); stdcall; external Luadll; procedure lua_rawseti (L: lua_State; idx: int; n: int); stdcall; external Luadll; function Lua_SetMetaTable (L: Lua_State; Objindex: int): int; stdcall; external luadll; function lua_setfenv (l: lua_state; idx: int): int; stdcall; external luadll;
{** `load 'and` call' functions (load and run Lua code)} procedure lua_call (L: lua_State; nargs: int; nresults: int); stdcall; external Luadll; function lua_pcall (L: lua_State; nargs: int Nresults: int; errfunc: int): int; stdcall; external luadll; function lua_cpcall (lua_state; func: lua_cfunction; ud: pipe; st ;.): int; st;
Function Lua_Load (LUA_STATE; Reader: Lua_chunkReader; DT: Pointer; ChunkName: Pchar): int; stdcall; external luadll;
Function Lua_dump (l: Lua_State; Writer: Lua_chunkwriter; Data: Pointer): int; stdcall; external luadll
{** coroutine functions} function lua_yield (L: lua_State; nresults: int): int; stdcall; external Luadll; function lua_resume (L: lua_State; narg: int): int; stdcall; external Luadll; {** garbage-collection functions} function lua_getgcthreshold (L: lua_State): int; stdcall; external Luadll; function lua_getgccount (L: lua_State): int; stdcall; external Luadll; procedure lua_setgcthreshold (L: lua_State; newthreshold: int); stdcall; externalLuadll;
{** Miscellaneous functions}
Function Lua_Version: pchar; stdcall; external luadll;
Function Lua_ERROR (L: Lua_State): int; stdcall; external luadll;
Function Lua_Next (L: Lua_State; IDX: INT): int; stdcall; external luadll;
Procedure Lua_Concat (l: Lua_State; N: int); stdcall; external luadll;
{** ============================================================================================================================================================================================================ ================ ** Some useful macros ** =========================== =====================================}
{#Deffine Lua_BoxPointer (L, U) / (* (Void **) (lua_newuserdata (l, sizeof (void *))) = (u))
#Deffine Lua_unboxPointer (L, I) (* (Void **) (Lua_TouserData (L, I))))))
#Deffine Lua_POP (L, N) Lua_Settop (L, - (N) - 1)
#Deffine Lua_Register (L, N, F) / (Lua_PushString (L, N), / Lua_PushcFunction (L, F), / Lua_SetTable (L, Lua_GlobalSindex))
#Define Lua_PushcFunction (L, F) Lua_PushcClosure (L, F, 0) #define Lua_isfunction (LUA_TYPE (L, N) = = Lua_TFunction) #define Lua_istable (LUA_TYPE (L, N) = = Lua_ttable) #define Lua_IgHTUserData (L, N) (Lua_Type (L, N) = = Lua_TlightUserData) #define Lua_isnil (LUA_TYPE (L, N) = = Lua_Tnil) #define Lua_isboolean (L, N) (Lua_TYPE (L, N) = = Lua_TBOOLEAN) #define Lua_isnone (LUA_TYPE (L, N) = = Lua_Tnone) #define Lua_isnoneornil (LUA_TYPE (L, N) <= 0)
#Define Lua_Pushliteral (L, S) / Lua_Pushlstring (L, "S, (SizeOf (S) / SizeOf (Char)) - 1)} {** compatibility macros and functions}
Function Lua_PUSHUPVALUES (L: Lua_State): int; stdcall; external luadll;
{** macro functions} {a fa_getregistry (l: lua_state); Procedure Lua_SETGLOBAL (L: Lua_State; s: pchar); Procedure Lua_GETGLOBAL (L: Lua_State; s: pchar);
{Compatibility with ref system}
{Pre-defined references} const LUA_NOREF = -2; LUA_REFNIL = -1; {#DEF ine lua_ref (L, lock) ((lock) luaL_ref (L, LUA_REGISTRYINDEX):? / (Lua_pushstring (L, "unlocked references are obsolete "), Lua_ERROR (L), 0))
#Def ine Lua_unref (L, REF) LUAL_UNREF (L, Lua_registryIndex, (Ref))
#DEF INE Lua_getRef (L, REF) Lua_Rawgeti (L, Lua_registryIndex, REF)} {** {============================ =================================================== ** USEful definitions for Lua Kernel and Libraries ** ================================================= =========================} {Formats for Lua Numbers} const Lua_number_scan = '% lf'; Lua_Number_fmt = '% .14 g';
{= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = = = = =}
{** {============================================== ======================== ** debug api ** ============================================================================================================================================================================================================== ============================================================================================================================================================================================================= =} {** Event Codes} Lua_HOOKCALL = 0; Lua_HOOKRET = 1; Lua_HookLine = 2; Lua_HOOKCOUNT = 3; Lua_HookTailret = 4;
{** Event masks}
Lua_maskcall = (1 shl Lua_hookCall); Lua_Maskret = (1 shl Lua_HOOKRET); Lua_maskline = (1 shl Lua_HookLine); Lua_maskcount = (1 shl Lua_hookCount);
Lua_idsize = 60; TYPE
Lua_Debug = Record Event: int; name: pchar; // (n) Namewhat: pchar; // (n) `Global ',` local', `Field ',` method' What: pchar; /// (s) `Lua ',` C', `main ',` Tail' Source: Pchar; // (s) currentline: int; // () NUPS: int; // (u) NUMBER OF UpValues LINEDEFINED: INT; / / (S) short_src: array [0.lua_idsize] of char; // (s) // private part i_ci: int; // Active function end;
Lua_Hook = Procedure (L: Lua_State; Ar: Lua_Debug);
function lua_getstack (L: lua_State; level: int; ar: lua_Debug): int; stdcall; external Luadll; function lua_getinfo (L: lua_State; what: pchar; ar: lua_Debug): int; stdcall; external Luadll; function lua_getlocal (L : lua_State; ar: lua_Debug; n: int): pchar; stdcall; external Luadll; function lua_setlocal (L: lua_State; ar: lua_Debug; n: int): pchar; stdcall; external Luadll; function lua_getupvalue (L: lua_State; funcindex : int; n: int): pchar; stdcall; external Luadll; function lua_setupvalue (L: lua_State; funcindex: int; n: int): pchar; stdcall; external Luadll; function lua_sethook (L: lua_State; func: lua_Hook; mask : int; count: int): int; stdcall; external Luadll; function lua_gethook (L: lua_State): lua_Hook; stdcall; external Luadll; function lua_gethookmask (L: lua_State): int; stdcall; external Luadll; function lua_gethookcount (L: Lua_State): int; stdcall; external luadll;
Var Luastate: Lua_State; LuADebug: Lua_Debug; {Activation Record}
IMPLEMentation
Procedure Lua_getRegistry (lua_state); Begin Lua_PushValue (l, Lua_RegistryIndex);
Procedure Lua_SETGLOBAL (L: LUA_STATE; S: PCHAR); Begin Lua_pushString (LUA_INSERT (L, -2); Lua_SetTable (LUA_GLOBALSINDEX); END;
Procedure Lua_GETGLOBAL (L: LUA_STATE; S: PCHAR); Begin Lua_pushString (L, S); Lua_getTable (L, Lua_GlobalSindex);
End.
{================================================================================================================================================================================================================ ======================}