class Ikra::Symbolic::StencilSingleInput

Attributes

offsets[R]
out_of_bounds_value[R]

Public Class Methods

new(command:, pattern:, offsets:, out_of_bounds_value:) click to toggle source
Calls superclass method Ikra::Symbolic::Input::new
# File lib/symbolic/input.rb, line 65
def initialize(command:, pattern:, offsets:, out_of_bounds_value:)
    super(pattern: pattern)

    @command = command
    @offsets = offsets
    @out_of_bounds_value = out_of_bounds_value
end

Public Instance Methods

==(other) click to toggle source
Calls superclass method Ikra::Symbolic::Input#==
# File lib/symbolic/input.rb, line 73
def ==(other)
    return super(other) && 
        offsets == other.offsets &&
        out_of_bounds_value == other.out_of_bounds_value
end
accept(visitor) click to toggle source
# File lib/symbolic/input_visitor.rb, line 25
def accept(visitor)
    visitor.visit_stencil_single_input(self, pattern: pattern)
end
get_parameters(parent_command:, start_eat_params_offset: 0) click to toggle source
# File lib/types/inference/input_inference.rb, line 42
def get_parameters(parent_command:, start_eat_params_offset: 0)
    # Pass separate parameters

    # Count number of parameters
    num_parameters = parent_command.offsets.size

    # Take return type from previous computation
    parameters = []
    for index in start_eat_params_offset...(start_eat_params_offset + num_parameters)
        parameters.push(Translator::Variable.new(
            name: parent_command.block_parameter_names[index],
            type: command.result_type))
    end

    return parameters
end
translate_input(parent_command:, command_translator:, start_eat_params_offset: 0) click to toggle source
# File lib/translator/input_translator.rb, line 91
def translate_input(parent_command:, command_translator:, start_eat_params_offset: 0)
    # Pass separate parameters

    # Translate input using visitor
    input_command_translation_result = command_translator.translate_input(self)

    # Count number of parameters
    num_parameters = parent_command.offsets.size

    # Take return type from previous computation
    parameters = []
    for index in start_eat_params_offset...(start_eat_params_offset + num_parameters)
        parameters.push(Translator::Variable.new(
            name: parent_command.block_parameter_names[index],
            type: input_command_translation_result.result_type))
    end

    return Translator::InputTranslationResult.new(
        parameters: parameters,
        command_translation_result: input_command_translation_result)
end