-- Copyright 2023 -- -- 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 . 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