def select(func, **boolean):
'''Fetch a list of addresses within the function that contain the specified tags.'''
fn = by(func)
boolean = dict((k,set(v if isinstance(v, (__builtin__.tuple,__builtin__.set,__builtin__.list)) else (v,))) for k,v in boolean.viewitems())
if not boolean:
for ea in internal.comment.contents.address(fn.startEA):
res = database.tag(ea)
if res: yield ea, res
return
for ea in internal.comment.contents.address(fn.startEA):
res,d = {},database.tag(ea)
Or = boolean.get('Or', set())
res.update((k,v) for k,v in d.iteritems() if k in Or)
And = boolean.get('And', set())
if And:
if And.intersection(d.viewkeys()) == And:
res.update((k,v) for k,v in d.iteritems() if k in And)
else: continue
if res: yield ea,res
return
## referencing
评论列表
文章目录