Initial commit
This commit is contained in:
53
src/types/object.lua
Normal file
53
src/types/object.lua
Normal file
@@ -0,0 +1,53 @@
|
||||
-- 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
|
Reference in New Issue
Block a user