class BOAST::Mask
Attributes
length[R]
pos_values[R]
value[R]
Public Class Methods
new( values, options = {} )
click to toggle source
# File lib/BOAST/Language/Operators.rb, line 350 def initialize( values, options = {} ) length = options[:length] if values.kind_of?(Mask) then raise OperatorError, "Wrong number of mask values (#{values.length} for #{length})!" if length and values.length and values.length != length @value = values.value @length = length ? length : values.length @pos_values = values.pos_values elsif values.kind_of?(Array) then raise OperatorError, "Wrong number of mask values (#{values.length} for #{length})!" if length and values.length != length s = "0x" s << values.collect { |v| v != 0 ? 1 : 0 }.reverse.join @value = Int( s, :signed => false, :size => values.length / 8 + ( values.length % 8 > 0 ? 1 : 0 ), :constant => s ) @length = values.length @pos_values = values.reject { |e| e == 0 }.length elsif values.kind_of?(Variable) and values.type.kind_of?(Int) then raise OperatorError, "Wrong mask size (#{values.type.size} for #{length / 8 + ( length % 8 > 0 ? 1 : 0 )})!" if length and values.type.size != length / 8 + ( length % 8 > 0 ? 1 : 0 ) @value = values @length = length if length else raise OperatorError, "Illegal valuess for mask (#{values.class}), expecting Array of Int!" end end
Public Instance Methods
empty?()
click to toggle source
# File lib/BOAST/Language/Operators.rb, line 334 def empty? if @pos_values then return @pos_values == 0 else return false end end
full?()
click to toggle source
# File lib/BOAST/Language/Operators.rb, line 342 def full? if @pos_values and @length return @pos_values == @length else return false end end
to_s()
click to toggle source
# File lib/BOAST/Language/Operators.rb, line 373 def to_s return @value.to_s end
to_var()
click to toggle source
# File lib/BOAST/Language/Operators.rb, line 377 def to_var return @value end