Module: Enumerable

Included in:
HDLRuby::High::HRef
Defined in:
lib/HDLRuby/std/sequencer.rb

Instance Method Summary collapse

Instance Method Details

#seach(&ruby_block) ⇒ Object

HW iteration on each element.



1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
# File 'lib/HDLRuby/std/sequencer.rb', line 1956

def seach(&ruby_block)
    # Convert the enumrable to an array for easier processing.
    ar = self.to_a
    return if ar.empty? # The array is empty, nothing to do.
    # Compute the type of the elements.
    typ = ar[0].respond_to?(:type) ? ar[0].type : signed[32]
    # Create the hardware iterator.
    hw_enum = SEnumeratorBase.new(typ,ar.size) do |idx|
        HDLRuby::High.top_user.mux(idx,*ar)
    end
    # Is there a ruby block?
    if(ruby_block) then
        # Yes, apply it.
        return hw_enum.seach(&ruby_block)
    else
        # No, return the resulting enumerator.
        return hw_enum
    end
end