class ADSL::Parser::ASTTypecheckResolveContext::ASTStackFrame

Attributes

var_read_listeners[RW]
var_write_listeners[RW]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/adsl/parser/ast_nodes.rb, line 349
def initialize
  super
  @var_write_listeners = []
  @var_read_listeners = []
end

Public Instance Methods

clone() click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 389
def clone
  dup
end
dup() click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 379
def dup
  other = ASTStackFrame.new
  self.each do |key, val|
    other[key] = val.dup
  end
  other.var_write_listeners = @var_write_listeners.dup
  other.var_read_listeners = @var_read_listeners.dup
  other
end
fire_read_event(name) click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 372
def fire_read_event(name)
  listeners = @var_read_listeners
  listeners.each do |listener|
    listener.call name
  end
end
fire_write_event(name) click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 365
def fire_write_event(name)
  listeners = @var_write_listeners
  listeners.each do |listener|
    listener.call name
  end
end
on_var_read(&block) click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 355
def on_var_read(&block)
  listeners = @var_read_listeners
  listeners.push block
end
on_var_write(&block) click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 360
def on_var_write(&block)
  listeners = @var_write_listeners
  listeners.push block
end