Get a generator which yields (offset, array)

def iteritems(self):
        """Get a generator which yields (offset, array)"""
        current_buf = self.ptr.contents.buffer
        length = self.ptr.contents.length
        seen_length = 0
        header = c_size_t()
        position = c_uint32()
        arraylength = c_size_t()
        arrayptr = FloatPtr()
        header_ = byref(header)
        position_ = byref(position)
        arraylength_ = byref(arraylength)
        arrayptr_ = byref(arrayptr)
        advance = Gauged.map_advance
        while seen_length < length:
            current_buf = advance(current_buf, header_, position_,
                                  arraylength_, arrayptr_)
            seen_length += header.value + arraylength.value
            address = addressof(arrayptr.contents)
            arr = (c_float * arraylength.value).from_address(address)
            yield position.value, list(arr)