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.



1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
# File 'lib/HDLRuby/std/sequencer.rb', line 1756

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