From 91b2d83f74ca35dcdf1c0850ed82f958d43e87b9 Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Thu, 25 Apr 2013 08:38:15 +0000 Subject: layout and typo correction. no code change. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2977 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/lua/ULuaCore.pas | 171 +++++++++++++++++++++++++++------------------------ 1 file changed, 89 insertions(+), 82 deletions(-) (limited to 'src/lua') diff --git a/src/lua/ULuaCore.pas b/src/lua/ULuaCore.pas index ea9fd991..d1b6e7d2 100644 --- a/src/lua/ULuaCore.pas +++ b/src/lua/ULuaCore.pas @@ -33,7 +33,11 @@ interface {$I switches.inc} -uses SysUtils, ULua, UHookableEvent, UPath; +uses + SysUtils, + UHookableEvent, + ULua, + UPath; type { this exception is raised when the lua panic function @@ -51,10 +55,11 @@ type { record represents a module } TLuaModule = record Name: string; - Functions: array of luaL_reg; //modules functions, w/ trailing nils this time + Functions: array of luaL_reg; // modules functions, with trailing nils this time end; TLuaPlugin_Status = (psNone, psRunning, psClosed, psErrorOnLoad, psErrorOnCall, psErrorInInit, psErrorOnRun); + { class represents a loaded plugin } TLuaPlugin = class private @@ -88,14 +93,14 @@ type procedure Load; procedure Register(Name, Version, Author, Url: string); - function HasRegistred: boolean; + function HasRegistered: boolean; procedure PausePlugin(doPause: boolean); - property Paused: boolean read bPaused write PausePlugin; + property Paused: boolean read bPaused write PausePlugin; procedure ShutMeDown; - { calls the lua function in the global w/ the given name. + { calls the lua function in the global with the given name. the arguments to the function have to be pushed to the stack before calling this function. the arguments and the function will be removed from stack @@ -109,13 +114,13 @@ type const ReportErrors: boolean = true): boolean; procedure ClearStack; - procedure Unload; //< Destroys the Luastate, and frees as much mem as possible, w/o destroying the class and important information + procedure Unload; //< Destroys the Luastate, and frees as much mem as possible, without destroying the class and important information destructor Destroy; override; end; - { class managing the plugins w/ their LuaStates, the events and modules - it also offers the usdx table to the plugins w/ some basic functionality + { class managing the plugins with their LuaStates, the events and modules + it also offers the usdx table to the plugins with some basic functionality like self unload or hook getting} TLuaCore = class private @@ -128,15 +133,15 @@ type protected Modules: array of TLuaModule; //< modules that has been registred, has to be proctected because fucntions of this unit need to get access - function GetModuleIdByName(Name: string): integer; //returns id of given module, or -1 if module is not found + function GetModuleIdByName(Name: string): integer; // returns id of given module, or -1 if module is not found public constructor Create; destructor Destroy; override; - procedure LoadPlugins; //< calls LoadPlugin w/ Plugindir and LoadingFinished Eventchain + procedure LoadPlugins; //< calls LoadPlugin with Plugindir and LoadingFinished Eventchain - procedure BrowseDir(Dir: IPath); //< searches for files w/ extension .usdx in the specified dir and tries to load them w/ lua - procedure LoadPlugin(Filename: IPath); //< tries to load filename w/ lua and creates the default usdx lua environment for the plugins state + procedure BrowseDir(Dir: IPath); //< searches for files with extension .usdx in the specified dir and tries to load them with lua + procedure LoadPlugin(Filename: IPath); //< tries to load filename with lua and creates the default usdx lua environment for the plugins state function GetPluginByName(Name: string): TLuaPlugin; function GetPluginById(Id: integer): TLuaPlugin; @@ -144,23 +149,23 @@ type { this function adds a module loader for your functions name is the name the script needs to write in its require() Functions is an array of lua calling compatible functions - w/o trailing nils! } + without trailing nils! } procedure RegisterModule(Name: string; const Functions: array of luaL_reg); function RegisterEvent(Event: THookableEvent): integer; //< adds the event to eventlist and returns its handle procedure UnRegisterEvent(hEvent: integer); //< removes the event from eventlist by handle - function GetEventbyName(Name: string): THookableEvent; //< tries to find the event w/ the given name in the list - function GetEventbyHandle(hEvent: integer): THookableEvent; //< tries to find the event w/ the given handle + function GetEventbyName(Name: string): THookableEvent; //< tries to find the event with the given name in the list + function GetEventbyHandle(hEvent: integer): THookableEvent; //< tries to find the event with the given handle procedure UnHookByParent(Parent: integer); //< remove all hooks by given parent id from all events procedure PrepareState(L: Plua_State); - procedure DumpPlugins; //< prints plugin runtime information w/ Log.LogStatus + procedure DumpPlugins; //< prints plugin runtime information with Log.LogStatus end; -//some luastyle functions to call from lua scripts +// some luastyle functions to call from lua scripts { register global, used by plugins to identify register(plugin name, plugin version, [plugin author], [plugin homepage]) can only be called once since the global "register" is niled by the function @@ -193,11 +198,11 @@ function TLua_CustomPanic (L: Plua_State): integer; cdecl; this function } function TLua_CustomRequire(L: PLua_State): integer; cdecl; - var LuaCore: TLuaCore; implementation + uses StrUtils, ULog, @@ -210,7 +215,7 @@ constructor TLuaCore.Create; begin inherited; - //init EventList w/ nil + // init EventList with nil EventList := nil; eLoadingFinished := nil; @@ -223,7 +228,7 @@ var begin SetLength(EventHandles, 0); - //delete event list + // delete event list Cur := EventList; while(Cur <> nil) do @@ -237,7 +242,7 @@ begin inherited; end; -{ calls BrowseDir w/ plugin dir and LoadingFinished eventchain } +{ calls BrowseDir with plugin dir and LoadingFinished eventchain } procedure TLuaCore.LoadPlugins; begin // we have to create event here, because in create it can @@ -249,8 +254,8 @@ begin eLoadingFinished.CallHookChain(false); end; -{ searches for files w/ extension .usdx in the specified - dir and tries to load them w/ lua } +{ searches for files with extension .usdx in the specified + dir and tries to load them with lua } procedure TLuaCore.BrowseDir(Dir: IPath); var Iter: IFileIterator; @@ -281,7 +286,7 @@ begin end; end; -{ tries to load filename w/ lua and creates the default +{ tries to load filename with lua and creates the default usdx lua environment for the plugins state } procedure TLuaCore.LoadPlugin(Filename: IPath); var @@ -321,7 +326,7 @@ end; { this function adds a module loader for your functions name is the name the script needs to write in its require() Functions is an array of lua calling compatible functions - w/o trailing nils! } + without trailing nils! } procedure TLuaCore.RegisterModule(Name: string; const Functions: array of luaL_reg); var Len: integer; @@ -351,15 +356,15 @@ begin if (Event <> nil) and (Length(Event.Name) > 0) then begin Result := Length(EventHandles); - SetLength(EventHandles, Result + 1); //get Handle and copy it to result + SetLength(EventHandles, Result + 1); // get Handle and copy it to result EventHandles[Result] := Event.Name; - //create eventlist item + // create eventlist item New(Item); Item.Event := Event; - //search for a place for this event in alphabetical order + // search for a place for this event in alphabetical order Prev := nil; Cur := EventList; @@ -369,10 +374,10 @@ begin Cur := Prev.Next; end; - //found the place => add new item + // found the place => add new item if (Prev <> nil) then Prev.Next := Item - else //first item + else // first item EventList := Item; Item.Next := Cur; @@ -387,8 +392,8 @@ procedure TLuaCore.UnRegisterEvent(hEvent: integer); Cur, Prev: PEventListItem; begin if (hEvent >= 0) and (hEvent <= High(EventHandles)) and (Length(EventHandles[hEvent]) > 0) then - begin //hEvent in bounds and not already deleted - //delete from eventlist + begin // hEvent in bounds and not already deleted + // delete from eventlist Prev := nil; Cur := EventList; @@ -399,17 +404,17 @@ begin end; if (Cur <> nil) and (Cur.Event.Name = EventHandles[hEvent]) then - begin //delete if found + begin // delete if found Prev.Next := Cur.Next; // remove from list Dispose(Cur); // free memory end; - //delete from handle array + // delete from handle array EventHandles[hEvent] := ''; end; end; -{ tries to find the event w/ the given name in the list +{ tries to find the event with the given name in the list to-do : use binary search algorithm instead of linear search here check whether this is possible (events are saved in a pointer list) } function TLuaCore.GetEventbyName(Name: string): THookableEvent; @@ -420,7 +425,7 @@ begin if (Length(Name) > 0) then begin - //search in eventlist + // search in eventlist Cur := EventList; while (Cur <> nil) and (CompareStr(Cur.Event.Name, Name) < 0) do @@ -429,17 +434,17 @@ begin end; if (Cur <> nil) and (Cur.Event.Name = Name) then - begin //we found what we want to find + begin // we found what we want to find Result := Cur.Event; end; end; end; -{ tries to find the event w/ the given handle } +{ tries to find the event with the given handle } function TLuaCore.GetEventbyHandle(hEvent: integer): THookableEvent; begin if (hEvent >= 0) and (hEvent <= High(EventHandles)) and (Length(EventHandles[hEvent]) > 0) then - begin //hEvent in bounds and not already deleted + begin // hEvent in bounds and not already deleted Result := GetEventByName(EventHandles[hEvent]); end else @@ -469,15 +474,15 @@ end; usdx moduleloader and usdx table } procedure TLuaCore.PrepareState(L: Plua_State); begin - //load basic lib functionality + // load basic lib functionality lua_pushcfunction(L, luaopen_base); lua_call(L, 0, 0); - lua_pop(L, lua_gettop(L)); //pop the results + lua_pop(L, lua_gettop(L)); // pop the results - //load module functionality + // load module functionality lua_pushcfunction(L, luaopen_package); lua_call(L, 0, 0); - lua_pop(L, lua_gettop(L)); //pop the results + lua_pop(L, lua_gettop(L)); // pop the results { adds the loader for the other standard lib to package.preload table plugins can call e.g. require('math') if they need math functionality } @@ -532,32 +537,32 @@ begin {**** Move C-Library and all-in-one module loader backwards, slot 3 is free now } // get package.loaders[4] function - lua_pushinteger(L, 5); //push new index - lua_pushinteger(L, 4); //push old index + lua_pushinteger(L, 5); // push new index + lua_pushinteger(L, 4); // push old index lua_gettable (L, -3); // and move it to package.loaders[5] lua_settable (L, -3); // get package.loaders[3] function - lua_pushinteger(L, 4); //push new index - lua_pushinteger(L, 3); //push old index + lua_pushinteger(L, 4); // push new index + lua_pushinteger(L, 3); // push old index lua_gettable (L, -3); // and move it to package.loaders[4] lua_settable (L, -3); {**** now we add the core module to package.loaders[3] } - lua_pushinteger(L, 3); //push new loaders index + lua_pushinteger(L, 3); // push new loaders index lua_pushcfunction(L, TLuaCore_ModuleLoader); // and move it to package.loaders[3] lua_settable (L, -3); - //pop both package and package.loaders tables from stack + // pop both package and package.loaders tables from stack lua_pop(L, 2); - {**** replace the standard require w/ our custom require function } + {**** replace the standard require with our custom require function } // first move standard require function to _require lua_getfield(L, LUA_GLOBALSINDEX, PChar('require')); lua_setfield(L, LUA_GLOBALSINDEX, PChar('_require')); @@ -567,7 +572,8 @@ begin lua_setfield(L, LUA_GLOBALSINDEX, PChar('require')); {**** now we create the usdx table } - //at first functions from ULuaUsdx + // at first functions from ULuaUsdx +// Function luaL_register is deprecated. Use luaL_setfuncs so that your module does not create globals. (Modules are not expected to set global variables anymore.) luaL_register(L, 'Usdx', @ULuaUsdx_Lib_f[0]); end; @@ -596,7 +602,7 @@ function TLuaCore_ModuleLoader (L: Plua_State): integer; cdecl; Name: string; ID: integer; begin - Result := 1; //we will return one value in any case (or never return in case of an error) + Result := 1; // we will return one value in any case (or never return in case of an error) if (lua_gettop(L) >= 1) then begin @@ -606,19 +612,19 @@ begin if (lua_IsString(L, 1)) then - begin //we got the name => go get it + begin // we got the name => go get it Name := lua_toString(L, 1); - //we need at least 6 letters - //and first 5 letters have to be usdx. + // we need at least 6 letters + // and first 5 letters have to be usdx. if (Length(Name) > 5) and (lowercase(copy(Name, 1, 5))='usdx.') then begin ID := LuaCore.GetModuleIdByName(copy(Name, 6, Length(Name) - 5)); if (ID >= 0) then - begin //found the module -> return loader function + begin // found the module -> return loader function lua_pushinteger(L, Id); lua_pushcclosure(L, TLuaCore_LoadModule, 1); - //the function is the result, so we leave it on stack + // the function is the result, so we leave it on stack end else lua_pushString(L, PChar('usdx module "' + Name + '" couldn''t be found')); @@ -645,6 +651,7 @@ begin begin Id := lua_ToInteger(L, lua_upvalueindex(1)); +// Function luaL_register is deprecated. Use luaL_setfuncs so that your module does not create globals. (Modules are not expected to set global variables anymore.) luaL_register(L, PChar('Usdx.' + LuaCore.Modules[Id].Name), @LuaCore.Modules[Id].Functions[0]); // set the modules table as global "modulename" @@ -655,13 +662,13 @@ begin // no we net to push the table again to return it lua_getglobal(L, PChar(LuaCore.Modules[Id].Name)); - Result := 1; //return table + Result := 1; // return table end else luaL_error(L, PChar('no upvalue found in LuaCore_LoadModule')); end; -{ prints plugin runtime information w/ Log.LogStatus } +{ prints plugin runtime information with Log.LogStatus } procedure TLuaCore.DumpPlugins; function PluginStatusToString(Status: TLuaPlugin_Status): string; begin @@ -727,8 +734,8 @@ begin // create Lua state for this plugin State := luaL_newstate; - //set our custom panic function if s/t went wrong along the init - //we don't expect + // set our custom panic function if s/t went wrong along the init + // we don't expect lua_atPanic(State, TLua_CustomPanic); if (LuaL_LoadFile(State, PChar(Filename.ToNative)) = 0) then @@ -742,7 +749,7 @@ begin if (lua_pcall(State, 0, 0, 0) = 0) then begin // file called successful - //let the core prepare our state + // let the core prepare our state LuaCore.PrepareState(State); // set register function @@ -760,7 +767,7 @@ begin // plugin_init() if false or nothing is returned plugin init is aborted if (CallFunctionByName('plugin_init', 0, 1)) then begin - if (HasRegistred) and (sStatus = psNone) and (lua_toBoolean(State, 1)) then + if (HasRegistered) and (sStatus = psNone) and (lua_toBoolean(State, 1)) then begin sStatus := psRunning; ClearStack; @@ -802,7 +809,7 @@ begin end; { returns true if plugin has called register } -function TLuaPlugin.HasRegistred: boolean; +function TLuaPlugin.HasRegistered: boolean; begin Result := (Self.sName <> 'not registred'); end; @@ -818,7 +825,7 @@ begin ShutDown := true; end; -{ calls the lua function in the global w/ the given name. +{ calls the lua function in the global with the given name. the arguments to the function have to be pushed to the stack before calling this function. the arguments and the function will be removed from stack @@ -839,32 +846,32 @@ begin // we need at least one stack slot free lua_checkstack(State, 1); - // lua_getglobal(State, PChar(Name)); //this is just a macro: + // lua_getglobal(State, PChar(Name)); // this is just a macro: lua_getfield(State, LUA_GLOBALSINDEX, PChar(Name)); if (lua_isfunction(State, -1)) then - begin //we got a function + begin // we got a function // move function in front of the arguments (if any) if (nArgs > 0) then lua_insert(State, -(nArgs + 1)); // call it! if (lua_pcall(State, nArgs, nResults, 0) = 0) then - Result := true //called w/o errors - else //increase error counter + Result := true // called without errors + else // increase error counter Inc (ErrorCount); end else - begin //we have to pop the args and the field we pushed from stack + begin // we have to pop the args and the field we pushed from stack lua_pop(State, nArgs + 1); - //leave an errormessage on stack + // leave an errormessage on stack lua_pushstring(State, Pchar('could not find function named ' + Name)); end; end else - begin //we have to pop the args from stack + begin // we have to pop the args from stack lua_pop(State, nArgs); - //leave an errormessage on stack + // leave an errormessage on stack lua_pushstring(State, PChar('plugin paused')); end; @@ -880,7 +887,7 @@ begin end else begin - Log.LogError('trying to call function of closed or not opened lua state', IfThen(HasRegistred, Name, Filename.ToUTF8)); + Log.LogError('trying to call function of closed or not opened lua state', IfThen(HasRegistered, Name, Filename.ToUTF8)); end; end; @@ -892,7 +899,7 @@ begin end; { destroys the lua state, and frees as much mem as possible, - w/o destroying the class and important information } + without destroying the class and important information } procedure TLuaPlugin.Unload; begin if (State <> nil) then @@ -902,7 +909,7 @@ begin ClearStack; lua_close(State); - State := nil; //don't forget to nil it ;) + State := nil; // don't forget to nil it ;) LuaCore.UnHookByParent(iId); @@ -930,12 +937,12 @@ begin Id := lua_ToInteger(L, lua_upvalueindex(1)); - //get version and name + // get version and name Name := lua_tostring(L, 1); Version := lua_tostring(L, 2); - //get optional parameters - if (lua_isString(L, 3)) then //author + // get optional parameters + if (lua_isString(L, 3)) then // author Author := lua_toString(L, 3) else begin @@ -950,11 +957,11 @@ begin Url := ''; end; - //clear stack + // clear stack if (lua_gettop(L) > 0) then lua_pop(L, lua_gettop(L)); - //call register + // call register P := LuaCore.GetPluginById(Id); if (P <> nil) then P.Register(Name, Version, Author, Url) @@ -1013,7 +1020,7 @@ begin // move it under the top param lua_insert(L, -2); - // call it w/ next param (function + param are poped from stack) + // call it with next param (function + param are poped from stack) lua_call(L, 1, 0); end; end; -- cgit v1.2.3