lib/nydp/context_symbol.rb in nydp-0.0.6 vs lib/nydp/context_symbol.rb in nydp-0.0.7
- old
+ new
@@ -1,22 +1,54 @@
module Nydp
+ class ContextLookup0 ; def self.get_context ctx; ctx; end; end
+ class ContextLookup1 ; def self.get_context ctx; ctx.parent; end; end
+ class ContextLookup2 ; def self.get_context ctx; ctx.parent.parent; end; end
+ class ContextLookup3 ; def self.get_context ctx; ctx.parent.parent.parent; end; end
+ class ContextLookup4 ; def self.get_context ctx; ctx.parent.parent.parent.parent; end; end
+ class ContextLookup5 ; def self.get_context ctx; ctx.parent.parent.parent.parent.parent; end; end
+ class ContextLookup6 ; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup7 ; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup8 ; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup9 ; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup10; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup11; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup12; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup13; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup14; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup15; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup16; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup17; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookup18; def self.get_context ctx; ctx.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; end; end
+ class ContextLookupN
+ def initialize depth ; @depth = depth ; end
+ def get_context ctx ; ctx.nth(@depth) ; end
+ end
+
class ContextSymbol
- attr_accessor :depth, :name
+ attr_accessor :depth, :name, :binding_index
- def initialize depth, name
- @depth, @name = depth, name
+ def initialize depth, name, binding_index
+ @ctx_lookup = build_lookup depth
+ @depth, @name, @binding_index = depth, name, binding_index
end
+ def get_context(context); @ctx_lookup.get_context context; end
+
def value context
- context.nth(depth).at(name)
+ get_context(context).at_index(binding_index)
end
def assign value, context
- context.nth(depth).set(name, value)
+ get_context(context).set_index(binding_index, value)
end
def inspect; to_s; end
def to_s
- "[#{depth}]#{name}"
+ "[#{depth}##{binding_index}]#{name}"
+ end
+
+ def build_lookup depth
+ fast = Nydp.const_get "ContextLookup#{depth}" rescue nil
+ return fast || ContextLookupN.new(depth)
end
end
end