lib/ffi-gobject_introspection/i_object_info.rb
# frozen_string_literal: true
module GObjectIntrospection
# Wraps a GIObjectInfo struct.
# Represents an object.
class IObjectInfo < IRegisteredTypeInfo
def type_name
Lib.g_object_info_get_type_name self
end
def type_init
Lib.g_object_info_get_type_init self
end
def abstract?
Lib.g_object_info_get_abstract self
end
def fundamental?
Lib.g_object_info_get_fundamental self
end
def parent
@parent ||= IObjectInfo.wrap Lib.g_object_info_get_parent(self)
end
def n_interfaces
Lib.g_object_info_get_n_interfaces self
end
def interface(index)
IInterfaceInfo.wrap Lib.g_object_info_get_interface(self, index)
end
##
build_array_method :interfaces
def n_fields
Lib.g_object_info_get_n_fields self
end
def field(index)
IFieldInfo.wrap Lib.g_object_info_get_field(self, index)
end
##
build_array_method :fields
def n_properties
Lib.g_object_info_get_n_properties self
end
def property(index)
IPropertyInfo.wrap Lib.g_object_info_get_property(self, index)
end
def properties
@properties ||= Array.new(n_properties) { |idx| property(idx) }
end
def find_property(name)
name = name.to_s.tr("_", "-")
properties.find { |prop| prop.name == name }
end
def get_n_methods
Lib.g_object_info_get_n_methods self
end
def get_method(index)
IFunctionInfo.wrap Lib.g_object_info_get_method(self, index)
end
##
build_array_method :get_methods
def find_method(name)
IFunctionInfo.wrap Lib.g_object_info_find_method(self, name.to_s)
end
def n_signals
Lib.g_object_info_get_n_signals self
end
def signal(index)
ISignalInfo.wrap Lib.g_object_info_get_signal(self, index)
end
##
build_array_method :signals
build_finder_method :find_signal
def n_vfuncs
Lib.g_object_info_get_n_vfuncs self
end
def vfunc(index)
IVFuncInfo.wrap Lib.g_object_info_get_vfunc(self, index)
end
def find_vfunc(name)
IVFuncInfo.wrap Lib.g_object_info_find_vfunc(self, name.to_s)
end
##
build_array_method :vfuncs
def n_constants
Lib.g_object_info_get_n_constants self
end
def constant(index)
IConstantInfo.wrap Lib.g_object_info_get_constant(self, index)
end
##
build_array_method :constants
def class_struct
IStructInfo.wrap Lib.g_object_info_get_class_struct(self)
end
end
end