Package sleep.bridges
Class SleepClosure
- java.lang.Object
-
- sleep.bridges.SleepClosure
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Runnable
,Function
public class SleepClosure extends java.lang.Object implements Function, java.lang.Runnable
The Sleep Closure class. This class represents a Function object that is also a self contained closure- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description SleepClosure(ScriptInstance si, Block _code)
Creates a new Sleep Closure, with a brand new set of internal variables.SleepClosure(ScriptInstance si, Block _code, Variable _var)
Creates a new Sleep Closure that uses the specified variable container for its internal variables
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Scalar
callClosure(java.lang.String message, ScriptInstance si, java.util.Stack locals)
"Safely" calls this closure.Scalar
evaluate(java.lang.String message, ScriptInstance si, java.util.Stack locals)
Evaluates the closure, use callClosure instead.java.lang.Object
getAndRemoveMetadata(java.lang.Object key, java.lang.Object defaultv)
obtain a key from the metadata store associated with this closureScriptInstance
getOwner()
Returns the owning script instanceBlock
getRunnableCode()
Returns the runnable block of code associated with this closureVariable
getVariables()
Returns the variable container for this closuresvoid
putMetadata(java.lang.Object key, java.lang.Object value)
put some value into the metadata store associated with this closure.void
run()
"Safely" calls this closure.java.util.Iterator
scalarIterator()
void
setVariables(Variable _variables)
Sets the variable environment for this closurejava.lang.String
toString()
Information about this closure in the form of &closure[: ]# java.lang.String
toStringGeneric()
Returns a generic string version of this closure without id information
-
-
-
Constructor Detail
-
SleepClosure
public SleepClosure(ScriptInstance si, Block _code)
Creates a new Sleep Closure, with a brand new set of internal variables. Don't be afraid, you can call this constructor from your code.
-
SleepClosure
public SleepClosure(ScriptInstance si, Block _code, Variable _var)
Creates a new Sleep Closure that uses the specified variable container for its internal variables
-
-
Method Detail
-
scalarIterator
public java.util.Iterator scalarIterator()
-
putMetadata
public void putMetadata(java.lang.Object key, java.lang.Object value)
put some value into the metadata store associated with this closure.
-
getAndRemoveMetadata
public java.lang.Object getAndRemoveMetadata(java.lang.Object key, java.lang.Object defaultv)
obtain a key from the metadata store associated with this closure
-
toStringGeneric
public java.lang.String toStringGeneric()
Returns a generic string version of this closure without id information
-
toString
public java.lang.String toString()
Information about this closure in the form of &closure[: ]# - Overrides:
toString
in classjava.lang.Object
-
getOwner
public ScriptInstance getOwner()
Returns the owning script instance
-
getRunnableCode
public Block getRunnableCode()
Returns the runnable block of code associated with this closure
-
getVariables
public Variable getVariables()
Returns the variable container for this closures
-
setVariables
public void setVariables(Variable _variables)
Sets the variable environment for this closure
-
run
public void run()
"Safely" calls this closure.- Specified by:
run
in interfacejava.lang.Runnable
-
callClosure
public Scalar callClosure(java.lang.String message, ScriptInstance si, java.util.Stack locals)
"Safely" calls this closure. Use this if you are evaluating this closure from your own code.- Parameters:
message
- the message to pass to this closure (available as $0)the
- calling script instance (null value assumes same as owner)the
- local data as a stack object (available as $1 .. $n)- Returns:
- the scalar returned by this closure
-
evaluate
public Scalar evaluate(java.lang.String message, ScriptInstance si, java.util.Stack locals)
Evaluates the closure, use callClosure instead.- Specified by:
evaluate
in interfaceFunction
- Parameters:
message
- the function being called.si
- an instance of the script calling this function.locals
- a stack containing the locals passed to this function. The locals are Scalar values passed in reverse order i.e. [arg n, arg n-1, ..., arg 1, arg 0]- Returns:
- an instance of Scalar containing the return value of this function.
- See Also:
SleepUtils.runCode(Function, String, ScriptInstance, Stack)
-
-