From: Steven Barth Date: Wed, 10 Sep 2008 12:22:29 +0000 (+0000) Subject: Optimized luci.util.class X-Git-Tag: 0.9.0~1355 X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=9e2759ec348c4b44475fd594d91eab14e7e3220e Optimized luci.util.class --- diff --git a/libs/core/luasrc/util.lua b/libs/core/luasrc/util.lua index 5f9c609f65..c84df1a170 100644 --- a/libs/core/luasrc/util.lua +++ b/libs/core/luasrc/util.lua @@ -59,6 +59,17 @@ end -- Class helper routines -- +-- Instantiates a class +local function _instantiate(class, ...) + local inst = setmetatable({}, {__index = class}) + + if inst.__init__ then + inst:__init__(...) + end + + return inst +end + --- Create a Class object (Python-style object model). -- The class object can be instantiated by calling itself. -- Any class functions or shared parameters can be attached to this object. @@ -74,26 +85,10 @@ end -- @see instanceof -- @see clone function class(base) - local class = {} - - local create = function(class, ...) - local inst = setmetatable({}, {__index = class}) - - if inst.__init__ then - inst:__init__(...) - end - - return inst - end - - local classmeta = {__call = create} - - if base then - classmeta.__index = base - end - - setmetatable(class, classmeta) - return class + return setmetatable({}, { + __call = _instantiate, + __index = base + }) end --- Test whether the given object is an instance of the given class.