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
Instance Attribute Summary collapse
-
#pointer ⇒ Object
readonly
Returns the value of attribute pointer.
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.
7 8 9 10 11 12 13 14 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 7 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) @pointer = ptr @lib = lib end |
Instance Attribute Details
#pointer ⇒ Object (readonly)
Returns the value of attribute pointer.
16 17 18 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 16 def pointer @pointer 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
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 41 def self.build_array_method(method, single = nil) method = method.to_s single ||= method[0..-2] count = method.sub(/^(get_)?/, '\\1n_') class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{method} (0..(#{count} - 1)).map do |i| #{single} i end end CODE end |
.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
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 70 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 <<-CODE, __FILE__, __LINE__ + 1 def #{method}(name) name = name.to_s #{counter}.times do |i| it = #{fetcher}(i) return it if it.name == name end nil end CODE end |
.make_finalizer(lib, ptr) ⇒ Object
18 19 20 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 18 def self.make_finalizer(lib, ptr) proc { lib.g_base_info_unref ptr } end |
.wrap(ptr) ⇒ Object
117 118 119 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 117 def self.wrap(ptr) new ptr unless ptr.null? end |
Instance Method Details
#==(other) ⇒ Object
121 122 123 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 121 def ==(other) other.is_a?(IBaseInfo) && Lib.g_base_info_equal(self, other) end |
#attribute(name) ⇒ Object
113 114 115 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 113 def attribute(name) Lib.g_base_info_get_attribute self, name end |
#container ⇒ Object
103 104 105 106 107 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 103 def container ptr = Lib.g_base_info_get_container self Lib.g_base_info_ref ptr IRepository.wrap_ibaseinfo_pointer ptr end |
#deprecated? ⇒ Boolean
109 110 111 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 109 def deprecated? Lib.g_base_info_is_deprecated self end |
#info_type ⇒ Object
91 92 93 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 91 def info_type Lib.g_base_info_get_type self end |
#name ⇒ Object
87 88 89 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 87 def name Lib.g_base_info_get_name self end |
#namespace ⇒ Object
95 96 97 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 95 def namespace Lib.g_base_info_get_namespace self end |
#safe_namespace ⇒ Object
99 100 101 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 99 def safe_namespace namespace.gsub(/^./, &:upcase) end |
#to_ptr ⇒ Object
22 23 24 |
# File 'lib/ffi-gobject_introspection/i_base_info.rb', line 22 def to_ptr @pointer end |