From 39e1834c449a55a44e95f2cfb6b24887fd3cec70 Mon Sep 17 00:00:00 2001 From: Determinant Date: Sun, 24 May 2015 19:02:09 +0800 Subject: add nerv.class and try to let Lua class inherit from ParamFile --- nerv.lua | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'nerv.lua') diff --git a/nerv.lua b/nerv.lua index ccff0a0..8e03cb2 100644 --- a/nerv.lua +++ b/nerv.lua @@ -1,6 +1,6 @@ require 'libnerv' require 'matrix.init' -nerv.class = require 'pl.class' +-- nerv.class = require 'pl.class' nerv.utils = require 'pl.utils' function nerv.error(fmt, ...) @@ -10,3 +10,28 @@ end function nerv.error_method_not_implement() nerv.error("method not implemented"); end + +function nerv.class(tname, parenttname) + + local function constructor(...) + local self = {} + nerv.setmetatable(self, tname) + if self.__init then + self:__init(...) + end + return self + end + + local function factory() + local self = {} + nerv.setmetatable(self, tname) + return self + end + + local mt = nerv.newmetatable(tname, parenttname, constructor, nil, factory) + local mpt + if parenttname then + mpt = nerv.getmetatable(parenttname) + end + return mt, mpt +end -- cgit v1.2.3