Example #1
0
 def _extslice(self, node):
     value = self.visit(node.value)
     for dim in node.slice.dims:
         lower = (self.visit(dim.lower) if dim.lower is not None else None)
         upper = (self.visit(dim.upper) if dim.upper is not None else None)
         step = (self.visit(dim.step) if dim.step is not None else None)
         lower = vtypes.raw_value(optimize(lower))
         upper = vtypes.raw_value(optimize(upper))
         step = vtypes.raw_value(optimize(step))
         value = value[lower:upper:step]
     return value
Example #2
0
 def _slice(self, node):
     value = self.visit(node.value)
     lower = (self.visit(node.slice.lower)
              if node.slice.lower is not None else None)
     upper = (self.visit(node.slice.upper)
              if node.slice.upper is not None else None)
     step = (self.visit(node.slice.step)
             if node.slice.step is not None else None)
     lower = vtypes.raw_value(optimize(lower))
     upper = vtypes.raw_value(optimize(upper))
     step = vtypes.raw_value(optimize(step))
     return value[lower:upper:step]
Example #3
0
 def _slice(self, node):
     value = self.visit(node.value)
     lower = (self.visit(node.slice.lower)
              if node.slice.lower is not None else None)
     upper = (self.visit(node.slice.upper)
              if node.slice.upper is not None else None)
     step = (self.visit(node.slice.step)
             if node.slice.step is not None else None)
     lower = vtypes.raw_value(optimize(lower))
     upper = vtypes.raw_value(optimize(upper))
     step = vtypes.raw_value(optimize(step))
     return value[lower:upper:step]
Example #4
0
 def _extslice(self, node):
     value = self.visit(node.value)
     for dim in node.slice.dims:
         lower = (self.visit(dim.lower)
                  if dim.lower is not None else None)
         upper = (self.visit(dim.upper)
                  if dim.upper is not None else None)
         step = (self.visit(dim.step)
                 if dim.step is not None else None)
         lower = vtypes.raw_value(optimize(lower))
         upper = vtypes.raw_value(optimize(upper))
         step = vtypes.raw_value(optimize(step))
         value = value[lower:upper:step]
     return value
Example #5
0
def FixedConst(fsm, value, point=0, signed=True, raw=False):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    raw = vtypes.raw_value(raw)

    if (isinstance(value, fxd._FixedConstant)
            and value.orig_value is not None):
        value = value.orig_value
    elif isinstance(value, fxd._FixedBase):
        value = fxd.write_adjust(value, point)
        value = vtypes.raw_value(value)
        raw = True
    elif not raw:
        value = vtypes.raw_value(value)

    if not isinstance(value, (int, bool, float)):
        raise TypeError("value must be int, bool, or float")
    if not isinstance(point, int):
        raise TypeError("point must be int")

    return fxd.FixedConst(value, point, signed, raw)
Example #6
0
    def visit_Subscript(self, node):
        if isinstance(node.slice, ast.Slice):
            return self._subscript_slice(node)
        if isinstance(node.slice, ast.ExtSlice):
            return self._subscript_extslice(node)
        if isinstance(node.slice, ast.Index):
            return self._subscript_index(node)

        value = self.visit(node.value)
        index = self.visit(node.slice)
        index = vtypes.raw_value(optimize(index))
        return value[index]
Example #7
0
def FixedConst(fsm, value, point=0, signed=True, raw=False):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    raw = vtypes.raw_value(raw)

    if (isinstance(value, fxd._FixedConstant) and
            value.orig_value is not None):
        value = value.orig_value
    elif isinstance(value, fxd._FixedBase):
        value = fxd.write_adjust(value, point)
        value = vtypes.raw_value(value)
        raw = True
    elif not raw:
        value = vtypes.raw_value(value)

    if not isinstance(value, (int, bool, float)):
        raise TypeError("value must be int, bool, or float")
    if not isinstance(point, int):
        raise TypeError("point must be int")

    return fxd.FixedConst(value, point, signed, raw)
Example #8
0
def fixed_to_real(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.fixed_to_real(value, point, signed)
Example #9
0
def fixed_to_int(fsm, value, point):
    point = vtypes.raw_value(point)
    return fxd.fixed_to_int(value, point)
Example #10
0
def reinterpret_cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.reinterpret_cast_to_fixed(value, point, signed)
Example #11
0
def cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    cv = fxd.write_adjust(value, point)
    return fxd.reinterpret_cast_to_fixed(cv, point, signed)
Example #12
0
def cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    cv = fxd.write_adjust(value, point)
    return fxd.reinterpret_cast_to_fixed(cv, point, signed)
Example #13
0
 def _index(self, node):
     value = self.visit(node.value)
     index = self.visit(node.slice.value)
     index = vtypes.raw_value(optimize(index))
     return value[index]
Example #14
0
def fixed_to_real(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.fixed_to_real(value, point, signed)
Example #15
0
def fixed_to_int(fsm, value, point):
    point = vtypes.raw_value(point)
    return fxd.fixed_to_int(value, point)
Example #16
0
def reinterpret_cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.reinterpret_cast_to_fixed(value, point, signed)
Example #17
0
 def _index(self, node):
     value = self.visit(node.value)
     index = self.visit(node.slice.value)
     index = vtypes.raw_value(optimize(index))
     return value[index]
Example #18
0
def FixedConst(fsm, value, point=0, signed=True, raw=False):
    point = vtypes.raw_value(point)
    return fixed.FixedConst(value, point, signed, raw)