Class Frame

java.lang.Object
org.apache.commons.jexl3.internal.Frame

public final class Frame extends Object
A call frame, created from a scope, stores the arguments and local variables in a "stack frame" (sic).
Since:
3.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final int
    Number of curried parameters.
    private final Scope
    The scope.
    private final Object[]
    The actual stack frame.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Frame(Scope s, Object[] r, int c)
    Creates a new frame.
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) Frame
    assign(Object... values)
    Assign values to this frame.
    (package private) Object
    get(int s)
    Gets a value.
    Gets the scope.
    Gets this script unbound parameters, i.e.
    (package private) boolean
    has(int s)
    Whether this frame defines a symbol, ie declared it and assigned it a value.
    (package private) Object[]
    Replace any instance of a closure in this stack by its (fuzzy encoded) offset in it.
    (package private) void
    set(int r, Object value)
    Sets a value.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • scope

      private final Scope scope
      The scope.
    • stack

      private final Object[] stack
      The actual stack frame.
    • curried

      private final int curried
      Number of curried parameters.
  • Constructor Details

    • Frame

      Frame(Scope s, Object[] r, int c)
      Creates a new frame.
      Parameters:
      s - the scope
      r - the stack frame
      c - the number of curried parameters
  • Method Details

    • nocycleStack

      Object[] nocycleStack(Closure closure)
      Replace any instance of a closure in this stack by its (fuzzy encoded) offset in it.

      This is to avoid the cyclic dependency between the closure and its frame stack that may point back to it that occur with recursive function definitions.

      Parameters:
      closure - the owning closure
      Returns:
      the cleaned-up stack or the stack itself (most of the time)
    • getUnboundParameters

      public String[] getUnboundParameters()
      Gets this script unbound parameters, i.e. parameters not bound through curry().
      Returns:
      the parameter names
    • getScope

      public Scope getScope()
      Gets the scope.
      Returns:
      this frame scope
    • get

      Object get(int s)
      Gets a value.
      Parameters:
      s - the offset in this frame
      Returns:
      the stacked value
    • has

      boolean has(int s)
      Whether this frame defines a symbol, ie declared it and assigned it a value.
      Parameters:
      s - the offset in this frame
      Returns:
      true if this symbol has been assigned a value, false otherwise
    • set

      void set(int r, Object value)
      Sets a value.
      Parameters:
      r - the offset in this frame
      value - the value to set in this frame
    • assign

      Frame assign(Object... values)
      Assign values to this frame.
      Parameters:
      values - the values
      Returns:
      this frame