MemorySourceMemoryDeque

class Deque

A double-ended queue implementation optimized for memory profiling. Stores items in segments to reduce memory reallocation overhead.

Definitions

def initialize

Initialize a new empty deque.

Implementation

def initialize
	@segments = []
	@last = nil
end

def freeze

Freeze this deque and all its segments.

Signature

returns Deque

Self.

Implementation

def freeze
	return self if frozen?
	
	@segments.each(&:freeze)
	@last = nil
	
	super
end

def concat(segment)

Concatenate an array segment to this deque.

Signature

parameter segment Array

The segment to append.

returns Deque

Self.

Implementation

def concat(segment)
	@segments << segment
	@last = nil
	
	return self
end

def <<(item)

Append an item to this deque.

Signature

parameter item Object

The item to append.

returns Deque

Self.

Implementation

def << item
	unless @last
		@last = []
		@segments << @last
	end
	
	@last << item
	
	return self
end

def each(&block)

Iterate over all items in the deque.

Signature

parameter block Block

The block to yield each item to.

Implementation

def each(&block)
	@segments.each do |segment|
		segment.each(&block)
	end
end

def size

Get the total number of items in the deque.

Signature

returns Integer

The total number of items across all segments.

Implementation

def size
	@segments.sum(&:size)
end