[TOC]

# fidl.test.placementofattributes


## **PROTOCOLS**

## ExampleProtocol {#ExampleProtocol}
*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=22)*


### Method {#fidl.test.placementofattributes/ExampleProtocol.Method}


#### Request
<table>
    <tr><th>Name</th><th>Type</th></tr>
    <tr>
            <td><code>arg</code></td>
            <td>
                <code><a class='link' href='../exampleusing/'>exampleusing</a>/<a class='link' href='../exampleusing/#Empty'>Empty</a></code>
            </td>
        </tr></table>





## **STRUCTS**

### ExampleStruct {#ExampleStruct}
*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=28)*



<table>
    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="ExampleStruct.member">
            <td><code>member</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td></td>
            <td>No default</td>
        </tr>
</table>



## **ENUMS**

### ExampleEnum {#ExampleEnum}
Type: <code>uint32</code>

*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=16)*



<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="ExampleEnum.MEMBER">
            <td><code>MEMBER</code></td>
            <td><code>1</code></td>
            <td></td>
        </tr></table>



## **TABLES**

### ExampleTable {#ExampleTable}


*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=34)*



<table>
    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
    <tr id="ExampleTable.member">
            <td>1</td>
            <td><code>member</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td></td>
        </tr></table>



## **UNIONS**

### ExampleUnion {#ExampleUnion}
*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=43)*


<table>
    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr id="ExampleUnion.variant">
            <td><code>variant</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td></td>
        </tr></table>

### ExampleXUnion {#ExampleXUnion}
*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=49)*


<table>
    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr id="ExampleXUnion.variant">
            <td><code>variant</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td></td>
        </tr></table>



## **BITS**

### ExampleBits {#ExampleBits}
Type: <code>uint32</code>

*Defined in [fidl.test.placementofattributes/example.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=7)*



<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="ExampleBits.MEMBER">
            <td>MEMBER</td>
            <td>1</td>
            <td></td>
        </tr></table>



## **CONSTANTS**

<table>
    <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr><tr id="EXAMPLE_CONST">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=13">EXAMPLE_CONST</a></td>
            <td>
                    <code>0</code>
                </td>
                <td><code>uint32</code></td>
            <td></td>
        </tr>
    
</table>



## **TYPE ALIASES**

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="TypeAlias">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/placement_of_attributes/example.test.fidl;l=40">TypeAlias</a></td>
            <td>
                <code>uint32</code></td>
            <td></td>
        </tr></table>

