final class OperatorNode<T extends Operator> extends Object
The extension point of this scheme is the Operator rather than new types of Nodes.
Operators SHOULD take a fixed number of arguments -- wrap variable argument counts in Lists.
Modifier and Type | Field and Description |
---|---|
private Map<String,Object> |
annotations |
private Object[] |
args |
private static com.google.common.base.Function<Object,Object> |
COPY |
private static Object[] |
EMPTY_ARGS |
private Location |
location |
private T |
operator |
Modifier | Constructor and Description |
---|---|
private |
OperatorNode(Location loc,
Map<String,Object> annotations,
T operator,
Object... args) |
private |
OperatorNode(Location loc,
T operator,
Object... args) |
private |
OperatorNode(T operator,
Object... args) |
Modifier and Type | Method and Description |
---|---|
OperatorNode<T> |
copy() |
static <T extends Operator> |
create(Location loc,
Map<String,Object> annotations,
T operator,
Object... args) |
static <T extends Operator> |
create(Location loc,
T operator,
Object... args) |
static <T extends Operator> |
create(T operator,
Object... args) |
boolean |
equals(Object o) |
Object |
getAnnotation(String name) |
Map<String,Object> |
getAnnotations() |
<T> T |
getArgument(int i) |
<T> T |
getArgument(int i,
Class<T> clazz) |
Object[] |
getArguments() |
Location |
getLocation() |
T |
getOperator() |
int |
hashCode() |
OperatorNode<T> |
putAnnotation(String name,
Object value) |
String |
toString() |
void |
toString(StringBuilder output) |
OperatorNode<T> |
transform(com.google.common.base.Function<Object,Object> argumentTransform) |
void |
visit(OperatorVisitor visitor) |
private static final Object[] EMPTY_ARGS
private final Location location
private final Object[] args
public static <T extends Operator> OperatorNode<T> create(T operator, Object... args)
public static <T extends Operator> OperatorNode<T> create(Location loc, T operator, Object... args)
public static <T extends Operator> OperatorNode<T> create(Location loc, Map<String,Object> annotations, T operator, Object... args)
public T getOperator()
public Object[] getArguments()
public <T> T getArgument(int i)
public <T> T getArgument(int i, Class<T> clazz)
public Location getLocation()
public OperatorNode<T> putAnnotation(String name, Object value)
public OperatorNode<T> transform(com.google.common.base.Function<Object,Object> argumentTransform)
public void visit(OperatorVisitor visitor)
public OperatorNode<T> copy()
public void toString(StringBuilder output)
Copyright © 2017. All rights reserved.