Beispiel #1
0
def _extend_mask(condition, mask):
    '''extend the mask in the termination condition with the given mask'''
    if mask is None:
        return condition
    kwds = _term.state(condition).popitem()[-1]
    # short-circiut: if no kwds['mask'], then abort
    if not kwds.has_key('mask'): return _term.type(condition)(**kwds)
    # extend current mask
    _mask = kwds['mask']
    if not _mask: # mask is None, {}, set(), or ()
        kwds['mask'] = mask
    elif type(_mask) is set: # assumes mask is set
        kwds['mask'].update(mask)
    elif type(_mask) is dict: # assumes mask is dict
        for k,v in mask.iteritems():
            _mask.setdefault(k,v).update(v)
        kwds['mask'] = _mask
    else: # assumes mask is tuple (or list)
        kwds['mask'] = type(_mask)(_mask[i]+mask[i] for i in range(2))
    return _term.type(condition)(**kwds)
Beispiel #2
0
def _extend_mask(condition, mask):
    '''extend the mask in the termination condition with the given mask'''
    if mask is None:
        return condition
    kwds = _term.state(condition).popitem()[-1]
    # short-circiut: if no kwds['mask'], then abort
    if 'mask' not in kwds: return _term.type(condition)(**kwds)
    # extend current mask
    _mask = kwds['mask']
    if not _mask:  # mask is None, {}, set(), or ()
        kwds['mask'] = mask
    elif type(_mask) is set:  # assumes mask is set
        kwds['mask'].update(mask)
    elif type(_mask) is dict:  # assumes mask is dict
        try:  #XXX: better way to distinguish bounds collapse from not?
            for k, v in getattr(mask, 'iteritems', mask.items)():
                _mask.setdefault(k, v).update(v)
            kwds['mask'] = _mask
        except AttributeError:  # are list/tuple not set/dict, _mask is included
            kwds['mask'] = mask
    else:  # assumes mask is tuple (or list)
        kwds['mask'] = type(_mask)(_mask[i] + mask[i] for i in range(2))
    return _term.type(condition)(**kwds)
Beispiel #3
0
def _extend_mask(condition, mask):
    '''extend the mask in the termination condition with the given mask'''
    if mask is None:
        return condition
    kwds = _term.state(condition).popitem()[-1]
    # short-circiut: if no kwds['mask'], then abort
    if 'mask' not in kwds: return _term.type(condition)(**kwds)
    # extend current mask
    _mask = kwds['mask']
    if not _mask: # mask is None, {}, set(), or ()
        kwds['mask'] = mask
    elif type(_mask) is set: # assumes mask is set
        kwds['mask'].update(mask)
    elif type(_mask) is dict: # assumes mask is dict
        try: #XXX: better way to distinguish bounds collapse from not?
            for k,v in getattr(mask, 'iteritems', mask.items)():
                _mask.setdefault(k,v).update(v)
            kwds['mask'] = _mask
        except AttributeError: # are list/tuple not set/dict, _mask is included
            kwds['mask'] = mask
    else: # assumes mask is tuple (or list)
        kwds['mask'] = type(_mask)(_mask[i]+mask[i] for i in range(2))
    return _term.type(condition)(**kwds)
Beispiel #4
0
def _replace_mask(condition, mask):
    '''replace the mask in the termination condition with the given mask'''
    kwds = _term.state(condition).popitem()[-1]
    if 'mask' in kwds: kwds['mask'] = mask
    return _term.type(condition)(**kwds)
Beispiel #5
0
def _replace_mask(condition, mask):
    '''replace the mask in the termination condition with the given mask'''
    kwds = _term.state(condition).popitem()[-1]
    if kwds.has_key('mask'): kwds['mask'] = mask
    return _term.type(condition)(**kwds)