Class: GObjectIntrospection::IBaseInfo
- Inherits:
-
Object
- Object
- GObjectIntrospection::IBaseInfo
- Defined in:
- lib/ffi-gobject_introspection/i_base_info.rb
Overview
Wraps GIBaseInfo struct, the base type for all info types. Decendant types will be implemented as needed.
Direct Known Subclasses
IArgInfo, ICallableInfo, IConstantInfo, IFieldInfo, IPropertyInfo, IRegisteredTypeInfo, ITypeInfo, IUnresolvedInfo, IValueInfo
Class Method Summary collapse
-
.build_array_method(method, single = nil) ⇒ Object
This is a helper method to construct a method returning an array, out of the methods returning their number and the individual elements.
-
.build_finder_method(method, counter = nil, fetcher = nil) ⇒ Object
This is a helper method to construct a method for finding an element, out of the methods returning their number and the individual elements.
- .make_finalizer(lib, ptr) ⇒ Object
- .wrap(ptr) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
- #attribute(name) ⇒ Object
- #container ⇒ Object
- #deprecated? ⇒ Boolean
- #info_type ⇒ Object
-
#initialize(ptr, lib = Lib) ⇒ IBaseInfo
constructor
A new instance of IBaseInfo.
- #name ⇒ Object
- #namespace ⇒ Object
- #safe_namespace ⇒ Object
- #to_ptr ⇒ Object
Constructor Details
#initialize(ptr, lib = Lib) ⇒ IBaseInfo
Returns a new instance of IBaseInfo.
5 6 7 8 9 10 11 12 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 5 def initialize(ptr, lib = Lib) raise ArgumentError, 'ptr must not be null' if ptr.null? ObjectSpace.define_finalizer self, self.class.make_finalizer(lib, ptr) @gobj = ptr @lib = lib end |
Class Method Details
.build_array_method(method, single = nil) ⇒ Object
This is a helper method to construct a method returning an array, out of the methods returning their number and the individual elements.
For example, given the methods n_foos and foo(i), this method will create an additional method foos returning all foos.
Provide the second parameter if the plural is not trivially constructed by adding s to the singular.
Examples:
build_array_method :fields
build_array_mehtod :properties, :property
build_array_method :get_methods
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 37 def self.build_array_method(method, single = nil) method = method.to_s single ||= method.to_s[0..-2] count = method.sub(/^(get_)?/, '\\1n_') class_eval " def \#{method}\n (0..(\#{count} - 1)).map do |i|\n \#{single} i\n end\n end\n CODE\nend\n" |
.build_finder_method(method, counter = nil, fetcher = nil) ⇒ Object
This is a helper method to construct a method for finding an element, out of the methods returning their number and the individual elements.
For example, given the methods n_foos and foo(i), this method will create an additional method find_foo returning the foo with the matching name.
Optionally provide counter and fetcher methods if they cannot be trivially derived from the finder method.
Examples:
build_finder_method :find_field
build_finder_method :find_property, :n_properties
build_finder_method :find_method, :get_n_methods, :get_method
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 66 def self.build_finder_method(method, counter = nil, fetcher = nil) method = method.to_s single = method.sub(/^find_/, '') counter ||= "n_#{single}s" fetcher ||= single class_eval " def \#{method}(name)\n name = name.to_s\n \#{counter}.times do |i|\n it = \#{fetcher}(i)\n return it if it.name == name\n end\n nil\n end\n CODE\nend\n" |
.make_finalizer(lib, ptr) ⇒ Object
14 15 16 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 14 def self.make_finalizer(lib, ptr) proc { lib.g_base_info_unref ptr } end |
.wrap(ptr) ⇒ Object
113 114 115 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 113 def self.wrap(ptr) new ptr unless ptr.null? end |
Instance Method Details
#==(other) ⇒ Object
117 118 119 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 117 def ==(other) other.is_a?(IBaseInfo) && Lib.g_base_info_equal(@gobj, other) end |
#attribute(name) ⇒ Object
109 110 111 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 109 def attribute(name) Lib.g_base_info_get_attribute @gobj, name end |
#container ⇒ Object
99 100 101 102 103 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 99 def container ptr = Lib.g_base_info_get_container @gobj Lib.g_base_info_ref ptr IRepository.wrap_ibaseinfo_pointer ptr end |
#deprecated? ⇒ Boolean
105 106 107 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 105 def deprecated? Lib.g_base_info_is_deprecated @gobj end |
#info_type ⇒ Object
87 88 89 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 87 def info_type Lib.g_base_info_get_type @gobj end |
#name ⇒ Object
83 84 85 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 83 def name Lib.g_base_info_get_name @gobj end |
#namespace ⇒ Object
91 92 93 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 91 def namespace Lib.g_base_info_get_namespace @gobj end |
#safe_namespace ⇒ Object
95 96 97 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 95 def safe_namespace namespace.gsub(/^./, &:upcase) end |
#to_ptr ⇒ Object
18 19 20 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 18 def to_ptr @gobj end |