19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/gobject-introspection/type-info.rb', line 19
def match?(value)
case tag
when TypeTag::BOOLEAN
value == true or value == false
when TypeTag::INT8,
TypeTag::UINT8,
TypeTag::INT16,
TypeTag::UINT16,
TypeTag::INT32,
TypeTag::UINT32,
TypeTag::INT64,
TypeTag::UINT64,
TypeTag::FLOAT,
TypeTag::DOUBLE
value.is_a?(Numeric)
when TypeTag::GTYPE
value.is_a?(GLib::Type)
when TypeTag::UTF8
value.is_a?(String)
when TypeTag::FILENAME
value.is_a?(String)
when TypeTag::ARRAY
element_type_info = get_param_type(0)
value.is_a?(Array) and value.all? {|v| element_type_info.match?(v)}
when TypeTag::INTERFACE
interface.match?(value)
when TypeTag::GLIST,
TypeTag::GSLIST
element_type_info = get_param_type(0)
value.is_a?(Array) and value.all? {|v| element_type_info.match?(v)}
else
false
end
end
|