1from . import MemoryMixin
2
3class UnwrapperMixin(MemoryMixin):
4    """
5    This mixin processes SimActionObjects by passing on their .ast field.
6    """
7    def store(self, addr, data, size=None, condition=None, **kwargs):
8        return super().store(_raw_ast(addr), _raw_ast(data),
9            size=_raw_ast(size),
10            condition=_raw_ast(condition),
11            **kwargs)
12
13    def load(self, addr, size=None, condition=None, fallback=None, **kwargs):
14        return super().load(_raw_ast(addr),
15            size=_raw_ast(size),
16            condition=_raw_ast(condition),
17            fallback=_raw_ast(fallback),
18            **kwargs)
19
20    def find(self, addr, what, max_search, default=None, **kwargs):
21        return super().find(_raw_ast(addr), _raw_ast(what), max_search,
22            default=_raw_ast(default),
23            **kwargs)
24
25    def copy_contents(self, dst, src, size, condition=None, **kwargs):
26        return super().copy_contents(_raw_ast(dst), _raw_ast(src), _raw_ast(size), _raw_ast(condition), **kwargs)
27
28from ...state_plugins.sim_action_object import _raw_ast
29