# Class RandomJELEvaluator

java.lang.Object
uk.ac.starlink.ttools.jel.RandomJELEvaluator

All Implemented Interfaces:
  `Closeable, AutoCloseable`

public abstract class RandomJELEvaluator extends Object implements Closeable
Random-access evaluator for JEL expressions evaluated against tables.

Since:
  11 Dec 2020
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`RandomJELEvaluator()`

## Method Summary

Modifier and Type
Method
Description
`static RandomJELEvaluator`
`createEvaluator(uk.ac.starlink.table.StarTable table, String expr, boolean isConcurrent)`
Returns a RandomJELEvaluator instance for a given table and expression.
`static Supplier<RandomJELEvaluator>`
`createEvaluatorSupplier(uk.ac.starlink.table.StarTable table, String expr)`
Returns a supplier for evaluators.
`abstract boolean`
`evaluateBoolean(long lrow)`
Returns the value of the expression at a given table row as a boolean.
`abstract double`
`evaluateDouble(long lrow)`
Returns the value of the expression at a given table row as a double.
`abstract Object`
`evaluateObject(long lrow)`
Returns the value of the expression at a given table row as an Object.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface Closeable

`close`

## Constructor Details

### RandomJELEvaluator

public RandomJELEvaluator()

## Method Details

### evaluateObject

public abstract Object evaluateObject(long lrow) throws IOException
Returns the value of the expression at a given table row as an Object.

Parameters:
  `lrow` - evaluation row index
Returns:
  object value at given row
Throws:
  `IOException`

### evaluateDouble

public abstract double evaluateDouble(long lrow) throws IOException
Returns the value of the expression at a given table row as a double. Behaviour is undefined if the expression is not numeric.

Parameters:
  `lrow` - evaluation row index
Returns:
  numeric value at given row
Throws:
  `IOException`

### evaluateBoolean

public abstract boolean evaluateBoolean(long lrow) throws IOException
Returns the value of the expression at a given table row as a boolean. Behaviour is undefined if the expression is not boolean-typed.

Parameters:
  `lrow` - evaluation row index
Returns:
  boolean value at given row
Throws:
  `IOException`

### createEvaluatorSupplier

public static Supplier<RandomJELEvaluator> createEvaluatorSupplier(uk.ac.starlink.table.StarTable table, String expr) throws gnu.jel.CompilationException
Returns a supplier for evaluators. The evaluators returned by the supplier are not safe for concurrent use.

Parameters:
  `table` - context for expression evaluation
  `expr` - JEL expression
Returns:
  supplier of non-thread-safe evaluators
Throws:
  `gnu.jel.CompilationException`

### createEvaluator

public static RandomJELEvaluator createEvaluator(uk.ac.starlink.table.StarTable table, String expr, boolean isConcurrent) throws gnu.jel.CompilationException
Returns a RandomJELEvaluator instance for a given table and expression. The returned implementation may or may not be suitable for use from multiple threads concurrently, depending on the `isConcurrent` parameter.

Parameters:
  `table` - context for expression evaluation
  `expr` - JEL expression
  `isConcurrent` - whether result will be suitable for concurrent use
Returns:
  evaluator, which is only guaranteed safe for concurrent use if `isConcurrent` was set true
Throws:
  `gnu.jel.CompilationException`