[TOC]

# fidl.test.arrays




## **STRUCTS**

### StructLargeArray {#StructLargeArray}
*Defined in [fidl.test.arrays/arrays.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/arrays.test.fidl#7)*



<table>
    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="StructLargeArray.a">
            <td><code>a</code></td>
            <td>
                <code>uint32[100]</code>
            </td>
            <td></td>
            <td>No default</td>
        </tr>
</table>

### StructSmallArray {#StructSmallArray}
*Defined in [fidl.test.arrays/arrays.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/arrays.test.fidl#3)*



<table>
    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="StructSmallArray.a">
            <td><code>a</code></td>
            <td>
                <code>uint32[2]</code>
            </td>
            <td></td>
            <td>No default</td>
        </tr>
</table>





## **TABLES**

### TableLargeArray {#TableLargeArray}


*Defined in [fidl.test.arrays/arrays.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/arrays.test.fidl#15)*



<table>
    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
    <tr id="TableLargeArray.a">
            <td>1</td>
            <td><code>a</code></td>
            <td>
                <code>uint32[100]</code>
            </td>
            <td></td>
        </tr></table>

### TableSmallArray {#TableSmallArray}


*Defined in [fidl.test.arrays/arrays.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/arrays.test.fidl#11)*



<table>
    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
    <tr id="TableSmallArray.a">
            <td>1</td>
            <td><code>a</code></td>
            <td>
                <code>uint32[2]</code>
            </td>
            <td></td>
        </tr></table>



## **UNIONS**

### UnionLargeArray {#UnionLargeArray}
*Defined in [fidl.test.arrays/arrays.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/arrays.test.fidl#23)*


<table>
    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr id="UnionLargeArray.a">
            <td><code>a</code></td>
            <td>
                <code>uint32[100]</code>
            </td>
            <td></td>
        </tr></table>

### UnionSmallArray {#UnionSmallArray}
*Defined in [fidl.test.arrays/arrays.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/arrays.test.fidl#19)*


<table>
    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr id="UnionSmallArray.a">
            <td><code>a</code></td>
            <td>
                <code>uint32[2]</code>
            </td>
            <td></td>
        </tr></table>







