| 760 | |
| 761 | template <> |
| 762 | void IChannel::SetChannelValue(const std::string &value, bool valid, |
| 763 | uint64_t array_index) { |
| 764 | switch (DataType()) { |
| 765 | case ChannelDataType::UnsignedIntegerLe: |
| 766 | SetUnsignedValueLe(std::stoull(value), valid, array_index); |
| 767 | break; |
| 768 | |
| 769 | case ChannelDataType::UnsignedIntegerBe: |
| 770 | SetUnsignedValueBe(std::stoull(value), valid, array_index); |
| 771 | break; |
| 772 | |
| 773 | case ChannelDataType::SignedIntegerLe: |
| 774 | SetSignedValueLe(std::stoll(value), valid, array_index); |
| 775 | break; |
| 776 | |
| 777 | case ChannelDataType::SignedIntegerBe: |
| 778 | SetSignedValueBe(std::stoll(value), valid, array_index); |
| 779 | break; |
| 780 | |
| 781 | case ChannelDataType::FloatLe: |
| 782 | SetFloatValueLe(std::stod(value), valid, array_index); |
| 783 | break; |
| 784 | |
| 785 | case ChannelDataType::FloatBe: |
| 786 | SetFloatValueBe(std::stod(value), valid, array_index); |
| 787 | break; |
| 788 | |
| 789 | case ChannelDataType::StringUTF8: |
| 790 | case ChannelDataType::StringAscii: |
| 791 | case ChannelDataType::StringUTF16Le: |
| 792 | case ChannelDataType::StringUTF16Be: |
| 793 | SetTextValue(value, valid); |
| 794 | break; |
| 795 | |
| 796 | case ChannelDataType::MimeStream: |
| 797 | case ChannelDataType::MimeSample: |
| 798 | case ChannelDataType::ByteArray: { |
| 799 | // The input string needs to be copied to a byte array. |
| 800 | auto byte_array = MdfHelper::TextToByteArray(value); |
| 801 | SetByteArray(byte_array, valid); |
| 802 | break; |
| 803 | } |
| 804 | |
| 805 | case ChannelDataType::CanOpenDate: |
| 806 | case ChannelDataType::CanOpenTime: |
| 807 | default: |
| 808 | // Cannot find any good text to date/time |
| 809 | SetValid(false, array_index); |
| 810 | break; |
| 811 | } |
| 812 | } |
| 813 | |
| 814 | template <> |
| 815 | void IChannel::SetChannelValue(const std::vector<uint8_t> &value, bool valid, |