class GObjectIntrospection::TypeInfo

Public Instance Methods

match?(value) click to toggle source
# File gobject-introspection/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
    # TODO
    false
  end
end