(self, addr, char_num, char_size, chunk_size, max_search, endness, condition, max_symbolic_bytes, **kwargs)
generate comparison items by iterating through the string
        able to handle wide characters
generate comparison items by iterating through the string
        able to handle wide characters
generate comparison items by iterating through the string able to handle wide characters
def _find_iter_items(self, addr, char_num, char_size, chunk_size, max_search, endness, condition, max_symbolic_bytes, **kwargs):
        """
        generate comparison items by iterating through the string
        able to handle wide characters
        """
        if condition is None:
            condition = self.state.solver.true
        chunk = None
        chunk_progress = chunk_size

        # iterate through the string by the unit of chars
        for i in range(0, max_search, char_size):
            subaddr = addr + i
            if chunk_progress == chunk_size :
                # need to prefetch a little bit more chars
                chunk = self.load(subaddr, size=char_size*(chunk_size+char_num), endness=endness, condition=condition & self._find_condition(addr + i, **kwargs), **kwargs)
                chunk_progress = 0

            chunk_idx = (chunk_progress if endness == 'Iend_BE' else chunk_size - 1 - chunk_progress)
            chunk_progress += 1
            substr = chunk.get_bytes(chunk_idx*char_size, char_num*char_size)

            # only check the first character or each symbolic character will be recorded many times
            # FIXME: this actually keeps track of "max_symbolic_chars"
            if self._find_are_bytes_symbolic(substr.get_bytes(0, char_size)) and max_symbolic_bytes is not None:
                if max_symbolic_bytes:
                    max_symbolic_bytes -= 1
                else:
                    return
            yield subaddr, substr
def _find_iter_items ( self , addr , char_num , char_size , chunk_size , max_search , endness , condition , max_symbolic_bytes , * * kwargs ) : if condition is None : condition = self . state . solver . true chunk = None chunk_progress = chunk_size # iterate through the string by the unit of chars for i in range ( 0 , max_search , char_size ) : subaddr = addr + i if chunk_progress == chunk_size : # need to prefetch a little bit more chars chunk = self . load ( subaddr , size = char_size * ( chunk_size + char_num ) , endness = endness , condition = condition & self . _find_condition ( addr + i , * * kwargs ) , * * kwargs ) chunk_progress = 0 chunk_idx = ( chunk_progress if endness == 'Iend_BE' else chunk_size - 1 - chunk_progress ) chunk_progress += 1 substr = chunk . get_bytes ( chunk_idx * char_size , char_num * char_size ) # only check the first character or each symbolic character will be recorded many times # FIXME: this actually keeps track of "max_symbolic_chars" if self . _find_are_bytes_symbolic ( substr . get_bytes ( 0 , char_size ) ) and max_symbolic_bytes is not None : if max_symbolic_bytes : max_symbolic_bytes -= 1 else : return yield subaddr , substr