Код:#=============================================================================== # Object # Сверхкласс всех классов. Определяет основное поведение объектов. #=============================================================================== class Object #----------------------------------------------------------------------------- # Определяет является ли объект экземпляром одного из перечисленных классов # Возвращает :bool # classes :сlass - перечисление или массив классов для проверки #----------------------------------------------------------------------------- def any_class?(*classes) classes = classes[0] if classes[0].is_a?(Array) for c in classes return true if is_a?(c) end return false end #----------------------------------------------------------------------------- # Определяет является ли объект экземпляром одного из перечисленных классов # или их подклассов # Возвращает :bool # classes :сlass - перечисление или массив классов для проверки #----------------------------------------------------------------------------- def any_kind?(*classes) classes = classes[0] if classes[0].is_a?(Array) for c in classes return true if kind_of?(c) end return false end #----------------------------------------------------------------------------- # Определяет существует ли объект и не был ли он освобожден # Возвращает :bool #----------------------------------------------------------------------------- def exists? return false if self.nil? return (methods.include?("disposed?") ? !disposed? : true) end #----------------------------------------------------------------------------- # Определяет возможность освобождения объекта методом dispose # Возвращает :bool #----------------------------------------------------------------------------- def disposable? return false unless self.exists? return methods.include?("dispose") end #----------------------------------------------------------------------------- # Освобождает зарезервированную объектом память, если это возможно # В случае если объект - массив или хэш, будет освобождено # все его содержимое #----------------------------------------------------------------------------- def free if is_a?(Array) each_with_index{ |item, index| item.free self[index] = nil } clear elsif is_a?(Hash) each{ |key, item| item.free key.free self[key] = nil } clear elsif is_a?(Sprite) self.bitmap.free dispose else dispose if disposable? end end #----------------------------------------------------------------------------- end
Социальные закладки