


# WireFormat enum










**Inheritance**

- Object
- Enum
- WireFormat






## Constructors

[WireFormat](../package-fidl_fidl/WireFormat/WireFormat.md) ()

  _const_ 


## Values

##### [v1](../package-fidl_fidl/WireFormat.md) const [WireFormat](../package-fidl_fidl/WireFormat.md)



  




##### [v2](../package-fidl_fidl/WireFormat.md) const [WireFormat](../package-fidl_fidl/WireFormat.md)



  





## Properties

##### [hashCode](../package-fidl_fidl/WireFormat/hashCode.md) &#8594; int



The hash code for this object.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_



##### [index](../package-fidl_fidl/WireFormat/index.md) &#8594; int



A numeric identifier for the enumerated value.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_



##### [runtimeType](../package-fidl_fidl/WireFormat/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_





## Methods

##### [noSuchMethod](../package-fidl_fidl/WireFormat/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_<span class="feature">inherited</span>_



##### [toString](../package-fidl_fidl/WireFormat/toString.md)() String



A string representation of this object.  
_<span class="feature">inherited</span>_





## Operators

##### [operator ==](../package-fidl_fidl/WireFormat/operator_equals.md)(Object other) bool



The equality operator.  
_<span class="feature">inherited</span>_










## Constants

##### [values](../package-fidl_fidl/WireFormat/values-constant.md) const List&lt;[WireFormat](../package-fidl_fidl/WireFormat.md)>



A constant List of the values in this enum, in order of their declaration.  









