57 lines
976 B
C
57 lines
976 B
C
/* 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);
|
|
}
|