## Evaluate

### Description

The Evaluate callback is where a custom ICENode performs the main computation. The Evaluate callback uses the ICENodeContext object to get the input and output port data.

Note | The user data stored in BeginEvaluate or Init is always accessible from the Evaluate callback. However, unless the custom node threading mode is single-threading, the Context::PutUserData property cannot be used from the Evaluate callback.

### Applies To

Custom ICENodes

### Syntax

    CStatus <icenode_name>_Evaluate( CRef& in_context )
    {
            ...
    }

<icenode_name> is the name specified in the call to PluginRegistrar::RegisterICENode, with any spaces converted to underscores.

### Parameters

Parameter | Language | Type | Description
--- | --- | --- | ---
in_context | C++ | CRef& | A reference to the ICENodeContext object. Context::GetSource returns the ICENode.

### See Also

- EndEvaluate
- Evaluate
- Init (ICE Nodes)
- SubmitEvaluationPhaseInfo
- ICE Node Callbacks