def parse_query(self, query):
        """Parse a query string and return an iterator which yields
        (key, value)"""
        writer = self.writer
        if writer is None:
            raise GaugedUseAfterFreeError
        Gauged.writer_parse_query(writer, query)
        position = 0
        writer_contents = writer.contents
        size = writer_contents.buffer_size
        pointers = writer_contents.buffer
        while position < size:
            yield pointers[position], pointers[position+1]
            position += 2