[docs]classTypesStore(KnowledgeBasePlugin,UserDict):""" A kb plugin that stores a mapping from name to TypeRef. It will return types from angr.sim_type.ALL_TYPES as a default. """
def__getitem__(self,item):try:returnsuper().__getitem__(item)exceptKeyError:returnALL_TYPES[item]def__setitem__(self,item,value):iftype(value)isnotTypeRef:raiseTypeError("Can only store TypeRefs in TypesStore")super().__setitem__(item,value.with_arch(self._kb._project.arch))def__iter__(self):yield fromsuper().__iter__()yield fromiter(ALL_TYPES)def__getstate__(self):returnself.data# do not pickle self.kbdef__setstate__(self,state):self.data=state
[docs]defiter_own(self):""" Iterate over all the names which are stored in this object - i.e. ``values()`` without ``ALL_TYPES`` """forkeyinsuper().__iter__():yieldself[key]