Sha256: 74f91a17380eb5f611d986f67d058a694d12563645f8fdbb21409477809e9dfc

Contents?: true

Size: 1.68 KB

Versions: 41

Compression:

Stored size: 1.68 KB

Contents

# Copyright (C) 2015-2019  Ruby-GNOME Project Team
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

module GObjectIntrospection
  class ArgInfo
    def gclosure?
      @gclosure_p ||= nil
      return @gclosure_p unless @gclosure_p.nil?
      @gclosure_p = compute_gclosure?
    end

    def signature
      sig = "#{name}:"
      sig << " (optional)" if optional?
      sig << " (may be null)" if may_be_null?
      sig << " (caller allocates)" if caller_allocates?
      sig << " #{type.description}"
      sig
    end

    def inspect
      super.gsub(/>\z/) do
        " name=#{name.inspect}" +
          " optional?=#{optional?.inspect}" +
          " may_be_null?=#{may_be_null?.inspect}" +
          " caller_allocates?=#{caller_allocates?.inspect}" +
          " type=#{type.inspect}>"
      end
    end

    private
    def compute_gclosure?
      type_info = type
      return false if type_info.tag != TypeTag::INTERFACE

      struct_info = type_info.interface
      struct_info.gtype.name == "GClosure"
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
gobject-introspection-4.2.7 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.6 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.5 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.4 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.3 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.2 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.1 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.2.0 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.9 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.8 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.7 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.6 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.5 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.4 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.3 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.2 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.1 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.1.0 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.0.9 lib/gobject-introspection/arg-info.rb
gobject-introspection-4.0.8 lib/gobject-introspection/arg-info.rb