| 61 | // --------------------------------------------------------------------------- |
| 62 | |
| 63 | ConstantEncoded constantEncode(Span<const uint8_t> data, StorageKind kind, std::size_t count) { |
| 64 | ConstantEncoded result; |
| 65 | result.value_kind = kind; |
| 66 | result.count = count; |
| 67 | |
| 68 | const std::size_t esize = storageKindSize(kind); |
| 69 | result.value_size = static_cast<uint8_t>(esize); |
| 70 | if (esize > 0 && count > 0) { |
| 71 | std::memcpy(result.value_bytes.data(), data.data(), esize); |
| 72 | } |
| 73 | return result; |
| 74 | } |
| 75 | |
| 76 | double constantDecodeAsDouble(const ConstantEncoded& enc) { |
| 77 | const uint8_t* ptr = enc.value_bytes.data(); |