| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* Helper functions for cse_serger and cse_fpt */ |
| |
| #include <commonlib/endian.h> |
| |
| #include "cse_helpers.h" |
| |
| void write_member(struct buffer *buff, void *src, size_t size) |
| { |
| void *dst = buffer_get(buff); |
| |
| switch (size) { |
| case 1: |
| write_le8(dst, *(uint8_t *)src); |
| break; |
| case 2: |
| write_le16(dst, *(uint16_t *)src); |
| break; |
| case 4: |
| write_le32(dst, *(uint32_t *)src); |
| break; |
| case 8: |
| write_le64(dst, *(uint64_t *)src); |
| break; |
| default: |
| memcpy(dst, src, size); |
| break; |
| } |
| |
| buffer_seek(buff, size); |
| } |
| |
| void read_member(struct buffer *buff, void *dst, size_t size) |
| { |
| const void *src = buffer_get(buff); |
| |
| switch (size) { |
| case 1: |
| *(uint8_t *)dst = read_le8(src); |
| break; |
| case 2: |
| *(uint16_t *)dst = read_le16(src); |
| break; |
| case 4: |
| *(uint32_t *)dst = read_le32(src); |
| break; |
| case 8: |
| *(uint64_t *)dst = read_le64(src); |
| break; |
| default: |
| memcpy(dst, src, size); |
| break; |
| } |
| |
| buffer_seek(buff, size); |
| } |