lib/solargraph/api_map/cache.rb



# frozen_string_literal: true


module Solargraph
  class ApiMap
    class Cache
      def initialize
        @methods = {}
        @constants = {}
        @qualified_namespaces = {}
        @receiver_definitions = {}
      end

      def get_methods fqns, scope, visibility, deep
        @methods[[fqns, scope, visibility.sort, deep]]
      end

      def set_methods fqns, scope, visibility, deep, value
        @methods[[fqns, scope, visibility.sort, deep]] = value
      end

      def get_constants namespace, context
        @constants[[namespace, context]]
      end

      def set_constants namespace, context, value
        @constants[[namespace, context]] = value
      end

      def get_qualified_namespace name, context
        @qualified_namespaces[[name, context]]
      end

      def set_qualified_namespace name, context, value
        @qualified_namespaces[[name, context]] = value
      end

      def receiver_defined? path
        @receiver_definitions.key? path
      end

      def get_receiver_definition path
        @receiver_definitions[path]
      end

      def set_receiver_definition path, pin
        @receiver_definitions[path] = pin
      end

      # @return [void]

      def clear
        @methods.clear
        @constants.clear
        @qualified_namespaces.clear
        @receiver_definitions.clear
      end

      # @return [Boolean]

      def empty?
        @methods.empty? &&
          @constants.empty? &&
          @qualified_namespaces.empty? &&
          @receiver_definitions.empty?
      end
    end
  end
end