##
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.