From 6da2b175e20ed3c03b0dfcfc9046de1e0e5d4444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Sat, 23 Nov 2019 00:05:30 +0800 Subject: =?UTF-8?q?=E6=AD=A3=E8=B7=AF=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/emmy/param.lua | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 script/emmy/param.lua (limited to 'script/emmy/param.lua') diff --git a/script/emmy/param.lua b/script/emmy/param.lua new file mode 100644 index 00000000..12ac0633 --- /dev/null +++ b/script/emmy/param.lua @@ -0,0 +1,70 @@ +local listMgr = require 'vm.list' + +---@class EmmyParam +local mt = {} +mt.__index = mt +mt.type = 'emmy.param' + +function mt:getName() + return self.name +end + +function mt:getType() + if self._bindType then + return self._bindType:getType() + else + return 'any' + end +end + +function mt:getSource() + return listMgr.get(self.source) +end + +function mt:bindType(type) + if type then + self._bindType = type + else + return self._bindType + end +end + +function mt:bindGeneric(generic) + if generic then + self._bindGeneric = generic + else + return self._bindGeneric + end +end + +function mt:addEnum(enum) + self._enum[#self._enum+1] = enum +end + +function mt:eachEnum(callback) + for _, enum in ipairs(self._enum) do + callback(enum) + end +end + +function mt:setOption(option) + self._option = option +end + +function mt:getOption() + return self._option +end + +return function (manager, source) + local self = setmetatable({ + source = source.id, + _manager = manager, + _enum = {}, + }, mt) + if source.type == 'emmyParam' then + self.name = source[1][1] + elseif source.type == 'emmyVararg' then + self.name = '...' + end + return self +end -- cgit v1.2.3