##
12.17.2 Unpacker Objects

The `Unpacker` class offers the following methods:

`reset`( | data)

  Resets the string buffer with the given data.

`get_position`( | )

  Returns the current unpack position in the data buffer.

`set_position`( | position)

  Sets the data buffer unpack position to position. You should be careful about using `get_position()` and `set_position()`.

`get_buffer`( | )

  Returns the current unpack data buffer as a string.

`done`( | )

  Indicates unpack completion. Raises an `Error` exception if all of the data has not been unpacked.

In addition, every data type that can be packed with a `Packer`, can be unpacked with an `Unpacker`. Unpacking methods are of the form `unpack_type()`, and take no arguments. They return the unpacked object.

`unpack_float`( | )

  Unpacks a single-precision floating point number.

`unpack_double`( | )

  Unpacks a double-precision floating point number, similarly to `unpack_float()`.

In addition, the following methods unpack strings, bytes, and opaque data:

`unpack_fstring`( | n)

  Unpacks and returns a fixed length string. n is the number of characters expected. Padding with null bytes to guaranteed 4 byte alignment is assumed.

`unpack_fopaque`( | n)

  Unpacks and returns a fixed length opaque data stream, similarly to `unpack_fstring()`.

`unpack_string`( | )

  Unpacks and returns a variable length string. The length of the string is first unpacked as an unsigned integer, then the string data is unpacked with `unpack_fstring()`.

`unpack_opaque`( | )

  Unpacks and returns a variable length opaque data string, similarly to `unpack_string()`.

`unpack_bytes`( | )

  Unpacks and returns a variable length byte stream, similarly to `unpack_string()`.

The following methods support unpacking arrays and lists:

`unpack_list`( | unpack_item)

  Unpacks and returns a list of homogeneous items. The list is unpacked one element at a time by first unpacking an unsigned integer flag. If the flag is `1`, then the item is unpacked and appended to the list. A flag of `0` indicates the end of the list. unpack_item is the function that is called to unpack the items.

`unpack_farray`( | n, unpack_item)

  Unpacks and returns (as a list) a fixed length array of homogeneous items. n is number of list elements to expect in the buffer. As above, unpack_item is the function used to unpack each element.

`unpack_array`( | unpack_item)

  Unpacks and returns a variable length list of homogeneous items. First, the length of the list is unpacked as an unsigned integer, then each element is unpacked as in `unpack_farray()` above.