|
@@ -1,350 +1,453 @@
|
|
-(*
|
|
|
|
-** $Id: lua.pas,v 1.1 2005-04-24 19:31:20 jfgoulet Exp $
|
|
|
|
-** Lua - An Extensible Extension Language
|
|
|
|
-** Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil
|
|
|
|
-** http://www.lua.org mailto:[email protected]
|
|
|
|
-** See Copyright Notice at the end of this file
|
|
|
|
-*)
|
|
|
|
-unit lua;
|
|
|
|
|
|
+unit Lua;
|
|
|
|
|
|
-{$IFNDEF lua_h}
|
|
|
|
-{$DEFINE lua_h}
|
|
|
|
-{$ENDIF}
|
|
|
|
|
|
+(*
|
|
|
|
+ * A complete Pascal wrapper for Lua 5.1 DLL module.
|
|
|
|
+ *
|
|
|
|
+ * Created by Geo Massar, 2006
|
|
|
|
+ * Distributed as free/open source.
|
|
|
|
+ *)
|
|
|
|
|
|
interface
|
|
interface
|
|
|
|
|
|
|
|
+type
|
|
|
|
+ size_t = type Cardinal;
|
|
|
|
+ Psize_t = ^size_t;
|
|
|
|
+ PPointer = ^Pointer;
|
|
|
|
+
|
|
|
|
+ lua_State = record end;
|
|
|
|
+ Plua_State = ^lua_State;
|
|
|
|
+
|
|
const
|
|
const
|
|
- CONST_LUA_VERSION = 'Lua 5.0';
|
|
|
|
- CONST_LUA_COPYRIGHT = 'Copyright (C) 1994-2003 Tecgraf, PUC-Rio';
|
|
|
|
- CONST_LUA_AUTHORS = 'R. Ierusalimschy, L. H. de Figueiredo & W. Celes';
|
|
|
|
|
|
+ LuaDLL = 'lua5.1.dll';
|
|
|
|
|
|
-(* option for multiple returns in `lua_pcall' and `lua_call' *)
|
|
|
|
- LUA_MULTRET = (-1);
|
|
|
|
|
|
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* luaconfig.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
|
|
(*
|
|
(*
|
|
-** pseudo-indices
|
|
|
|
|
|
+** $Id: lua.pas,v 1.2 2006-10-27 03:32:17 jfgoulet Exp $
|
|
|
|
+** Configuration file for Lua
|
|
|
|
+** See Copyright Notice in lua.h
|
|
*)
|
|
*)
|
|
- LUA_REGISTRYINDEX = (-10000);
|
|
|
|
- LUA_GLOBALSINDEX = (-10001);
|
|
|
|
|
|
|
|
- function lua_upvalueindex(I: Integer): Integer;
|
|
|
|
|
|
+(*
|
|
|
|
+** {==================================================================
|
|
|
|
+@@ LUA_NUMBER is the type of numbers in Lua.
|
|
|
|
+** CHANGE the following definitions only if you want to build Lua
|
|
|
|
+** with a number type different from double. You may also need to
|
|
|
|
+** change lua_number2int & lua_number2integer.
|
|
|
|
+** ===================================================================
|
|
|
|
+*)
|
|
|
|
+type
|
|
|
|
+ LUA_NUMBER_ = type Double; // ending underscore is needed in Pascal
|
|
|
|
+ LUA_INTEGER_ = type Integer;
|
|
|
|
|
|
|
|
+(*
|
|
|
|
+@@ LUA_IDSIZE gives the maximum size for the description of the source
|
|
|
|
+@* of a function in debug information.
|
|
|
|
+** CHANGE it if you want a different size.
|
|
|
|
+*)
|
|
const
|
|
const
|
|
|
|
+ LUA_IDSIZE = 60;
|
|
|
|
|
|
-(* error codes for `lua_load' and `lua_pcall' *)
|
|
|
|
- LUA_ERRRUN = 1;
|
|
|
|
- LUA_ERRFILE = 2;
|
|
|
|
- LUA_ERRSYNTAX = 3;
|
|
|
|
- LUA_ERRMEM = 4;
|
|
|
|
- LUA_ERRERR = 5;
|
|
|
|
|
|
+(*
|
|
|
|
+@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system.
|
|
|
|
+*)
|
|
|
|
+const
|
|
|
|
+ LUAL_BUFFERSIZE = 1024;
|
|
|
|
|
|
|
|
+(*
|
|
|
|
+@@ LUA_PROMPT is the default prompt used by stand-alone Lua.
|
|
|
|
+@@ LUA_PROMPT2 is the default continuation prompt used by stand-alone Lua.
|
|
|
|
+** CHANGE them if you want different prompts. (You can also change the
|
|
|
|
+** prompts dynamically, assigning to globals _PROMPT/_PROMPT2.)
|
|
|
|
+*)
|
|
|
|
+const
|
|
|
|
+ LUA_PROMPT = '> ';
|
|
|
|
+ LUA_PROMPT2 = '>> ';
|
|
|
|
|
|
-type
|
|
|
|
- lua_State = record
|
|
|
|
- end;
|
|
|
|
- Plua_State = ^lua_State;
|
|
|
|
|
|
+(*
|
|
|
|
+@@ LUA_NUMBER_SCAN is the default scan number format in Lua
|
|
|
|
+** Formats for Lua numbers
|
|
|
|
+** Added by Jean-Francois Goulet - 10/02/2006
|
|
|
|
+*)
|
|
|
|
+{$IFNDEF LUA_NUMBER_SCAN}
|
|
|
|
+const
|
|
|
|
+ LUA_NUMBER_SCAN = '%lf';
|
|
|
|
+{$ENDIF}
|
|
|
|
|
|
- lua_CFunction = function (L: Plua_State): Integer; cdecl;
|
|
|
|
- size_t = Integer;
|
|
|
|
- Psize_t = ^size_t;
|
|
|
|
|
|
+(*
|
|
|
|
+@@ LUA_NUMBER_FMT is the default number format in Lua
|
|
|
|
+** Formats for Lua numbers
|
|
|
|
+** Added by Jean-Francois Goulet - 10/02/2006
|
|
|
|
+*)
|
|
|
|
+{$IFNDEF LUA_NUMBER_FMT}
|
|
|
|
+const
|
|
|
|
+ LUA_NUMBER_FMT = '%.14g';
|
|
|
|
+{$ENDIF}
|
|
|
|
|
|
(*
|
|
(*
|
|
-** functions that read/write blocks when loading/dumping Lua chunks
|
|
|
|
|
|
+@@ lua_readline defines how to show a prompt and then read a line from
|
|
|
|
+@* the standard input.
|
|
|
|
+@@ lua_saveline defines how to "save" a read line in a "history".
|
|
|
|
+@@ lua_freeline defines how to free a line read by lua_readline.
|
|
|
|
+** CHANGE them if you want to improve this functionality (e.g., by using
|
|
|
|
+** GNU readline and history facilities).
|
|
*)
|
|
*)
|
|
- lua_Chunkreader = function (L: Plua_State; UD: Pointer; var SZ: size_t): PChar;
|
|
|
|
- lua_Chunkwriter = function (L: Plua_State; const P: Pointer; SZ: size_t; UD: Pointer): Integer;
|
|
|
|
|
|
+function lua_readline(L : Plua_State; var b : PChar; p : PChar): Boolean;
|
|
|
|
+procedure lua_saveline(L : Plua_State; idx : Integer);
|
|
|
|
+procedure lua_freeline(L : Plua_State; b : PChar);
|
|
|
|
|
|
|
|
+(*
|
|
|
|
+@@ lua_stdin_is_tty detects whether the standard input is a 'tty' (that
|
|
|
|
+@* is, whether we're running lua interactively).
|
|
|
|
+** CHANGE it if you have a better definition for non-POSIX/non-Windows
|
|
|
|
+** systems.
|
|
|
|
+*/
|
|
|
|
+#include <io.h>
|
|
|
|
+#include <stdio.h>
|
|
|
|
+#define lua_stdin_is_tty() _isatty(_fileno(stdin))
|
|
|
|
+*)
|
|
const
|
|
const
|
|
|
|
+ lua_stdin_is_tty = TRUE;
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* lua.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+
|
|
(*
|
|
(*
|
|
-** basic types
|
|
|
|
|
|
+** $Id: lua.pas,v 1.2 2006-10-27 03:32:17 jfgoulet Exp $
|
|
|
|
+** Lua - An Extensible Extension Language
|
|
|
|
+** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
|
|
|
|
+** See Copyright Notice at the end of this file
|
|
*)
|
|
*)
|
|
- 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_TTHREAD = 8;
|
|
|
|
|
|
+const
|
|
|
|
+ LUA_VERSION = 'Lua 5.1';
|
|
|
|
+ LUA_VERSION_NUM = 501;
|
|
|
|
+ LUA_COPYRIGHT = 'Copyright (C) 1994-2006 Tecgraf, PUC-Rio';
|
|
|
|
+ LUA_AUTHORS = 'R. Ierusalimschy, L. H. de Figueiredo & W. Celes';
|
|
|
|
|
|
|
|
+ (* mark for precompiled code (`<esc>Lua') *)
|
|
|
|
+ LUA_SIGNATURE = #27'Lua';
|
|
|
|
|
|
-(* minimum Lua stack available to a C function *)
|
|
|
|
- LUA_MINSTACK = 20;
|
|
|
|
|
|
+ (* option for multiple returns in `lua_pcall' and `lua_call' *)
|
|
|
|
+ LUA_MULTRET = -1;
|
|
|
|
|
|
|
|
+ (*
|
|
|
|
+ ** pseudo-indices
|
|
|
|
+ *)
|
|
|
|
+ LUA_REGISTRYINDEX = -10000;
|
|
|
|
+ LUA_ENVIRONINDEX = -10001;
|
|
|
|
+ LUA_GLOBALSINDEX = -10002;
|
|
|
|
|
|
-(*
|
|
|
|
-** generic extra include file
|
|
|
|
-*)
|
|
|
|
-{$IFDEF LUA_USER_H}
|
|
|
|
-{$INCLUDE} LUA_USER_H
|
|
|
|
-{$ENDIF}
|
|
|
|
|
|
+function lua_upvalueindex(idx : Integer) : Integer; // a marco
|
|
|
|
|
|
|
|
+const
|
|
|
|
+ (* thread status; 0 is OK *)
|
|
|
|
+ LUA_YIELD_ = 1; // Note: the ending underscore is needed in Pascal
|
|
|
|
+ LUA_ERRRUN = 2;
|
|
|
|
+ LUA_ERRSYNTAX = 3;
|
|
|
|
+ LUA_ERRMEM = 4;
|
|
|
|
+ LUA_ERRERR = 5;
|
|
|
|
|
|
-(* type of numbers in Lua *)
|
|
|
|
type
|
|
type
|
|
-{$IFNDEF LUA_NUMBER}
|
|
|
|
- lua_Number = Double;
|
|
|
|
-{$ELSE}
|
|
|
|
- lua_Number = LUA_NUMBER;
|
|
|
|
-{$ENDIF}
|
|
|
|
|
|
+ lua_CFunction = function(L : Plua_State) : Integer; cdecl;
|
|
|
|
+
|
|
|
|
+ (*
|
|
|
|
+ ** functions that read/write blocks when loading/dumping Lua chunks
|
|
|
|
+ *)
|
|
|
|
+ lua_Reader = function (L : Plua_State; ud : Pointer;
|
|
|
|
+ sz : Psize_t) : PChar; cdecl;
|
|
|
|
+ lua_Writer = function (L : Plua_State; const p : Pointer; sz : size_t;
|
|
|
|
+ ud : Pointer) : Integer; cdecl;
|
|
|
|
+
|
|
|
|
+ (*
|
|
|
|
+ ** prototype for memory-allocation functions
|
|
|
|
+ *)
|
|
|
|
+ lua_Alloc = function (ud, ptr : Pointer;
|
|
|
|
+ osize, nsize : size_t) : Pointer; cdecl;
|
|
|
|
|
|
|
|
+const
|
|
|
|
+ (*
|
|
|
|
+ ** basic types
|
|
|
|
+ *)
|
|
|
|
+ LUA_TNONE = -1;
|
|
|
|
|
|
-(* mark for all API functions *)
|
|
|
|
|
|
+ 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_TTHREAD = 8;
|
|
|
|
+
|
|
|
|
+ (* minimum Lua stack available to a C function *)
|
|
|
|
+ LUA_MINSTACK = 20;
|
|
|
|
|
|
|
|
+type
|
|
|
|
+ (* type of numbers in Lua *)
|
|
|
|
+ lua_Number = LUA_NUMBER_;
|
|
|
|
+
|
|
|
|
+ (* type for integer functions *)
|
|
|
|
+ lua_Integer = LUA_INTEGER_;
|
|
|
|
|
|
(*
|
|
(*
|
|
** state manipulation
|
|
** state manipulation
|
|
*)
|
|
*)
|
|
-function lua_open: Plua_State;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+function lua_newstate(f : lua_Alloc; ud : Pointer) : Plua_State;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
procedure lua_close(L: Plua_State);
|
|
procedure lua_close(L: Plua_State);
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_newthread(L: Plua_State): Plua_State;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_newthread(L : Plua_State) : Plua_State;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
-function lua_atpanic(L: Plua_State; Panicf: lua_CFunction): lua_CFunction;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+function lua_atpanic(L : Plua_State; panicf : lua_CFunction) : lua_CFunction;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** basic stack manipulation
|
|
** basic stack manipulation
|
|
*)
|
|
*)
|
|
-function lua_gettop(L: Plua_State): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_settop(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushvalue(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_remove(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_insert(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_replace(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_checkstack(L: Plua_State; SZ: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-procedure lua_xmove (Src, Dst: Plua_State; N: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+function lua_gettop(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_settop(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushvalue(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_remove(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_insert(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_replace(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_checkstack(L : Plua_State; sz : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+procedure lua_xmove(src, dest : Plua_State; n : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** access functions (stack -> C)
|
|
** access functions (stack -> C)
|
|
*)
|
|
*)
|
|
-
|
|
|
|
-function lua_isnumber(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_isstring(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_iscfunction(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_isuserdata(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_type(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_typename(L: Plua_State; TP: Integer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-function lua_equal(L: Plua_State; Idx1: Integer; Idx2: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_rawequal(L: Plua_State; Idx1: Integer; Idx2: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_lessthan(L: Plua_State; Idx1: Integer; Idx2: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-function lua_tonumber(L: Plua_State; Idx: Integer): lua_Number;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_toboolean(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_tostring(L: Plua_State; Idx: Integer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_strlen(L: Plua_State; Idx: Integer): size_t;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_tocfunction(L: Plua_State; Idx: Integer): lua_CFunction;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_touserdata(L: Plua_State; Idx: Integer): Pointer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_tothread(L: Plua_State; Idx: Integer): Plua_State;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_topointer(L: Plua_State; Idx: Integer): Pointer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+function lua_isnumber(L : Plua_State; idx : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_isstring(L : Plua_State; idx : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_iscfunction(L : Plua_State; idx : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_isuserdata(L : Plua_State; idx : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_type(L : Plua_State; idx : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_typename(L : Plua_State; tp : Integer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function lua_equal(L : Plua_State; idx1, idx2 : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_rawequal(L : Plua_State; idx1, idx2 : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_lessthan(L : Plua_State; idx1, idx2 : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function lua_tonumber(L : Plua_State; idx : Integer) : lua_Number;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_tointeger(L : Plua_State; idx : Integer) : lua_Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_toboolean(L : Plua_State; idx : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_tolstring(L : Plua_State; idx : Integer;
|
|
|
|
+ len : Psize_t) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_objlen(L : Plua_State; idx : Integer) : size_t;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_tocfunction(L : Plua_State; idx : Integer) : lua_CFunction;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_touserdata(L : Plua_State; idx : Integer) : Pointer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_tothread(L : Plua_State; idx : Integer) : Plua_State;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_topointer(L : Plua_State; idx : Integer) : Pointer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** push functions (C -> stack)
|
|
** push functions (C -> stack)
|
|
*)
|
|
*)
|
|
-procedure lua_pushnil(L: Plua_State);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushnumber(L: Plua_State; N: lua_Number);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushlstring(L: Plua_State; const S: PChar; N: size_t);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushstring(L: Plua_State; const S: PChar);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_pushvfstring(L: Plua_State; const Fmt: PChar; Argp: Pointer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_pushfstring(L: Plua_State; const Fmt: PChar): PChar; varargs;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushcclosure(L: Plua_State; Fn: lua_CFunction; N: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushboolean(L: Plua_State; B: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_pushlightuserdata(L: Plua_State; P: Pointer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+procedure lua_pushnil(L : Plua_State);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushnumber(L : Plua_State; n : lua_Number);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushinteger(L : Plua_State; n : lua_Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushlstring(L : Plua_State; const s : PChar; ls : size_t);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushstring(L : Plua_State; const s : PChar);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_pushvfstring(L : Plua_State;
|
|
|
|
+ const fmt : PChar; argp : Pointer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_pushfstring(L : Plua_State; const fmt : PChar) : PChar; varargs;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushcclosure(L : Plua_State; fn : lua_CFunction; n : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushboolean(L : Plua_State; b : LongBool);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_pushlightuserdata(L : Plua_State; p : Pointer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_pushthread(L : Plua_state) : Cardinal;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** get functions (Lua -> stack)
|
|
** get functions (Lua -> stack)
|
|
*)
|
|
*)
|
|
-procedure lua_gettable(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_rawget(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_rawgeti(L: Plua_State; Idx: Integer; N: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_newtable(L: Plua_State);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_newuserdata(L: Plua_State; SZ: size_t): Pointer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_getmetatable(L: Plua_State; ObjIndex: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_getfenv(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+procedure lua_gettable(L : Plua_State ; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_getfield(L : Plua_State; idx : Integer; k : PChar);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_rawget(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_rawgeti(L : Plua_State; idx, n : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_createtable(L : Plua_State; narr, nrec : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_newuserdata(L : Plua_State; sz : size_t) : Pointer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_getmetatable(L : Plua_State; objindex : Integer) : LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_getfenv(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** set functions (stack -> Lua)
|
|
** set functions (stack -> Lua)
|
|
*)
|
|
*)
|
|
-procedure lua_settable(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_rawset(L: Plua_State; Idx: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_rawseti(L: Plua_State; Idx: Integer; N: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_setmetatable(L: Plua_State; ObjIndex: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_setfenv(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
|
|
+procedure lua_settable(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_setfield(L : Plua_State; idx : Integer; const k : PChar);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_rawset(L : Plua_State; idx : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_rawseti(L : Plua_State; idx , n: Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_setmetatable(L : Plua_State; objindex : Integer): LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_setfenv(L : Plua_State; idx : Integer): LongBool;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
(*
|
|
(*
|
|
** `load' and `call' functions (load and run Lua code)
|
|
** `load' and `call' functions (load and run Lua code)
|
|
*)
|
|
*)
|
|
-procedure lua_call(L: Plua_State; NArgs: Integer; NResults: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_pcall(L: Plua_State; NArgs: Integer; NResults: Integer; ErrFunc: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_cpcall(L: Plua_State; Func: lua_CFunction; UD: Pointer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_load(L: Plua_State; Reader: lua_Chunkreader; DT: Pointer;
|
|
|
|
- const ChunkName: PChar): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-function lua_dump(L: Plua_State; Writer: lua_Chunkwriter; Data: Pointer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+procedure lua_call(L : Plua_State; nargs, nresults : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_pcall(L : Plua_State;
|
|
|
|
+ nargs, nresults, errfunc : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_cpcall(L : Plua_State;
|
|
|
|
+ func : lua_CFunction; ud : Pointer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_load(L : Plua_State; reader : lua_Reader;
|
|
|
|
+ dt : Pointer; const chunkname : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function lua_dump(L : Plua_State; writer : lua_Writer; data: Pointer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** coroutine functions
|
|
** coroutine functions
|
|
*)
|
|
*)
|
|
-function lua_yield(L: Plua_State; NResults: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_resume(L: Plua_State; NArg: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+function lua_yield(L : Plua_State; nresults : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_resume(L : Plua_State; narg : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_status(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
(*
|
|
(*
|
|
-** garbage-collection functions
|
|
|
|
|
|
+** garbage-collection functions and options
|
|
*)
|
|
*)
|
|
-function lua_getgcthreshold(L: Plua_State): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_getgccount(L: Plua_State): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-procedure lua_setgcthreshold(L: Plua_State; NewThreshold: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+const
|
|
|
|
+ LUA_GCSTOP = 0;
|
|
|
|
+ LUA_GCRESTART = 1;
|
|
|
|
+ LUA_GCCOLLECT = 2;
|
|
|
|
+ LUA_GCCOUNT = 3;
|
|
|
|
+ LUA_GCCOUNTB = 4;
|
|
|
|
+ LUA_GCSTEP = 5;
|
|
|
|
+ LUA_GCSETPAUSE = 6;
|
|
|
|
+ LUA_GCSETSTEPMUL = 7;
|
|
|
|
+
|
|
|
|
+function lua_gc(L : Plua_State; what, data : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
(*
|
|
(*
|
|
** miscellaneous functions
|
|
** miscellaneous functions
|
|
*)
|
|
*)
|
|
|
|
+function lua_error(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
-function lua_version: PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-function lua_error(L: Plua_State): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-function lua_next(L: Plua_State; Idx: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-
|
|
|
|
-procedure lua_concat(L: Plua_State; N: Integer);
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+function lua_next(L : Plua_State; idx : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
+procedure lua_concat(L : Plua_State; n : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
+function lua_getallocf(L : Plua_State; ud : PPointer) : lua_Alloc;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure lua_setallocf(L : Plua_State; f : lua_Alloc; ud : Pointer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
(*
|
|
(*
|
|
** ===============================================================
|
|
** ===============================================================
|
|
** some useful macros
|
|
** some useful macros
|
|
** ===============================================================
|
|
** ===============================================================
|
|
*)
|
|
*)
|
|
|
|
+procedure lua_pop(L : Plua_State; n : Integer);
|
|
|
|
|
|
-function lua_boxpointer(L: Plua_State; U: Pointer): Pointer;
|
|
|
|
-function lua_unboxpointer(L: Plua_State; I: Integer): Pointer;
|
|
|
|
-procedure lua_pop(L: Plua_State; N: Integer);
|
|
|
|
-procedure lua_register(L: Plua_State; const N: PChar; F: lua_CFunction);
|
|
|
|
-procedure lua_pushcfunction(L: Plua_State; F: lua_CFunction);
|
|
|
|
-function lua_isfunction(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-function lua_istable(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-function lua_islightuserdata(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-function lua_isnil(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-function lua_isboolean(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-function lua_isnone(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-function lua_isnoneornil(L: Plua_State; N: Integer): Boolean;
|
|
|
|
-procedure lua_pushliteral(L: Plua_State; const S: PChar);
|
|
|
|
|
|
+procedure lua_newtable(L : Plua_State);
|
|
|
|
|
|
-(*
|
|
|
|
-** compatibility macros and functions
|
|
|
|
-*)
|
|
|
|
|
|
+procedure lua_register(L : Plua_State; n : PChar; f : lua_CFunction);
|
|
|
|
|
|
-function lua_pushupvalues(L: Plua_State): Integer;
|
|
|
|
- cdecl; external 'lua.dll';
|
|
|
|
|
|
+procedure lua_pushcfunction(L : Plua_State; f : lua_CFunction);
|
|
|
|
|
|
-procedure lua_getregistry(L: Plua_State);
|
|
|
|
-procedure lua_setglobal(L: Plua_State; const S: PChar);
|
|
|
|
-procedure lua_getglobal(L: Plua_State; const S: PChar);
|
|
|
|
|
|
+function lua_strlen(L : Plua_State; idx : Integer) : Integer;
|
|
|
|
|
|
-(* compatibility with ref system *)
|
|
|
|
|
|
+function lua_isfunction(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_istable(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_islightuserdata(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_isnil(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_isboolean(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_isthread(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_isnone(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
+function lua_isnoneornil(L : Plua_State; n : Integer) : Boolean;
|
|
|
|
|
|
-(* pre-defined references *)
|
|
|
|
-const
|
|
|
|
- LUA_NOREF = (-2);
|
|
|
|
- LUA_REFNIL = (-1);
|
|
|
|
|
|
+procedure lua_pushliteral(L : Plua_State; s : PChar);
|
|
|
|
+
|
|
|
|
+procedure lua_setglobal(L : Plua_State; s : PChar);
|
|
|
|
+procedure lua_getglobal(L : Plua_State; s : PChar);
|
|
|
|
+
|
|
|
|
+function lua_tostring(L : Plua_State; idx : Integer) : PChar;
|
|
|
|
|
|
-procedure lua_ref(L: Plua_State; Lock: Integer);
|
|
|
|
-procedure lua_unref(L: Plua_State; Ref: Integer);
|
|
|
|
-procedure lua_getref(L: Plua_State; Ref: Integer);
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
-** {======================================================================
|
|
|
|
-** useful definitions for Lua kernel and libraries
|
|
|
|
-** =======================================================================
|
|
|
|
|
|
+** compatibility macros and functions
|
|
*)
|
|
*)
|
|
|
|
+function lua_open : Plua_State;
|
|
|
|
|
|
-(* formats for Lua numbers *)
|
|
|
|
-{$IFNDEF LUA_NUMBER_SCAN}
|
|
|
|
-const
|
|
|
|
- LUA_NUMBER_SCAN = '%lf';
|
|
|
|
-{$ENDIF}
|
|
|
|
|
|
+procedure lua_getregistry(L : Plua_State);
|
|
|
|
|
|
-{$IFNDEF LUA_NUMBER_FMT}
|
|
|
|
-const
|
|
|
|
- LUA_NUMBER_FMT = '%.14g';
|
|
|
|
-{$ENDIF}
|
|
|
|
|
|
+function lua_getgccount(L : Plua_State) : Integer;
|
|
|
|
|
|
-(* }====================================================================== *)
|
|
|
|
|
|
+type
|
|
|
|
+ lua_Chuckreader = type lua_Reader;
|
|
|
|
+ lua_Chuckwriter = type lua_Writer;
|
|
|
|
|
|
|
|
+(* ====================================================================== *)
|
|
|
|
|
|
(*
|
|
(*
|
|
** {======================================================================
|
|
** {======================================================================
|
|
@@ -352,220 +455,607 @@ const
|
|
** =======================================================================
|
|
** =======================================================================
|
|
*)
|
|
*)
|
|
|
|
|
|
-const
|
|
|
|
(*
|
|
(*
|
|
** Event codes
|
|
** Event codes
|
|
*)
|
|
*)
|
|
- LUA_HOOKCALL = 0;
|
|
|
|
- LUA_HOOKRET = 1;
|
|
|
|
- LUA_HOOKLINE = 2;
|
|
|
|
- LUA_HOOKCOUNT = 3;
|
|
|
|
|
|
+const
|
|
|
|
+ LUA_HOOKCALL = 0;
|
|
|
|
+ LUA_HOOKRET = 1;
|
|
|
|
+ LUA_HOOKLINE = 2;
|
|
|
|
+ LUA_HOOKCOUNT = 3;
|
|
LUA_HOOKTAILRET = 4;
|
|
LUA_HOOKTAILRET = 4;
|
|
|
|
|
|
|
|
|
|
(*
|
|
(*
|
|
** Event masks
|
|
** 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);
|
|
|
|
-
|
|
|
|
-const
|
|
|
|
- LUA_IDSIZE = 60;
|
|
|
|
|
|
+ LUA_MASKCALL = 1 shl LUA_HOOKCALL;
|
|
|
|
+ LUA_MASKRET = 1 shl LUA_HOOKRET;
|
|
|
|
+ LUA_MASKLINE = 1 shl LUA_HOOKLINE;
|
|
|
|
+ LUA_MASKCOUNT = 1 shl LUA_HOOKCOUNT;
|
|
|
|
|
|
type
|
|
type
|
|
- lua_Debug = record
|
|
|
|
- event: Integer;
|
|
|
|
- name: PChar; (* (n) *)
|
|
|
|
- namewhat: PChar; (* (n) `global', `local', `field', `method' *)
|
|
|
|
- what: PChar; (* (S) `Lua', `C', `main', `tail' *)
|
|
|
|
- source: PChar; (* (S) *)
|
|
|
|
- currentline: Integer; (* (l) *)
|
|
|
|
- nups: Integer; (* (u) number of upvalues *)
|
|
|
|
- linedefined: Integer; (* (S) *)
|
|
|
|
- short_src: array [0..LUA_IDSIZE - 1] of Char; (* (S) *)
|
|
|
|
|
|
+ lua_Debug = packed record
|
|
|
|
+ event : Integer;
|
|
|
|
+ name : PChar; (* (n) *)
|
|
|
|
+ namewhat : PChar; (* (n) `global', `local', `field', `method' *)
|
|
|
|
+ what : PChar; (* (S) `Lua', `C', `main', `tail' *)
|
|
|
|
+ source : PChar; (* (S) *)
|
|
|
|
+ currentline : Integer; (* (l) *)
|
|
|
|
+ nups : Integer; (* (u) number of upvalues *)
|
|
|
|
+ linedefined : Integer; (* (S) *)
|
|
|
|
+ lastlinedefined : Integer; (* (S) *) // 10/03/2006 Jean-Francois Goulet - Added new field for Lua 5.1 compatibility
|
|
|
|
+ short_src : array [0..LUA_IDSIZE-1] of Char; (* (S) *)
|
|
(* private part *)
|
|
(* private part *)
|
|
- i_ci: Integer; (* active function *)
|
|
|
|
|
|
+ i_ci : Integer; (* active function *)
|
|
end;
|
|
end;
|
|
Plua_Debug = ^lua_Debug;
|
|
Plua_Debug = ^lua_Debug;
|
|
|
|
|
|
- lua_Hook = procedure (L: Plua_State; AR: Plua_Debug); cdecl;
|
|
|
|
|
|
+ (* Functions to be called by the debuger in specific events *)
|
|
|
|
+ lua_Hook = procedure (L : Plua_State; AR : Plua_Debug); cdecl;
|
|
|
|
+
|
|
|
|
+function lua_getstack(L : Plua_State; Level : Integer;
|
|
|
|
+ AR : Plua_Debug) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_getinfo(L : Plua_State; const what : PChar;
|
|
|
|
+ AR : Plua_Debug): Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_getlocal(L : Plua_State;
|
|
|
|
+ const AR : Plua_Debug; n : Integer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_setlocal(L : Plua_State;
|
|
|
|
+ const AR : Plua_Debug; n : Integer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_getupvalue(L : Plua_State; funcindex, n : Integer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_setupvalue(L : Plua_State; funcindex, n : Integer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function lua_sethook(L : Plua_State; func : lua_Hook;
|
|
|
|
+ mask, count: Integer): Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_gethook(L : Plua_State) : lua_Hook;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_gethookmask(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function lua_gethookcount(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* lualib.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
|
|
|
|
+(*
|
|
|
|
+** $Id: lua.pas,v 1.2 2006-10-27 03:32:17 jfgoulet Exp $
|
|
|
|
+** Lua standard libraries
|
|
|
|
+** See Copyright Notice at the end of this file
|
|
|
|
+*)
|
|
|
|
|
|
-function lua_getstack(L: Plua_State; Level: Integer; AR: Plua_Debug): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_getinfo(L: Plua_State; const What: PChar; AR: Plua_Debug): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_getlocal(L: Plua_State; const AR: Plua_Debug; N: Integer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_setlocal(L: Plua_State; const AR: Plua_Debug; N: Integer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_getupvalue(L: Plua_State; FuncIndex: Integer; N: Integer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_setupvalue(L: Plua_State; FuncIndex: Integer; N: Integer): PChar;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+const
|
|
|
|
+ (* Key to file-handle type *)
|
|
|
|
+ LUA_FILEHANDLE = 'FILE*';
|
|
|
|
|
|
-function lua_sethook(L: Plua_State; Func: lua_Hook; Mask: Integer; Count: Integer): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_gethook(L: Plua_State): lua_Hook;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_gethookmask(L: Plua_State): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
-function lua_gethookcount(L: Plua_State): Integer;
|
|
|
|
- cdecl external 'lua.dll';
|
|
|
|
|
|
+ LUA_COLIBNAME = 'coroutine';
|
|
|
|
+ LUA_TABLIBNAME = 'table';
|
|
|
|
+ LUA_IOLIBNAME = 'io';
|
|
|
|
+ LUA_OSLIBNAME = 'os';
|
|
|
|
+ LUA_STRLIBNAME = 'string';
|
|
|
|
+ LUA_MATHLIBNAME = 'math';
|
|
|
|
+ LUA_DBLIBNAME = 'debug';
|
|
|
|
+ LUA_LOADLIBNAME = 'package';
|
|
|
|
|
|
-(* }====================================================================== *)
|
|
|
|
|
|
+function luaopen_base(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
+function luaopen_table(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
-(******************************************************************************
|
|
|
|
-* Copyright (C) 1994-2003 Tecgraf, PUC-Rio. All rights reserved.
|
|
|
|
-*
|
|
|
|
-* Permission is hereby granted, free of charge, to any person obtaining
|
|
|
|
-* a copy of this software and associated documentation files (the
|
|
|
|
-* "Software"), to deal in the Software without restriction, including
|
|
|
|
-* without limitation the rights to use, copy, modify, merge, publish,
|
|
|
|
-* distribute, sublicense, and/or sell copies of the Software, and to
|
|
|
|
-* permit persons to whom the Software is furnished to do so, subject to
|
|
|
|
-* the following conditions:
|
|
|
|
-*
|
|
|
|
-* The above copyright notice and this permission notice shall be
|
|
|
|
-* included in all copies or substantial portions of the Software.
|
|
|
|
-*
|
|
|
|
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
-* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
-* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
|
-* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
|
|
-* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
|
-* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
|
|
-* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
-******************************************************************************)
|
|
|
|
|
|
+function luaopen_io(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
|
|
+function luaopen_os(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
-implementation
|
|
|
|
|
|
+function luaopen_string(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
|
|
-uses
|
|
|
|
- SysUtils, lauxlib;
|
|
|
|
|
|
+function luaopen_math(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaopen_debug(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaopen_package(L : Plua_State) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+procedure luaL_openlibs(L : Plua_State);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+procedure lua_assert(x : Boolean); // a macro
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* lauxlib.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+
|
|
|
|
+(*
|
|
|
|
+** $Id: lua.pas,v 1.2 2006-10-27 03:32:17 jfgoulet Exp $
|
|
|
|
+** Auxiliary functions for building Lua libraries
|
|
|
|
+** See Copyright Notice at the end of this file.
|
|
|
|
+*)
|
|
|
|
+
|
|
|
|
+// not compatibility with the behavior of setn/getn in Lua 5.0
|
|
|
|
+function luaL_getn(L : Plua_State; idx : Integer) : Integer;
|
|
|
|
+procedure luaL_setn(L : Plua_State; i, j : Integer);
|
|
|
|
|
|
const
|
|
const
|
|
- MAX_SIZE = High(Integer);
|
|
|
|
- MAX_POINTER_ARRAY = MAX_SIZE div SizeOf(Pointer);
|
|
|
|
|
|
+ LUA_ERRFILE = LUA_ERRERR + 1;
|
|
|
|
+
|
|
|
|
+type
|
|
|
|
+ luaL_Reg = packed record
|
|
|
|
+ name : PChar;
|
|
|
|
+ func : lua_CFunction;
|
|
|
|
+ end;
|
|
|
|
+ PluaL_Reg = ^luaL_Reg;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+procedure luaL_openlib(L : Plua_State; const libname : PChar;
|
|
|
|
+ const lr : PluaL_Reg; nup : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_register(L : Plua_State; const libname : PChar;
|
|
|
|
+ const lr : PluaL_Reg);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_getmetafield(L : Plua_State; obj : Integer;
|
|
|
|
+ const e : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_callmeta(L : Plua_State; obj : Integer;
|
|
|
|
+ const e : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_typerror(L : Plua_State; narg : Integer;
|
|
|
|
+ const tname : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_argerror(L : Plua_State; numarg : Integer;
|
|
|
|
+ const extramsg : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_checklstring(L : Plua_State; numArg : Integer;
|
|
|
|
+ ls : Psize_t) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_optlstring(L : Plua_State; numArg : Integer;
|
|
|
|
+ const def: PChar; ls: Psize_t) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_checknumber(L : Plua_State; numArg : Integer) : lua_Number;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_optnumber(L : Plua_State; nArg : Integer;
|
|
|
|
+ def : lua_Number) : lua_Number;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_checkinteger(L : Plua_State; numArg : Integer) : lua_Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_optinteger(L : Plua_State; nArg : Integer;
|
|
|
|
+ def : lua_Integer) : lua_Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+procedure luaL_checkstack(L : Plua_State; sz : Integer; const msg : PChar);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_checktype(L : Plua_State; narg, t : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_checkany(L : Plua_State; narg : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_newmetatable(L : Plua_State; const tname : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_checkudata(L : Plua_State; ud : Integer;
|
|
|
|
+ const tname : PChar) : Pointer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+procedure luaL_where(L : Plua_State; lvl : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_error(L : Plua_State; const fmt : PChar) : Integer; varargs;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_checkoption(L : Plua_State; narg : Integer; const def : PChar;
|
|
|
|
+ const lst : array of PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_ref(L : Plua_State; t : Integer) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_unref(L : Plua_State; t, ref : Integer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_loadfile(L : Plua_State; const filename : PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_loadbuffer(L : Plua_State; const buff : PChar;
|
|
|
|
+ sz : size_t; const name: PChar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_loadstring(L : Plua_State; const s : Pchar) : Integer;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_newstate : Plua_State;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_gsub(L : Plua_State; const s, p, r : PChar) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+function luaL_findtable(L : Plua_State; idx : Integer;
|
|
|
|
+ const fname : PChar; szhint : Integer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(*
|
|
|
|
+** ===============================================================
|
|
|
|
+** some useful macros
|
|
|
|
+** ===============================================================
|
|
|
|
+*)
|
|
|
|
+
|
|
|
|
+function luaL_argcheck(L : Plua_State; cond : Boolean; numarg : Integer;
|
|
|
|
+ extramsg : PChar): Integer;
|
|
|
|
+function luaL_checkstring(L : Plua_State; n : Integer) : PChar;
|
|
|
|
+function luaL_optstring(L : Plua_State; n : Integer; d : PChar) : PChar;
|
|
|
|
+function luaL_checkint(L : Plua_State; n : Integer) : Integer;
|
|
|
|
+function luaL_optint(L : Plua_State; n, d : Integer): Integer;
|
|
|
|
+function luaL_checklong(L : Plua_State; n : LongInt) : LongInt;
|
|
|
|
+function luaL_optlong(L : Plua_State; n : Integer; d : LongInt) : LongInt;
|
|
|
|
+
|
|
|
|
+function luaL_typename(L : Plua_State; idx : Integer) : PChar;
|
|
|
|
+
|
|
|
|
+function luaL_dofile(L : Plua_State; fn : PChar) : Integer;
|
|
|
|
+
|
|
|
|
+function luaL_dostring(L : Plua_State; s : PChar) : Integer;
|
|
|
|
+
|
|
|
|
+procedure luaL_getmetatable(L : Plua_State; n : PChar);
|
|
|
|
+
|
|
|
|
+(* not implemented yet
|
|
|
|
+#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
|
|
|
|
+*)
|
|
|
|
+
|
|
|
|
+(*
|
|
|
|
+** {======================================================
|
|
|
|
+** Generic Buffer manipulation
|
|
|
|
+** =======================================================
|
|
|
|
+*)
|
|
|
|
|
|
type
|
|
type
|
|
- TPointerArray = array [0..MAX_POINTER_ARRAY - 1] of Pointer;
|
|
|
|
- PPointerArray = ^TPointerArray;
|
|
|
|
|
|
+ luaL_Buffer = packed record
|
|
|
|
+ p : PChar; (* current position in buffer *)
|
|
|
|
+ lvl : Integer; (* number of strings in the stack (level) *)
|
|
|
|
+ L : Plua_State;
|
|
|
|
+ buffer : array [0..LUAL_BUFFERSIZE-1] of Char;
|
|
|
|
+ end;
|
|
|
|
+ PluaL_Buffer = ^luaL_Buffer;
|
|
|
|
+
|
|
|
|
+procedure luaL_addchar(B : PluaL_Buffer; c : Char);
|
|
|
|
+
|
|
|
|
+(* compatibility only *)
|
|
|
|
+procedure luaL_putchar(B : PluaL_Buffer; c : Char);
|
|
|
|
+
|
|
|
|
+procedure luaL_addsize(B : PluaL_Buffer; n : Integer);
|
|
|
|
+
|
|
|
|
+procedure luaL_buffinit(L : Plua_State; B : PluaL_Buffer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+function luaL_prepbuffer(B : PluaL_Buffer) : PChar;
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_addlstring(B : PluaL_Buffer; const s : PChar; ls : size_t);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_addstring(B : PluaL_Buffer; const s : PChar);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_addvalue(B : PluaL_Buffer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+procedure luaL_pushresult(B : PluaL_Buffer);
|
|
|
|
+ cdecl; external LuaDLL;
|
|
|
|
+
|
|
|
|
+(* ====================================================== *)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(* compatibility with ref system *)
|
|
|
|
+
|
|
|
|
+(* pre-defined references *)
|
|
|
|
+const
|
|
|
|
+ LUA_NOREF = -2;
|
|
|
|
+ LUA_REFNIL = -1;
|
|
|
|
+
|
|
|
|
+function lua_ref(L : Plua_State; lock : Boolean) : Integer;
|
|
|
|
+
|
|
|
|
+procedure lua_unref(L : Plua_State; ref : Integer);
|
|
|
|
+
|
|
|
|
+procedure lua_getref(L : Plua_State; ref : Integer);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(******************************************************************************)
|
|
|
|
+(******************************************************************************)
|
|
|
|
+(******************************************************************************)
|
|
|
|
+
|
|
|
|
+implementation
|
|
|
|
+
|
|
|
|
+uses
|
|
|
|
+ SysUtils;
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* luaconfig.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+
|
|
|
|
+function lua_readline(L : Plua_State; var b : PChar; p : PChar): Boolean;
|
|
|
|
+var
|
|
|
|
+ s : String;
|
|
|
|
+begin
|
|
|
|
+ Write(p); // show prompt
|
|
|
|
+ ReadLn(s); // get line
|
|
|
|
+ b := PChar(s); // and return it
|
|
|
|
+ result := (b[0] <> #4); // test for ctrl-D
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure lua_saveline(L : Plua_State; idx : Integer);
|
|
|
|
+begin
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure lua_freeline(L : Plua_State; b : PChar);
|
|
|
|
+begin
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* lua.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+
|
|
|
|
+function lua_upvalueindex(idx : Integer) : Integer;
|
|
|
|
+begin
|
|
|
|
+ result := LUA_GLOBALSINDEX - idx;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure lua_pop(L : Plua_State; n : Integer);
|
|
|
|
+begin
|
|
|
|
+ lua_settop(L, -n - 1);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure lua_newtable(L : Plua_State);
|
|
|
|
+begin
|
|
|
|
+ lua_createtable(L, 0, 0);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure lua_register(L : Plua_State; n : PChar; f : lua_CFunction);
|
|
|
|
+begin
|
|
|
|
+ lua_pushcfunction(L, f);
|
|
|
|
+ lua_setglobal(L, n);
|
|
|
|
+end;
|
|
|
|
|
|
-function lua_upvalueindex(I: Integer): Integer;
|
|
|
|
|
|
+procedure lua_pushcfunction(L : Plua_State; f : lua_CFunction);
|
|
begin
|
|
begin
|
|
- Result := LUA_GLOBALSINDEX - I;
|
|
|
|
|
|
+ lua_pushcclosure(L, f, 0);
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_boxpointer(L: Plua_State; U: Pointer): Pointer;
|
|
|
|
|
|
+function lua_strlen(L : Plua_State; idx : Integer) : Integer;
|
|
begin
|
|
begin
|
|
- PPointerArray(lua_newuserdata(L, sizeof(U)))^[0] := U;
|
|
|
|
- Result := U;
|
|
|
|
|
|
+ result := lua_objlen(L, idx);
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_unboxpointer(L: Plua_State; I: Integer): Pointer;
|
|
|
|
|
|
+function lua_isfunction(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- Result := PPointerArray(lua_touserdata(L, I))^[0];
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TFUNCTION;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_pop(L: Plua_State; N: Integer);
|
|
|
|
|
|
+function lua_istable(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- lua_settop(L, -(N)-1);
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TTABLE;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_register(L: Plua_State; const N: PChar; F: lua_CFunction);
|
|
|
|
|
|
+function lua_islightuserdata(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- lua_pushstring(L, N);
|
|
|
|
- lua_pushcfunction(L, F);
|
|
|
|
- lua_settable(L, LUA_GLOBALSINDEX);
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TLIGHTUSERDATA;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_pushcfunction(L: Plua_State; F: lua_CFunction);
|
|
|
|
|
|
+function lua_isnil(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- lua_pushcclosure(L, F, 0);
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TNIL;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_isfunction(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+function lua_isboolean(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) = LUA_TFUNCTION;
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TBOOLEAN;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_istable(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+function lua_isthread(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) = LUA_TTABLE;
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TTHREAD;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_islightuserdata(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+function lua_isnone(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) = LUA_TLIGHTUSERDATA;
|
|
|
|
|
|
+ result := lua_type(L, n) = LUA_TNONE;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_isnil(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+function lua_isnoneornil(L : Plua_State; n : Integer) : Boolean;
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) = LUA_TNIL;
|
|
|
|
|
|
+ result := lua_type(L, n) <= 0;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_isboolean(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+procedure lua_pushliteral(L : Plua_State; s : PChar);
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) = LUA_TBOOLEAN;
|
|
|
|
|
|
+ lua_pushlstring(L, s, StrLen(s));
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_isnone(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+procedure lua_setglobal(L : Plua_State; s : PChar);
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) = LUA_TNONE;
|
|
|
|
|
|
+ lua_setfield(L, LUA_GLOBALSINDEX, s);
|
|
end;
|
|
end;
|
|
|
|
|
|
-function lua_isnoneornil(L: Plua_State; N: Integer): Boolean;
|
|
|
|
|
|
+procedure lua_getglobal(L: Plua_State; s: PChar);
|
|
begin
|
|
begin
|
|
- Result := lua_type(L, n) <= 0;
|
|
|
|
|
|
+ lua_getfield(L, LUA_GLOBALSINDEX, s);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_pushliteral(L: Plua_State; const S: PChar);
|
|
|
|
|
|
+function lua_tostring(L : Plua_State; idx : Integer) : PChar;
|
|
begin
|
|
begin
|
|
- lua_pushlstring(L, S, StrLen(S));
|
|
|
|
|
|
+ result := lua_tolstring(L, idx, nil);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_getregistry(L: Plua_State);
|
|
|
|
|
|
+function lua_open : Plua_State;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_newstate;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure lua_getregistry(L : Plua_State);
|
|
begin
|
|
begin
|
|
lua_pushvalue(L, LUA_REGISTRYINDEX);
|
|
lua_pushvalue(L, LUA_REGISTRYINDEX);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_setglobal(L: Plua_State; const S: PChar);
|
|
|
|
|
|
+function lua_getgccount(L : Plua_State) : Integer;
|
|
|
|
+begin
|
|
|
|
+ result := lua_gc(L, LUA_GCCOUNT, 0);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* lualib.h *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+
|
|
|
|
+procedure lua_assert(x : Boolean);
|
|
|
|
+begin
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+(* lauxlib.h n *)
|
|
|
|
+(*****************************************************************************)
|
|
|
|
+
|
|
|
|
+function luaL_getn(L : Plua_State; idx : Integer) : Integer;
|
|
|
|
+begin
|
|
|
|
+ result := lua_objlen(L, idx);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure luaL_setn(L : plua_State; i, j : Integer);
|
|
|
|
+begin
|
|
|
|
+ (* no op *)
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_argcheck(L : Plua_State; cond : Boolean; numarg : Integer;
|
|
|
|
+ extramsg : PChar): Integer;
|
|
|
|
+begin
|
|
|
|
+ if not cond then
|
|
|
|
+ result := luaL_argerror(L, numarg, extramsg)
|
|
|
|
+ else
|
|
|
|
+ result := 0;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_checkstring(L : Plua_State; n : Integer) : PChar;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_checklstring(L, n, nil);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_optstring(L : Plua_State; n : Integer; d : PChar) : PChar;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_optlstring(L, n, d, nil);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_checkint(L : Plua_State; n : Integer) : Integer;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_checkinteger(L, n);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_optint(L : Plua_State; n, d : Integer): Integer;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_optinteger(L, n, d);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_checklong(L : Plua_State; n : LongInt) : LongInt;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_checkinteger(L, n);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_optlong(L : Plua_State; n : Integer; d : LongInt) : LongInt;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_optinteger(L, n, d);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_typename(L : Plua_State; idx : Integer) : PChar;
|
|
|
|
+begin
|
|
|
|
+ result := lua_typename( L, lua_type(L, idx) );
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_dofile(L : Plua_State; fn : PChar) : Integer;
|
|
|
|
+begin
|
|
|
|
+ result := luaL_loadfile(L, fn);
|
|
|
|
+ if result = 0 then
|
|
|
|
+ result := lua_pcall(L, 0, 0, 0);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function luaL_dostring(L : Plua_State; s : PChar) : Integer;
|
|
begin
|
|
begin
|
|
- lua_pushstring(L, S);
|
|
|
|
- lua_insert(L, -2);
|
|
|
|
- lua_settable(L, LUA_GLOBALSINDEX);
|
|
|
|
|
|
+ result := luaL_loadstring(L, s);
|
|
|
|
+ if result = 0 then
|
|
|
|
+ result := lua_pcall(L, 0, 0, 0);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_getglobal(L: Plua_State; const S: PChar);
|
|
|
|
|
|
+procedure luaL_getmetatable(L : Plua_State; n : PChar);
|
|
begin
|
|
begin
|
|
- lua_pushstring(L, S);
|
|
|
|
- lua_gettable(L, LUA_GLOBALSINDEX);
|
|
|
|
|
|
+ lua_getfield(L, LUA_REGISTRYINDEX, n);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_ref(L: Plua_State; Lock: Integer);
|
|
|
|
|
|
+procedure luaL_addchar(B : PluaL_Buffer; c : Char);
|
|
begin
|
|
begin
|
|
- if (Lock <> 0) then
|
|
|
|
- begin
|
|
|
|
- luaL_ref(L, LUA_REGISTRYINDEX);
|
|
|
|
- end else
|
|
|
|
- begin
|
|
|
|
|
|
+ if not(B^.p < B^.buffer + LUAL_BUFFERSIZE) then
|
|
|
|
+ luaL_prepbuffer(B);
|
|
|
|
+ B^.p^ := c;
|
|
|
|
+ Inc(B^.p);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure luaL_putchar(B : PluaL_Buffer; c : Char);
|
|
|
|
+begin
|
|
|
|
+ luaL_addchar(B, c);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure luaL_addsize(B : PluaL_Buffer; n : Integer);
|
|
|
|
+begin
|
|
|
|
+ Inc(B^.p, n);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function lua_ref(L : Plua_State; lock : Boolean) : Integer;
|
|
|
|
+begin
|
|
|
|
+ if lock then
|
|
|
|
+ result := luaL_ref(L, LUA_REGISTRYINDEX)
|
|
|
|
+ else begin
|
|
lua_pushstring(L, 'unlocked references are obsolete');
|
|
lua_pushstring(L, 'unlocked references are obsolete');
|
|
lua_error(L);
|
|
lua_error(L);
|
|
|
|
+ result := 0;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_unref(L: Plua_State; Ref: Integer);
|
|
|
|
|
|
+procedure lua_unref(L : Plua_State; ref : Integer);
|
|
begin
|
|
begin
|
|
- luaL_unref(L, LUA_REGISTRYINDEX, Ref);
|
|
|
|
|
|
+ luaL_unref(L, LUA_REGISTRYINDEX, ref);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure lua_getref(L: Plua_State; Ref: Integer);
|
|
|
|
|
|
+procedure lua_getref(L : Plua_State; ref : Integer);
|
|
begin
|
|
begin
|
|
- lua_rawgeti(L, LUA_REGISTRYINDEX, Ref);
|
|
|
|
|
|
+ lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
|
|
+(******************************************************************************
|
|
|
|
+* Original copyright for the lua source and headers:
|
|
|
|
+* 1994-2004 Tecgraf, PUC-Rio.
|
|
|
|
+* www.lua.org.
|
|
|
|
+*
|
|
|
|
+*
|
|
|
|
+* Permission is hereby granted, free of charge, to any person obtaining
|
|
|
|
+* a copy of this software and associated documentation files (the
|
|
|
|
+* "Software"), to deal in the Software without restriction, including
|
|
|
|
+* without limitation the rights to use, copy, modify, merge, publish,
|
|
|
|
+* distribute, sublicense, and/or sell copies of the Software, and to
|
|
|
|
+* permit persons to whom the Software is furnished to do so, subject to
|
|
|
|
+* the following conditions:
|
|
|
|
+*
|
|
|
|
+* The above copyright notice and this permission notice shall be
|
|
|
|
+* included in all copies or substantial portions of the Software.
|
|
|
|
+*
|
|
|
|
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
|
+* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
|
|
+* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
|
+* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
|
|
+* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
+******************************************************************************)
|
|
|
|
+
|
|
end.
|
|
end.
|
|
|
|
+
|