# class Reline::KillRing::RingBuffer

### Attributes

head[R]
size[R]

### Public Class Methods

new(max = 1024) click to toggle source

    # File lib/reline/kill_ring.rb, line 25
    def initialize(max = 1024)
      @max = max
      @size = 0
      @head = nil # reading head of ring-shaped tape
    end

### Public Instance Methods

<<(point) click to toggle source

    # File lib/reline/kill_ring.rb, line 31
    def <<(point)
      if @size.zero?
        @head = point
        @head.backward = @head
        @head.forward = @head
        @size = 1
      elsif @size >= @max
        tail = @head.forward
        new_tail = tail.forward
        @head.forward = point
        point.backward = @head
        new_tail.backward = point
        point.forward = new_tail
        @head = point
      else
        tail = @head.forward
        @head.forward = point
        point.backward = @head
        tail.backward = point
        point.forward = tail
        @head = point
        @size += 1
      end
    end

empty?() click to toggle source

    # File lib/reline/kill_ring.rb, line 56
    def empty?
      @size.zero?
    end