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.



2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
# File 'lib/HDLRuby/std/sequencer.rb', line 2162

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