# SearchExpressionEvaluationHints

> Hints provided to the SearchExpression runtime to specify how a certain SearchExpressionEvaluatorAttribute should be executed.

## Definition

* **Type:** Enum
* **Namespace:** [UnityEditor.Search](/engine/6000.6/script-reference/unityeditor/search.md)
* **Assembly:** UnityEditor

```csharp
[Flags]
public enum SearchExpressionEvaluationHints
```

## Remarks

Here is an example of an evaluator not supporting thread evaluation:

## Examples

```csharp
[Description("Returns asset paths corresponding to a list of instance ids")]
[SearchExpressionEvaluator("IdsToPaths", SearchExpressionEvaluationHints.ThreadNotSupported, SearchExpressionType.Iterable)]
public static IEnumerable<SearchItem> IdsToPath(SearchExpressionContext c)
{
    foreach (var idItem in c.args[0].Execute(c))
    {
        if (SearchExpression.TryConvertToULong(idItem, out var idNum))
        {
            var id = UnsafeUtility.As<ulong, EntityId>(ref idNum);
            var path = AssetDatabase.GetAssetPath(id);
            if (!string.IsNullOrEmpty(path))
            {
                yield return SearchExpression.CreateItem(path, c.ResolveAlias("asset path"));
            }
        }
    }
}
```

## Fields

| Value                                                                                                                                          | Description                                                                                                                                                                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AlwaysExpand](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/alwaysexpand.md)                             | Wehn evaluating a [SearchExpression](/engine/6000.6/script-reference/unityeditor/search/searchexpression.md) signifies that each ielded items could be another [SearchExpression](/engine/6000.6/script-reference/unityeditor/search/searchexpression.md) that needs evaluation.                                                    |
| [Default](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/default.md)                                       | Default evaluation hints. Currently Default is that thread evaluation is supported ([SearchExpressionEvaluationHints.ThreadSupported](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/threadsupported.md)).                                                                                      |
| [DoNotValidateArgsSignature](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/donotvalidateargssignature.md) | Specifies that the evaluator signature shouldn't be validated by the [SearchExpression](/engine/6000.6/script-reference/unityeditor/search/searchexpression.md) runtime thus allowing any number of parameters with any types to be passed to the evaluator. It becomes the job of the evaluator itself to validate its parameters. |
| [DoNotValidateSignature](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/donotvalidatesignature.md)         | Specifies that the parameters of a SearchExpression shouldn't have their signature be validated. This is used mostly for meta programming evaluator lile apply\{} where partial evaluator can be used as parameter.                                                                                                                 |
| [ExpandSupported](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/expandsupported.md)                       | Specifies that an evaluator might return SearchItem containing [SearchExpression](/engine/6000.6/script-reference/unityeditor/search/searchexpression.md) that supports expansin like groupBy\{}.                                                                                                                                   |
| [ImplicitArgsLiterals](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/implicitargsliterals.md)             | Specifies that an evaluator assumes its arguments are literal and will be used as such.                                                                                                                                                                                                                                             |
| [ThreadNotSupported](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/threadnotsupported.md)                 | Specifies that an evaluator does not support worker thread evaluation and should only be evaluated in the main thread. This could be the case if an evaluator is using non-tread safe Unity API (like [AssetDatabase](/engine/6000.6/script-reference/unityeditor/assetdatabase.md)).                                               |
| [ThreadSupported](/engine/6000.6/script-reference/unityeditor/search/searchexpressionevaluationhints/threadsupported.md)                       | Specifies that an evaluator supports being evaluated in a worker thread (that is not the main thread). This is the default evaluation hint.                                                                                                                                                                                         |
