Lua_EnvironmentStrings.pas 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. //******************************************************************************
  2. //*** LUA SCRIPT FUNCTIONS ***
  3. //*** ***
  4. //*** (c) Massimo Magnano 2006 ***
  5. //*** ***
  6. //*** ***
  7. //******************************************************************************
  8. // File : Lua_EnvironmentStrings.pas
  9. //
  10. // Description : Access from Lua scripts to EnvironmentStrings
  11. //
  12. //******************************************************************************
  13. // Exported functions :
  14. //
  15. // GetVarValue(string VarString) return Value as String.
  16. unit Lua_EnvironmentStrings;
  17. interface
  18. uses SysUtils, Lua, LuaUtils, EnvironmentStrings;
  19. procedure RegisterFunctions(L: Plua_State;
  20. OnGetVariable :TOnGetVariableFunction =Nil;
  21. OnGetVariableTag :TObject =Nil);
  22. implementation
  23. const
  24. HANDLE_ONGETVARIABLE ='Lua_ES_OnGetVariable';
  25. HANDLE_ONGETVARIABLETAG ='Lua_ES_OnGetVariableTag';
  26. function GetOnGetVariable(L: Plua_State): TOnGetVariableFunction;
  27. begin
  28. Result := TOnGetVariableFunction(LuaGetTableLightUserData(L, LUA_REGISTRYINDEX, HANDLE_ONGETVARIABLE));
  29. end;
  30. function GetOnGetVariableTag(L: Plua_State): TObject;
  31. begin
  32. Result := TObject(LuaGetTableLightUserData(L, LUA_REGISTRYINDEX, HANDLE_ONGETVARIABLETAG));
  33. end;
  34. // GetVarValue(string VarString) return Value as String.
  35. function LuaGetVarValue(L: Plua_State): Integer; cdecl;
  36. Var
  37. NParams :Integer;
  38. VarName :String;
  39. xResult :String;
  40. begin
  41. Result := 0;
  42. NParams := lua_gettop(L);
  43. if (NParams=1)
  44. then begin
  45. try
  46. VarName :=LuaToString(L, 1);
  47. xResult :=EnvironmentStrings.ProcessPARAMString(VarName, GetOnGetVariable(L), GetOnGetVariableTag(L));
  48. if (xResult<>'')
  49. then begin
  50. LuaPushString(L, xResult);
  51. Result := 1;
  52. end;
  53. except
  54. On E:Exception do begin
  55. LuaError(L, ERR_Script+E.Message);
  56. end;
  57. end;
  58. end;
  59. end;
  60. procedure RegisterFunctions(L: Plua_State;
  61. OnGetVariable :TOnGetVariableFunction =Nil;
  62. OnGetVariableTag :TObject =Nil);
  63. begin
  64. LuaSetTableLightUserData(L, LUA_REGISTRYINDEX,
  65. HANDLE_ONGETVARIABLE, @OnGetVariable);
  66. LuaSetTableLightUserData(L, LUA_REGISTRYINDEX,
  67. HANDLE_ONGETVARIABLETAG, OnGetVariableTag);
  68. LuaRegister(L, 'GetVarValue', LuaGetVarValue);
  69. end;
  70. end.