class PEROBS::SpaceTreeNodeLink

This class is used to form the links between the in-memory SpaceTreeNode objects. The link is based on the address of the node in the file. The class objects transparently convert the address into a corresponding SpaceTreeNode object and pass on all method calls.

Attributes

node_address[R]

Public Class Methods

new(tree, node_or_address) click to toggle source

Create a new SpaceTreeNodeLink object. @param tree [SpaceTree] The SpaceTree that holds the nodes. @param node_or_address [SpaceTreeNode or SpaceTreeNodeLink or Integer] a

SpaceTreeNode, SpaceTreeNodeLink reference or the node
address in the file.
# File lib/perobs/SpaceTreeNodeLink.rb, line 43
def initialize(tree, node_or_address)
  @tree = tree
  if node_or_address.is_a?(SpaceTreeNode) ||
     node_or_address.is_a?(SpaceTreeNodeLink)
    @node_address = node_or_address.node_address
  elsif node_or_address.is_a?(Integer)
    @node_address = node_or_address
  else
    PEROBS.log.fatal "Unsupported argument type #{node_or_address.class}"
  end
end

Public Instance Methods

!=(node) click to toggle source

Compare this node to another node. @return [Boolean] true if node address is not identical, false otherwise

# File lib/perobs/SpaceTreeNodeLink.rb, line 74
def !=(node)
  @node_address != node.node_address
end
==(node) click to toggle source

Compare this node to another node. @return [Boolean] true if node address is identical, false otherwise

# File lib/perobs/SpaceTreeNodeLink.rb, line 68
def ==(node)
  @node_address == node.node_address
end
method_missing(method, *args, &block) click to toggle source

All calls to a SpaceTreeNodeLink object will be forwarded to the corresponding SpaceTreeNode object. If that

# File lib/perobs/SpaceTreeNodeLink.rb, line 57
def method_missing(method, *args, &block)
  get_node.send(method, *args, &block)
end
respond_to?(method, include_private = false) click to toggle source

Make it properly introspectable.

# File lib/perobs/SpaceTreeNodeLink.rb, line 62
def respond_to?(method, include_private = false)
  get_node.respond_to?(method)
end
to_s() click to toggle source

@return Textual version of the SpaceTreeNode

# File lib/perobs/SpaceTreeNodeLink.rb, line 90
def to_s
  get_node.to_s
end

Private Instance Methods

get_node() click to toggle source
# File lib/perobs/SpaceTreeNodeLink.rb, line 96
def get_node
  @tree.cache.get(@node_address)
end