Files
OmicronFrames/src/types/object.lua
2023-03-15 17:13:01 +01:00

54 lines
1.7 KiB
Lua

-- Copyright 2023 <omicron.me@protonmail.com>
--
-- This file is part of Omicron Frames
--
-- Omicron Frames is free software: you can redistribute it and/or modify it
-- under the terms of the GNU General Public License as published by the Free
-- Software Foundation, either version 3 of the License, or (at your option)
-- any later version.
--
-- Omicron Frames is distributed in the hope that it will be useful, but
-- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-- more details.
--
-- You should have received a copy of the GNU General Public License along with
-- Omicron Frames. If not, see <https://www.gnu.org/licenses/>.
local omi = select(2, ...)
local Object = omi.GetModule("types").Object
local IsDerivedFrom = omi.GetModule("types").IsDerivedFrom
-- Create a new instance of Object or (more likely) any inheriting class
function Object.new(class, ...)
local o = {}
setmetatable(o, class)
if o.Init ~= nil then
o:Init(...)
end
return o
end
-- Returns true if the Object is a class, false if it is an instance object
function Object.IsClassObject(self)
return self.__typeInfo.class == self
end
-- Returns true if the Object is an instance, false if it is a class
function Object.IsInstanceObject(self)
return self.__typeInfo.class ~= self
end
-- return true if this object is an instance of the given class
function Object:IsInstanceOf(class)
if not self:IsInstanceObject() or not class:IsClassObject() then
return false
end
return IsDerivedFrom(self:GetClass(), class)
end
-- Return the class of any object
function Object.GetClass(self)
return self.__typeInfo.class
end