/ util / cbfstool / cse_helpers.c
cse_helpers.c
 1  /* SPDX-License-Identifier: GPL-2.0-only */
 2  /* Helper functions for cse_serger and cse_fpt */
 3  
 4  #include <commonlib/endian.h>
 5  
 6  #include "cse_helpers.h"
 7  
 8  void write_member(struct buffer *buff, void *src, size_t size)
 9  {
10  	void *dst = buffer_get(buff);
11  
12  	switch (size) {
13  	case 1:
14  		write_le8(dst, *(uint8_t *)src);
15  		break;
16  	case 2:
17  		write_le16(dst, *(uint16_t *)src);
18  		break;
19  	case 4:
20  		write_le32(dst, *(uint32_t *)src);
21  		break;
22  	case 8:
23  		write_le64(dst, *(uint64_t *)src);
24  		break;
25  	default:
26  		memcpy(dst, src, size);
27  		break;
28  	}
29  
30  	buffer_seek(buff, size);
31  }
32  
33  void read_member(struct buffer *buff, void *dst, size_t size)
34  {
35  	const void *src = buffer_get(buff);
36  
37  	switch (size) {
38  	case 1:
39  		*(uint8_t *)dst = read_le8(src);
40  		break;
41  	case 2:
42  		*(uint16_t *)dst = read_le16(src);
43  		break;
44  	case 4:
45  		*(uint32_t *)dst = read_le32(src);
46  		break;
47  	case 8:
48  		*(uint64_t *)dst = read_le64(src);
49  		break;
50  	default:
51  		memcpy(dst, src, size);
52  		break;
53  	}
54  
55  	buffer_seek(buff, size);
56  }