hwt/hdl/types/bitValFunctions.py
def bitsBitOp(self, other, op, getVldFn, reduceCheckFn):
    """
    :attention: If other is Bool signal, convert this to bool
        (not ideal, due VHDL event operator)
    """
    other = toHVal(other)

    iamVal = isinstance(self, Value)
    otherIsVal = isinstance(other, Value)

    if iamVal and otherIsVal:
        other = other._auto_cast(self._dtype)
        return bitsBitOp__val(self, other, op, getVldFn)
    else:
        if other._dtype == BOOL:
            self = self._auto_cast(BOOL)
            return op._evalFn(self, other)
        elif self._dtype == other._dtype:
            pass
        else:
            raise TypeError("Can not apply operator %r (%r, %r)" %
                            (op, self._dtype, other._dtype))

        if otherIsVal:
            r = reduceCheckFn(self, other)
            if r is not None:
                return r

        elif iamVal:
            r = reduceCheckFn(other, self)
            if r is not None:
                return r

        return Operator.withRes(op, [self, other], self._dtype)
def bitsBitOp(self, other, op, getVldFn, reduceCheckFn):
    """
    :attention: If other is Bool signal, convert this to bool
        (not ideal, due VHDL event operator)
    """
    other = toHVal(other)

    iamVal = isinstance(self, Value)
    otherIsVal = isinstance(other, Value)

    if iamVal and otherIsVal:
        other = other._auto_cast(self._dtype)
        return bitsBitOp__val(self, other, op, getVldFn)
    else:
        if other._dtype == BOOL:
            self = self._auto_cast(BOOL)
            return op._evalFn(self, other)
        elif self._dtype == other._dtype:
            pass
        else:
            raise TypeError("Can not apply operator %r (%r, %r)" %
                            (op, self._dtype, other._dtype))

        if otherIsVal:
            r = reduceCheckFn(self, other)
            if r is not None:
                return r

        elif iamVal:
            r = reduceCheckFn(other, self)
            if r is not None:
                return r

        return Operator.withRes(op, [self, other], self._dtype)
def bitsBitOp ( self , other , op , getVldFn , reduceCheckFn ) : other = toHVal ( other ) iamVal = isinstance ( self , Value ) otherIsVal = isinstance ( other , Value ) if iamVal and otherIsVal : other = other . _auto_cast ( self . _dtype ) return bitsBitOp__val ( self , other , op , getVldFn ) else : if other . _dtype == BOOL : self = self . _auto_cast ( BOOL ) return op . _evalFn ( self , other ) elif self . _dtype == other . _dtype : pass else : raise TypeError ( "Can not apply operator %r (%r, %r)" % ( op , self . _dtype , other . _dtype ) ) if otherIsVal : r = reduceCheckFn ( self , other ) if r is not None : return r elif iamVal : r = reduceCheckFn ( other , self ) if r is not None : return r return Operator . withRes ( op , [ self , other ] , self . _dtype )
:attention: If other is Bool signal, convert this to bool
        (not ideal, due VHDL event operator)
: attention : If other is Bool signal convert this to bool ( not ideal due VHDL event operator )