(self, data, data_type, addr=None)
return addr
Store in native memory.

        :param data:      Either a single value or a list.
                          Lists get interpreted as an array.
        :param data_type: Java type of the element(s).
        :param addr:      Native store address.
                          If not set, native memory is allocated.
        :return:          Native addr of the stored data.
Store in native memory.
Store in native memory .
def _store_in_native_memory(self, data, data_type, addr=None):
        """
        Store in native memory.

        :param data:      Either a single value or a list.
                          Lists get interpreted as an array.
        :param data_type: Java type of the element(s).
        :param addr:      Native store address.
                          If not set, native memory is allocated.
        :return:          Native addr of the stored data.
        """
        # check if addr is symbolic
        if addr is not None and self.state.solver.symbolic(addr):
            raise NotImplementedError('Symbolic addresses are not supported.')
        # lookup native size of the type
        type_size = ArchSoot.sizeof[data_type]
        native_memory_endness = self.state.arch.memory_endness
        # store single value
        if isinstance(data, int):
            if addr is None:
                addr = self._allocate_native_memory(size=type_size//8)
            value = self.state.solver.BVV(data, type_size)
            self.state.memory.store(addr, value, endness=native_memory_endness)
        # store array
        elif isinstance(data, list):
            if addr is None:
                addr = self._allocate_native_memory(size=type_size*len(data)//8)
            for idx, value in enumerate(data):
                memory_addr = addr+idx*type_size//8
                self.state.memory.store(memory_addr, value, endness=native_memory_endness)
        # return native addr
        return addr
def _store_in_native_memory ( self , data , data_type , addr = None ) : # check if addr is symbolic if addr is not None and self . state . solver . symbolic ( addr ) : raise NotImplementedError ( 'Symbolic addresses are not supported.' ) # lookup native size of the type type_size = ArchSoot . sizeof [ data_type ] native_memory_endness = self . state . arch . memory_endness # store single value if isinstance ( data , int ) : if addr is None : addr = self . _allocate_native_memory ( size = type_size // 8 ) value = self . state . solver . BVV ( data , type_size ) self . state . memory . store ( addr , value , endness = native_memory_endness ) # store array elif isinstance ( data , list ) : if addr is None : addr = self . _allocate_native_memory ( size = type_size * len ( data ) // 8 ) for idx , value in enumerate ( data ) : memory_addr = addr + idx * type_size // 8 self . state . memory . store ( memory_addr , value , endness = native_memory_endness ) # return native addr return addr