HEX
Server: Apache
System: Linux hp3-stn-1011028.hostingp3.local 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: csh958633 (951153)
PHP: 8.3.30
Disabled: shell_exec,exec,system,popen,set_time_limit
Upload Files
File: //usr/share/ruby/vendor_ruby/puppet/pops/binder/injector_entry.rb
# Represents an entry in the injectors internal data.
#
# @api public
#
class Puppet::Pops::Binder::InjectorEntry
  # @return [Object] An opaque (comparable) object representing the precedence
  # @api public
  attr_reader :precedence

  # @return [Puppet::Pops::Binder::Bindings::Binding] The binding for this entry
  # @api public
  attr_reader :binding

  # @api private
  attr_accessor :resolved

  # @api private
  attr_accessor :cached_producer

  # @api private
  def initialize(binding, precedence = 0)
    @precedence = precedence.freeze
    @binding = binding
    @cached_producer = nil
  end

  # Marks an overriding entry as resolved (if not an overriding entry, the marking has no effect).
  # @api private
  #
  def mark_override_resolved()
    @resolved = true
  end

  # The binding is resolved if it is non-override, or if the override has been resolved
  # @api private
  #
  def is_resolved?()
    !binding.override || resolved
  end

  def is_abstract?
    binding.abstract
  end

  def is_final?
    binding.final
  end

  # Compares against another InjectorEntry by comparing precedence.
  # @param injector_entry [InjectorEntry] entry to compare against.
  # @return [Integer] 1, if this entry has higher precedence, 0 if equal, and -1 if given entry has higher precedence.
  # @api public
  #
  def <=> (injector_entry)
    precedence <=> injector_entry.precedence
  end
end