class Wongi::Engine::AlphaMemory

Attributes

betas[R]
rete[R]
template[R]

Public Class Methods

new(template, rete = nil) click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 7
def initialize template, rete = nil
  @template = template
  @rete = rete
  @betas = []
  @wmes = []
  @frozen = false
end

Public Instance Methods

activate(wme) click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 15
def activate wme
  wme.overlay.add_wme(wme, self)
  # TODO: it used to activate before adding to the list. mandated by the original thesis. investigate. it appears to create duplicate tokens - needs a remedy in collecting nodes
  betas.each do |beta|
    beta.alpha_activate wme
  end
end
deactivate(wme) click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 23
def deactivate wme
  wme.overlay.remove_wme(wme, self)
  betas.each do |beta|
    beta.alpha_deactivate wme
  end
end
inspect() click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 36
def inspect
  "<Alpha #{__id__} template=#{template}>"
end
size() click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 44
def size
  wmes.count
end
snapshot!(alpha) click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 30
def snapshot! alpha
  alpha.wmes.map( &:dup ).each do |wme|
    activate wme
  end
end
to_s() click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 40
def to_s
  inspect
end
wmes() click to toggle source
# File lib/wongi-engine/alpha_memory.rb, line 48
def wmes
  Enumerator.new do |y|
    rete.overlays.each do |overlay|
      overlay.raw_wmes(self).dup.each do |wme|
        y << wme
      end
    end
  end
end