From 9e2759ec348c4b44475fd594d91eab14e7e3220e Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 10 Sep 2008 12:22:29 +0000 Subject: [PATCH] Optimized luci.util.class --- libs/core/luasrc/util.lua | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) 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. -- 2.30.2