# Name Conventions Reference

Structs definition names have certain requirements and optional conventions, unless otherwise indicated.

Names are limited to **128 characters** and may not include the following reserved characters:

- `&` (ampersand)
- `!` (excalamation point)
- `?` (question mark)
- `$` (dollar sign)
- `:` (colon)
- `;` (semicolon)
- `#` (number symbol)
- `*` (asteriks)
- `@` (at symbol)
- `,` (comma)
- `(` (open parentheses)
- `)` (close parentheses)
- `{` (open brace)
- `}` (close brace)

In cases where names are used by API actions to lookup definitions, the `@` character may be used to indicate an external ID instead of a plain name.

For matching purposes names are **case insensitive** and **normalized** with any leading/trailing whitespace removed and any internal whitespace represented by a single underscore character. For example:

```
"v_mon" = "V  Mon" = " V MON "
```

XINA tools will interpret the period character (`.`) to indicate a tree structure relationship, and brackets (`[]`) to indicate an array of values. This is entirely presentational, not functional.

For example, the set of names: 

```
foo.bar
foo.baz.bit
foo.arr[0]
foo.arr[1]
foo.arr[2]
```

Would be displayed as:

- `foo`
  - `bar`
  - `baz`
    - `bit`
  - `arr[]`
    - `arr[0]`
    - `arr[1]`
    - `arr[2]`

This is not required but highly recommended to improve organization in large namespaces.