def _set_value()

in tools/rossim/rosigen.py [0:0]


    def _set_value(self, msg, field, val):
        if self._is_list(msg):
            match = re.match(r"^\[(\d+)\]$", field)
            if not match:
                raise Exception("error: invalid index")
            index = int(match.groups(1)[0])
            if len(msg) <= index:
                # for dynamic sized arrays first grow vals
                for _i in range(0, index - len(msg) + 1):
                    msg.append(val)
            val = self._check_primitive_type(msg[index], val)
            msg[index] = type(msg[index])(val)
        else:
            field_val = getattr(msg, field)
            val = self._check_primitive_type(field_val, val)
            setattr(msg, field, type(field_val)(val))