Package com.oracle.truffle.api.dsl

## Interface NodeFactory<T>

All Known Implementing Classes:
  `NodeFactoryBase`

    public interface NodeFactory<T>

Enables the dynamic creation of generated nodes. It provides an convenient way to instantiate generated node classes without using reflection.

### Method Summary

All Methods Instance Methods Abstract Methods
`T` `createNode​(java.lang.Object... arguments)` Instantiates the node using the arguments array.
`java.util.List<java.lang.Class<? extends Node>>` `getExecutionSignature()` Returns a list of children that will be executed by the created node.
`java.lang.Class<T>` `getNodeClass()` Returns the node class that will get created by `createNode(Object...)`.
`java.util.List<java.util.List<java.lang.Class<?>>>` `getNodeSignatures()` Returns a list of signatures that can be used to invoke `createNode(Object...)`.

### Method Detail

#### createNode

    T createNode​(java.lang.Object... arguments)

Instantiates the node using the arguments array. The arguments length and types must suffice one of the returned signatures in `getNodeSignatures()`. If the arguments array does not suffice one of the node signatures an `IllegalArgumentException` is thrown.

Parameters:
  `arguments` - the argument values
Returns:
  the instantiated node
Throws:
  `java.lang.IllegalArgumentException`

#### getNodeClass

    java.lang.Class<T> getNodeClass()

Returns the node class that will get created by `createNode(Object...)`. The node class does not match exactly to the instantiated object but they are guaranteed to be assignable.

#### getNodeSignatures

    java.util.List<java.util.List<java.lang.Class<?>>> getNodeSignatures()

Returns a list of signatures that can be used to invoke `createNode(Object...)`.

#### getExecutionSignature

    java.util.List<java.lang.Class<? extends Node>> getExecutionSignature()

Returns a list of children that will be executed by the created node. This is useful for base nodes that can execute a variable amount of nodes.