runtime/typemapping.py
changeset 3813 6f3e20690172
parent 3771 67a0df6478b3
child 3823 a95b5ee1a0ea
equal deleted inserted replaced
3812:92e528718733 3813:6f3e20690172
    21     """
    21     """
    22     _fields_ = [("s", c_long),   # tv_sec
    22     _fields_ = [("s", c_long),   # tv_sec
    23                 ("ns", c_long)]  # tv_nsec
    23                 ("ns", c_long)]  # tv_nsec
    24 
    24 
    25 
    25 
    26 def _t(t, u=lambda x: x.contents, p=lambda t, x: t(x)):
    26 def _t(t, u=lambda x: x.value, p=lambda t, x: t(x)):
    27     return (t, u, p)
    27     return (t, u, p)
    28 
    28 
    29 
    29 
    30 def _ttime():
    30 def _ttime():
    31     return (IEC_TIME,
    31     return (IEC_TIME,
    32             lambda x: td(0, x.contents.s, x.contents.ns/1000.0),
    32             lambda x: td(0, x.s, x.ns/1000.0),
    33             lambda t, x: t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000))
    33             lambda t, x: t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000))
    34 
    34 
    35 
    35 
    36 SameEndianessTypeTranslator = {
    36 SameEndianessTypeTranslator = {
    37     "BOOL":       _t(c_uint8, lambda x: bool(x.contents)),
    37     "BOOL":       _t(c_uint8, lambda x: bool(x.value)),
    38     "STEP":       _t(c_uint8),
    38     "STEP":       _t(c_uint8),
    39     "TRANSITION": _t(c_uint8),
    39     "TRANSITION": _t(c_uint8),
    40     "ACTION":     _t(c_uint8),
    40     "ACTION":     _t(c_uint8),
    41     "SINT":       _t(c_int8),
    41     "SINT":       _t(c_int8),
    42     "USINT":      _t(c_uint8),
    42     "USINT":      _t(c_uint8),
    43     "BYTE":       _t(c_uint8),
    43     "BYTE":       _t(c_uint8),
    44     "STRING":     (IEC_STRING,
    44     "STRING":     (IEC_STRING,
    45                    lambda x: x.contents.body[:x.contents.len],
    45                    lambda x: x.body[:x.len],
    46                    lambda t, x: t(len(x), x)),
    46                    lambda t, x: t(len(x), x)),
    47     "INT":        _t(c_int16),
    47     "INT":        _t(c_int16),
    48     "UINT":       _t(c_uint16),
    48     "UINT":       _t(c_uint16),
    49     "WORD":       _t(c_uint16),
    49     "WORD":       _t(c_uint16),
    50     "DINT":       _t(c_int32),
    50     "DINT":       _t(c_int32),