Parent

Class/Module Index [+]

Quicksearch

AMQ::BitSet

Very minimalistic, pure Ruby implementation of bit set. Inspired by java.util.BitSet, although significantly smaller in scope.

Originally part of amqp gem. Extracted to make it possible for Bunny to use it.

Public Class Methods

new(nbits) click to toggle source

@param [Integer] Number of bits in the set @api public

# File lib/amq/bit_set.rb, line 19
def initialize(nbits)
  @nbits = nbits

  self.init_words(nbits)
end

Public Instance Methods

[](i) click to toggle source
Alias for: get
clear() click to toggle source

Clears all bits in the set @api public

# File lib/amq/bit_set.rb, line 59
def clear
  self.init_words(@nbits)
end
get(i) click to toggle source

Fetches flag value for given bit.

@param [Integer] A bit to fetch @return [Boolean] true if given bit is set, false otherwise @api public

# File lib/amq/bit_set.rb, line 39
def get(i)
  w = self.word_index(i)

  (@words[w] & (1 << i)) != 0
end
Also aliased as: []
set(i) click to toggle source

Sets (flags) given bit. This method allows bits to be set more than once in a row, no exception will be raised.

@param [Integer] A bit to set @api public

# File lib/amq/bit_set.rb, line 29
def set(i)
  w = self.word_index(i)
  @words[w] |= (1 << i)
end
unset(i) click to toggle source

Unsets (unflags) given bit. This method allows bits to be unset more than once in a row, no exception will be raised.

@param [Integer] A bit to unset @api public

# File lib/amq/bit_set.rb, line 50
def unset(i)
  w = self.word_index(i)
  return if w.nil?

  @words[w] &= ~(1 << i)
end

Protected Instance Methods

init_words(nbits) click to toggle source

@private

# File lib/amq/bit_set.rb, line 71
def init_words(nbits)
  n      = word_index(nbits-1) + 1
  @words = Array.new(n) { 1 }
end
word_index(i) click to toggle source

@private

# File lib/amq/bit_set.rb, line 77
def word_index(i)
  i >> ADDRESS_BITS_PER_WORD
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.